Advertisement
Guest User

Untitled

a guest
May 12th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 41.02 KB | None | 0 0
  1. package escort.rest.user;
  2.  
  3. import com.google.gson.Gson;
  4. import com.google.gson.JsonElement;
  5. import com.google.gson.JsonParser;
  6. import escort.entity.*;
  7. import escort.enums.CurrencyCode;
  8. import escort.genericController.GenericAPIController;
  9. import escort.repositoryDAO.*;
  10. import escort.service.order.OrderService;
  11. import escort.service.user.UserGoogleSender;
  12. import escort.service.user.UserService;
  13. import escort.util.DTOUtils;
  14. import org.apache.commons.codec.digest.DigestUtils;
  15. import org.codehaus.jackson.map.ObjectMapper;
  16. import org.json.simple.JSONArray;
  17. import org.json.simple.JSONObject;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.http.HttpHeaders;
  21. import org.springframework.http.HttpStatus;
  22. import org.springframework.http.ResponseEntity;
  23. import org.springframework.security.core.Authentication;
  24. import org.springframework.security.core.context.SecurityContextHolder;
  25. import org.springframework.transaction.annotation.Transactional;
  26. import org.springframework.web.bind.annotation.*;
  27.  
  28. import java.io.IOException;
  29. import java.io.UnsupportedEncodingException;
  30. import java.math.BigDecimal;
  31. import java.math.RoundingMode;
  32. import java.util.*;
  33.  
  34. @RestController
  35. @RequestMapping(value = "/escort/api")
  36. public class UserController extends GenericAPIController<User, Long> {
  37.  
  38.     private static long TIME_FOR_SLEEP = 1000;
  39.     private static final long TIME_FOR_DROP_CONNECTION = 50000;
  40.     private static final long TIME_FOR_CHANGE_STATUS = 180000;
  41.  
  42.     @Autowired
  43.     private UserGoogleSender userGoogleSender;
  44.  
  45.     @Autowired
  46.     private UserTagsRepository userTagsRepository;
  47.  
  48.     @Autowired
  49.     private OrderCustomerRepository orderCustomerRepository;
  50.  
  51.     @Autowired
  52.     private OrderClientRepository orderClientRepository;
  53.  
  54.     @Autowired
  55.     private InterestSettingsRepository interestSettingsRepository;
  56.  
  57.     @Autowired
  58.     private UserRepository userRepository;
  59.  
  60.     @Autowired
  61.     private MessageRepository messageRepository;
  62.  
  63.     @Autowired
  64.     private PaymentEntityRepository paymentEntityRepository;
  65.  
  66.     @Autowired
  67.     private TagRepository tagRepository;
  68.  
  69.     @Autowired
  70.     private UserService userService;
  71.  
  72.     @Autowired
  73.     private RateRepository rateRepository;
  74.  
  75.     @Autowired
  76.     private PhotoRepository photoRepository;
  77.  
  78.     @Autowired
  79.     private OrderService orderService;
  80.  
  81.     @Value("${repository.img}")
  82.     private String pathToRepositoryImg;
  83.  
  84.     @Value("${domain.server}")
  85.     private String domainServer;
  86.  
  87.     private HttpHeaders responseHeaders = new HttpHeaders();
  88.  
  89.     @RequestMapping(value = "/getPlaces", method = RequestMethod.GET, headers = {"Accept=application/json"})
  90.     public String getPlaces(@RequestParam(value = "city") String city) throws UnsupportedEncodingException {
  91.         return userGoogleSender.getPlaces(city);
  92.     }
  93.  
  94.     @RequestMapping(value = "/getPlaceDetails", method = RequestMethod.GET, headers = {"Accept=application/json"})
  95.     public String getPlacesDetails(@RequestParam(value = "placeId") String placeId) {
  96.         return userGoogleSender.getPlacesDetails(placeId);
  97.     }
  98.  
  99.     @RequestMapping(value = "/editProfile", method = RequestMethod.PUT, headers = {"Accept=application/json", "Content-Type=application/json"})
  100.     public
  101.     @ResponseBody
  102.     @Transactional
  103.     Object editProfile(@RequestBody UserDTO user) {
  104.         Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  105.         String phone = auth.getPrincipal().toString();
  106.         User currentUser = userRepository.findByPhone(phone);
  107.         HashMap<String, String> userValid = userValidator(user);
  108.         if (userValid.isEmpty()) {
  109.             currentUser.setUserName(user.getUserName());
  110.             currentUser.setCity(user.getCity());
  111.             currentUser.setInvite(user.getInvite());
  112.             currentUser.setAge(user.getAge());
  113.             currentUser.setHairColor(user.getHairColor());
  114.             currentUser.setHeight(user.getHeight());
  115.             currentUser.setBodyType(user.getBodyType());
  116.             currentUser.setTypeSexUser(user.getTypeSexUser());
  117.             currentUser.setCityId(user.getCityId());
  118.             currentUser.setPlaceId(user.getPlaceId());
  119.             currentUser.setCurrencyCode(user.getCurrencyCode());
  120.  
  121.             userTagsRepository.deleteByUserId(currentUser.getId());
  122.  
  123.  
  124.             //add new tags
  125.             Set<UserTagsDTO> tagsSet = user.getUserTagsDTO();
  126.             for (UserTagsDTO currentTag : tagsSet) {
  127.                 Tag tag = new Tag();
  128.                 UserTags ut = new UserTags();
  129.  
  130.  
  131.                 if (tagRepository.findByTagName(currentTag.getTagName().toLowerCase()) == null) { //new tag
  132.  
  133.                     tag.setName(currentTag.getTagName());
  134.                     Tag newTag = (Tag) tagRepository.save(tag);
  135.  
  136.                     MyCompositePK myCompositePK = new MyCompositePK();
  137.  
  138.                     myCompositePK.setUserId(currentUser);
  139.                     myCompositePK.setTagId(newTag);
  140.  
  141.                     ut.setId(myCompositePK);
  142.                     ut.setDate(currentTag.getDate());
  143.                     userTagsRepository.save(ut);
  144.  
  145.                 } else { //tag exist
  146.                     Tag t = tagRepository.findByTagName(currentTag.getTagName());
  147.                     MyCompositePK myCompositePK = new MyCompositePK();
  148.  
  149.                     myCompositePK.setUserId(currentUser);
  150.                     myCompositePK.setTagId(t);
  151.  
  152.                     ut.setId(myCompositePK);
  153.                     ut.setDate(currentTag.getDate());
  154.                     userTagsRepository.save(ut);
  155.                 }
  156.  
  157.             }
  158.  
  159.         } else {
  160.             return new ResponseEntity<>(userValid, responseHeaders, HttpStatus.DESTINATION_LOCKED);
  161.         }
  162.  
  163.         if (user.getAboutMe() != null) {
  164.             currentUser.setAboutMe(user.getAboutMe());
  165.         }
  166.         //if "invited" has opened chats and he is going to be "inviter", we need to close all his chats
  167.         if ((!currentUser.getInvite() || currentUser.getInvite() == null) && user.getInvite() == true) {
  168.             //set non-archive messages of this user or received by this user to archive
  169.             List<Message> listOfMessage = messageRepository.findNonArchiveMessagesSendReceivedByUser(currentUser.getId());
  170.             if (!listOfMessage.isEmpty()) {
  171.                 for (Message messageCurrent : listOfMessage) {
  172.                     messageCurrent.setArchive(true);
  173.                     messageCurrent.setCreateDate(new Date().getTime());
  174.                 }
  175.             }
  176.         }
  177.         if (!currentUser.getInvite() && user.getInvite()) {
  178.             List<Message> allAvailableMessages = messageRepository.findAllAvailableMessages(currentUser.getId());
  179.             for (Message currentMessage : allAvailableMessages) {
  180.                 currentMessage.setArchive(true);
  181.                 currentMessage.setRead(false);
  182.                 messageRepository.save(currentMessage);
  183.             }
  184.         }
  185.  
  186.         currentUser.setSmoker(user.getSmoker());
  187.  
  188.         if (user.getAvailable() != null) {
  189.             currentUser.setAvailable(user.getAvailable());
  190.         }
  191.         if (user.getInterests() != null) {
  192.             currentUser.setInterests(user.getInterests());
  193.         }
  194.         if (user.getOccupation() != null) {
  195.             currentUser.setOccupation(user.getOccupation());
  196.         }
  197.         if (user.getLanguages() != null) {
  198.             currentUser.setLanguages(user.getLanguages());
  199.         }
  200.         currentUser.setHairLength(user.getHairLength());
  201.         save(currentUser);
  202.         return new ResponseEntity<>("{\"result\":\"Edit success\"}", responseHeaders, HttpStatus.OK);
  203.     }
  204.  
  205.     @RequestMapping(value = "/getUserInfoById/{id}", method = RequestMethod.PUT, headers = {"Content-Type=application/json"}, produces = {"application/json; charset=UTF-8"})
  206.     public
  207.     @ResponseBody
  208.     Object getUserInfo(@PathVariable("id") Long id) {
  209.         User currentUser = userRepository.findById(id);
  210.         Set<UserTags> tagUser = userTagsRepository.findByUserId(id);
  211.         currentUser.setUserTagses(tagUser);
  212.         UserDTO userDTO = userService.processUserDTO(currentUser);
  213.         if (currentUser.getAvatar() != null) {
  214.             userDTO.setVerify(currentUser.getAvatar().getVerify());
  215.             String avatar = domainServer + "/escort/api/repositoryImages/" + currentUser.getId() + "/" + currentUser.getAvatar().getComparePhotoName();
  216.             String photo = domainServer + "/escort/api/repositoryImages/" + currentUser.getId() + "/" + currentUser.getAvatar().getPhotoName();
  217.             userDTO.setAvatarFile(avatar);
  218.             userDTO.setFullPhoto(photo);
  219.         }
  220.  
  221.         currentUser.setUserTagses(tagUser);
  222.         Set<UserTagsDTO> userTagsDTOSet = new HashSet<>();
  223.         for (UserTags userTags :
  224.                 tagUser) {
  225.             UserTagsDTO userTagsDTO = new UserTagsDTO();
  226.             userTagsDTO.setTagName(tagRepository.findById(userTags.getId().getTagId().getId()).getName());
  227.             userTagsDTO.setDate(userTags.getDate());
  228.             userTagsDTOSet.add(userTagsDTO);
  229.         }
  230.         userDTO.setUserTagsDTO(userTagsDTOSet);
  231.         Gson gson = new Gson();
  232.         String jsonUser = gson.toJson(userDTO, UserDTO.class);
  233.         if (jsonUser == null) {
  234.             return new ResponseEntity<>("{\"result\":\"Does not exist currentUser\"}", responseHeaders, HttpStatus.OK);
  235.         }
  236.  
  237.  
  238.         Float averageRate = rateRepository.findAvergeRatingByUserId(currentUser.getId());
  239.        /* List<Rate> comments = rateRepository.findAllCommentsOfUser(currentUser.getId());
  240.         List<RateDTO> rateDTOList = new ArrayList<>();
  241.         for(Rate currentRate : comments) {
  242.             RateDTO rateDTO = new RateDTO();
  243.             rateDTO.setIdReceiver(currentRate.getIdReceiver().getId());
  244.             rateDTO.setId(currentRate.getId());
  245.             rateDTO.setIdSender(currentRate.getIdSender().getId());
  246.             rateDTO.setComment(currentRate.getComment());
  247.             rateDTO.setRate(currentRate.getRate());
  248.             rateDTOList.add(rateDTO);
  249.         }*/
  250.         JsonElement credJson = new JsonParser().parse(jsonUser);
  251. //        String jsonRateDto = new Gson().toJson(rateDTOList);
  252.         JsonElement averageRateJson = new JsonParser().parse(String.valueOf(averageRate));
  253. //        JsonElement commentsJson = new JsonParser().parse(jsonRateDto);
  254.         credJson.getAsJsonObject().remove("password");
  255.         credJson.getAsJsonObject().add("averageRate", averageRateJson);
  256. //        credJson.getAsJsonObject().add("comments", commentsJson);
  257.         String result = credJson.getAsJsonObject().toString();
  258.         return new ResponseEntity<>(result, responseHeaders, HttpStatus.OK);
  259.     }
  260.  
  261.     @RequestMapping(value = "/getUserInfoByToken", method = RequestMethod.GET, produces = {"application/json; charset=UTF-8"})
  262.     public
  263.     @ResponseBody
  264.     Object getUserInfoByToken() {
  265.         Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  266.         String phone = auth.getPrincipal().toString();
  267.         User userByToken = userRepository.findByPhone(phone);
  268.         Set<UserTags> tags = userTagsRepository.findByUserId(userByToken.getId());
  269.         userByToken.setUserTagses(tags);
  270.         UserDTO userDTO = userService.processUserDTO(userByToken);
  271.         Set<UserTagsDTO> userTagsDTOSet = new HashSet<>();
  272.         for (UserTags userTags :
  273.                 tags) {
  274.             UserTagsDTO userTagsDTO = new UserTagsDTO();
  275.             userTagsDTO.setTagName(tagRepository.findById(userTags.getId().getTagId().getId()).getName());
  276.             userTagsDTO.setDate(userTags.getDate());
  277.             userTagsDTOSet.add(userTagsDTO);
  278.         }
  279.         if (userByToken.getCurrencyCode() != null) {
  280.             userDTO.setCurrencyCode(userByToken.getCurrencyCode());
  281.         }
  282.         userDTO.setUserTagsDTO(userTagsDTOSet);
  283.         if (userByToken.getAvatar() != null) {
  284.             userDTO.setVerify(userByToken.getAvatar().getVerify());
  285.             String avatar = domainServer + "/escort/api/repositoryImages/" + userByToken.getId() + "/" + userByToken.getAvatar().getComparePhotoName();
  286.             String photo = domainServer + "/escort/api/repositoryImages/" + userByToken.getId() + "/" + userByToken.getAvatar().getPhotoName();
  287.             userDTO.setAvatarFile(avatar);
  288.             userDTO.setFullPhoto(photo);
  289.         }
  290.         userDTO.setBlocked(userByToken.getBlocked());
  291.         userDTO.setPlaceId(userByToken.getPlaceId());
  292.         userDTO.setCurrencyCode(userByToken.getCurrencyCode());
  293.  
  294.         Gson gson = new Gson();
  295.  
  296.         String jsonUser = gson.toJson(userDTO, UserDTO.class);
  297.         if (jsonUser == null) {
  298.             return new ResponseEntity<>("{\"result\":\"Does not exist user\"}", responseHeaders, HttpStatus.OK);
  299.         }
  300.         Float averageRate = rateRepository.findAvergeRatingByUserId(userByToken.getId());
  301.        /* List<Rate> comments = rateRepository.findAllCommentsOfUser(userByToken.getId());
  302.         List<RateDTO> rateDTOList = new ArrayList<>();
  303.         for(Rate currentRate : comments) {
  304.             RateDTO rateDTO = new RateDTO();
  305.             rateDTO.setIdReceiver(currentRate.getIdReceiver().getId());
  306.             rateDTO.setId(currentRate.getId());
  307.             rateDTO.setIdSender(currentRate.getIdSender().getId());
  308.             rateDTO.setComment(currentRate.getComment());
  309.             rateDTO.setRate(currentRate.getRate());
  310.             rateDTOList.add(rateDTO);
  311.         }*/
  312.         JsonElement credJson = new JsonParser().parse(jsonUser);
  313.         // String jsonRateDto = new Gson().toJson(rateDTOList);
  314.         JsonElement averageRateJson = new JsonParser().parse(String.valueOf(averageRate));
  315.         //JsonElement commentsJson = new JsonParser().parse(jsonRateDto);
  316.         credJson.getAsJsonObject().remove("password");
  317.         credJson.getAsJsonObject().add("averageRate", averageRateJson);
  318.         //credJson.getAsJsonObject().add("comments", commentsJson);
  319.         String result = credJson.getAsJsonObject().toString();
  320.         return new ResponseEntity<>(result, responseHeaders, HttpStatus.OK);
  321.     }
  322.  
  323.     @RequestMapping(value = "/editAccount", method = RequestMethod.PUT)
  324.     public
  325.     @ResponseBody
  326.     Object editAccount(@RequestBody User user) {
  327.         User userCurrent = read(user.getId());
  328.         String password = user.getPassword();
  329.         String email = user.getEmail();
  330.         if (password != null) {
  331.             userCurrent.setPassword(password);
  332.         }
  333.         if (email != null) {
  334.             userCurrent.setEmail(email);
  335.         }
  336.         save(userCurrent);
  337.         return "Change password";
  338.     }
  339.  
  340.     @RequestMapping(value = "/changePassword", method = RequestMethod.PUT, headers = {"Content-Type=application/json"}, produces = {"application/json; charset=UTF-8"})
  341.     public
  342.     @ResponseBody
  343.     Object changePassword(@RequestBody PendingOperation pendingUser) {
  344.         Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  345.         String phone = auth.getPrincipal().toString();
  346.         User user = userRepository.findByPhone(phone);
  347.         if (user == null) {
  348.             return new ResponseEntity<>("{\"result\":\"Does not exist user\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  349.         }
  350.         String oldPassword = pendingUser.getOldPassword();
  351.         if (oldPassword == null) {
  352.             return new ResponseEntity<>("{\"result\":\"Old password is null\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  353.         }
  354.         String sha1HexOldPassword = DigestUtils.sha1Hex(oldPassword.getBytes());
  355.         String passwordCurrent = user.getPassword();
  356.         if (!(passwordCurrent.equals(sha1HexOldPassword))) {
  357.             return new ResponseEntity<>("{\"result\":\"The old password is incorrect\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  358.         }
  359.         String newPassword = pendingUser.getPassword();
  360.         if (newPassword == null) {
  361.             return new ResponseEntity<>("{\"result\":\"Password is null\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  362.         }
  363.         String sha1HexNewPassword = DigestUtils.sha1Hex(newPassword.getBytes());
  364.         user.setPassword(sha1HexNewPassword);
  365.         userRepository.save(user);
  366.         return new ResponseEntity<>("{\"result\":\"Password change\"}", responseHeaders, HttpStatus.OK);
  367.     }
  368.  
  369.     @RequestMapping(value = "/getChanges", method = RequestMethod.GET, produces = {"application/json; charset=UTF-8"})
  370.     public
  371.     @ResponseBody
  372.     Object getChanges(@RequestParam Long timestamp) throws IOException {
  373.         Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  374.         String phone = auth.getPrincipal().toString();
  375.         User currentUser = userRepository.findByPhone(phone);
  376.         Long date = new Date().getTime();
  377.         JSONObject response = new JSONObject();
  378.         JSONObject result = new JSONObject();
  379.         if (currentUser == null) {
  380.             return new ResponseEntity<>("{\"result\":\"Does not exist user\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  381.         }
  382.         if (!existNull(currentUser)) {
  383.             return new ResponseEntity<>("{\"result\":\"Does not exist user\"}", responseHeaders, HttpStatus.BAD_REQUEST);
  384.         }
  385.         long tempTime = 0;
  386.         currentUser.setTimestamp(date);
  387.         userRepository.save(currentUser);
  388.         boolean flag = true;
  389.  
  390.         if (currentUser.getInvite()) {
  391.             OrderCustomer orderCustomers = orderCustomerRepository.getOrderStatus(currentUser.getId());
  392.             if (orderCustomers != null) {
  393.                 //Set<Tag> tags = new HashSet<>();
  394.                 //orderCustomers.getUser().setTags(tags);
  395.                 response.put("Order_Customer_Archive", orderCustomers.getArchive());
  396.                 result.put("Order_Customer_Archive", orderCustomers.getArchive());
  397.             }
  398.         }
  399.         while (flag) {
  400.             if (tempTime > TIME_FOR_DROP_CONNECTION) {
  401.                 flag = false;
  402.             } else {
  403.                 try {
  404.  
  405.                     List<Message> messageList = messageRepository.findByIdSenderOrIdReceiverAndCreateDateLessThan(currentUser.getId(), timestamp);
  406.  
  407.                     List<OrderDTO> availableOrders = new ArrayList<>();
  408.  
  409.                     //JSONObject response = new JSONObject();
  410.  
  411.                     if (!currentUser.getInvite()) {
  412.  
  413.                         availableOrders = orderService.getNewOrdersForLady(currentUser, timestamp);
  414.                         if (availableOrders != null) {
  415.                             // availableOrders = orderService.getAvailableCustomersForLady(currentUser);
  416.                             CurrencyCode currency = currentUser.getCurrencyCode();
  417.                             for (OrderDTO orderDTO : availableOrders) {
  418.                                 String orderCurrency = userRepository.findUserCurrency(orderDTO.getUserId());
  419.                                 if (orderCurrency != null) {
  420.                                     if (!orderCurrency.equals(currency.toString())) {
  421.                                         Double price = orderDTO.getPrice() * userService.rate(orderCurrency.toLowerCase(), currency.toString().toLowerCase());
  422.                                         double newPrice = new BigDecimal(price).setScale(3, RoundingMode.UP).doubleValue();
  423.                                         orderDTO.setPrice(newPrice);
  424.                                     }
  425.                                 }
  426.                             }
  427.                         }
  428.  
  429.                     } else {
  430.  
  431.                         availableOrders = orderService.getListOfAvailableOrdersForCustomer(currentUser, timestamp);
  432.  
  433.                     }
  434.                     List<PaymentEntityDTO> payments = getPayments(currentUser, timestamp);
  435.                     if (!messageList.isEmpty() || !payments.isEmpty()) {
  436.  
  437.                         if (!availableOrders.isEmpty()) {
  438.                             response.put("availableOrders", availableOrders);
  439.                         }
  440.                         Collections.sort(messageList, (o1, o2) -> o1.getCreateDate().compareTo(o2.getCreateDate()));
  441.                         List<MessageDataJsonDTO> messageListDto = DTOUtils.mapList(messageList, MessageDataJsonDTO.class);
  442.                         TIME_FOR_SLEEP = 300;
  443.                         if (!messageList.isEmpty()) {
  444.                             response.put("messages", messageListDto);
  445.  
  446.                             List<ChatDTO> chatDTOList = getChatDTOs(currentUser, messageList);
  447.                             if (!chatDTOList.isEmpty()) {
  448.                                 response.put("chats", chatDTOList);
  449.                                 response.put("new_chats", getLastChats(currentUser));
  450.                             }
  451.                         }
  452.  
  453.                         response.put("payments", payments);
  454.                         // response.put("meet_confirm", meetConfirm);
  455.                         addListStatusesAndTimestamp(currentUser, response, messageList);
  456.                         response.put("timestamp", date);
  457.                         response.put("blocked_user", currentUser.getBlocked());
  458.                         response.put("new_chats", getLastChats(currentUser));
  459.                         return response;
  460.                     } else if (availableOrders != null && !availableOrders.isEmpty()) {
  461.  
  462.                         response.put("availableOrders", availableOrders);
  463.                         response.put("timestamp", date);
  464.                         response.put("blocked_user", currentUser.getBlocked());
  465.                         // response.put("new_chats", getLastChats(currentUser));
  466.                         return response;
  467.                     } else {
  468.                         response.put("new_chats", getLastChats(currentUser));
  469.                         Thread.sleep(TIME_FOR_SLEEP);
  470.                         tempTime += TIME_FOR_SLEEP;
  471.                     }
  472.                 } catch (Exception e) {
  473.                     e.printStackTrace();
  474.                 }
  475.             }
  476.         }
  477.         List<Message> messageList = new ArrayList<>();
  478.         messageList.addAll(messageRepository.findByIdSenderOrIdReceiverAndCreateDateLessThan(currentUser.getId()));
  479.         //JSONObject result = new JSONObject();
  480.  
  481.         if (!messageList.isEmpty()) {
  482.             addListStatusesAndTimestamp(currentUser, result, messageList);
  483.         } else {
  484.             result.put("timestamp", date);
  485.             result.put("blocked_user", currentUser.getBlocked());
  486.         }
  487.         return result;
  488.     }
  489.  
  490.     @RequestMapping(value = "/getIndex", method = RequestMethod.GET, produces = {"application/json; charset=UTF-8"})
  491.     public
  492.     @ResponseBody
  493.     Object getIndex() throws IOException {
  494.         Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  495.         String phone = auth.getPrincipal().toString();
  496.         User userByToken = userRepository.findByPhone(phone);
  497.         if (userByToken == null) {
  498.             return new ResponseEntity<>("{\"result\":\"Does not exist user\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  499.         }
  500.         Double index = indexForCustomer();
  501.         return new ResponseEntity<>(index, responseHeaders, HttpStatus.OK);
  502.     }
  503.  
  504.     //@RequestMapping(value = "/getChanges", method = RequestMethod.GET, produces = {"application/json; charset=UTF-8"})
  505. //public
  506. //@ResponseBody
  507. //Object getChanges(@RequestParam Long timestamp) {
  508. //    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  509. //    String phone = auth.getPrincipal().toString();
  510. //    User currentUser = userRepository.findByPhone(phone);
  511. //    Long date = new Date().getTime();
  512. //    if (currentUser == null) {
  513. //        return new ResponseEntity<>("{\"result\":\"Does not exist user\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  514. //    }
  515. //    long tempTime = 0;
  516. //    currentUser.setTimestamp(new Date().getTime());
  517. //    userRepository.save(currentUser);
  518. //    boolean flag = true;
  519. //
  520. //    while (flag) {
  521. //        if (tempTime > TIME_FOR_DROP_CONNECTION) {
  522. //            flag = false;
  523. //        } else {
  524. //            try {
  525. //
  526. //                List<Message> messageList = messageRepository.findByIdSenderOrIdReceiverAndCreateDateLessThan(currentUser.getId(), timestamp);
  527. //
  528. //                List<OrderDTO> availableOrders = new ArrayList<>();
  529. //
  530. //                JSONObject response = new JSONObject();
  531. //
  532. //                if (!currentUser.getInvite()) {
  533. //
  534. //                    availableOrders = orderService.getNewOrdersForLady(currentUser, timestamp);
  535. //                } else {
  536. //
  537. //                    availableOrders = orderService.getListOfAvailableOrdersForCustomer(currentUser, timestamp);
  538. //                }
  539. //                List<PaymentEntityDTO> payments = getPayments(currentUser, timestamp);
  540. //                if (!messageList.isEmpty() || !payments.isEmpty() ) {
  541. //
  542. //                    if (!availableOrders.isEmpty()) {
  543. //                        response.put("availableOrders", availableOrders);
  544. //                    }
  545. //                    Collections.sort(messageList, (o1, o2) -> o1.getCreateDate().compareTo(o2.getCreateDate()));
  546. //                    List<MessageDataJsonDTO> messageListDto = DTOUtils.mapList(messageList, MessageDataJsonDTO.class);
  547. //                    TIME_FOR_SLEEP = 300;
  548. //                    if (!messageList.isEmpty()) {
  549. //                        response.put("messages", messageListDto);
  550. //
  551. //                        List<ChatDTO> chatDTOList = getChatDTOs(currentUser, messageList);
  552. //                        response.put("chats", chatDTOList);
  553. //                        response.put("new_chats", getLastChats(currentUser));
  554. //
  555. //                    }
  556. //
  557. //                    response.put("payments", payments);
  558. //
  559. //                    addListStatusesAndTimestamp(currentUser, response, messageList);
  560. //                    response.put("timestamp", new Date().getTime());
  561. //                    response.put("blocked_user", currentUser.getBlocked());
  562. //                    response.put("new_chats", getLastChats(currentUser));
  563. //                    return response;
  564. //                } else if (availableOrders != null && !availableOrders.isEmpty()) {
  565. //
  566. //                    response.put("availableOrders", availableOrders);
  567. //                    response.put("timestamp", new Date().getTime());
  568. //                    response.put("blocked_user", currentUser.getBlocked());
  569. //                    response.put("new_chats", getLastChats(currentUser));
  570. //                    return response;
  571. //                } else {
  572. //                    Thread.sleep(TIME_FOR_SLEEP);
  573. //                    tempTime += TIME_FOR_SLEEP;
  574. //                }
  575. //            } catch (Exception e) {
  576. //                e.printStackTrace();
  577. //            }
  578. //        }
  579. //    }
  580. //    List<Message> messageList = new ArrayList<>();
  581. //    messageList.addAll(messageRepository.findByIdSenderOrIdReceiverAndCreateDateLessThan(currentUser.getId()));
  582. //    JSONObject result = new JSONObject();
  583. //
  584. //    if (!messageList.isEmpty()) {
  585. //        addListStatusesAndTimestamp(currentUser, result, messageList);
  586. //    } else {
  587. //        result.put("timestamp", new Date().getTime());
  588. //        result.put("blocked_user", currentUser.getBlocked());
  589. //
  590. //    }
  591. //    return result;
  592. //}
  593.     private Object authorizeAndReturn(Object returnEntity) {
  594.         User user = userService.getUserFromAuth();
  595.         if (user == null) {
  596.             return new ResponseEntity<>("{\"result\":\"Does not exist phone\"}", responseHeaders, HttpStatus.UNAUTHORIZED);
  597.         }
  598.         return returnEntity;
  599.     }
  600.  
  601.     private List<PaymentEntityDTO> getPayments(User currentUser, Long timestamp) {
  602.  
  603.         List<PaymentEntity> payments = paymentEntityRepository.findNewPayments(currentUser.getId(), timestamp);
  604.         List<PaymentEntityDTO> resultPayments = new ArrayList<>();
  605.  
  606.         if (payments != null) {
  607.             for (PaymentEntity paymentEntity : payments) {
  608.  
  609.                 PaymentEntityDTO newPayment = new PaymentEntityDTO();
  610.                 if (currentUser.getInvite()) {
  611.                     newPayment.setReceiverId(paymentEntity.getReceiverId());
  612.                     newPayment.setUserId(currentUser.getId());
  613.                 } else {
  614.                     newPayment.setUserId(paymentEntity.getUser().getId());
  615.                     newPayment.setReceiverId(currentUser.getId());
  616.                 }
  617.  
  618.                 newPayment.setCurrency(paymentEntity.getCurrency());
  619.                 newPayment.setAmount(paymentEntity.getAmount());
  620.                 newPayment.setId(paymentEntity.getId());
  621.                 newPayment.setTransactionStatus(paymentEntity.getTransactionStatus());
  622.                 newPayment.setChargeId(paymentEntity.getChargeId());
  623.                 newPayment.setToken(paymentEntity.getToken());
  624.                 newPayment.setProvider(paymentEntity.getProvider());
  625.                 newPayment.setOrderId(paymentEntity.getOrderId());
  626.                 newPayment.setPaymentDate(paymentEntity.getPaymentDate());
  627.                 newPayment.setPayerId(paymentEntity.getPayerId());
  628.                 newPayment.setCardCryptogram(paymentEntity.getCardCryptogram());
  629.                 OrderClient orderClient = orderClientRepository.findById(paymentEntity.getOrderId(), paymentEntity.getReceiverId());
  630.                 if (orderClient != null) {
  631.                     newPayment.setMeetConfirmClient(orderClient.getMeetConfirmedClient());
  632.                     newPayment.setMeetConfirmCustomer(orderClient.getMeetConfirmedCustomer());
  633.                 }
  634.                 resultPayments.add(newPayment);
  635.             }
  636.         }
  637.         return resultPayments;
  638.     }
  639.  
  640.     private List<ChatDTO> getChatDTOs(User currentUser, List<Message> messageList) {
  641.  
  642.         Set<Long> otherUsers = getOtherUsers(currentUser, messageList);
  643.         ArrayList<ChatDTO> chatDTOList = new ArrayList();
  644.  
  645.         for (Long userId : otherUsers) {
  646.  
  647.             ChatDTO chatDTO = new ChatDTO();
  648.             User userById = this.userRepository.findById(userId);
  649.  
  650.             chatDTO.setId(userId);
  651.             chatDTO.setUserName(userById.getUserName());
  652.             if (userById.getAvatar() != null) {
  653.                 chatDTO.setAvatar(userById.getAvatarFile());
  654.                 chatDTO.setIsVerify(userById.getAvatar().getVerify());
  655.             }
  656.             Long numberOfMessages = messageRepository.findNewChatsOfUser(currentUser.getId(), userId);
  657.  
  658.             if (numberOfMessages == 1) {
  659.                 chatDTO.setNew(Boolean.TRUE);
  660.             } else {
  661.                 chatDTO.setNew(Boolean.FALSE);
  662.             }
  663.  
  664.             Message lastMessage = messageRepository.findChatsInArchiveForUser(currentUser.getId(), userId);
  665.             if (lastMessage != null) {
  666.                 if (lastMessage.getArchive()) {
  667.                     chatDTO.setArchive(Boolean.TRUE);
  668.                 } else {
  669.                     chatDTO.setArchive(Boolean.FALSE);
  670.                 }
  671.  
  672.                 chatDTOList.add(chatDTO);
  673.             }
  674.         }
  675.         return chatDTOList;
  676.     }
  677.  
  678.     private Set<Long> getOtherUsers(User currentUser, List<Message> messageList) {
  679.  
  680.         Set<Long> userListId = new HashSet<>();
  681.         for (Message message : messageList) {
  682.             if (!Objects.equals(message.getIdReceiver(), currentUser.getId())) {
  683.                 userListId.add(message.getIdReceiver());
  684.             } else if (message.getIdSender() != currentUser.getId()) {
  685.                 userListId.add(message.getIdSender());
  686.             }
  687.         }
  688.         return userListId;
  689.     }
  690.  
  691.     private void addListStatusesAndTimestamp(User currentUser, JSONObject response, List<Message> messageList) {
  692.  
  693.         Set<Long> userListId = getOtherUsers(currentUser, messageList);
  694.  
  695.         response.put("statuses", getCurrentStatus(userListId));
  696.         response.put("timestamp", new Date().getTime());
  697.         response.put("blocked_user", currentUser.getBlocked());
  698.         if (currentUser.getInvite()) {
  699.             OrderCustomer orderCustomers = orderCustomerRepository.getOrderStatus(currentUser.getId());
  700.             if (orderCustomers != null) {
  701.                 //Set<Tag> tags = new HashSet<>();
  702.                 //orderCustomers.getUser().setTags(tags);
  703.                 response.put("Order_Customer_Archive", orderCustomers.getArchive());
  704.             }
  705.         }
  706.  
  707.  
  708.     }
  709.  
  710.     private JSONArray getCurrentStatus(Set<Long> listUserId) {
  711.         JSONArray jsonArray = new JSONArray();
  712.         if (listUserId.isEmpty()) {
  713.             return jsonArray;
  714.         }
  715.         List<User> userList = userRepository.findUsersByListId(listUserId);
  716.         for (User currentUser : userList) {
  717.             JSONObject jsonObject = new JSONObject();
  718.             if (currentUser.getTimestamp() != null) {
  719.                 if (new Date().getTime() - currentUser.getTimestamp() > TIME_FOR_CHANGE_STATUS) {
  720.                     jsonObject.put("id", currentUser.getId());
  721.                     jsonObject.put("status", false);
  722.                 } else {
  723.                     jsonObject.put("id", currentUser.getId());
  724.                     jsonObject.put("status", true);
  725.                 }
  726.                 jsonArray.add(jsonObject);
  727.             }
  728.         }
  729.         return jsonArray;
  730.     }
  731.  
  732.     @Override
  733.     protected AdminBaseRepository<User, Long> getCrudRepository() {
  734.         return userRepository;
  735.     }
  736.  
  737.     public Object getChats(User user) {
  738.         String resultJson = null;
  739.         List<MessageDTO> result = new ArrayList<>();
  740.         try {
  741.             List<Message> allMessagesByLastDate = messageRepository.findByQuery(user.getId());
  742.             Map<Long, Message> map = new HashMap<>();
  743.             for (Message message : allMessagesByLastDate) {
  744.                 if (user.getId().equals(message.getIdReceiver())) {
  745.                     map.put(message.getIdSender(), message);
  746.                 } else {
  747.                     map.put(message.getIdReceiver(), message);
  748.                 }
  749.             }
  750.  
  751.             for (Map.Entry<Long, Message> entry : map.entrySet()) {
  752.                 MessageDTO messageDTO = new MessageDTO();
  753.                 Long id = entry.getKey();
  754.                 Message message = entry.getValue();
  755.                 messageDTO.setId(id);
  756.                 messageDTO.setText(message.getText());
  757.                 messageDTO.setCreateDate(message.getCreateDate());
  758.                 User userById = userRepository.findById(id);
  759.                 messageDTO.setAvatar(userById.getAvatarFile());
  760.                 messageDTO.setAge(userById.getAge());
  761.                 messageDTO.setUserName(userById.getUserName());
  762.                 messageDTO.setRead(message.getRead());
  763.                 if (userById.getTimestamp() != null) {
  764.                     if (new Date().getTime() - userById.getTimestamp() > TIME_FOR_CHANGE_STATUS) {
  765.  
  766.                         messageDTO.setStatus("false");
  767.                     } else {
  768.  
  769.                         messageDTO.setStatus("true");
  770.                     }
  771.  
  772.                 }
  773.  
  774.                 result.add(messageDTO);
  775.             }
  776.             Collections.sort(result, (o1, o2) -> o2.getCreateDate().compareTo(o1.getCreateDate()));
  777.             resultJson = new ObjectMapper().writeValueAsString(result);
  778.  
  779.  
  780.         } catch (IOException e) {
  781.             e.printStackTrace();
  782.         }
  783.  
  784.         return result;
  785.     }
  786.  
  787.     public Object getLastChats(User user) {
  788.         String resultJson = null;
  789.         List<MessageDTO> result = new ArrayList<>();
  790.         try {
  791.             //List<Message> allMessagesByLastDate = messageRepository.findReadMessage(user.getId(), new Date().getTime());
  792.             //List<Message> allMessagesByLastDate = messageRepository.findLastMessagesByChat(user.getId(), new Date().getTime());
  793.             //
  794.             List<Message> allMessagesByLastDate = messageRepository.findLastMessagesByEveryChatOfUser(user.getId());
  795.             Map<Long, Message> map = new HashMap<>();
  796.             for (Message message : allMessagesByLastDate) {
  797.                 if (user.getId().equals(message.getIdReceiver())) {
  798.                     map.put(message.getIdSender(), message);
  799.                 } else {
  800.                     map.put(message.getIdReceiver(), message);
  801.                 }
  802.             }
  803.  
  804.             for (Map.Entry<Long, Message> entry : map.entrySet()) {
  805.                 MessageDTO messageDTO = new MessageDTO();
  806.                 Long id = entry.getKey();
  807.                 Message message = entry.getValue();
  808.                 messageDTO.setId(id);
  809.                 messageDTO.setText(message.getText());
  810.                 messageDTO.setCreateDate(message.getCreateDate());
  811.                 User userById = userRepository.findById(id);
  812.                 if (userById.getAvatar() != null) {
  813.                     messageDTO.setAvatar(userById.getAvatarFile());
  814.                     messageDTO.setIsVerify(userById.getAvatar().getVerify());
  815.                 }
  816.                 messageDTO.setAge(userById.getAge());
  817.                 messageDTO.setUserName(userById.getUserName());
  818.                 messageDTO.setRead(message.getRead());
  819.                 messageDTO.setArchive(message.getArchive());
  820.                 if (userById.getTimestamp() != null) {
  821.                     if (new Date().getTime() - userById.getTimestamp() > TIME_FOR_CHANGE_STATUS) {
  822.  
  823.                         messageDTO.setStatus("false");
  824.                     } else {
  825.  
  826.                         messageDTO.setStatus("true");
  827.                     }
  828.  
  829.                 }
  830.  
  831.                 result.add(messageDTO);
  832.             }
  833.             Collections.sort(result, (o1, o2) -> o2.getCreateDate().compareTo(o1.getCreateDate()));
  834.             resultJson = new ObjectMapper().writeValueAsString(result);
  835.  
  836.  
  837.         } catch (IOException e) {
  838.             e.printStackTrace();
  839.         }
  840.  
  841.         return result;
  842.     }
  843.  
  844.  
  845. /* moved to user service
  846. public Double rate(String from, String to) throws IOException {
  847.         HttpClient httpClient = new HttpClient();
  848.         GetMethod getMethod = new GetMethod("http://quote.yahoo.com/d/quotes.csv?s=" + from + to + "=X&f=l1&e=.csv");
  849.         httpClient.executeMethod(getMethod);
  850.         String results = getMethod.getResponseBodyAsString();
  851.         Double response = Double.parseDouble(results);
  852.         return response;
  853.     }*/
  854.  
  855.  
  856.     private Double indexForCustomer() {
  857.         return interestSettingsRepository.findInd().getIndex();
  858.     }
  859.  
  860.     private String getCityIdFromGoogle(String city) {
  861.  
  862.         return "";
  863.     }
  864.  
  865.     private String getPlaceIdFromGoogle(String city) {
  866.         return "";
  867.     }
  868.  
  869.     private boolean existNull(User user) {
  870.         if (user.getUserName() == null) {
  871.             return false;
  872.         } else if (user.getAge() == null) {
  873.             return false;
  874.         } else if (user.getAvailable() == null) {
  875.             return false;
  876.         } else if (user.getBodyType() == null) {
  877.             return false;
  878.         } else if (user.getCity() == null) {
  879.             return false;
  880.         } else if (user.getHairColor() == null) {
  881.             return false;
  882.         } else if (user.getHeight() == null) {
  883.             return false;
  884.         } else if (user.getInvite() == null) {
  885.             return false;
  886.         } else if (user.getTypeSexUser() == null) {
  887.             return false;
  888.         } else if (user.getAboutMe() == null) {
  889.             return false;
  890.         }
  891.         return true;
  892.     }
  893.  
  894.     private HashMap<String, String> userValidator(UserDTO user) {
  895.         HashMap<String, String> userValid = new HashMap<>();
  896.         if (user.getUserName() == null || user.getUserName().equals("")) {
  897.             userValid.put("userName", "Does not exist");
  898.         }
  899.         if (user.getCityId() == null || user.getCityId().equals("")) {
  900.             userValid.put("cityId", "Does not exist");
  901.         }
  902.         if (user.getCity() == null || user.getCity().equals("")) {
  903.             userValid.put("city", "Does not exist");
  904.         }
  905.         if (user.getPlaceId() == null || user.getPlaceId().equals("")) {
  906.             userValid.put("placeId", "Does not exist");
  907.         }
  908.         if (user.getInvite() == null || user.getInvite().equals("")) {
  909.             userValid.put("invite", "Does not exist");
  910.         }
  911.         if (user.getAge() == null || user.getAge().equals("")) {
  912.             userValid.put("age", "Does not exist");
  913.         }
  914.         if (user.getHairColor() == null || user.getHairColor().equals("")) {
  915.             userValid.put("hairColor", "Does not exist");
  916.         }
  917.         if (user.getHeight() == null || user.getHeight().equals("")) {
  918.             userValid.put("height", "Does not exist");
  919.         }
  920.         if (user.getBodyType() == null || user.getBodyType().equals("")) {
  921.             userValid.put("bodyType", "Does not exist");
  922.         }
  923.         if (user.getTypeSexUser() == null || user.getTypeSexUser().equals("")) {
  924.             userValid.put("typeSexUser", "Does not exist");
  925.         }
  926.         if (user.getCurrencyCode() == null || user.getCurrencyCode().equals("")) {
  927.             userValid.put("currencyCode", "Does not exist");
  928.         }
  929.         if (user.getUserTagsDTO() == null) {
  930.             userValid.put("userTagsDTO", "Does not exist");
  931.         }
  932.         return userValid;
  933.     }
  934.  
  935. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement