enhance menu response
This commit is contained in:
		| @@ -0,0 +1,38 @@ | ||||
| package com.iconplus.smartproc.model.projection; | ||||
|  | ||||
| import java.sql.Date; | ||||
|  | ||||
| public interface DrpApprovalView { | ||||
|  | ||||
|     Long getId(); | ||||
|     void setId(Long id); | ||||
|  | ||||
|     Long getDrpId(); | ||||
|     void setDrpId(Long drpId); | ||||
|  | ||||
|     Integer getTahun(); | ||||
|     void setTahun(); | ||||
|  | ||||
|     String getApproveStatus(); | ||||
|     void setApproveStatus(String approveStatus); | ||||
|  | ||||
|     Date getApproverVpDate(); | ||||
|     void setApproveVpDate(Date approveVpDate); | ||||
|  | ||||
|     Date getApproverKomite1Date(); | ||||
|     void setApproveKomite1Date(Date approveKomite1Date); | ||||
|  | ||||
|     Date getApproverKomite2Date(); | ||||
|     void setApproveKomite2Date(Date approveKomite2Date); | ||||
|  | ||||
|     Date getApproverKomite3Date(); | ||||
|     void setApproveKomite3Date(Date approveKomite3Date); | ||||
|  | ||||
|     Date getApproverKomite4Date(); | ||||
|     void setApproveKomite4Date(Date approveKomite4Date); | ||||
|  | ||||
|     Date getApproverDirekturDate(); | ||||
|     void setApproveDirekturDate(Date approveDirekturDate); | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.springframework.data.domain.Pageable; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @@ -19,4 +20,5 @@ public class DrpApprovalRequest extends BaseRequest { | ||||
|     private Long approverKomite3Id; | ||||
|     private Long approverKomite4Id; | ||||
|     private Long approverDirekturId; | ||||
|     private transient Pageable pageable; | ||||
| } | ||||
|   | ||||
| @@ -6,6 +6,8 @@ import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| import java.sql.Date; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @@ -13,4 +15,13 @@ import lombok.NoArgsConstructor; | ||||
| public class DrpApprovalResponse extends BaseResponse { | ||||
|  | ||||
|     private Long id; | ||||
|     private Long drpId; | ||||
|     private Integer tahun; | ||||
|     private String approveStatus; | ||||
|     private Date approverVpDate; | ||||
|     private Date approverKomite1Date; | ||||
|     private Date approverKomite2Date; | ||||
|     private Date approverKomite3Date; | ||||
|     private Date approverKomite4Date; | ||||
|     private Date approverDirekturDate; | ||||
| } | ||||
|   | ||||
| @@ -22,6 +22,6 @@ public class LoginResponse extends BaseResponse { | ||||
|     private String email; | ||||
|     private Long roleId; | ||||
|     private String role; | ||||
|     private List<MenusPermissionResponse> menus; | ||||
|     private List<ParentMenusResponse> menus; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,23 @@ | ||||
| package com.iconplus.smartproc.model.response; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.base.BaseResponse; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class MenusResponse extends BaseResponse { | ||||
|  | ||||
|     private Long id; | ||||
|     private String text; | ||||
|     private String path; | ||||
|     private Boolean canView; | ||||
|     private Boolean canCreate; | ||||
|     private Boolean canRead; | ||||
|     private Boolean canDelete; | ||||
|     private Boolean canUpdate; | ||||
| } | ||||
| @@ -0,0 +1,21 @@ | ||||
| package com.iconplus.smartproc.model.response; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.base.BaseResponse; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class ParentMenusResponse extends BaseResponse { | ||||
|  | ||||
|     private Long id; | ||||
|     private String text; | ||||
|     private String icon; | ||||
|     private List<MenusResponse> items; | ||||
| } | ||||
| @@ -1,6 +1,7 @@ | ||||
| package com.iconplus.smartproc.repository; | ||||
|  | ||||
| import com.iconplus.smartproc.model.entity.Drp; | ||||
| import com.iconplus.smartproc.model.projection.DrpApprovalView; | ||||
| import com.iconplus.smartproc.model.projection.DrpView; | ||||
| import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| @@ -31,4 +32,19 @@ public interface DrpRepository extends JpaRepository<Drp, Long> { | ||||
|             "ORDER BY d.id") | ||||
|     Page<DrpView> findByIsDeleteFalse(Timestamp approveDate, | ||||
|                                       Pageable pageable); | ||||
|  | ||||
|  | ||||
|     @Query(value = "SELECT d.id as id, " + | ||||
|             "d.tahun as tahun, " + | ||||
|             "d.approveStatus as approveStatus, " + | ||||
|             "da.approverVpDate as approverVpDate, " + | ||||
|             "da.approverKomite1Date as approverKomite1Date, " + | ||||
|             "da.approverKomite2Date as approverKomite2Date, " + | ||||
|             "da.approverKomite3Date as approverKomite3Date, " + | ||||
|             "da.approverKomite4Date as approverKomite4Date, " + | ||||
|             "da.approverDirekturDate as approverDirekturDate " + | ||||
|             "FROM Drp d " + | ||||
|             "JOIN DrpApproval da ON da.drpId = d.id " + | ||||
|             "WHERE d.isDelete = false") | ||||
|     Page<DrpApprovalView> getListApprovalDrp(Pageable pageable); | ||||
| } | ||||
|   | ||||
| @@ -2,8 +2,10 @@ package com.iconplus.smartproc.repository; | ||||
|  | ||||
| import com.iconplus.smartproc.model.entity.Menus; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.Query; | ||||
| import org.springframework.stereotype.Repository; | ||||
|  | ||||
| import java.awt.*; | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| @@ -13,4 +15,17 @@ public interface MenusRepository extends JpaRepository<Menus, Long> { | ||||
|     List<Menus> findByIsDeleteFalse(); | ||||
|     Optional<Menus> findByIdAndIsDeleteFalse(Long id); | ||||
|  | ||||
|     @Query(value = "SELECT m " + | ||||
|             "FROM Menus m " + | ||||
|             "WHERE m.id in (SELECT DISTINCT(s.parentId) from Menus s " + | ||||
|             "order by s.parentId) " + | ||||
|             "AND m.isDelete = false") | ||||
|     List<Menus> findAllParentMenu(); | ||||
|  | ||||
|  | ||||
|     @Query(value = "SELECT m " + | ||||
|             "FROM Menus m " + | ||||
|             "ORDER BY m.parentId, m.urutan") | ||||
|     List<Menus> findAllOrderByParentAndUrutan(); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -45,6 +45,7 @@ public interface PermissionRepository extends JpaRepository<Permission, Long> { | ||||
|             "JOIN Menus m ON m.id = p.menuId " + | ||||
|             "WHERE m.isDelete = false " + | ||||
|             "AND p.isDelete = false " + | ||||
|             "AND p.roleId = :roleId") | ||||
|             "AND p.roleId = :roleId " + | ||||
|             "ORDER BY m.parentId, m.urutan") | ||||
|     List<MenusPermissionView> getListMenusPermission(Long roleId); | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,52 @@ | ||||
| package com.iconplus.smartproc.service.approval; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.service.BaseService; | ||||
| import com.iconplus.smartproc.model.projection.DrpApprovalView; | ||||
| import com.iconplus.smartproc.model.request.DrpApprovalRequest; | ||||
| import com.iconplus.smartproc.model.response.DrpApprovalResponse; | ||||
| import com.iconplus.smartproc.repository.DrpApprovalRepository; | ||||
| import com.iconplus.smartproc.repository.DrpRepository; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| @Service | ||||
| @Slf4j | ||||
| public class GetListApprovalDrpServie implements BaseService<DrpApprovalRequest, DrpApprovalResponse> { | ||||
|  | ||||
|     private final DrpRepository drpRepository; | ||||
|     private final DrpApprovalRepository drpApprovalRepository; | ||||
|  | ||||
|     public GetListApprovalDrpServie(DrpRepository drpRepository, | ||||
|                                     DrpApprovalRepository drpApprovalRepository) { | ||||
|         this.drpApprovalRepository = drpApprovalRepository; | ||||
|         this.drpRepository = drpRepository; | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public DrpApprovalResponse execute(DrpApprovalRequest input) throws IOException { | ||||
|  | ||||
|         List<DrpApprovalResponse> drpApprovalResponseList = new ArrayList<>(); | ||||
|         var drpApprovalViews = drpRepository.getListApprovalDrp(input.getPageable()); | ||||
|         for (DrpApprovalView drpApprovalView : drpApprovalViews) { | ||||
|             DrpApprovalResponse drpApprovalResponse = DrpApprovalResponse.builder() | ||||
|                     .id(drpApprovalView.getId()) | ||||
|                     .drpId(drpApprovalView.getDrpId()) | ||||
|                     .tahun(drpApprovalView.getTahun()) | ||||
|                     .approverVpDate(drpApprovalView.getApproverVpDate()) | ||||
|                     .approverKomite1Date(drpApprovalView.getApproverKomite1Date()) | ||||
|                     .approverKomite2Date(drpApprovalView.getApproverKomite2Date()) | ||||
|                     .approverKomite3Date(drpApprovalView.getApproverKomite3Date()) | ||||
|                     .approverKomite4Date(drpApprovalView.getApproverKomite4Date()) | ||||
|                     .approverDirekturDate(drpApprovalView.getApproverDirekturDate()) | ||||
|                     .build(); | ||||
|         } | ||||
|         return null; | ||||
|  | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -3,11 +3,14 @@ package com.iconplus.smartproc.service.authentication; | ||||
| import com.iconplus.smartproc.configuration.JwtTokenUtil; | ||||
| import com.iconplus.smartproc.exception.BusinessException; | ||||
| import com.iconplus.smartproc.helper.service.BaseService; | ||||
| import com.iconplus.smartproc.model.entity.Menus; | ||||
| import com.iconplus.smartproc.model.entity.TokenManagement; | ||||
| import com.iconplus.smartproc.model.projection.MenusPermissionView; | ||||
| import com.iconplus.smartproc.model.request.LoginRequest; | ||||
| import com.iconplus.smartproc.model.response.LoginResponse; | ||||
| import com.iconplus.smartproc.model.response.MenusPermissionResponse; | ||||
| import com.iconplus.smartproc.model.response.MenusResponse; | ||||
| import com.iconplus.smartproc.model.response.ParentMenusResponse; | ||||
| import com.iconplus.smartproc.model.token.TokenContent; | ||||
| import com.iconplus.smartproc.repository.MenusRepository; | ||||
| import com.iconplus.smartproc.repository.PermissionRepository; | ||||
| @@ -75,6 +78,20 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|         } | ||||
|         Set<String> accessMenu = new HashSet<>(); | ||||
|         List<MenusPermissionResponse> menusPermissionResponseList = new ArrayList<>(); | ||||
|  | ||||
|  | ||||
|         List<ParentMenusResponse> parentMenusResponseList = new ArrayList<>(); | ||||
|         var parentMenu = menusRepository.findAllParentMenu(); | ||||
|         for (Menus menus : parentMenu) { | ||||
|             ParentMenusResponse parentMenusResponse = ParentMenusResponse.builder() | ||||
|                     .id(menus.getId()) | ||||
|                     .text(menus.getNama()) | ||||
|                     .icon(menus.getIcon()) | ||||
|                     .items(new ArrayList<>()) | ||||
|                     .build(); | ||||
|             parentMenusResponseList.add(parentMenusResponse); | ||||
|         } | ||||
|  | ||||
|         var listMenusPermission = permissionRepository.getListMenusPermission(userRoleView.getRoleId()); | ||||
|         for (MenusPermissionView menusPermissionView : listMenusPermission) { | ||||
|             if (BooleanUtils.isTrue(menusPermissionView.getCanView()) || | ||||
| @@ -83,24 +100,42 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|                     BooleanUtils.isTrue(menusPermissionView.getCanDelete()) || | ||||
|                     BooleanUtils.isTrue(menusPermissionView.getCanRead())) { | ||||
|                 accessMenu.add(menusPermissionView.getNama()); | ||||
|  | ||||
|                 MenusPermissionResponse menusPermissionResponse = MenusPermissionResponse.builder() | ||||
|                         .id(menusPermissionView.getId()) | ||||
|                         .nama(menusPermissionView.getNama()) | ||||
|                         .parentId(menusPermissionView.getParentId()) | ||||
|                         .urutan(menusPermissionView.getUrutan()) | ||||
|                         .icon(menusPermissionView.getIcon()) | ||||
|                         .link(menusPermissionView.getLink()) | ||||
|                         .canView(menusPermissionView.getCanView()) | ||||
|                         .canRead(menusPermissionView.getCanRead()) | ||||
|                         .canCreate(menusPermissionView.getCanCreate()) | ||||
|                         .canUpdate(menusPermissionView.getCanUpdate()) | ||||
|                         .canDelete(menusPermissionView.getCanDelete()) | ||||
|                         .build(); | ||||
|  | ||||
|                 menusPermissionResponseList.add(menusPermissionResponse); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|             MenusPermissionResponse menusPermissionResponse = MenusPermissionResponse.builder() | ||||
|                     .id(menusPermissionView.getId()) | ||||
|                     .nama(menusPermissionView.getNama()) | ||||
|                     .parentId(menusPermissionView.getParentId()) | ||||
|                     .urutan(menusPermissionView.getUrutan()) | ||||
|                     .icon(menusPermissionView.getIcon()) | ||||
|                     .link(menusPermissionView.getLink()) | ||||
|                     .canView(menusPermissionView.getCanView()) | ||||
|                     .canRead(menusPermissionView.getCanRead()) | ||||
|                     .canCreate(menusPermissionView.getCanCreate()) | ||||
|                     .canUpdate(menusPermissionView.getCanUpdate()) | ||||
|                     .canDelete(menusPermissionView.getCanDelete()) | ||||
|                     .build(); | ||||
|  | ||||
|             menusPermissionResponseList.add(menusPermissionResponse); | ||||
|         for (ParentMenusResponse parentMenusResponse : parentMenusResponseList) { | ||||
|             for (MenusPermissionResponse menusPermissionResponse : menusPermissionResponseList) { | ||||
|                 if (parentMenusResponse.getId().equals(menusPermissionResponse.getParentId())) { | ||||
|                     MenusResponse menusResponse = MenusResponse.builder() | ||||
|                             .id(menusPermissionResponse.getId()) | ||||
|                             .text(menusPermissionResponse.getNama()) | ||||
|                             .path(menusPermissionResponse.getLink()) | ||||
|                             .canView(menusPermissionResponse.getCanView()) | ||||
|                             .canRead(menusPermissionResponse.getCanRead()) | ||||
|                             .canCreate(menusPermissionResponse.getCanCreate()) | ||||
|                             .canUpdate(menusPermissionResponse.getCanUpdate()) | ||||
|                             .canDelete(menusPermissionResponse.getCanDelete()) | ||||
|                             .build(); | ||||
|                     parentMenusResponse.getItems().add(menusResponse); | ||||
|  | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         var tokenContent = TokenContent.builder() | ||||
| @@ -146,7 +181,7 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|             .email(userRoleView.getEmail()) | ||||
|             .roleId(userRoleView.getRoleId()) | ||||
|             .role(userRoleView.getRole()) | ||||
|             .menus(menusPermissionResponseList) | ||||
|             .menus(parentMenusResponseList) | ||||
|             .build(); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user