| 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 {
|