Advertisement
Guest User

Untitled

a guest
Mar 1st, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.82 KB | None | 0 0
  1. package id.co.solusiteknologi.jangjo.bo.user;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.persistence.NoResultException;
  6. import javax.persistence.Query;
  7.  
  8. import org.jleaf.core.AbstractBusinessFunction;
  9. import org.jleaf.core.BusinessFunction;
  10. import org.jleaf.core.CoreException;
  11. import org.jleaf.core.Dto;
  12. import org.jleaf.core.annotation.ErrorList;
  13. import org.jleaf.core.annotation.Info;
  14. import org.jleaf.core.annotation.InfoIn;
  15. import org.jleaf.core.annotation.InfoOut;
  16. import org.jleaf.core.dao.QueryBuilder;
  17. import org.jleaf.core.dao.mockup.CustomerDao;
  18. import org.jleaf.util.DateUtil;
  19. import org.jleaf.util.DtoUtil;
  20. import org.jleaf.util.ValidationUtil;
  21. import org.mindrot.jbcrypt.BCrypt;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26.  
  27. import id.co.solusiteknologi.jangjo.JangjoExceptionConstant;
  28. import id.co.solusiteknologi.jangjo.dao.UserDao;
  29.  
  30. @Service
  31. @InfoIn(value = { @Info(name = "username", description = "username", type = String.class, required = true),
  32. @Info(name = "password", description = "password", type = String.class, required = true) })
  33. @InfoOut(value = { @Info(name = "apiKey", description = "apiKey", type = String.class, required = true), })
  34. @ErrorList(errorKeys = {})
  35. public class Login extends AbstractBusinessFunction implements BusinessFunction {
  36. Logger log = LoggerFactory.getLogger(getClass());
  37. @Autowired
  38. UserDao userDao;
  39.  
  40. // @Autowired
  41. // CustomerDao customerDao;
  42.  
  43. @SuppressWarnings("rawtypes")
  44. @Override
  45. public Dto execute(Dto inputDto) throws Exception {
  46. ValidationUtil.valBlankOrNull(inputDto, "username");
  47. ValidationUtil.valBlankOrNull(inputDto, "password");
  48.  
  49. String username = inputDto.getString("username");
  50. String password = inputDto.getString("password");
  51.  
  52. String datetime = DateUtil.dateTimeNow();
  53. String hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt());
  54. QueryBuilder builder = new QueryBuilder();
  55.  
  56. builder.add(
  57. " SELECT A.user_id, A.username, A.password, B.user_bin_id, C.bin_id, D.bin_name, D.bin_code, D.address, E.province_name, ");
  58. builder.add(
  59. " F.city_name, G.district_name, H.sub_district_name, D.postal_code, D.email, D.phone_number from t_user A ");
  60. builder.add(" LEFT JOIN t_user_bin B ");
  61. builder.add(" ON A.user_id = B.user_id ");
  62. builder.add(" LEFT JOIN t_user_bin C ");
  63. builder.add(" ON B.user_bin_id = C.user_bin_id ");
  64. builder.add(" LEFT JOIN mstr.m_bin D ");
  65. builder.add(" ON C.bin_id = D.bin_id ");
  66. builder.add(" LEFT JOIN mstr.m_province E ");
  67. builder.add(" ON D.province_id = E.province_id ");
  68. builder.add(" LEFT JOIN mstr.m_city F ");
  69. builder.add(" ON D.city_id = F.city_id ");
  70. builder.add(" LEFT JOIN mstr.m_district G ");
  71. builder.add(" ON D.district_id = G.district_id ");
  72. builder.add(" LEFT JOIN mstr.m_sub_district H ");
  73. builder.add(" ON D.sub_district_id = H.sub_district_id ");
  74. builder.add(" WHERE LOWER(username) = LOWER(:username) ");
  75.  
  76. Query query = userDao.createNativeQuery(builder.toString());
  77. query.setParameter("username", username);
  78.  
  79. List result = query.getResultList();
  80. List<Dto> resultDto = DtoUtil.createDtoListFromArray(result, "userId", "username", "password", "userBinId",
  81. "binId", "binName", "binCode", "address", "province", "city", "district", "subDistrict", "postalCode",
  82. "email", "phoneNumber");
  83. if (resultDto.size() <= 0) {
  84. throw new CoreException(JangjoExceptionConstant.USER_NOT_FOUND);
  85. }
  86. if (!BCrypt.checkpw(password, resultDto.get(0).getString("password").replaceFirst("2y", "2a"))) {
  87. throw new CoreException(JangjoExceptionConstant.PASSWORD_NOT_MATCH, password);
  88. }
  89.  
  90. Dto outputDto = new Dto();
  91. outputDto.put("userId", resultDto.get(0).get("userId"));
  92. outputDto.put("username", resultDto.get(0).get("username"));
  93. outputDto.put("userBinId", resultDto.get(0).get("userBinId"));
  94. outputDto.put("binId", resultDto.get(0).get("binId"));
  95. outputDto.put("binName", resultDto.get(0).get("binName"));
  96. outputDto.put("binCode", resultDto.get(0).get("binCode"));
  97. outputDto.put("address", resultDto.get(0).get("address"));
  98. outputDto.put("province", resultDto.get(0).get("province"));
  99. outputDto.put("city", resultDto.get(0).get("city"));
  100. outputDto.put("district", resultDto.get(0).get("district"));
  101. outputDto.put("subDistrict", resultDto.get(0).get("subDistrict"));
  102. outputDto.put("email", resultDto.get(0).get("email"));
  103. outputDto.put("phoneNumber", resultDto.get(0).get("phoneNumber"));
  104. outputDto.put("apiKey", "sts123");
  105.  
  106. QueryBuilder builderCustomer = new QueryBuilder();
  107.  
  108. builderCustomer.add(" SELECT B.customer_id, B.customer_name FROM mstr.m_bin_bank_sampah A\n"
  109. + "LEFT JOIN mstr.m_customer B\n" + "ON A.bank_sampah_id = B.customer_id\n"
  110. + "WHERE A.bin_id = :binId AND A.doc_date LIKE :datetime ");
  111.  
  112. Query queryCustomer = userDao.createNativeQuery(builderCustomer.toString());
  113. queryCustomer.setParameter("binId", resultDto.get(0).get("binId"));
  114. queryCustomer.setParameter("datetime", datetime.substring(0, 8) + "%");
  115. log.error("DATE: " + datetime.substring(0, 8) + "%");
  116.  
  117. List resultCustomer = queryCustomer.getResultList();
  118. List<Dto> resultCustomerDto = DtoUtil.createDtoListFromArray(resultCustomer, "customerId", "customerName");
  119. log.error("CUSTOMER ADA " + resultCustomerDto.size());
  120. if (resultCustomerDto.size() > 0) {
  121. log.error("ADA DATA CUSTOMER");
  122. outputDto.put("bankSampahId", resultCustomerDto.get(0).get("customerId"));
  123. outputDto.put("bankSampahName", resultCustomerDto.get(0).get("customerName"));
  124. }
  125. else {
  126. log.error("TIDAK ADA DATA CUSTOMER");
  127. outputDto.put("bankSampahId", -99);
  128. outputDto.put("bankSampahName", "UNKNOWN");
  129. }
  130.  
  131. return outputDto;
  132. }
  133.  
  134. public String getDescription() {
  135. return "Jangjo Login";
  136. }
  137.  
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement