/* * The contents of this file are subject to the OpenMRS Public License * Version 2.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and * limitations under the License. * * Copyright (C) OpenHMIS. All Rights Reserved. */ package org.openmrs.module.webservices.rest.resource; import org.openmrs.module.openhmis.cashier.api.ITimesheetService; import org.openmrs.module.openhmis.cashier.api.model.Timesheet; import org.openmrs.module.openhmis.commons.api.entity.IEntityDataService; import org.openmrs.module.webservices.rest.web.RestConstants; import org.openmrs.module.webservices.rest.web.annotation.Resource; import org.openmrs.module.webservices.rest.web.representation.RefRepresentation; import org.openmrs.module.webservices.rest.web.representation.Representation; import org.openmrs.module.webservices.rest.web.resource.impl.DelegatingResourceDescription; import org.openmrs.util.LocaleUtility; import java.text.DateFormat; /** * REST resource representing a {@link Timesheet}. */ @Resource(name = RestConstants.VERSION_2 + "/cashier/timesheet", supportedClass = Timesheet.class, supportedOpenmrsVersions = { "1.9.*", "1.10.*", "1.11.*", "1.12.*" }) public class TimesheetResource extends BaseRestDataResource<Timesheet> { @Override public Timesheet newDelegate() { return new Timesheet(); } @Override public Class<? extends IEntityDataService<Timesheet>> getServiceClass() { return ITimesheetService.class; } @Override public DelegatingResourceDescription getRepresentationDescription(Representation rep) { DelegatingResourceDescription description = super.getRepresentationDescription(rep); description.addProperty("cashier", Representation.REF); description.addProperty("cashPoint", Representation.REF); description.addProperty("clockIn"); description.addProperty("clockOut"); if (rep instanceof RefRepresentation) { description.addProperty("id"); description.addProperty("uuid"); } return description; } @Override public DelegatingResourceDescription getCreatableProperties() { DelegatingResourceDescription description = super.getCreatableProperties(); description.addProperty("cashier"); description.addProperty("cashpoint"); return description; } public String getDisplayString(Timesheet instance) { DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, LocaleUtility.getDefaultLocale()); return dateFormat.format(instance.getClockIn()) + " to " + (instance.getClockOut() != null ? dateFormat.format(instance.getClockOut()) : " open"); } }