package com.constellio.app.modules.robots.ui.pages;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import java.util.List;
import com.constellio.app.modules.robots.constants.RobotsPermissionsTo;
import com.constellio.app.modules.robots.model.wrappers.Robot;
import com.constellio.app.modules.robots.ui.navigation.RobotViews;
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.model.entities.records.wrappers.User;
import com.constellio.model.entities.schemas.Schemas;
import com.constellio.model.services.search.query.logical.LogicalSearchQuery;
import com.constellio.model.services.search.query.logical.condition.LogicalSearchCondition;
public class RobotLogsPresenter extends BaseRobotPresenter<RobotLogsView> {
private String robotId;
public RobotLogsPresenter(RobotLogsView view) {
super(view, Robot.DEFAULT_SCHEMA);
}
public RobotLogsPresenter forParams(String parameters) {
robotId = parameters;
return this;
}
public RecordVO getRobot() {
return presenterService().getRecordVO(robotId, VIEW_MODE.DISPLAY, view.getSessionContext());
}
public RecordVODataProvider getLogs() {
MetadataSchemaVO schema = new MetadataSchemaToVOBuilder()
.build(robotSchemas().robotLog.schema(), VIEW_MODE.TABLE, view.getSessionContext());
final List<String> tree = robotsService().loadIdTreeOf(robotId);
return new RecordVODataProvider(schema, new RecordToVOBuilder(), modelLayerFactory, view.getSessionContext()) {
@Override
protected LogicalSearchQuery getQuery() {
LogicalSearchCondition condition = from(robotSchemas().robotLog.schemaType())
.where(robotSchemas().robotLog.robot()).isIn(tree);
return new LogicalSearchQuery(condition).sortDesc(Schemas.CREATED_ON);
}
};
}
public void backButtonClicked() {
view.navigate().to(RobotViews.class).robotConfiguration(robotId);
}
@Override
protected boolean hasPageAccess(String params, User user) {
return user.has(RobotsPermissionsTo.MANAGE_ROBOTS).globally();
}
}