package com.constellio.app.modules.rm.ui.pages.agent;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.modules.rm.ui.entities.AgentLogVO;
import com.constellio.app.services.factories.ConstellioFactories;
import com.constellio.app.ui.pages.base.BasePresenter;
import com.constellio.app.ui.pages.base.SessionContext;
import com.constellio.model.entities.CorePermissions;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.services.factories.ModelLayerFactory;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.users.UserPhotosServices;
public class ListAgentLogsPresenter extends BasePresenter<ListAgentLogsView> {
public ListAgentLogsPresenter(ListAgentLogsView view) {
super(view);
}
public ListAgentLogsPresenter(ListAgentLogsView view,
ConstellioFactories constellioFactories,
SessionContext sessionContext) {
super(view, constellioFactories, sessionContext);
}
@Override
protected boolean hasPageAccess(String params, User user) {
return user.has(CorePermissions.VIEW_EVENTS).onSomething();
}
void showLogsButtonClicked() {
String userId = view.getSelectedUserId();
List<AgentLogVO> agentLogVOs = new ArrayList<>();
if (StringUtils.isNotBlank(userId)) {
ModelLayerFactory modelLayerFactory = view.getConstellioFactories().getModelLayerFactory();
RecordServices recordServices = modelLayerFactory.newRecordServices();
UserPhotosServices userPhotosServices = modelLayerFactory.newUserPhotosServices();
Record userRecord = recordServices.getDocumentById(userId);
User user = wrapUser(userRecord);
String username = user.getUsername();
List<String> filenames = new ArrayList<>(userPhotosServices.getUserLogs(username));
// Sort by date ascending
Collections.sort(filenames);
// Sort by date descending
Collections.reverse(filenames);
for (String filename : filenames) {
agentLogVOs.add(new AgentLogVO(username, filename));
}
}
view.setAgentLogs(agentLogVOs);
}
public InputStream getInputStream(AgentLogVO agentLogVO) {
String username = agentLogVO.getUsername();
String filename = agentLogVO.getFilename();
ModelLayerFactory modelLayerFactory = view.getConstellioFactories().getModelLayerFactory();
UserPhotosServices userPhotosServices = modelLayerFactory.newUserPhotosServices();
return userPhotosServices.newUserLogInputStream(username, filename, "ListAgentLogsPresenter.getInputStream");
}
public void backButtonClicked() {
view.navigate().to(RMViews.class).eventAudit();
}
}