package com.constellio.app.modules.rm.ui.pages.management;
import com.constellio.app.modules.rm.constants.RMPermissionsTo;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.modules.rm.services.decommissioning.DecommissioningSecurityService;
import com.constellio.app.modules.rm.wrappers.ContainerRecord;
import com.constellio.app.ui.pages.base.BasePresenter;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.schemas.entries.DataEntryType;
public class ArchiveManagementPresenter extends BasePresenter<ArchiveManagementView> {
public ArchiveManagementPresenter(ArchiveManagementView view) {
super(view);
}
public void decommissioningButtonClicked() {
view.navigate().to(RMViews.class).decommissioning();
}
public void newContainerButtonClicked() {
view.navigate().to(RMViews.class).addContainer();
}
public void multipleContainersButtonClicked() {
view.navigate().to(RMViews.class).addMultipleContainers();
}
public void containersButtonClicked() {
view.navigate().to(RMViews.class).containersByAdministrativeUnits();
}
public void reportsButtonClicked() {
view.navigate().to(RMViews.class).reports();
}
public void onViewAssembled() {
User user = getCurrentUser();
DecommissioningSecurityService securityServices = new DecommissioningSecurityService(collection, appLayerFactory);
view.setDecommissioningButtonVisible(securityServices.hasAccessToDecommissioningMainPage(user));
view.setNewContainerButtonVisible(securityServices.canCreateContainers(user));
view.setContainersButtonVisible(securityServices.hasAccessToManageContainersPage(user));
view.setPrintReportsButtonVisible(hasAccessToManageReportsPage());
}
@Override
protected boolean hasPageAccess(String params, User user) {
DecommissioningSecurityService securityServices = new DecommissioningSecurityService(collection, appLayerFactory);
return securityServices.hasAccessToDecommissioningMainPage(user) || securityServices.hasAccessToManageContainersPage(user) || hasAccessToManageReportsPage();
}
private boolean hasAccessToManageReportsPage() {
User user = getCurrentUser();
return user.has(RMPermissionsTo.MANAGE_REPORTS).onSomething();
}
public boolean isMultipleContainersButtonVisible() {
return DataEntryType.SEQUENCE.equals(modelLayerFactory.getMetadataSchemasManager().getSchemaTypes(collection)
.getMetadata(ContainerRecord.DEFAULT_SCHEMA + "_" + ContainerRecord.IDENTIFIER).getDataEntry().getType())
&& presenterService().getCurrentUser(view.getSessionContext()).has(RMPermissionsTo.MANAGE_CONTAINERS).globally();
}
}