package com.constellio.app.ui.pages.events;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.ui.framework.data.event.category.EventsListDataProviderFactory;
import com.constellio.app.ui.pages.base.BasePresenter;
import com.constellio.model.entities.CorePermissions;
import com.constellio.model.entities.records.wrappers.User;
import org.joda.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
public class BaseEventCategoryPresenter extends BasePresenter<BaseEventCategoryView> {
public BaseEventCategoryPresenter(BaseEventCategoryView view) {
super(view);
recordServices().flush();
}
public void displayEvent(Integer itemId, EventCategory eventCategory) {
Map<String, Object> eventParameters = new HashMap<>();
String eventType = getEventListDataProvider(eventCategory).getEventType(itemId);
eventParameters.put(EventViewParameters.EVENT_TYPE, eventType);
eventParameters.put(EventViewParameters.EVENT_CATEGORY, eventCategory);
if (view.getEventId() != null) {
eventParameters.put(EventViewParameters.BY_ID_EVENT_PARAMETER, view.getEventId());
}
if (view.getEventStartDate() != null) {
eventParameters.put(EventViewParameters.EVENT_START_DATE, LocalDateTime.fromDateFields(view.getEventStartDate()).withTime(0,0,0,0));
}
if (view.getEventEndDate() != null) {
eventParameters.put(EventViewParameters.EVENT_END_DATE, LocalDateTime.fromDateFields(view.getEventEndDate()).withTime(23,59,59,999));
}
/*switch (eventCategory){
case CURRENTLY_BORROWED_FOLDERS:
case CURRENTLY_BORROWED_DOCUMENTS:
case CONNECTED_USERS_EVENT : {
//TODO create appropriate view
return;
}
}*/
view.navigate().to().showEvent(eventParameters);
}
public EventsCategoryDataProvider getEventListDataProvider(EventCategory eventCategory) {
String collection = view.getCollection();
User currentUser = getCurrentUser();
String username = currentUser.getUsername();
LocalDateTime startDate = (view.getEventStartDate() == null) ?
null :
LocalDateTime.fromDateFields(view.getEventStartDate()).withTime(0,0,0,0);
LocalDateTime endDate = (view.getEventEndDate() == null) ? null : LocalDateTime.fromDateFields(view.getEventEndDate()).withTime(23,59,59,59);
return EventsListDataProviderFactory
.getEventsListDataProviderFactory(eventCategory, modelLayerFactory, collection, username,
startDate, endDate, view.getEventId());
}
public String getReportTitle(EventCategory eventCategory) {
return getEventListDataProvider(eventCategory).getDataReportTitle();
}
public boolean isWithReportPanel(EventCategory eventCategory) {
/*switch (eventCategory){
case DECOMMISSIONING_EVENTS:
case CONTAINERS_BORROW_OR_RETURN:
case DOCUMENTS_BORROW_OR_RETURN:
case FOLDERS_BORROW_OR_RETURN:
case CONNECTED_USERS_EVENT:
case EVENTS_BY_ADMINISTRATIVE_UNIT: return false;
default: return true;
}*/
return false;
}
public boolean isByRangeDate(EventCategory eventCategory) {
switch (eventCategory) {
case CURRENTLY_BORROWED_FOLDERS:
case CURRENTLY_BORROWED_DOCUMENTS:
case CONNECTED_USERS_EVENT:
return false;
default:
return true;
}
}
public boolean hasFetchById(EventCategory eventCategory) {
switch (eventCategory) {
case EVENTS_BY_ADMINISTRATIVE_UNIT:
case EVENTS_BY_FOLDER:
case EVENTS_BY_USER:
return true;
default:
return false;
}
}
public String getTitle(EventCategory eventCategory) {
EventsCategoryDataProvider eventProvider = getEventListDataProvider(eventCategory);
return eventProvider.getDataTitle();
}
public void eventAudit() {
view.navigate().to(RMViews.class).eventAudit();
}
@Override
protected boolean hasPageAccess(String params, User user) {
return user.has(CorePermissions.VIEW_EVENTS).onSomething();
}
}