package com.constellio.app.modules.tasks.ui.pages.workflow;
import com.constellio.app.modules.tasks.TasksPermissionsTo;
import com.constellio.app.modules.tasks.model.wrappers.Workflow;
import com.constellio.app.modules.tasks.navigation.TaskViews;
import com.constellio.app.modules.tasks.services.WorkflowServices;
import com.constellio.app.ui.entities.MetadataSchemaVO;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.entities.RecordVO.VIEW_MODE;
import com.constellio.app.ui.framework.builders.MetadataSchemaToVOBuilder;
import com.constellio.app.ui.framework.builders.RecordToVOBuilder;
import com.constellio.app.ui.framework.data.RecordVODataProvider;
import com.constellio.app.ui.pages.base.SingleSchemaBasePresenter;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.services.search.query.logical.LogicalSearchQuery;
public class ListWorkflowsPresenter extends SingleSchemaBasePresenter<ListWorkflowsView> {
private transient WorkflowServices workflowServices;
public ListWorkflowsPresenter(ListWorkflowsView view) {
super(view, Workflow.DEFAULT_SCHEMA);
}
public void addButtonClicked() {
view.navigate().to(TaskViews.class).addWorkflow();
}
public void backButtonClicked() {
view.navigate().to().adminModule();
}
public RecordVODataProvider getWorkflows() {
MetadataSchemaVO schema = new MetadataSchemaToVOBuilder()
.build(schema(Workflow.DEFAULT_SCHEMA), VIEW_MODE.TABLE, view.getSessionContext());
return new RecordVODataProvider(schema, new RecordToVOBuilder(), modelLayerFactory, view.getSessionContext()) {
@Override
protected LogicalSearchQuery getQuery() {
return workflowServices().getWorkflowsQuery();
}
};
}
public void displayButtonClicked(RecordVO record) {
view.navigate().to(TaskViews.class).displayWorkflow(record.getId());
}
public void editButtonClicked(RecordVO record) {
view.navigate().to(TaskViews.class).editWorkflow(record.getId());
}
public void deleteButtonClicked(RecordVO record) {
delete(toRecord(record), false);
view.navigate().to(TaskViews.class).listWorkflows();
}
@Override
protected boolean hasPageAccess(String params, User user) {
return user.has(TasksPermissionsTo.MANAGE_WORKFLOWS).globally();
}
private WorkflowServices workflowServices() {
if (workflowServices == null) {
workflowServices = new WorkflowServices(view.getCollection(), appLayerFactory);
}
return workflowServices;
}
}