Subversion Repositories SmartDukaan

Rev

Rev 29479 | Rev 29744 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 29479 Rev 29598
Line 2... Line 2...
2
 
2
 
3
import java.io.ByteArrayInputStream;
3
import java.io.ByteArrayInputStream;
4
import java.io.InputStream;
4
import java.io.InputStream;
5
import java.time.LocalDate;
5
import java.time.LocalDate;
6
import java.time.LocalDateTime;
6
import java.time.LocalDateTime;
7
import java.time.format.DateTimeFormatter;
-
 
8
import java.util.ArrayList;
7
import java.util.ArrayList;
9
import java.util.Arrays;
8
import java.util.Arrays;
10
import java.util.HashMap;
9
import java.util.HashMap;
11
import java.util.HashSet;
10
import java.util.HashSet;
12
import java.util.List;
11
import java.util.List;
Line 15... Line 14...
15
 
14
 
16
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletRequest;
17
import javax.servlet.http.HttpServletResponse;
16
import javax.servlet.http.HttpServletResponse;
18
import javax.transaction.Transactional;
17
import javax.transaction.Transactional;
19
 
18
 
-
 
19
import org.apache.commons.csv.CSVRecord;
20
import org.apache.logging.log4j.LogManager;
20
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.Logger;
21
import org.apache.logging.log4j.Logger;
22
import org.springframework.beans.factory.annotation.Autowired;
22
import org.springframework.beans.factory.annotation.Autowired;
23
import org.springframework.cache.annotation.Cacheable;
-
 
24
import org.springframework.core.io.InputStreamResource;
23
import org.springframework.core.io.InputStreamResource;
25
import org.springframework.http.HttpHeaders;
24
import org.springframework.http.HttpHeaders;
26
import org.springframework.http.HttpStatus;
25
import org.springframework.http.HttpStatus;
27
import org.springframework.http.ResponseEntity;
26
import org.springframework.http.ResponseEntity;
28
import org.springframework.stereotype.Controller;
27
import org.springframework.stereotype.Controller;
Line 34... Line 33...
34
import org.springframework.web.bind.annotation.RequestPart;
33
import org.springframework.web.bind.annotation.RequestPart;
35
import org.springframework.web.multipart.MultipartFile;
34
import org.springframework.web.multipart.MultipartFile;
36
 
35
 
37
import com.google.gson.Gson;
36
import com.google.gson.Gson;
38
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
37
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
39
 
-
 
40
import com.spice.profitmandi.common.model.Legend;
38
import com.spice.profitmandi.common.model.Legend;
41
import com.spice.profitmandi.common.model.OptionModel;
39
import com.spice.profitmandi.common.model.OptionModel;
42
import com.spice.profitmandi.common.model.PieLables;
40
import com.spice.profitmandi.common.model.PieLables;
43
import com.spice.profitmandi.common.model.ProfitMandiConstants;
41
import com.spice.profitmandi.common.model.ProfitMandiConstants;
44
import com.spice.profitmandi.common.util.FileUtil;
42
import com.spice.profitmandi.common.util.FileUtil;
45
import com.spice.profitmandi.dao.entity.auth.AuthUser;
43
import com.spice.profitmandi.dao.entity.auth.AuthUser;
46
 
-
 
47
import com.spice.profitmandi.dao.entity.user.Lead;
44
import com.spice.profitmandi.dao.entity.user.Lead;
48
import com.spice.profitmandi.dao.entity.user.LeadActivity;
45
import com.spice.profitmandi.dao.entity.user.LeadActivity;
-
 
46
import com.spice.profitmandi.dao.enumuration.dtr.LeadSource;
49
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
47
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
50
import com.spice.profitmandi.dao.model.ChartLeadModel;
48
import com.spice.profitmandi.dao.model.ChartLeadModel;
51
import com.spice.profitmandi.dao.model.CreateLeacdActivityRequest;
49
import com.spice.profitmandi.dao.model.CreateLeacdActivityRequest;
52
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
50
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
53
import com.spice.profitmandi.dao.model.DataLeadModel;
51
import com.spice.profitmandi.dao.model.DataLeadModel;
54
import com.spice.profitmandi.dao.model.LeadIvoryModel;
-
 
