package org.openlmis.vaccine.dto; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import lombok.EqualsAndHashCode; import org.openlmis.core.domain.Facility; import org.openlmis.core.domain.SupervisoryNode; import org.openlmis.core.utils.DateUtil; import org.openlmis.vaccine.domain.VaccineOrderRequisition.VaccineOrderRequisition; import java.util.ArrayList; import java.util.Date; import java.util.List; @Data @EqualsAndHashCode(callSuper = false) public class OrderRequisitionDTO extends SupervisoryNode{ Long id; Long periodId; Long programId; Long facilityId; String status; String periodName; String programName; String facilityType; String districtName; private Date submittedDate; private Date modifiedDate; private Date periodStartDate; private Date periodEndDate; private String stringModifiedDate; private String stringPeriodStartDate; private String stringPeriodEndDate; private String requisitionStatus; private Boolean isVerified; private Date createdDate; //Used to view pending requisition String facilityName; String orderDate; Long orderId; //Used to join order requisition and stock Card @JsonIgnore Facility facility; Long productId; Long quantityRequested ; String productCategory; Boolean emergency; String productName; String productCode; public static List<OrderRequisitionDTO> prepareForView(List<VaccineOrderRequisition> requisitions) { List<OrderRequisitionDTO> result = new ArrayList<>(); for (VaccineOrderRequisition requisition : requisitions) { OrderRequisitionDTO requisitionDTO = populateDTOWithRequisition(requisition); requisitionDTO.requisitionStatus = requisition.getStatus().name(); result.add(requisitionDTO); } return result; } private static OrderRequisitionDTO populateDTOWithRequisition(VaccineOrderRequisition requisition) { OrderRequisitionDTO rnrDTO = new OrderRequisitionDTO(); rnrDTO.id = requisition.getId(); rnrDTO.programId = requisition.getProgram().getId(); rnrDTO.facilityId = requisition.getFacility().getId(); rnrDTO.programName = requisition.getProgram().getName(); rnrDTO.facilityName = requisition.getFacility().getName(); rnrDTO.facilityType = requisition.getFacility().getFacilityType().getName(); rnrDTO.districtName = requisition.getFacility().getGeographicZone().getName(); rnrDTO.modifiedDate = requisition.getModifiedDate(); rnrDTO.periodStartDate = requisition.getPeriod().getStartDate(); rnrDTO.periodEndDate = requisition.getPeriod().getEndDate(); rnrDTO.stringModifiedDate = formatDate(requisition.getModifiedDate()); rnrDTO.stringPeriodStartDate = formatDate(requisition.getPeriod().getStartDate()); rnrDTO.stringPeriodEndDate = formatDate(requisition.getPeriod().getEndDate()); rnrDTO.emergency = requisition.isEmergency(); return rnrDTO; } private void formatDates(){ stringModifiedDate = formatDate(modifiedDate); stringPeriodStartDate = formatDate(periodStartDate); stringPeriodEndDate = formatDate(periodEndDate); } private static String formatDate(Date date) { return DateUtil.getFormattedDate(date, "dd/MM/yyyy"); } }