package com.constellio.app.modules.rm.ui.pages.cart; import com.constellio.app.modules.rm.navigation.RMViews; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.modules.rm.wrappers.Cart; import com.constellio.app.ui.entities.MetadataSchemaVO; import com.constellio.app.ui.entities.RecordVO; 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.SchemaPresenterUtils; import com.constellio.app.ui.pages.base.SingleSchemaBasePresenter; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.records.RecordServicesException; import com.constellio.model.services.schemas.builders.CommonMetadataBuilder; import com.constellio.model.services.search.StatusFilter; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; import java.util.Arrays; import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from; public class CartsListPresenter extends SingleSchemaBasePresenter<CartsListView> { private RecordToVOBuilder recordToVOBuilder = new RecordToVOBuilder(); private final MetadataSchemaVO schemaVO; private RMSchemasRecordsServices rm; public CartsListPresenter(CartsListView view) { super(view,Cart.DEFAULT_SCHEMA); schemaVO = new MetadataSchemaToVOBuilder().build(defaultSchema(), RecordVO.VIEW_MODE.TABLE, view.getSessionContext()); rm = new RMSchemasRecordsServices(collection,appLayerFactory); } @Override protected boolean hasPageAccess(String params, User user) { return true; } public void displayButtonClicked(RecordVO recordVO) { view.navigate().to(RMViews.class).cart(recordVO.getId()); } public void deleteButtonClicked(RecordVO recordVO) { delete(toRecord(recordVO)); view.navigate().to(RMViews.class).listCarts(); } public RecordVODataProvider getOwnedCartsDataProvider() { return new RecordVODataProvider(schemaVO, recordToVOBuilder, modelLayerFactory, view.getSessionContext()) { @Override protected LogicalSearchQuery getQuery() { return new LogicalSearchQuery(from(defaultSchema()).where(getMetadata(Cart.OWNER)) .isEqualTo(getCurrentUser().getId())).sortAsc(Schemas.TITLE); } }; } public RecordVODataProvider getSharedCartsDataProvider() { return new RecordVODataProvider(schemaVO, recordToVOBuilder, modelLayerFactory, view.getSessionContext()) { @Override protected LogicalSearchQuery getQuery() { return new LogicalSearchQuery(from(defaultSchema()).where(getMetadata(Cart.SHARED_WITH_USERS)) .isContaining(Arrays.asList(getCurrentUser().getId()))).sortAsc(Schemas.TITLE); } }; } public void saveButtonClicked(String title) { Cart cart = rm.newCart(); cart.setTitle(title); cart.setOwner(getCurrentUser()); try { recordServices().execute(new Transaction(cart.getWrappedRecord()).setUser(getCurrentUser())); view.navigate().to(RMViews.class).listCarts(); } catch (RecordServicesException e) { e.printStackTrace(); } } }