55
import com.spice.profitmandi.dao.model.LeadStatusData;
52
import com.spice.profitmandi.dao.model.LeadStatusData;
56
 
-
 
57
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
53
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
58
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
54
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
59
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
55
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
60
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
56
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
61
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
57
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
Line 104... Line 100...
104
			@RequestParam(name = "color", required = false, defaultValue = "") List<String> color,
100
			@RequestParam(name = "color", required = false, defaultValue = "") List<String> color,
105
			@RequestParam(name = "leadDate", required = false, defaultValue = "") LocalDate leadDate, Model model)
101
			@RequestParam(name = "leadDate", required = false, defaultValue = "") LocalDate leadDate, Model model)
106
			throws Exception {
102
			throws Exception {
107
 
103
 
108
		LocalDateTime localDateTime = null;
104
		LocalDateTime localDateTime = null;
109
		
-
 
110
		
-
 
111
 
105
 
112
		LOGGER.info("color" + color);
106
		LOGGER.info("color" + color);
113
 
107
 
114
		LOGGER.info("leadDate" + leadDate);
108
		LOGGER.info("leadDate" + leadDate);
115
 
109
 
Line 307... Line 301...
307
					if (localDateTime == null) {
301
					if (localDateTime == null) {
308
 
302
 
309
						leads = leadRepository.selectAllByStatusAndUpdatedTimestamp(leadStatus,
303
						leads = leadRepository.selectAllByStatusAndUpdatedTimestamp(leadStatus,
310
								LocalDateTime.now().minusMonths(1));
304
								LocalDateTime.now().minusMonths(1));
311
 
305
 
312
						
-
 
313
 
-
 
314
					}
306
					}
315
 
307
 
316
					else {
308
					else {
317
 
309
 
318
						leads = leadRepository.selectAllByStatusAndUpdatedTimestamp(leadStatus, localDateTime);
310
						leads = leadRepository.selectAllByStatusAndUpdatedTimestamp(leadStatus, localDateTime);
Line 459... Line 451...
459
 
451
 
460
		HashSet<String> hotLeadKeys = new HashSet<String>();
452
		HashSet<String> hotLeadKeys = new HashSet<String>();
461
 
453
 
462
		hotLeadKeys.add("HotLead");
454
		hotLeadKeys.add("HotLead");
463
		List<String> hotLeadGreen = new ArrayList<>(hotLeadKeys);
455
		List<String> hotLeadGreen = new ArrayList<>(hotLeadKeys);
464
		
456
 
465
		LOGGER.info("hotLeads" + hotLeads);
457
		LOGGER.info("hotLeads" + hotLeads);
466
 
458
 
467
		List<LeadStatus> labelList = new ArrayList<>(labels);
459
		List<LeadStatus> labelList = new ArrayList<>(labels);
468
		List<String> backgroundColor = new ArrayList<>();
460
		List<String> backgroundColor = new ArrayList<>();
469
		LOGGER.info("hotLeadKeys" + hotLeadKeys);
461
		LOGGER.info("hotLeadKeys" + hotLeadKeys);
470
		List<Long> values = new ArrayList<>();
462
		List<Long> values = new ArrayList<>();
471
 
463
 
472
		for (String hotLead : hotLeads) {
464
		for (String hotLead : hotLeads) {
473
		
-
 
474
 
465
 
475
			if (hotLead.equals("pending")) {
466
			if (hotLead.equals("pending")) {
476
				backgroundColor.add("pink");
467
				backgroundColor.add("pink");
477
				values.add(leadStatusMap.get(LeadStatus.pending));
468
				values.add(leadStatusMap.get(LeadStatus.pending));
478
			}
469
			}
Line 486... Line 477...
486
			}
477
			}
487
			if (hotLead.equals("finalized")) {
478
			if (hotLead.equals("finalized")) {
488
				backgroundColor.add("blue");
479
				backgroundColor.add("blue");
489
				values.add(leadStatusMap.get(LeadStatus.finalized));
480
				values.add(leadStatusMap.get(LeadStatus.finalized));
490
			}
481
			}
491
		
482
 
492
			if (hotLead.equals("HotLead")) {
483
			if (hotLead.equals("HotLead")) {
493
				backgroundColor.add("green");
484
				backgroundColor.add("green");
494
				values.add(hotLeadsMap.get("Green"));
485
				values.add(hotLeadsMap.get("Green"));
495
 
486
 
496
			}
487
			}
Line 743... Line 734...
743
			@RequestBody CreateLeacdActivityRequest createLeadActivityRequest, Model model) throws Exception {
734
			@RequestBody CreateLeacdActivityRequest createLeadActivityRequest, Model model) throws Exception {
744
 
735
 
745
		LeadActivity leadActivity = new LeadActivity();
736
		LeadActivity leadActivity = new LeadActivity();
746
		leadActivity.setLeadId(createLeadActivityRequest.getId());
737
		leadActivity.setLeadId(createLeadActivityRequest.getId());
747
		leadActivity.setRemark(createLeadActivityRequest.getRemark());
738
		leadActivity.setRemark(createLeadActivityRequest.getRemark());
748
		
739
 
749
		LOGGER.info("createRefferalRequest" + createLeadActivityRequest);
740
		LOGGER.info("createRefferalRequest" + createLeadActivityRequest);
750
 
741
 
751
		if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
742
		if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
752
			leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
743
			leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
753
		} else {
744
		} else {
754
			leadActivity.setSchelduleTimestamp(null);
745
			leadActivity.setSchelduleTimestamp(null);
755
		}
746
		}
756
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
747
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
757
		leadActivityRepository.persist(leadActivity);
748
		leadActivityRepository.persist(leadActivity);
758
        Lead lead = leadRepository.selectById(createLeadActivityRequest.getId());
749
		Lead lead = leadRepository.selectById(createLeadActivityRequest.getId());
759
		lead.setAssignTo(createLeadActivityRequest.getAssignTo());
750
		lead.setAssignTo(createLeadActivityRequest.getAssignTo());
760
		lead.setStatus(createLeadActivityRequest.getStatus());
751
		lead.setStatus(createLeadActivityRequest.getStatus());
761
		lead.setNotinterestedReason(createLeadActivityRequest.getReason());
752
		lead.setNotinterestedReason(createLeadActivityRequest.getReason());
762
		lead.setUpdatedTimestamp(LocalDateTime.now());
753
		lead.setUpdatedTimestamp(LocalDateTime.now());
763
 
754
 
764
		lead = leadRepository.selectById(createLeadActivityRequest.getId());
755
		lead = leadRepository.selectById(createLeadActivityRequest.getId());
765
		
-
 
766
		
756
 
767
		int authId = 0;
757
		int authId = 0;
768
		if (lead != null) {
758
		if (lead != null) {
769
 
759
 
770
			authId = lead.getAssignTo();
760
			authId = lead.getAssignTo();
771
			Map<Integer, LeadActivity> leadActivityMap = new HashMap<>();
761
			Map<Integer, LeadActivity> leadActivityMap = new HashMap<>();
772
			
762
 
773
				List<LeadActivity> leadActivitys = leadActivityRepository.selectBYLeadId(lead.getId());
763
			List<LeadActivity> leadActivitys = leadActivityRepository.selectBYLeadId(lead.getId());
774
				
764
 
775
				if (!leadActivitys.isEmpty()) {
765
			if (!leadActivitys.isEmpty()) {
776
					leadActivityMap.put(lead.getId(), leadActivitys.get(0));
766
				leadActivityMap.put(lead.getId(), leadActivitys.get(0));
777
				}
767
			}
778
			
768
 
779
				Map<Integer, AuthUser> authIdAndAuthUserMap = new HashMap<>();
769
			Map<Integer, AuthUser> authIdAndAuthUserMap = new HashMap<>();
780
				AuthUser AuthUser = authRepository.selectById(authId);
770
			AuthUser AuthUser = authRepository.selectById(authId);
781
				
771
 
782
				authIdAndAuthUserMap.put(AuthUser.getId(), AuthUser);
772
			authIdAndAuthUserMap.put(AuthUser.getId(), AuthUser);
783
				
-
 
784
				
773
 
785
			model.addAttribute("leadActivityMap", leadActivityMap);
774
			model.addAttribute("leadActivityMap", leadActivityMap);
786
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
775
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
787
		}
776
		}
788
 
777
 
789
		model.addAttribute("request", lead);
778
		model.addAttribute("request", lead);
Line 792... Line 781...
792
 
781
 
793
	}
782
	}
