diff --git a/src/main/java/com/mfsys/uco/UCOURI.java b/src/main/java/com/mfsys/uco/UCOURI.java index ffabaac..9d265aa 100644 --- a/src/main/java/com/mfsys/uco/UCOURI.java +++ b/src/main/java/com/mfsys/uco/UCOURI.java @@ -21,5 +21,5 @@ public interface UCOURI { String BANKING_CASH_IN = "/deposit/transactions/uco/cash-in"; String BANKING_CASH_OUT = "/deposit/transactions/uco/cash-out"; - String ACCOUNT_ACTIVITY = "/account/activity/organization/{porOrgacode}/customer/{cmpCustcode}/customertype/{pctCstycode}/fromdate/{fdate}/todate/{tdate}"; + String ACCOUNT_ACTIVITY = "/account/activity/organization/{porOrgacode}/customer/{cmpCustcode}/fromdate/{fdate}/todate/{tdate}"; } diff --git a/src/main/java/com/mfsys/uco/constants/LoggingActivityFilter.java b/src/main/java/com/mfsys/uco/constants/LoggingActivityFilter.java index 029606c..43fd89b 100644 --- a/src/main/java/com/mfsys/uco/constants/LoggingActivityFilter.java +++ b/src/main/java/com/mfsys/uco/constants/LoggingActivityFilter.java @@ -12,67 +12,71 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; -import org.springframework.web.util.ContentCachingResponseWrapper; - import java.io.IOException; import java.net.URLDecoder; import java.time.LocalDateTime; + @Component public class LoggingActivityFilter extends OncePerRequestFilter { private static final Logger LOGGER = LoggerFactory.getLogger(LoggingActivityFilter.class); private final CustomerProfileRepository customerProfileRepository; - private final CustomerAccountActivityService custAccActivityService; + private final CustomerAccountActivityService customerAccountActivityService; - public LoggingActivityFilter(CustomerProfileRepository customerProfileRepository, CustomerAccountActivityService custAccActivityService) { + public LoggingActivityFilter(CustomerProfileRepository customerProfileRepository, CustomerAccountActivityService customerAccountActivityService) { this.customerProfileRepository = customerProfileRepository; - this.custAccActivityService = custAccActivityService; + this.customerAccountActivityService = customerAccountActivityService; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + setAccessControlHeaders(response); + if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { + response.setStatus(HttpServletResponse.SC_OK); + } else { + filterChain.doFilter(request, response); + logRequestDetails(request, response); + handleUserActivityLogging(request); + } + } + + private void setAccessControlHeaders(HttpServletResponse response) { response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Headers", "*"); response.setHeader("Access-Control-Expose-Headers", "*"); response.setHeader("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS"); - if (!(request.getMethod().equals("OPTIONS"))) { - filterChain.doFilter(request, response); - } + } - ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response); - LOGGER.info( - "FINISHED PROCESSING: METHOD={}; REQUESTURI={}; RESPONSE CODE={}; IP={};", - request.getMethod(), - request.getRequestURI(), - response.getStatus(), - request.getRemoteAddr() - ); + private void logRequestDetails(HttpServletRequest request, HttpServletResponse response) { + LOGGER.info("FINISHED PROCESSING: METHOD={}; REQUESTURI={}; RESPONSE CODE={}; IP={};", + request.getMethod(), request.getRequestURI(), response.getStatus(), request.getRemoteAddr()); + } - CustomerProfile cust; - String susUsercode = ""; - if(request.getHeader("cmpUserId")!=null) { - susUsercode = URLDecoder.decode(request.getHeader("cmpUserId"), "UTF-8"); - } - String porOrgacode = request.getHeader("porOrgacode"); - String email = request.getHeader("email"); - String channalCode = request.getHeader("channelCode"); - String deviceName = request.getHeader("deviceName"); - String userActivity = request.getHeader("userActivity"); - cust = customerProfileRepository.findbyEmail(porOrgacode,email); - LocalDateTime date = LocalDateTime.now(); + private void handleUserActivityLogging(HttpServletRequest request) { + try { + String susUserCode = request.getHeader("cmpUserId") != null ? URLDecoder.decode(request.getHeader("cmpUserId"), "UTF-8") : ""; + String porOrgacode = request.getHeader("porOrgacode"); + String email = request.getHeader("email"); + String channelCode = request.getHeader("channelCode"); + String deviceName = request.getHeader("deviceName"); + String userActivity = request.getHeader("userActivity"); - if (cust != null && userActivity!=null) { - CustomerAccountActivity activity = new CustomerAccountActivity( - null, - porOrgacode, - cust.getCmpCustcode(), - date, - channalCode, - deviceName, - userActivity, - cust - ); - custAccActivityService.postCustomerAccountActivity(activity);; + CustomerProfile customer = customerProfileRepository.findbyEmail(porOrgacode,email); + if (customer != null && userActivity != null) { + CustomerAccountActivity activity = new CustomerAccountActivity( + null, + porOrgacode, + customer.getCmpCustcode(), + LocalDateTime.now(), + channelCode, + deviceName, + userActivity, + customer + ); + customerAccountActivityService.postCustomerAccountActivity(activity); + } + } catch (Exception e) { + LOGGER.error("Error logging user activity", e); } } } diff --git a/src/main/java/com/mfsys/uco/controller/UserController.java b/src/main/java/com/mfsys/uco/controller/UserController.java index f46a513..5f62638 100644 --- a/src/main/java/com/mfsys/uco/controller/UserController.java +++ b/src/main/java/com/mfsys/uco/controller/UserController.java @@ -163,9 +163,9 @@ public class UserController { @GetMapping(UCOURI.ACCOUNT_ACTIVITY) public ResponseEntity> getCustomerAccountActivity( - @PathVariable String porOrgacode, @PathVariable String cmpCustcode,@RequestHeader String cmpUserId , @PathVariable String pctCstycode,@PathVariable String fdate,@PathVariable String tdate) { + @PathVariable String porOrgacode, @PathVariable String cmpCustcode,@PathVariable String fdate,@PathVariable String tdate) { return new ResponseEntity>( - customerAccountActivityService.getCustomerAccountActivity(porOrgacode, pctCstycode, cmpCustcode,cmpUserId, fdate, tdate), + customerAccountActivityService.getCustomerAccountActivity(porOrgacode, cmpCustcode, fdate, tdate), HttpStatus.OK); } diff --git a/src/main/java/com/mfsys/uco/repository/CustomerAccountActivityRepository.java b/src/main/java/com/mfsys/uco/repository/CustomerAccountActivityRepository.java index a883b6d..a5059b4 100644 --- a/src/main/java/com/mfsys/uco/repository/CustomerAccountActivityRepository.java +++ b/src/main/java/com/mfsys/uco/repository/CustomerAccountActivityRepository.java @@ -10,8 +10,8 @@ import java.util.List; @Repository public interface CustomerAccountActivityRepository extends JpaRepository { - @Query("SELECT cust FROM CustomerAccountActivity cust WHERE cust.cmpCustcode = :cmpUserId AND DATE(cust.date) BETWEEN DATE(:fdate) AND DATE(:tdate)") - List findAllByCmpUserIdAndDateBetween(String cmpUserId, String fdate, String tdate); + @Query("SELECT cust FROM CustomerAccountActivity cust WHERE cust.porOrgacode = :porOrgacode and cust.cmpCustcode = :cmpCustcode AND DATE(cust.date) BETWEEN DATE(:fdate) AND DATE(:tdate)") + List findAllByCmpUserIdAndDateBetween(String porOrgacode, String cmpCustcode, String fdate, String tdate); } diff --git a/src/main/java/com/mfsys/uco/service/CustomerAccountActivityService.java b/src/main/java/com/mfsys/uco/service/CustomerAccountActivityService.java index 509e2e6..0696f96 100644 --- a/src/main/java/com/mfsys/uco/service/CustomerAccountActivityService.java +++ b/src/main/java/com/mfsys/uco/service/CustomerAccountActivityService.java @@ -17,14 +17,11 @@ public class CustomerAccountActivityService { this.customerAccountActivityRepository = customerAccountActivityRepository; } - public List getCustomerAccountActivity(String porOrgacode, String pctCstycode, - String cmpCustcode, String cmpUserId, String fdate, String tdate) { - - return customerAccountActivityRepository.findAllByCmpUserIdAndDateBetween(cmpUserId, fdate, tdate); + public List getCustomerAccountActivity(String porOrgacode, String cmpCustcode, String fdate, String tdate) { + return customerAccountActivityRepository.findAllByCmpUserIdAndDateBetween(porOrgacode,cmpCustcode, fdate, tdate); } public void postCustomerAccountActivity(CustomerAccountActivity customerAccountActivity) { - // TODO Auto-generated method stub customerAccountActivityRepository.save(customerAccountActivity); }