/*
* This program is part of the OpenLMIS logistics management information system platform software.
* Copyright © 2013 VillageReach
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses. For additional information contact info@OpenLMIS.org.
*/
package org.openlmis.distribution.repository.mapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.openlmis.distribution.domain.*;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* It maps the VaccinationFullCoverage, ChildCoverageLineItem, AdultCoverageLineItem, OpenedVialLineItem,
* TargetGroupProduct and ProductVial entity to corresponding representation in database.
*/
@Repository
public interface VaccinationCoverageMapper {
@Insert({"INSERT INTO full_coverages (facilityVisitId, femaleHealthCenter, femaleOutreach, maleHealthCenter, maleOutreach,",
"createdBy, modifiedBy)",
"VALUES (#{facilityVisitId}, #{femaleHealthCenter}, #{femaleOutreach}, #{maleHealthCenter}, #{maleOutreach},",
"#{createdBy}, #{modifiedBy})"})
@Options(useGeneratedKeys = true)
void insertFullVaccinationCoverage(VaccinationFullCoverage vaccinationFullCoverage);
@Insert({"INSERT INTO vaccination_child_coverage_line_items (facilityVisitId, vaccination, targetGroup, createdBy, modifiedBy)",
"VALUES (#{facilityVisitId}, #{vaccination}, #{targetGroup}, #{createdBy}, #{modifiedBy})"})
@Options(useGeneratedKeys = true)
void insertChildCoverageLineItem(ChildCoverageLineItem childCoverageLineItem);
@Insert({"INSERT INTO child_coverage_opened_vial_line_items (facilityVisitId, productVialName, packSize, createdBy, modifiedBy)",
"VALUES (#{facilityVisitId}, #{productVialName}, #{packSize}, #{createdBy}, #{modifiedBy})"})
@Options(useGeneratedKeys = true)
void insertChildCoverageOpenedVialLineItem(OpenedVialLineItem openedVialLineItem);
@Insert({"INSERT INTO adult_coverage_opened_vial_line_items (facilityVisitId, productVialName, packSize, createdBy, modifiedBy)",
"VALUES (#{facilityVisitId}, #{productVialName}, #{packSize}, #{createdBy}, #{createdBy})"})
@Options(useGeneratedKeys = true)
void insertAdultCoverageOpenedVialLineItem(OpenedVialLineItem openedVialLineItem);
@Select({"SELECT * FROM full_coverages WHERE facilityVisitId = #{facilityVisitId}"})
VaccinationFullCoverage getFullCoverageBy(Long facilityVisitId);
@Select({"SELECT * FROM coverage_target_group_products"})
List<TargetGroupProduct> getVaccinationProducts();
@Select({"SELECT * FROM vaccination_child_coverage_line_items WHERE facilityVisitId = #{facilityVisitId}"})
List<ChildCoverageLineItem> getChildCoverageLineItemsBy(Long facilityVisitId);
@Select({"SELECT * FROM coverage_product_vials"})
List<ProductVial> getProductVials();
@Update({"UPDATE vaccination_child_coverage_line_items SET healthCenter11Months = #{healthCenter11Months}, outreach11Months = #{outreach11Months},",
"healthCenter23Months = #{healthCenter23Months}, outreach23Months = #{outreach23Months}, modifiedBy = #{modifiedBy}, modifiedDate = DEFAULT WHERE id = #{id}"})
void updateChildCoverageLineItem(ChildCoverageLineItem childCoverageLineItem);
@Update({"UPDATE child_coverage_opened_vial_line_items SET openedVials = #{openedVials}, modifiedBy = #{modifiedBy}, modifiedDate = DEFAULT WHERE id = #{id}"})
void updateChildCoverageOpenedVialLineItem(OpenedVialLineItem openedVialLineItem);
@Update({"UPDATE adult_coverage_opened_vial_line_items SET openedVials = #{openedVials}, modifiedBy = #{modifiedBy}, modifiedDate = DEFAULT WHERE id = #{id}"})
void updateAdultCoverageOpenedVialLineItem(OpenedVialLineItem openedVialLineItem);
@Select({"SELECT * FROM child_coverage_opened_vial_line_items WHERE facilityVisitId = #{facilityVisitId}"})
List<OpenedVialLineItem> getChildCoverageOpenedVialLineItemsBy(Long facilityVisitId);
@Select({"SELECT * FROM adult_coverage_opened_vial_line_items WHERE facilityVisitId = #{facilityVisitId}"})
List<OpenedVialLineItem> getAdultCoverageOpenedVialLineItemsBy(Long facilityVisitId);
@Insert({"INSERT INTO vaccination_adult_coverage_line_items (facilityVisitId, targetGroup, demographicGroup, createdBy, modifiedBy) " +
"VALUES (#{facilityVisitId}, #{targetGroup}, #{demographicGroup}, #{createdBy}, #{modifiedBy})"})
@Options(useGeneratedKeys = true)
void insertAdultCoverageLineItem(AdultCoverageLineItem lineItem);
@Select({"SELECT * FROM vaccination_adult_coverage_line_items WHERE facilityVisitId = #{facilityVisitId}"})
List<AdultCoverageLineItem> getAdultCoverageLineItemsBy(Long facilityVisitId);
@Update({"UPDATE vaccination_adult_coverage_line_items SET healthCenterTetanus1=#{healthCenterTetanus1},",
"outreachTetanus1=#{outreachTetanus1}, healthCenterTetanus2To5=#{healthCenterTetanus2To5},",
"outreachTetanus2To5=#{outreachTetanus2To5}, modifiedDate=DEFAULT, modifiedBy=#{modifiedBy}",
"WHERE id=#{id}"})
void updateAdultCoverageLineItem(AdultCoverageLineItem adultCoverageLineItem);
}