package com.constellio.app.modules.rm.ui.pages.decommissioning;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.services.decommissioning.DecommissioningSecurityService;
import com.constellio.app.modules.rm.wrappers.DecommissioningList;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.entities.RecordVO.VIEW_MODE;
import com.constellio.app.ui.pages.base.SingleSchemaBasePresenter;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.records.wrappers.User;
import java.util.Arrays;
import java.util.List;
public class EditDecommissioningListPresenter extends SingleSchemaBasePresenter<EditDecommissioningListView> {
String recordId;
public EditDecommissioningListPresenter(EditDecommissioningListView view) {
super(view, DecommissioningList.DEFAULT_SCHEMA);
}
public EditDecommissioningListPresenter forRecordId(String recordId) {
this.recordId = recordId;
return this;
}
@Override
protected boolean hasPageAccess(String params, User user) {
return true;
}
@Override
protected List<String> getRestrictedRecordIds(String params) {
return Arrays.asList(params);
}
@Override
protected boolean hasRestrictedRecordAccess(String params, User user, Record restrictedRecord) {
DecommissioningList decommissioningList = rmRecordsServices().wrapDecommissioningList(restrictedRecord);
return securityService().canModify(decommissioningList, user);
}
public RecordVO getDecommissioningList() {
return presenterService().getRecordVO(recordId, VIEW_MODE.FORM, view.getSessionContext());
}
public void saveButtonClicked(RecordVO recordVO) {
try {
Record record = toRecord(recordVO);
addOrUpdate(record);
if (rmRecordsServices().wrapDecommissioningList(record).getDecommissioningListType().isFolderList()) {
view.navigate().to(RMViews.class).displayDecommissioningList(recordId);
} else {
view.navigate().to(RMViews.class).displayDocumentDecommissioningList(recordId);
}
} catch (Exception e) {
view.showErrorMessage("Failed to save");
}
}
private DecommissioningSecurityService securityService() {
return new DecommissioningSecurityService(collection, appLayerFactory);
}
private RMSchemasRecordsServices rmRecordsServices() {
return new RMSchemasRecordsServices(collection, appLayerFactory);
}
public void cancelButtonClicked(RecordVO recordVO) {
try {
Record record = toRecord(recordVO);
if (rmRecordsServices().wrapDecommissioningList(record).getDecommissioningListType().isFolderList()) {
view.navigate().to(RMViews.class).displayDecommissioningList(recordId);
} else {
view.navigate().to(RMViews.class).displayDocumentDecommissioningList(recordId);
}
} catch (Exception e) {
view.showErrorMessage("Failed to save");
}
}
}