794
 
783
 
795
	@RequestMapping(value = "/downloadIvoryLead", method = RequestMethod.GET)
784
	@RequestMapping(value = "/downloadIvoryLead", method = RequestMethod.GET)
796
	public ResponseEntity<?> downloadDelayDayTemplate(HttpServletRequest request) throws Exception {
785
	public ResponseEntity<?> downloadDelayDayTemplate(HttpServletRequest request) throws Exception {
-
 
786
		List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName())
-
 
787
				.collect(Collectors.toList());
-
 
788
 
797
		List<List<?>> rows = new ArrayList<>();
789
		List<List<?>> rows = new ArrayList<>();
798
 
790
 
-
 
791
		List<LeadSource> lss = LeadSource.enumValues;
-
 
792
 
-
 
793
		for (LeadSource ls : lss) {
-
 
794
			rows.add(Arrays.asList("-", "-", "-", "-", "-", "-", "-", ls));
-
 
795
 
-
 
796
		}
-
 
797
		for (String stateName : stateNames) {
-
 
798
			rows.add(Arrays.asList("-", "-", "-", "-", stateName, "-", "-", "-"));
-
 
799
 
-
 
800
		}
-
 
801
 
799
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil
802
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList("First Name",
800
				.getCSVByteStream(Arrays.asList("created_time", "Name", "email", "Mobile", "state", "city"), rows);
803
				"Last Name", "Address", "City", "State", "Mobile", "Assign To(email)", "Source"), rows);
