package org.openlmis.core.repository.mapper; import org.apache.ibatis.annotations.*; import org.openlmis.core.domain.StockAdjustmentReason; import org.openlmis.core.domain.StockAdjustmentReasonProgram; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface StockAdjustmentReasonMapper { @Select("SELECT *" + " FROM losses_adjustments_types") List<StockAdjustmentReason> getAll(); @Select("SELECT *" + " FROM losses_adjustments_types" + " WHERE isdefault = TRUE") List<StockAdjustmentReason> getAllDefault(); @Select("SELECT lat.*" + " FROM losses_adjustments_types lat" + " JOIN stock_adjustment_reasons_programs sarp ON sarp.reasonName = lat.name" + " JOIN programs p ON p.code = sarp.programCode" + " WHERE p.id = #{programId}") List<StockAdjustmentReason> getAllByProgram(@Param("programId") Long programId); @Select("SELECT *" + " FROM losses_adjustments_types" + " WHERE name = #{name}") StockAdjustmentReason getByName(@Param("name") String name); @Insert({"INSERT INTO losses_adjustments_types (name" + ", description" + ", additive" + ", displayOrder" + ", isdefault" + ", category" + ") VALUES (#{name}" + ", #{description}" + ", #{additive}" + ", #{displayOrder}" + ", #{isDefault}" + ", #{category})"}) void insert(StockAdjustmentReason reason); @Select("SELECT *" + " FROM stock_adjustment_reasons_programs" + " WHERE programCode = #{programCode} AND reasonName = #{reasonName}") StockAdjustmentReasonProgram getAdjustmentReasonProgram(@Param("programCode") String programCode, @Param("reasonName") String reasonName); @Insert({"INSERT INTO stock_adjustment_reasons_programs (programCode, reasonName)", " VALUES (#{program.code}, #{reason.name})"}) @Options(useGeneratedKeys = true) void insertAdjustmentReasonProgram(StockAdjustmentReasonProgram entry); @Update({"UPDATE stock_adjustment_reasons_programs" + " SET programCode = #{program.code}, reasonName = #{reason.name}", " WHERE id = #{id}"}) void updateAdjustmentReasonProgram(StockAdjustmentReasonProgram entry); }