Subversion Repositories SmartDukaan

Rev

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

Rev 22892 Rev 22893
Line 115... Line 115...
115
	PolicyNumberGenerationSequenceRepository policyNumberGenerationSequenceRepository;
115
	PolicyNumberGenerationSequenceRepository policyNumberGenerationSequenceRepository;
116
 
116
 
117
	@RequestMapping(value = ProfitMandiConstants.URL_DAMAGE_INSURANCE, method = RequestMethod.POST)
117
	@RequestMapping(value = ProfitMandiConstants.URL_DAMAGE_INSURANCE, method = RequestMethod.POST)
118
	public ResponseEntity<?> createTheftProtection(HttpServletRequest request,
118
	public ResponseEntity<?> createTheftProtection(HttpServletRequest request,
119
			@RequestBody GadgetCopsDocumentInsuranceModel insuranceModel) throws Throwable {
119
			@RequestBody GadgetCopsDocumentInsuranceModel insuranceModel) throws Throwable {
120
		if (insuranceModel.validate()) {
120
		insuranceModel.validate();
121
			int userId = (int) request.getAttribute("userId");
121
		int userId = (int) request.getAttribute("userId");
122
			UserCart uc = userAccountRepository.getUserCart(userId);
122
		UserCart uc = userAccountRepository.getUserCart(userId);
123
			PolicyNumberGenerationSequence policyNumberGenerationSequence = null;
123
		PolicyNumberGenerationSequence policyNumberGenerationSequence = null;
124
			try {
124
		try {
125
				policyNumberGenerationSequence = policyNumberGenerationSequenceRepository.select();
125
			policyNumberGenerationSequence = policyNumberGenerationSequenceRepository.select();
126
				policyNumberGenerationSequence.setSequence(policyNumberGenerationSequence.getSequence() + 1);
126
			policyNumberGenerationSequence.setSequence(policyNumberGenerationSequence.getSequence() + 1);
127
				policyNumberGenerationSequenceRepository.persist(policyNumberGenerationSequence);
127
			policyNumberGenerationSequenceRepository.persist(policyNumberGenerationSequence);
128
			} catch (ProfitMandiBusinessException profitMandiBusinessException) {
128
		} catch (ProfitMandiBusinessException profitMandiBusinessException) {
129
				policyNumberGenerationSequence = new PolicyNumberGenerationSequence();
129
			policyNumberGenerationSequence = new PolicyNumberGenerationSequence();
130
				policyNumberGenerationSequence.setSequence(1);
130
			policyNumberGenerationSequence.setSequence(1);
131
				policyNumberGenerationSequenceRepository.persist(policyNumberGenerationSequence);
131
			policyNumberGenerationSequenceRepository.persist(policyNumberGenerationSequence);
132
			}
132
		}
133
			String policyNumber = StringUtils.generatePolicyNumber(ProfitMandiConstants.POLICY_NUMBER_PREFIX,
133
		String policyNumber = StringUtils.generatePolicyNumber(ProfitMandiConstants.POLICY_NUMBER_PREFIX,
134
					policyNumberGenerationSequence.getSequence());
134
				policyNumberGenerationSequence.getSequence());
135
 
135
 
136
			InsuranceProvider insuranceProvider = insuranceProviderRepository
136
		InsuranceProvider insuranceProvider = insuranceProviderRepository
137
					.selectByName(ProfitMandiConstants.GADGET_COPS);
137
				.selectByName(ProfitMandiConstants.GADGET_COPS);
138
			Set<Float> devicePriceSet = new HashSet<>();
138
		Set<Float> devicePriceSet = new HashSet<>();
139
			devicePriceSet.add(insuranceModel.getPrice());
139
		devicePriceSet.add(insuranceModel.getPrice());
140
			Map<Float, GadgetCopsInsuranceCalc> insurancePricesMap = pricingService.getInsurancePrices(devicePriceSet,
140
		Map<Float, GadgetCopsInsuranceCalc> insurancePricesMap = pricingService.getInsurancePrices(devicePriceSet,
141
					ProfitMandiConstants.GADGET_COPS);
141
				ProfitMandiConstants.GADGET_COPS);
142
			InsurancePolicy insurancePolicy = new InsurancePolicy();
142
		InsurancePolicy insurancePolicy = new InsurancePolicy();
143
			insurancePolicy.setInvoiceNumber(insuranceModel.getInvoiceNumber());
143
		insurancePolicy.setInvoiceNumber(insuranceModel.getInvoiceNumber());
144
			insurancePolicy.setRetailerId(uc.getUserId());
144
		insurancePolicy.setRetailerId(uc.getUserId());
145
			insurancePolicy.setPurchaseAmount(insurancePricesMap.get(insuranceModel.getPrice()).getDealerPrice());
145
		insurancePolicy.setPurchaseAmount(insurancePricesMap.get(insuranceModel.getPrice()).getDealerPrice());
146
			insurancePolicy.setSaleAmount(insurancePricesMap.get(insuranceModel.getPrice()).getSellingPrice());
146
		insurancePolicy.setSaleAmount(insurancePricesMap.get(insuranceModel.getPrice()).getSellingPrice());
147
			insurancePolicy.setSellingPrice(insuranceModel.getPrice());
147
		insurancePolicy.setSellingPrice(insuranceModel.getPrice());
148
			insurancePolicy.setSerialNumber(insuranceModel.getSerialNumber());
148
		insurancePolicy.setSerialNumber(insuranceModel.getSerialNumber());
149
			insurancePolicy.setModelName(insuranceModel.getModelName());
149
		insurancePolicy.setModelName(insuranceModel.getModelName());
150
			insurancePolicy.setBrand(insuranceModel.getBrand());
150
		insurancePolicy.setBrand(insuranceModel.getBrand());
151
			insurancePolicy.setPolicyNumber(policyNumber);
151
		insurancePolicy.setPolicyNumber(policyNumber);
152
			insurancePolicy.setProviderId(insuranceProvider.getId());
152
		insurancePolicy.setProviderId(insuranceProvider.getId());
153
			insurancePolicy.setCustomerFirstName(insuranceModel.getCustomerFirstName());
153
		insurancePolicy.setCustomerFirstName(insuranceModel.getCustomerFirstName());
154
			insurancePolicy.setCustomerLastName(insuranceModel.getCustomerFirstName());
154
		insurancePolicy.setCustomerLastName(insuranceModel.getCustomerFirstName());
155
			insurancePolicy.setCustomerMobileNumber(insuranceModel.getCustomerMobileNumber());
155
		insurancePolicy.setCustomerMobileNumber(insuranceModel.getCustomerMobileNumber());
156
			insurancePolicy.setCustomerEmailId(insuranceModel.getCustomerEmailId());
156
		insurancePolicy.setCustomerEmailId(insuranceModel.getCustomerEmailId());
157
			insurancePolicy.setCustomerDateOfBirth(insuranceModel.getCustomerDateOfBirth());
157
		insurancePolicy.setCustomerDateOfBirth(insuranceModel.getCustomerDateOfBirth());
158
			insurancePolicy.setCustomerAddress1(insuranceModel.getCustomerAddress1());
158
		insurancePolicy.setCustomerAddress1(insuranceModel.getCustomerAddress1());
159
			insurancePolicy.setCustomerAddress2(insuranceModel.getCustomerAddress2());
159
		insurancePolicy.setCustomerAddress2(insuranceModel.getCustomerAddress2());
160
			insurancePolicy.setCustomerCity(insuranceModel.getCustomerCity());
160
		insurancePolicy.setCustomerCity(insuranceModel.getCustomerCity());
161
			insurancePolicy.setCustomerPinCode(insuranceModel.getCustomerPinCode());
161
		insurancePolicy.setCustomerPinCode(insuranceModel.getCustomerPinCode());
162
			insurancePolicy.setCustomerState(insuranceModel.getCustomerState());
162
		insurancePolicy.setCustomerState(insuranceModel.getCustomerState());
163
			insurancePolicyRepository.persist(insurancePolicy);
163
		insurancePolicyRepository.persist(insurancePolicy);
164
			
164
		
165
			try{
165
		try{
166
				InsuranceUtils.submitToGadgetCops(insuranceModel);
166
			InsuranceUtils.submitToGadgetCops(insuranceModel);
167
				insurancePolicy.setPosted(true);
167
			insurancePolicy.setPosted(true);
168
			}catch (ProfitMandiBusinessException profitMandiBusinessException) {
168
		}catch (ProfitMandiBusinessException profitMandiBusinessException) {
169
				LOGGER.info("Unable to submit insurance policy details to {}", insuranceProvider.getName(), profitMandiBusinessException);
169
			LOGGER.info("Unable to submit insurance policy details to {}", insuranceProvider.getName(), profitMandiBusinessException);
170
			}
170
		}
171
			insurancePolicyRepository.persist(insurancePolicy);			
171
		insurancePolicyRepository.persist(insurancePolicy);			
172
			
172
		
173
			walletService.consumeAmountFromWallet(uc.getUserId(), insurancePolicy.getId(), WalletReferenceType.DAMAGE_PROTECTION, 
173
		walletService.consumeAmountFromWallet(uc.getUserId(), insurancePolicy.getId(), WalletReferenceType.DAMAGE_PROTECTION, 
174
					"Purchased Damage Protection policy for " + insurancePolicy.getCustomerFirstName() , insurancePolicy.getSaleAmount());
174
				"Purchased Damage Protection policy for " + insurancePolicy.getCustomerFirstName() , insurancePolicy.getSaleAmount());
175
 
175
 
176
			PdfModel pdfModel = this.getInvoicePdfModel(insurancePolicy);
176
		PdfModel pdfModel = this.getInvoicePdfModel(insurancePolicy);
177
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
177
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
178
			PdfUtils.generateAndWrite(pdfModel, byteArrayOutputStream);
178
		PdfUtils.generateAndWrite(pdfModel, byteArrayOutputStream);
179
 
179
 
180
			Document deviceDocument = documentRepository.selectById(insuranceModel.getDeviceImageDocumentId());
180
		Document deviceDocument = documentRepository.selectById(insuranceModel.getDeviceImageDocumentId());
181
			File deviceImg = new File(deviceDocument.getPath() + deviceDocument.getName());
181
		File deviceImg = new File(deviceDocument.getPath() + deviceDocument.getName());
182
			Document invoiceDocument = documentRepository.selectById(insuranceModel.getDeviceImageDocumentId());
182
		Document invoiceDocument = documentRepository.selectById(insuranceModel.getDeviceImageDocumentId());
183
			File deviceInvoiceImg = new File(invoiceDocument.getPath() + invoiceDocument.getName());
183
		File deviceInvoiceImg = new File(invoiceDocument.getPath() + invoiceDocument.getName());
184
 
184
 
185
			String messageText = MessageFormat.format(
185
		String messageText = MessageFormat.format(
186
					"Dear {0}, Thank you for purchasing Damage Protection Plan. Your Policy number is {1}",
186
				"Dear {0}, Thank you for purchasing Damage Protection Plan. Your Policy number is {1}",
187
					insurancePolicy.getCustomerFirstName(), insurancePolicy.getPolicyNumber());
187
				insurancePolicy.getCustomerFirstName(), insurancePolicy.getPolicyNumber());
188
			Utils.sendSms(messageText, insurancePolicy.getCustomerMobileNumber());
188
		Utils.sendSms(messageText, insurancePolicy.getCustomerMobileNumber());
189
			List<File> attachments = this.savePolicyDocs(insurancePolicy.getPolicyNumber(), byteArrayOutputStream, deviceImg, deviceInvoiceImg);
189
		List<File> attachments = this.savePolicyDocs(insurancePolicy.getPolicyNumber(), byteArrayOutputStream, deviceImg, deviceInvoiceImg);
190
			messageText += "\n Please find your Invoice, and documents submitted by you.";
190
		messageText += "\n Please find your Invoice, and documents submitted by you.";
191
			String subject = "Your Gadget Cop damage Protection";
191
		String subject = "Your Gadget Cop damage Protection";
192
			this.sendMailWithAttachments(insuranceModel.getCustomerEmailId() , subject, messageText, attachments);
192
		this.sendMailWithAttachments(insuranceModel.getCustomerEmailId() , subject, messageText, attachments);
193
		}
-
 
194
		LOGGER.info("requested url : " + request.getRequestURL().toString());
193
		LOGGER.info("requested url : " + request.getRequestURL().toString());
195
		return responseSender.ok(true);
194
		return responseSender.ok(true);
196
	}
195
	}
197
	
196
	
198
	private void sendMailWithAttachments(String email, String subject, String body, List<File> attachments) throws Exception {
197
	private void sendMailWithAttachments(String email, String subject, String body, List<File> attachments) throws Exception {