ronaldkwandy

Untitled

Mar 18th, 2020
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.30 KB | None | 0 0
  1. package id.co.sofcograha.gajiidapi.base.mst.user.repositories;
  2.  
  3. import javax.persistence.EntityManager;
  4.  
  5. import org.springframework.stereotype.Repository;
  6. import org.springframework.transaction.annotation.Transactional;
  7.  
  8. import id.co.sofcograha.gajiidapi.base.extendables.BaseRepository;
  9. import id.co.sofcograha.gajiidapi.base.mst.user.entities.DaftarUserOtorisasi;
  10. import id.co.sofcograha.gajiidapi.base.search.NativeSearchBuilder;
  11. import id.co.sofcograha.gajiidapi.base.search.SearchParameter;
  12. import id.co.sofcograha.gajiidapi.base.search.SearchResult;
  13. import id.co.sofcograha.gajiidapi.base.utils.QueryUtil;
  14. import id.co.sofcograha.gajiidapi.base.utils.TimeUtil;
  15.  
  16. @Repository
  17. public class DaftarUserOtorisasiRepository extends BaseRepository<DaftarUserOtorisasi> {
  18.  
  19.     public DaftarUserOtorisasiRepository(EntityManager em) {
  20.         super(DaftarUserOtorisasi.class, em);
  21.     }
  22.    
  23.     @Transactional
  24.     public SearchResult<DaftarUserOtorisasi> searchDaftarUserOtorisasi(SearchParameter searchParameter) {
  25.         String userName = (String) searchParameter.getValueFromMappedParam("userName");
  26.         String name = (String) searchParameter.getValueFromMappedParam("name");
  27.         String perusahaanId = (String) searchParameter.getValueFromMappedParam("perusahaan.id");
  28.         String kodePerusahaan = (String) searchParameter.getValueFromMappedParam("kodePerusahaan");
  29.         String namaPerusahaan = (String) searchParameter.getValueFromMappedParam("namaPerusahaan");
  30.         Boolean flagAdmin = (Boolean) searchParameter.getValueFromMappedParam("flagAdmin");
  31.         Boolean flagSuperUser = (Boolean) searchParameter.getValueFromMappedParam("flagSuperUser");
  32.         Boolean flagActive = (Boolean) searchParameter.getValueFromMappedParam("flagActive");
  33.          
  34.         StringBuilder queryStringBuilder = new StringBuilder();
  35.         queryStringBuilder.append("SELECT          public.sys_guid() as id, a.id as hm_msy004_user_id, a.username, a.name, c.id as hm_msy002_company_id, \n");
  36.         queryStringBuilder.append("                c.code as hm_msy002_company_code, c.name as hm_msy002_company_name, \n");
  37.         queryStringBuilder.append("                CASE WHEN c.id = a.hm_msy002_id THEN TRUE ELSE FALSE END as default, \n");
  38.         queryStringBuilder.append("                a.email, a.admin, COALESCE(b.super_user, FALSE) as super_user, a.locked, \n");
  39.         queryStringBuilder.append("                CASE WHEN a.admin = TRUE THEN a.active ELSE CASE WHEN b.end_date = :maxDate THEN TRUE ELSE FALSE END END as active, \n");
  40.         queryStringBuilder.append("                a.version, a.user_create, a.creation_time, \n");
  41.         queryStringBuilder.append("                a.user_modify, a.modification_time \n");
  42.         queryStringBuilder.append("FROM            public.hm_msy004 a \n");
  43.         queryStringBuilder.append("LEFT OUTER JOIN public.hm_msy005 b ON b.hm_msy004_id = a.id \n");
  44.         queryStringBuilder.append("INNER JOIN      public.hm_msy002 c ON c.id = b.hm_msy002_id \n");
  45.         queryStringBuilder.append("WHERE           1 = 1 \n");
  46.        
  47.         NativeSearchBuilder<DaftarUserOtorisasi> search = new NativeSearchBuilder<>(DaftarUserOtorisasi.class, em);
  48.         search.addParameter("maxDate", TimeUtil.getMaxDate());
  49.      
  50.         if (!QueryUtil.isAll(userName)) {
  51.           queryStringBuilder.append("AND LOWER(a.username) LIKE LOWER(:username) \n");
  52.           search.addParameter("username", QueryUtil.formatStringForLikeFilter(userName));
  53.         }
  54.         if (!QueryUtil.isAll(name)) {
  55.           queryStringBuilder.append("AND LOWER(a.name) LIKE LOWER(:name) \n");
  56.           search.addParameter("name", QueryUtil.formatStringForLikeFilter(name));
  57.         }
  58.         if (perusahaanId != null) {
  59.           queryStringBuilder.append("AND b.id = :perusahaanId \n");
  60.           search.addParameter("perusahaanId", perusahaanId);
  61.         }
  62.         if (!QueryUtil.isAll(kodePerusahaan)) {
  63.           queryStringBuilder.append("AND LOWER(b.code) LIKE LOWER(:kodePerusahaan) \n");
  64.           search.addParameter("kodePerusahaan", QueryUtil.formatStringForLikeFilter(kodePerusahaan));
  65.         }
  66.         if (!QueryUtil.isAll(namaPerusahaan)) {
  67.           queryStringBuilder.append("AND LOWER(b.name) LIKE LOWER(:namaPerusahaan) \n");
  68.           search.addParameter("namaPerusahaan", QueryUtil.formatStringForLikeFilter(namaPerusahaan));
  69.         }
  70.         if (flagAdmin != null) {
  71.           queryStringBuilder.append("AND a.id = :flagAdmin \n");
  72.           search.addParameter("flagAdmin", flagAdmin);
  73.         }
  74.         if (flagSuperUser != null) {
  75.           queryStringBuilder.append("AND a.id = :flagAdmin \n");
  76.           search.addParameter("flagAdmin", flagAdmin);
  77.         }
  78.        
  79.         if (flagActive != null) {
  80.           queryStringBuilder.append("AND CASE WHEN a.admin = TRUE THEN \n");
  81.           queryStringBuilder.append("        a.active \n");
  82.           queryStringBuilder.append("    ELSE \n");
  83.           queryStringBuilder.append("        COALESCE(CASE WHEN :flagActive THEN \n");
  84.           queryStringBuilder.append("                   now() BETWEEN c.start_date AND c.end_date \n");
  85.           queryStringBuilder.append("                ELSE \n");
  86.           queryStringBuilder.append("                   c.end_date < :systemDate \n");
  87.           queryStringBuilder.append("                END, FALSE) \n");
  88.           queryStringBuilder.append("    END = :flagActive \n");
  89.           search.addParameter("systemDate", TimeUtil.getSystemDate());
  90.           search.addParameter("flagActive", flagActive);
  91.         }
  92.        
  93.         search.setQueryString(queryStringBuilder);
  94.         search.setPagination(searchParameter.getPagination());
  95.         search.setSort(searchParameter.getSort());
  96.      
  97.         return search.getSearchResult();
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment