Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package id.co.solusiteknologi.jangjo.bo.user;
- import java.util.List;
- import javax.persistence.NoResultException;
- import javax.persistence.Query;
- import org.jleaf.core.AbstractBusinessFunction;
- import org.jleaf.core.BusinessFunction;
- import org.jleaf.core.CoreException;
- import org.jleaf.core.Dto;
- import org.jleaf.core.annotation.ErrorList;
- import org.jleaf.core.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.core.dao.mockup.CustomerDao;
- import org.jleaf.util.DateUtil;
- import org.jleaf.util.DtoUtil;
- import org.jleaf.util.ValidationUtil;
- import org.mindrot.jbcrypt.BCrypt;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import id.co.solusiteknologi.jangjo.JangjoExceptionConstant;
- import id.co.solusiteknologi.jangjo.dao.UserDao;
- @Service
- @InfoIn(value = { @Info(name = "username", description = "username", type = String.class, required = true),
- @Info(name = "password", description = "password", type = String.class, required = true) })
- @InfoOut(value = { @Info(name = "apiKey", description = "apiKey", type = String.class, required = true), })
- @ErrorList(errorKeys = {})
- public class Login extends AbstractBusinessFunction implements BusinessFunction {
- Logger log = LoggerFactory.getLogger(getClass());
- @Autowired
- UserDao userDao;
- // @Autowired
- // CustomerDao customerDao;
- @SuppressWarnings("rawtypes")
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- ValidationUtil.valBlankOrNull(inputDto, "username");
- ValidationUtil.valBlankOrNull(inputDto, "password");
- String username = inputDto.getString("username");
- String password = inputDto.getString("password");
- String datetime = DateUtil.dateTimeNow();
- String hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt());
- QueryBuilder builder = new QueryBuilder();
- builder.add(
- " 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, ");
- builder.add(
- " F.city_name, G.district_name, H.sub_district_name, D.postal_code, D.email, D.phone_number from t_user A ");
- builder.add(" LEFT JOIN t_user_bin B ");
- builder.add(" ON A.user_id = B.user_id ");
- builder.add(" LEFT JOIN t_user_bin C ");
- builder.add(" ON B.user_bin_id = C.user_bin_id ");
- builder.add(" LEFT JOIN mstr.m_bin D ");
- builder.add(" ON C.bin_id = D.bin_id ");
- builder.add(" LEFT JOIN mstr.m_province E ");
- builder.add(" ON D.province_id = E.province_id ");
- builder.add(" LEFT JOIN mstr.m_city F ");
- builder.add(" ON D.city_id = F.city_id ");
- builder.add(" LEFT JOIN mstr.m_district G ");
- builder.add(" ON D.district_id = G.district_id ");
- builder.add(" LEFT JOIN mstr.m_sub_district H ");
- builder.add(" ON D.sub_district_id = H.sub_district_id ");
- builder.add(" WHERE LOWER(username) = LOWER(:username) ");
- Query query = userDao.createNativeQuery(builder.toString());
- query.setParameter("username", username);
- List result = query.getResultList();
- List<Dto> resultDto = DtoUtil.createDtoListFromArray(result, "userId", "username", "password", "userBinId",
- "binId", "binName", "binCode", "address", "province", "city", "district", "subDistrict", "postalCode",
- "email", "phoneNumber");
- if (resultDto.size() <= 0) {
- throw new CoreException(JangjoExceptionConstant.USER_NOT_FOUND);
- }
- if (!BCrypt.checkpw(password, resultDto.get(0).getString("password").replaceFirst("2y", "2a"))) {
- throw new CoreException(JangjoExceptionConstant.PASSWORD_NOT_MATCH, password);
- }
- Dto outputDto = new Dto();
- outputDto.put("userId", resultDto.get(0).get("userId"));
- outputDto.put("username", resultDto.get(0).get("username"));
- outputDto.put("userBinId", resultDto.get(0).get("userBinId"));
- outputDto.put("binId", resultDto.get(0).get("binId"));
- outputDto.put("binName", resultDto.get(0).get("binName"));
- outputDto.put("binCode", resultDto.get(0).get("binCode"));
- outputDto.put("address", resultDto.get(0).get("address"));
- outputDto.put("province", resultDto.get(0).get("province"));
- outputDto.put("city", resultDto.get(0).get("city"));
- outputDto.put("district", resultDto.get(0).get("district"));
- outputDto.put("subDistrict", resultDto.get(0).get("subDistrict"));
- outputDto.put("email", resultDto.get(0).get("email"));
- outputDto.put("phoneNumber", resultDto.get(0).get("phoneNumber"));
- outputDto.put("apiKey", "sts123");
- QueryBuilder builderCustomer = new QueryBuilder();
- builderCustomer.add(" SELECT B.customer_id, B.customer_name FROM mstr.m_bin_bank_sampah A\n"
- + "LEFT JOIN mstr.m_customer B\n" + "ON A.bank_sampah_id = B.customer_id\n"
- + "WHERE A.bin_id = :binId AND A.doc_date LIKE :datetime ");
- Query queryCustomer = userDao.createNativeQuery(builderCustomer.toString());
- queryCustomer.setParameter("binId", resultDto.get(0).get("binId"));
- queryCustomer.setParameter("datetime", datetime.substring(0, 8) + "%");
- log.error("DATE: " + datetime.substring(0, 8) + "%");
- List resultCustomer = queryCustomer.getResultList();
- List<Dto> resultCustomerDto = DtoUtil.createDtoListFromArray(resultCustomer, "customerId", "customerName");
- log.error("CUSTOMER ADA " + resultCustomerDto.size());
- if (resultCustomerDto.size() > 0) {
- log.error("ADA DATA CUSTOMER");
- outputDto.put("bankSampahId", resultCustomerDto.get(0).get("customerId"));
- outputDto.put("bankSampahName", resultCustomerDto.get(0).get("customerName"));
- }
- else {
- log.error("TIDAK ADA DATA CUSTOMER");
- outputDto.put("bankSampahId", -99);
- outputDto.put("bankSampahName", "UNKNOWN");
- }
- return outputDto;
- }
- public String getDescription() {
- return "Jangjo Login";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement