package com.constellio.app.ui.pages.collection;
import java.util.ArrayList;
import java.util.List;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.entities.RecordVO.VIEW_MODE;
import com.constellio.app.ui.entities.RoleVO;
import com.constellio.app.ui.pages.base.SingleSchemaBasePresenter;
import com.constellio.model.entities.CorePermissions;
import com.constellio.model.entities.records.wrappers.Group;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.security.Role;
import com.constellio.model.entities.security.global.GlobalGroup;
import com.constellio.model.services.security.roles.RolesManager;
import com.constellio.model.services.users.UserServices;
public class CollectionGroupPresenter extends SingleSchemaBasePresenter<CollectionGroupView> {
String recordId;
public CollectionGroupPresenter(CollectionGroupView view) {
super(view, Group.DEFAULT_SCHEMA);
}
public void forRequestParams(String parameters) {
recordId = parameters;
}
public RecordVO getGroup() {
return presenterService().getRecordVO(recordId, VIEW_MODE.DISPLAY, view.getSessionContext());
}
public String getRoleTitle(String roleCode) {
return roleManager().getRole(view.getCollection(), roleCode).getTitle();
}
public List<RoleVO> getRoles() {
List<RoleVO> result = new ArrayList<>();
for (Role role : roleManager().getAllRoles(view.getCollection())) {
result.add(new RoleVO(role.getCode(), role.getTitle(), role.getOperationPermissions()));
}
return result;
}
public void authorizationsButtonClicked() {
view.navigate().to().listPrincipalAccessAuthorizations(recordId);
}
public void rolesButtonClicked() {
view.navigate().to().editCollectionGroupRoles(recordId);
}
public void deleteButtonClicked(String code) {
UserServices userServices = modelLayerFactory.newUserServices();
GlobalGroup globalGroup = userServices.getGroup(code);
List<String> newCollections = new ArrayList<>(globalGroup.getUsersAutomaticallyAddedToCollections());
newCollections.remove(view.getCollection());
globalGroup = globalGroup.withUsersAutomaticallyAddedToCollections(newCollections);
userServices.addUpdateGlobalGroup(globalGroup);
}
private RolesManager roleManager() {
return modelLayerFactory.getRolesManager();
}
@Override
protected boolean hasPageAccess(String params, User user) {
return user.has(CorePermissions.MANAGE_SECURITY).globally();
}
}