package org.openlmis.vaccine.repository.mapper.OrderRequisitions;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.openlmis.vaccine.domain.VaccineOrderRequisition.VaccineOrderRequisitionStatusChange;
import org.openlmis.vaccine.domain.VaccineOrderRequisition.VaccineOrderStatus;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface VaccineStatusRequisitionChangeMapper {
@Insert("INSERT into vaccine_order_requisition_status_changes (orderId, status, createdBy, createdDate, modifiedBy, modifiedDate) " +
" values " +
" (#{orderId}, #{status}, #{createdBy}, NOW(), #{modifiedBy}, NOW())")
@Options(useGeneratedKeys = true)
Integer insert(VaccineOrderRequisitionStatusChange change);
@Select("SELECT sc.status, sc.orderId, sc.createdDate as date, u.username, u.firstName, u.lastName from vaccine_order_requisition_status_changes sc join users u on u.id = sc.createdBy where orderId = #{orderId}")
List<VaccineOrderRequisitionStatusChange> getChangeLogByReportId(@Param("orderId") Long orderId);
@Select("SELECT sc.status, sc.reportId, sc.createdDate as date, u.username, u.firstName, u.lastName " +
"from vaccine_order_requisition_status_changes sc join users u on u.id = sc.createdBy " +
"where orderId = #{orderId} and status = #{operation} " +
"order by sc.createdDate desc limit 1")
VaccineOrderRequisitionStatusChange getOperationLog(@Param("reportId") Long orderId, @Param("operation") VaccineOrderStatus status);
}