801
 
804
 
802
		final HttpHeaders headers = new HttpHeaders();
805
		final HttpHeaders headers = new HttpHeaders();
803
		headers.set("Content-Type", "text/csv");
806
		headers.set("Content-Type", "text/csv");
804
		headers.set("Content-disposition", "inline; filename=Ivory.format.csv");
807
		headers.set("Content-disposition", "inline; filename=leads.format.csv");
805
		headers.setContentLength(baos.toByteArray().length);
808
		headers.setContentLength(baos.toByteArray().length);
806
 
809
 
807
		final InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());
810
		final InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());
808
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
811
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
809
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
812
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
Line 812... Line 815...
812
 
815
 
813
	@RequestMapping(value = "/csvFileAndSetLead", method = RequestMethod.POST)
816
	@RequestMapping(value = "/csvFileAndSetLead", method = RequestMethod.POST)
814
	public String readCsvFileAndSetLead(HttpServletRequest request, Model model, HttpServletResponse response,
817
	public String readCsvFileAndSetLead(HttpServletRequest request, Model model, HttpServletResponse response,
815
			@RequestPart MultipartFile file) throws Throwable {
818
			@RequestPart MultipartFile file) throws Throwable {
816
 
819
 
-
 
820
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
821
		String email = loginDetails.getEmailId();
-
 
822
 
-
 
823
		AuthUser createdBy = authRepository.selectByEmailOrMobile(email);
-
 
824
 
817
		LOGGER.info("file" + file.toString());
825
		LOGGER.info("file" + file.toString());
818
 
826
 
819
		String fileName = file.getName();
827
		String fileName = file.getName();
820
 
828
 
821
		String fileNames = file.getOriginalFilename();
829
		String fileNames = file.getOriginalFilename();
822
 
830
 
823
		LOGGER.info("fileName" + fileName);
831
		LOGGER.info("fileName" + fileName);
824
		LOGGER.info("fileNames" + fileNames);
832
		LOGGER.info("fileNames" + fileNames);
825
 
833
 
826
		List<LeadIvoryModel> leadIvoryModels = leadActivityRepository.readFile(file);
834
		List<CSVRecord> records = FileUtil.readFile(file);
827
 
-
 
828
		LOGGER.info("sgtFileName" + leadIvoryModels);
-
 
829
		if (leadIvoryModels.isEmpty()) {
-
 
830
			return "";
-
 
831
		}
-
 
832
 
835
 
833
		for (LeadIvoryModel leadIvoryModel : leadIvoryModels) {
836
		for (CSVRecord record : records) {
834
 
837
 
835
			Lead lead = new Lead();
838
			Lead lead = new Lead();
836
			lead.setFirstName(leadIvoryModel.getFirstName());
839
			lead.setFirstName(record.get(0));
837
			lead.setLastName("");
840
			lead.setLastName(record.get(1));
838
			lead.setLeadMobile(leadIvoryModel.getMobile());
841
			lead.setAddress(record.get(2));
839
 
-
 
840
			lead.setState(leadIvoryModel.getState());
842
			lead.setCity(record.get(3));
841
			lead.setCity(leadIvoryModel.getCity());
843
			lead.setState(record.get(4));
842
			lead.setAddress("NOT AVAILABLE");
844
			lead.setLeadMobile(record.get(5));
-
 
845
			LOGGER.info("record" + record.get(6));
843
 
846
 
844
			AuthUser authUser = authRepository.selectById(4);
847
			AuthUser assignTo = authRepository.selectByEmailOrMobile(record.get(6));
845
 
848
 
846
			if (leadIvoryModel.getCreatedTime() != null) {
849
			if (assignTo == null) {
847
				lead.setCreatedTimestamp(leadIvoryModel.getCreatedTime());
850
				throw new ProfitMandiBusinessException("Assign To ", record.get(6), "email id not exist");
848
			} else {
-
 
849
				lead.setCreatedTimestamp(LocalDateTime.now());
-
 
850
			}
851
			}
-
 
852
 
-
 
853
			lead.setAssignTo(assignTo.getId());
-
 
854
			lead.setSource(record.get(7));
-
 
855
 
-
 
856
			lead.setCreatedTimestamp(LocalDateTime.now());
-
 
857
 
851
			lead.setUpdatedTimestamp(LocalDateTime.now());
858
			lead.setUpdatedTimestamp(LocalDateTime.now());
852
			lead.setStatus(LeadStatus.pending);
859
			lead.setStatus(LeadStatus.pending);
853
			lead.setAssignTo(authUser.getId());
-
 
854
			lead.setSource("IVORY");
-
 
855
			lead.setColor("yellow");
860
			lead.setColor("yellow");
856
			// change
861
			// change
857
 
-
 
858
			String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
-
 
859
			lead.setCreatedBy(authUserName);
862
			lead.setCreatedBy(createdBy.getFullName());
860
			lead.setAuthId(authUser.getId());
863
			lead.setAuthId(createdBy.getId());
861
 
864
 
862
			leadRepository.persist(lead);
865
			leadRepository.persist(lead);
863
 
866
 
864
			LeadActivity leadActivity = new LeadActivity();
867
			LeadActivity leadActivity = new LeadActivity();
865
			leadActivity.setLeadId(lead.getId());
868
			leadActivity.setLeadId(lead.getId());
866
			leadActivity.setRemark("Internet");
869
			leadActivity.setRemark("New Lead");
867
			leadActivity.setSchelduleTimestamp(null);
870
			leadActivity.setSchelduleTimestamp(null);
868
 
871
 
869
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
872
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
870
			leadActivityRepository.persist(leadActivity);
873
			leadActivityRepository.persist(leadActivity);
871
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
874
			model.addAttribute("response", mvcResponseSender.createResponseString(true));