/* * 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.core.repository.mapper; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.openlmis.core.domain.FulfillmentRoleAssignment; import org.openlmis.core.domain.User; import org.springframework.stereotype.Repository; import java.util.List; /** * FulfillmentRoleAssignmentMapper maps the FulfillmentRoleAssignment entity to corresponding representation in database. */ @Repository public interface FulfillmentRoleAssignmentMapper { @Select({"SELECT userId, facilityId, array_agg(roleId) as roleAsString FROM fulfillment_role_assignments WHERE userId = #{userId} GROUP BY userId,facilityId"}) List<FulfillmentRoleAssignment> getFulfillmentRolesForUser(Long userId); @Insert({"INSERT INTO fulfillment_role_assignments(userId, facilityId, roleId, createdBy, modifiedBy) " + "VALUES(#{user.id}, #{facilityId}, #{roleId}, #{user.modifiedBy}, #{user.modifiedBy})"}) void insertFulfillmentRole(@Param("user") User user, @Param("facilityId") Long facilityId, @Param("roleId") Long roleId); @Delete({"DELETE FROM fulfillment_role_assignments WHERE userId = #{id}"}) void deleteAllFulfillmentRoles(User user); @Select({"SELECT userId, facilityId, array_agg(FRA.roleId) as roleAsString FROM fulfillment_role_assignments FRA", "INNER JOIN role_rights RR ON RR.rightName = #{right}", "WHERE userId = #{userId} GROUP BY userId, facilityId"}) List<FulfillmentRoleAssignment> getRolesWithRight(@Param("userId") Long userId, @Param("right") String rightName); }