Subversion Repositories SmartDukaan

Rev

Rev 33116 | Rev 33143 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23612 amit.gupta 1
package com.spice.profitmandi.web.controller;
2
 
3
import com.spice.profitmandi.common.enumuration.ReporticoProject;
4
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
33102 tejus.loha 5
import com.spice.profitmandi.common.model.CustomRetailer;
28106 amit.gupta 6
import com.spice.profitmandi.common.model.ReporticoUrlInfo;
23612 amit.gupta 7
import com.spice.profitmandi.common.services.ReporticoService;
30162 manish 8
import com.spice.profitmandi.common.util.FileUtil;
33102 tejus.loha 9
import com.spice.profitmandi.common.util.FormattingUtils;
26298 tejbeer 10
import com.spice.profitmandi.dao.entity.auth.AuthUser;
33102 tejus.loha 11
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
12
import com.spice.profitmandi.dao.entity.fofo.PendingOrderItem;
13
import com.spice.profitmandi.dao.model.*;
26298 tejbeer 14
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
15
import com.spice.profitmandi.dao.repository.cs.CsService;
28106 amit.gupta 16
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
23784 ashik.ali 17
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
33102 tejus.loha 18
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
19
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
20
import com.spice.profitmandi.dao.repository.fofo.PendingOrderService;
30162 manish 21
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
23798 amit.gupta 22
import com.spice.profitmandi.service.authentication.RoleManager;
30162 manish 23
import com.spice.profitmandi.service.order.OrderService;
33102 tejus.loha 24
import com.spice.profitmandi.service.user.RetailerService;
23612 amit.gupta 25
import com.spice.profitmandi.web.model.LoginDetails;
26
import com.spice.profitmandi.web.util.CookiesProcessor;
33092 tejus.loha 27
import org.apache.http.HttpResponse;
28
import org.apache.logging.log4j.LogManager;
29
import org.apache.logging.log4j.Logger;
30
import org.springframework.beans.factory.annotation.Autowired;
31
import org.springframework.core.io.InputStreamResource;
32
import org.springframework.http.HttpHeaders;
33
import org.springframework.http.HttpStatus;
34
import org.springframework.http.ResponseEntity;
35
import org.springframework.stereotype.Controller;
36
import org.springframework.transaction.annotation.Transactional;
37
import org.springframework.ui.Model;
38
import org.springframework.web.bind.annotation.*;
23612 amit.gupta 39
 
33092 tejus.loha 40
import javax.servlet.http.HttpServletRequest;
41
import java.io.IOException;
42
import java.time.LocalDate;
43
import java.time.LocalDateTime;
44
import java.time.LocalTime;
45
import java.time.format.DateTimeFormatter;
46
import java.util.*;
33102 tejus.loha 47
import java.util.stream.Collectors;
33092 tejus.loha 48
 
23612 amit.gupta 49
@Controller
26298 tejbeer 50
@Transactional(rollbackFor = Throwable.class)
23612 amit.gupta 51
public class ReportsController {
33102 tejus.loha 52
	private static final Logger LOGGER = LogManager.getLogger(OrderController.class);
23637 amit.gupta 53
	@Autowired
23784 ashik.ali 54
	private RoleRepository roleRepository;
26298 tejbeer 55
 
23764 amit.gupta 56
	@Autowired
33102 tejus.loha 57
	private FofoOrderRepository fofoOrderRepository;
58
 
59
	@Autowired
60
	private RetailerService retailerService;
61
 
62
	@Autowired
63
	private PendingOrderItemRepository pendingOrderItemRepository;
64
 
65
	@Autowired
66
	private PendingOrderService pendingOrderService;
67
 
68
	@Autowired
26298 tejbeer 69
	private CookiesProcessor cookiesProcessor;
28106 amit.gupta 70
	@Autowired
71
	private FofoStoreRepository fofoStoreRepository;
26298 tejbeer 72
 
23784 ashik.ali 73
	@Autowired
23652 amit.gupta 74
	private ReporticoService reporticoService;
23764 amit.gupta 75
 
23798 amit.gupta 76
	@Autowired
30162 manish 77
	private OrderRepository orderRepository;
78
	@Autowired
23798 amit.gupta 79
	private RoleManager roleManager;
30162 manish 80
	@Autowired
33102 tejus.loha 81
	private OrderService orderService;
26298 tejbeer 82
 
83
	@Autowired
84
	private CsService csService;
85
 
86
	@Autowired
87
	private AuthRepository authRepository;
88
 
30162 manish 89
	private static final Logger Logger = LogManager.getLogger(OrderController.class);
23612 amit.gupta 90
 
26063 amit.gupta 91
	@RequestMapping(value = "/reports/{projectName}/{fileName}")
23764 amit.gupta 92
	public ResponseEntity<?> fetchReport(HttpServletRequest request, @PathVariable String fileName,
33102 tejus.loha 93
										 @PathVariable ReporticoProject projectName, @RequestBody(required = false) Map<String, String> paramsMap)
23764 amit.gupta 94
			throws ProfitMandiBusinessException, UnsupportedOperationException, IOException {
23612 amit.gupta 95
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
96
		HttpResponse response;
26298 tejbeer 97
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
98
 
99
			if (fileName.equalsIgnoreCase("LeadsReport")) {
100
				if (paramsMap == null) {
101
					paramsMap = new HashMap<String, String>();
102
				}
26460 amit.gupta 103
				Map<Integer, List<Integer>> mapping = csService.getL2L1Mapping();
26298 tejbeer 104
 
105
				AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
106
 
107
				List<Integer> authIds = mapping.get(authUser.getId());
108
				if (authIds == null) {
109
					authIds = new ArrayList<>();
110
				}
111
				authIds.add(authUser.getId());
112
 
113
				paramsMap.put("authId", authIds + "");
114
			}
23612 amit.gupta 115
		} else {
26298 tejbeer 116
			if (paramsMap == null) {
26164 amit.gupta 117
				paramsMap = new HashMap<String, String>();
118
			}
26298 tejbeer 119
 
26158 amit.gupta 120
			paramsMap.put("MANUAL_fofoId", loginDetails.getFofoId() + "");
26298 tejbeer 121
 
23612 amit.gupta 122
		}
26298 tejbeer 123
		response = getAdminReportFile(loginDetails.getEmailId(), projectName, fileName + ".xml", paramsMap);
23612 amit.gupta 124
		HttpHeaders headers = new HttpHeaders();
23764 amit.gupta 125
		InputStreamResource is = new InputStreamResource(response.getEntity().getContent());
23765 amit.gupta 126
		headers.set("Content-Type", "application/vnd.ms-excel");
26298 tejbeer 127
		headers.set("Content-disposition", "inline; filename=report-" + fileName + ".csv");
23766 amit.gupta 128
		headers.setContentLength(response.getEntity().getContentLength());
23764 amit.gupta 129
		return new ResponseEntity<InputStreamResource>(is, headers, HttpStatus.OK);
23612 amit.gupta 130
	}
23637 amit.gupta 131
 
26298 tejbeer 132
	private HttpResponse getAdminReportFile(String email, ReporticoProject projectName, String fileName,
33102 tejus.loha 133
											Map<String, String> reportParams) throws ProfitMandiBusinessException, IOException {
26063 amit.gupta 134
		return reporticoService.getReportFile(projectName, fileName, reportParams);
135
	}
33102 tejus.loha 136
 
30162 manish 137
	@RequestMapping(value = "/collectionSummary", method = RequestMethod.GET)
138
	public String getCollectionSummary(HttpServletRequest request,
33102 tejus.loha 139
									   Model model) throws ProfitMandiBusinessException {
30162 manish 140
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
33092 tejus.loha 141
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
30162 manish 142
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
143
		LocalDateTime currentStartMonth = currentDate.minusDays(30).toLocalDate().atStartOfDay();
33102 tejus.loha 144
		List<CollectionSummary> collectionSummaryList = orderRepository.selectCollectionSummary(fofoDetails.getFofoId(), currentStartMonth, currentDate);
30162 manish 145
		Logger.info("CollectionSummaryList {}", collectionSummaryList);
33102 tejus.loha 146
		model.addAttribute("startDate", currentDate.minusDays(30).toLocalDate());
30162 manish 147
		model.addAttribute("endDate", LocalDate.now());
148
		model.addAttribute("collectionSummaryList", collectionSummaryList);
33092 tejus.loha 149
		model.addAttribute("isAdmin", isAdmin);
30162 manish 150
		return "partner-collection-summary";
151
	}
33102 tejus.loha 152
 
33067 shampa 153
	@RequestMapping(value = "/collectionSummaryFetchReportByDate", method = RequestMethod.GET)
154
	public String getcollectionSummaryFetchReport(HttpServletRequest request,
33092 tejus.loha 155
												  @RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 156
												  @RequestParam(name = "startDate", required = true, defaultValue = "") LocalDate startDate,
157
												  @RequestParam(name = "endDate", required = true, defaultValue = "") LocalDate endDate, Model model)
33067 shampa 158
			throws Exception {
159
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
33092 tejus.loha 160
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
161
		if (isAdmin) {
162
			startDate = LocalDate.now().minusDays(30);
163
			endDate = LocalDate.now();
164
		}
33102 tejus.loha 165
		model.addAttribute("startDate", startDate);
33092 tejus.loha 166
		model.addAttribute("endDate", endDate);
167
		model.addAttribute("isAdmin", isAdmin);
33067 shampa 168
 
169
 
33092 tejus.loha 170
		if (isAdmin) {
171
			if (fofoId == 0) {
172
				//No need to send any data
173
				model.addAttribute("collectionSummaryList", new ArrayList<>());
174
				return "partner-collection-summary";
175
			} else {
176
				List<CollectionSummary> collectionSummaryList = orderRepository
177
						.selectCollectionSummary(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
178
				model.addAttribute("collectionSummaryList", collectionSummaryList);
179
				return "partner-collection-summary";
180
			}
181
		} else {
182
			fofoId = fofoDetails.getFofoId();
183
			List<CollectionSummary> collectionSummaryList = orderRepository
184
					.selectCollectionSummary(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
185
			model.addAttribute("collectionSummaryList", collectionSummaryList);
186
			return "partner-collection-summary";
33067 shampa 187
 
33092 tejus.loha 188
		}
33067 shampa 189
	}
33102 tejus.loha 190
 
30162 manish 191
	@RequestMapping(value = "/downloadCollectionSummary", method = RequestMethod.GET)
33102 tejus.loha 192
	public ResponseEntity<?> getDownloadCollectionSummary(HttpServletRequest request,
33108 tejus.loha 193
														  @RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 194
														  @RequestParam(name = "startDate") LocalDate startDate,
195
														  @RequestParam(name = "endDate") LocalDate endDate, Model model) throws Exception {
30162 manish 196
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
197
		List<List<?>> rows = new ArrayList<>();
33102 tejus.loha 198
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
199
		List<CollectionSummary> collectionSummaryList = null;
200
		if (isAdmin) {
33108 tejus.loha 201
			if (fofoId == 0) {
202
				collectionSummaryList = new ArrayList<>();
203
			} else {
204
				collectionSummaryList = orderRepository.selectCollectionSummary(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
205
			}
33102 tejus.loha 206
		} else {
33108 tejus.loha 207
			collectionSummaryList = orderRepository.selectCollectionSummary(fofoDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
33102 tejus.loha 208
		}
30162 manish 209
		Logger.info("CollectionSummaryList {}", collectionSummaryList);
31377 tejbeer 210
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
33102 tejus.loha 211
		for (CollectionSummary cs : collectionSummaryList) {
31377 tejbeer 212
			rows.add(Arrays.asList(cs.getDate().format(
33102 tejus.loha 213
							dateTimeFormatter), cs.getReferenceType(), cs.getCash(), cs.getPinelabs(), cs.getBajajFinserv(), cs.getHomeCredit(), cs.getPaytm(),
214
					cs.getCapitalFirst(), cs.getZestMoney(), cs.getSamsungSure(), cs.getTotalAmount()));
30162 manish 215
		}
216
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil
33102 tejus.loha 217
				.getCSVByteStream(Arrays.asList("Date", "Reference Type", "Cash", "Pinelabs", "Bajaj Finservice", "Home Credit", "Paymt",
30162 manish 218
						"Capital First", "Zest Money", "Samsung Sure", "Total Amount"), rows);
33102 tejus.loha 219
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "Collection Summary Report");
30162 manish 220
 
221
		return responseEntity;
222
	}
223
 
33102 tejus.loha 224
	@RequestMapping(value = "/franchiseeSalesReport", method = RequestMethod.GET)
225
	public String getFranchiseeSalesReport(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId,
226
										   @RequestParam(required = false) LocalDate startDate, @RequestParam(required = false) LocalDate endDate)
227
			throws ProfitMandiBusinessException {
228
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
229
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
230
		if (startDate == null) {
231
			startDate = LocalDate.now().minusDays(30);
30162 manish 232
 
33102 tejus.loha 233
		}
234
		endDate = LocalDate.now();
235
		model.addAttribute("startDate", startDate);
236
		model.addAttribute("endDate", endDate);
237
		model.addAttribute("isAdmin", isAdmin);
238
		LOGGER.info("q {}, starDate - {}, endDate - {}", fofoId, startDate, endDate);
239
		if (isAdmin) {
240
			if (fofoId == 0) {
241
				//No need to pull any data
242
				model.addAttribute("focoSaleReportList", new ArrayList<>());
243
				return "foco-sale-report";
244
 
245
			}
246
		} else {
247
			fofoId = loginDetails.getFofoId();
248
		}
249
 
250
 
251
		FofoStore fs = fofoStoreRepository.selectByRetailerId(fofoId);
252
 
253
		List<FocoSaleReportModel> focoSaleReportList = fofoOrderRepository.selectFocoSaleReport(fofoId, fs.getCode(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
254
		model.addAttribute("focoSaleReportList", focoSaleReportList);
255
		return "foco-sale-report";
256
	}
257
 
258
	@RequestMapping(value = "/franchiseeSalesFetchReportByDate", method = RequestMethod.GET)
259
	public String getfranchiseeSalesFetchReport(HttpServletRequest request, Model model,
260
												@RequestParam(defaultValue = "0") int fofoId,
261
												@RequestParam(required = false) LocalDate startDate,
262
												@RequestParam(required = false) LocalDate endDate)
263
			throws Exception {
264
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
265
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
266
		if (startDate == null) {
267
 
268
			startDate = LocalDate.now().minusDays(30);
269
			endDate = LocalDate.now();
270
		}
271
		model.addAttribute("startDate", startDate);
272
		model.addAttribute("endDate", endDate);
273
		model.addAttribute("isAdmin", isAdmin);
274
 
275
		// List<List<?>> rows = new ArrayList<>();
276
 
277
		LOGGER.info("q {}, starDate - {}, endDate - {}", fofoId, startDate, endDate);
278
		if (isAdmin) {
279
			if (fofoId == 0) {
280
				//no need any data
281
				model.addAttribute("focoSaleReportList", new ArrayList<>());
282
				return "foco-sale-report";
283
			}
284
		} else {
285
			fofoId = loginDetails.getFofoId();
286
		}
287
		FofoStore fs = fofoStoreRepository.selectByRetailerId(fofoId);
288
		List<FocoSaleReportModel> focoSaleReportList = fofoOrderRepository.selectFocoSaleReport(fofoId, fs.getCode(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
289
		model.addAttribute("focoSaleReportList", focoSaleReportList);
290
		return "foco-sale-report";
291
	}
292
 
293
 
294
	@RequestMapping(value = "/downloadFranchiseeSales", method = RequestMethod.GET)
295
	public ResponseEntity<?> getdownloadFranchiseeSales(HttpServletRequest request,
33108 tejus.loha 296
														@RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 297
														@RequestParam(name = "startDate") LocalDate startDate,
298
														@RequestParam(name = "endDate") LocalDate endDate,
299
														Model model)
300
			throws Exception {
301
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
302
 
303
		List<List<?>> rows = new ArrayList<>();
304
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
305
		List<FocoSaleReportModel> focoSaleReportList = null;
306
		FofoStore fs = null;
307
		if (isAdmin) {
308
			fs = fofoStoreRepository.selectByRetailerId(fofoId);
33108 tejus.loha 309
			if (fofoId == 0) {
310
				focoSaleReportList = new ArrayList<>();
311
			} else {
33102 tejus.loha 312
 
33108 tejus.loha 313
				focoSaleReportList = fofoOrderRepository.selectFocoSaleReport(fofoId,
314
						fs.getCode(), startDate.atStartOfDay(), endDate.atStartOfDay());
315
			}
316
 
33102 tejus.loha 317
		} else {
33108 tejus.loha 318
			fs = fofoStoreRepository.selectByRetailerId(fofoDetails.getFofoId());
33102 tejus.loha 319
 
320
			focoSaleReportList = fofoOrderRepository.selectFocoSaleReport(fofoDetails.getFofoId(),
321
					fs.getCode(), startDate.atStartOfDay(), endDate.atStartOfDay());
322
		}
323
		LOGGER.info("FocoSaleReportList {}", focoSaleReportList);
324
		String partnerName = null;
325
		for (FocoSaleReportModel fsr : focoSaleReportList) {
326
			partnerName = fsr.getName();
327
			rows.add(Arrays.asList(fsr.getCode(), fsr.getName(), fsr.getCity(), fsr.getState(), fsr.getRegion(),
328
					fsr.getItemId(), fsr.getBrand(), fsr.getModelName(), fsr.getModelNumber(), fsr.getColor(),
329
					fsr.getQuantity(), fsr.getDp(), fsr.getSellingPrice(), fsr.getMop(), fsr.getSerialNumber(),
330
					FormattingUtils.format(fsr.getCreateDate()), fsr.getCustomerName(), fsr.getCustomerPhone(),
331
					fsr.getCustomerCity(), fsr.getCustomerPincode(), fsr.getInvoiceNumber(), fsr.getPurchaseReference(),
332
					fsr.getCustomerGstNumber(), FormattingUtils.format(fsr.getCancelledTimestamp()),
333
					FormattingUtils.format(fsr.getGrnCompleteDate()), fsr.getHygieneRating(), fsr.getRating(),
334
					fsr.getStatus(), fsr.getRemark(), FormattingUtils.format(fsr.getCreatedTimestamp()),
335
					FormattingUtils.format(fsr.getDisposedTimestamp()),
336
					FormattingUtils.format(fsr.getNextTimestamp()),
337
					FormattingUtils.format(fsr.getActivationTimestamp()),
338
					FormattingUtils.format(fsr.getActivationTimestamp()), fsr.getLabel()));
339
 
340
		}
341
 
342
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
343
				Arrays.asList("Code", "Name", "City", "State", "Region", "Item Id", "Brand", "Model Name",
344
						"Model Number", "Color", "Quantity", "Dp", "Selling_Price", "mop", "Serial Number",
345
						"Create Date", "Customer Name", "Customer Phone", "Customer City", " Customer Pincode",
346
						"Invoice  Number", "Purchase Reference", "Customer Gst Number", " Cancelled Timestamp",
347
						"GRN Complete Date", "Hygiene Rating", "Rating", "Status", "Remark", "Created Timestamp",
348
						"Disposed Timestamp", " Next Timestamp", "Activation Timestamp", "Create Timestamp", "Label"),
349
				rows);
350
 
351
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, partnerName + " Franchisee Sales Report");
352
 
353
		return responseEntity;
354
 
355
	}
356
 
357
	@RequestMapping(value = "/downloadWalletSummaryReport", method = RequestMethod.GET)
358
	public ResponseEntity<?> getDownloadWalletSummaryReport(HttpServletRequest request,
359
															@RequestParam(defaultValue = "0", name = "fofoId") int fofoId,
360
															@RequestParam(name = "startDate") LocalDate startDate,
361
															@RequestParam(name = "endDate") LocalDate endDate, Model model)
362
			throws Exception {
363
 
364
		List<List<?>> rows = new ArrayList<>();
365
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
366
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
367
		List<WalletSummaryReportModel> walletSummartList = null;
368
		if (isAdmin) {
33108 tejus.loha 369
			if (fofoId == 0)
370
				walletSummartList = new ArrayList<>();
371
			else
372
				walletSummartList = fofoOrderRepository.selectWalletSummaryReport(
33102 tejus.loha 373
					fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
374
		} else {
375
 
376
			walletSummartList = fofoOrderRepository.selectWalletSummaryReport(
377
					fofoDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
378
		}
379
		LOGGER.info("walletSummartList {}", fofoId);
380
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
33126 tejus.loha 381
		String partnerDetail = null;
33102 tejus.loha 382
 
383
		for (WalletSummaryReportModel walletSummary : walletSummartList) {
33126 tejus.loha 384
			partnerDetail = walletSummary.getName() + "(" + walletSummary.getCode() + "-" + walletSummary.getPhone() + ")" + "-" + walletSummary.getEmail();
33102 tejus.loha 385
 
386
			rows.add(Arrays.asList(
387
					walletSummary.getId(),
33126 tejus.loha 388
					//walletSummary.getCode(),
389
					//walletSummary.getName(),
390
					//walletSummary.getEmail(),
391
					//walletSummary.getPhone(),
33102 tejus.loha 392
					walletSummary.getAmount(),
393
					walletSummary.getRefundableAmount(),
394
					walletSummary.getReference(),
395
					walletSummary.getReferenceType(),
33116 tejus.loha 396
					FormattingUtils.format(walletSummary.getBusinessTimestamp()),
397
					walletSummary.getDescription()
398
			));
33102 tejus.loha 399
 
400
		}
401
 
402
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil
33126 tejus.loha 403
				.getCSVByteStream(Arrays.asList("Id",
404
//						"Code",
405
//						"Name",
406
//						"Email",
407
//						"Phone",
408
						"Amount", "Refundable_amount",
33102 tejus.loha 409
						"Reference", "Reference_type", "Business_timestamp", "Description"), rows);
33126 tejus.loha 410
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, partnerDetail + " Wallet Statement Report");
33102 tejus.loha 411
 
412
		return responseEntity;
413
 
414
	}
415
 
416
	@RequestMapping(value = "/walletSummaryFetchReportByDate", method = RequestMethod.GET)
417
	public String getwalletSummaryFetchReport(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId,
418
											  @RequestParam(required = false) LocalDate startDate,
419
											  @RequestParam(required = false) LocalDate endDate)
420
			throws Exception {
421
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
422
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
423
		if (startDate == null) {
424
			startDate = LocalDate.now().minusDays(30);
425
		}
426
		endDate = LocalDate.now();
427
		model.addAttribute("startDate", startDate);
428
		model.addAttribute("endDate", endDate);
429
		model.addAttribute("isAdmin", isAdmin);
430
		if (isAdmin) {
431
			if (fofoId == 0) {
432
				//No need to send any data
433
				model.addAttribute("walletSummartList", new ArrayList<>());
434
 
435
				return "wallet-summary-report";
436
			} else {
437
				List<WalletSummaryReportModel> walletSummartList = fofoOrderRepository
438
						.selectWalletSummaryReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
439
				model.addAttribute("walletSummartList", walletSummartList);
440
 
441
				return "wallet-summary-report";
442
			}
443
 
444
		} else {
445
 
446
 
447
			FofoStore fs = fofoStoreRepository.selectByRetailerId(fofoId);
448
			List<WalletSummaryReportModel> walletSummartList = fofoOrderRepository
449
					.selectWalletSummaryReport(loginDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
450
			//LOGGER.info("walletSummartList {}", walletSummartList);
451
 
452
			model.addAttribute("walletSummartList", walletSummartList);
453
 
454
			return "wallet-summary-report";
455
		}
456
	}
457
 
458
	@RequestMapping(value = "/walletSummaryReport", method = RequestMethod.GET)
459
	public String getWalletSummaryReport(HttpServletRequest request, Model model) throws Exception {
460
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
461
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
462
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
463
		LocalDateTime currentStartMonth = currentDate.minusDays(30).toLocalDate().atStartOfDay();
464
 
465
		List<WalletSummaryReportModel> walletSummartList = fofoOrderRepository
466
				.selectWalletSummaryReport(fofoDetails.getFofoId(), currentStartMonth, currentDate);
467
		LOGGER.info("walletSummartList {}", walletSummartList);
468
 
469
		model.addAttribute("startDate", currentDate.minusDays(30).toLocalDate());
470
		model.addAttribute("endDate", LocalDate.now());
471
		model.addAttribute("walletSummartList", walletSummartList);
472
		model.addAttribute("isAdmin", isAdmin);
473
 
474
		return "wallet-summary-report";
475
	}
476
 
477
	@RequestMapping(value = "/pendingIndentReport", method = RequestMethod.GET)
478
	public String getPendingIndentReport(HttpServletRequest request, Model model) throws Exception {
479
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
480
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
481
 
482
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
483
		LocalDateTime currentStartMonth = currentDate.minusMonths(2).toLocalDate().atStartOfDay();
484
 
485
		List<PendingIndentReportModel> pendingIndentReports = fofoOrderRepository
486
				.selectPendingIndentReport(fofoDetails.getFofoId(), currentStartMonth, currentDate);
487
		LOGGER.info("pendingIndentReports {}", pendingIndentReports);
488
 
489
		model.addAttribute("startDate", currentDate.minusMonths(2).toLocalDate());
490
		model.addAttribute("endDate", LocalDate.now());
491
		model.addAttribute("pendingIndentReports", pendingIndentReports);
492
		model.addAttribute("isAdmin", isAdmin);
493
 
494
 
495
		return "pending-indent-report";
496
	}
497
 
498
	@RequestMapping(value = "/pendingIndentFetchReportByDate", method = RequestMethod.GET)
499
	public String getpendingIndentFetchReport(
500
			HttpServletRequest request,
501
			@RequestParam(defaultValue = "0") int fofoId,
502
			@RequestParam(name = "startDate", required = true, defaultValue = "") LocalDate startDate,
503
			@RequestParam(name = "endDate", required = true, defaultValue = "") LocalDate endDate,
504
			Model model
505
	) throws Exception {
506
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
507
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
508
		if (startDate == null) {
509
			startDate = LocalDate.now().minusDays(30);
510
			endDate = LocalDate.now();
511
		}
512
		model.addAttribute("startDate", startDate);
513
		model.addAttribute("endDate", endDate);
514
		model.addAttribute("isAdmin", isAdmin);
515
		if (isAdmin) {
516
			if (fofoId == 0) {
517
				model.addAttribute("pendingIndentReports", new ArrayList<>());
518
				return "pending-indent-report";
519
			} else {
520
				List<PendingIndentReportModel> pendingIndentReports = fofoOrderRepository
521
						.selectPendingIndentReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
522
				model.addAttribute("pendingIndentReports", pendingIndentReports);
523
				return "pending-indent-report";
524
			}
525
		} else {
526
			LocalDateTime currentDate = LocalDate.now().atStartOfDay();
527
			List<PendingIndentReportModel> pendingIndentReports = fofoOrderRepository
528
					.selectPendingIndentReport(fofoDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
529
			model.addAttribute("pendingIndentReports", pendingIndentReports);
530
			return "pending-indent-report";
531
 
532
		}
533
	}
534
 
535
 
536
	@RequestMapping(value = "/pendingIndentReportDownload", method = RequestMethod.GET)
537
	public ResponseEntity<?> getPendingIndentReportDownload(HttpServletRequest request,
33108 tejus.loha 538
															@RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 539
															@RequestParam(name = "startDate") LocalDate startDate,
540
															@RequestParam(name = "endDate") LocalDate endDate, Model model)
541
			throws Exception {
542
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
543
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
544
        /*LocalDateTime currentDate = LocalDate.now().atStartOfDay();
545
        LocalDateTime currentStartMonth = currentDate.minusMonths(2).toLocalDate().atStartOfDay();*/
546
		List<PendingIndentReportModel> pendingIndentReports = null;
547
		List<List<?>> rows = new ArrayList<>();
548
		if (isAdmin) {
33108 tejus.loha 549
			if (fofoId == 0)
550
				pendingIndentReports = new ArrayList<>();
551
			else
552
				pendingIndentReports = fofoOrderRepository
33102 tejus.loha 553
					.selectPendingIndentReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
554
		} else {
555
			pendingIndentReports = fofoOrderRepository
556
					.selectPendingIndentReport(fofoDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
557
 
558
		}
559
		LOGGER.info("pendingIndentReports {}", pendingIndentReports);
560
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
561
 
562
		for (PendingIndentReportModel pir : pendingIndentReports) {
563
 
564
			rows.add(Arrays.asList(pir.getTransactionId(), pir.getOrderId(),
565
					pir.getCreatTimestamp().format(dateTimeFormatter), pir.getItemId(), pir.getBrand(),
566
					pir.getModelName(), pir.getModelNumber(), pir.getColor(), pir.getQuantity(), pir.getUnitPrice(),
567
					pir.getWalletAmount(), pir.getStatus(), pir.getInvoiceNumber(),
568
					pir.getBillingTimestamp() == null ? "" : pir.getBillingTimestamp().format(dateTimeFormatter)));
569
 
570
		}
571
 
572
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList(
573
				"Transaction Id", "Order Id", "Created_At", "Item_Id", "Brand", "Model Name", "Model Number", "Color",
574
				"Quantity", "Unit Price", "Wallet Deduction", "Status", "Invoice Number", "Billing Timestamp"), rows);
575
 
576
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "Order Status Summary Report");
577
 
578
		return responseEntity;
579
	}
580
 
581
	@RequestMapping(value = "/schemePayoutReport", method = RequestMethod.GET)
582
	public String getschemePayoutReport(HttpServletRequest request, Model model,
583
										@RequestParam(required = false) LocalDate startDate, @RequestParam(required = false) LocalDate endDate)
584
			throws ProfitMandiBusinessException {
585
 
586
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
587
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
588
		if (startDate == null) {
589
			startDate = LocalDate.now().minusDays(30);
590
			endDate = LocalDate.now();
591
		}
592
		model.addAttribute("startDate", startDate);
593
		model.addAttribute("endDate", endDate);
594
		model.addAttribute("isAdmin", isAdmin);
595
		//LOGGER.info("schemePayoutReports {}", schemePayoutReports);
596
		List<SchemePayoutReportModel> schemePayoutReports = fofoOrderRepository
597
				.selectSchemePayoutReport(loginDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
598
		model.addAttribute("schemePayoutReports", schemePayoutReports);
599
		return "scheme-payout-report";
600
 
601
	}
602
 
603
	@RequestMapping(value = "/schemePayoutFetchReportByDate", method = RequestMethod.GET)
604
	public String getschemePayoutFetchReportByDate(
605
			HttpServletRequest request,
606
			Model model,
607
			@RequestParam(defaultValue = "0") int fofoId,
608
			@RequestParam(required = false) LocalDate startDate,
609
			@RequestParam(required = false) LocalDate endDate)
610
			throws ProfitMandiBusinessException {
611
		//LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
612
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
613
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
614
		if (startDate == null) {
615
			startDate = LocalDate.now().minusDays(30);
616
			endDate = LocalDate.now();
617
		}
618
		model.addAttribute("startDate", startDate);
619
		model.addAttribute("endDate", endDate);
620
		model.addAttribute("isAdmin", isAdmin);
621
 
622
		LOGGER.info("q {}, starDate - {}, endDate - {}", fofoId, startDate, endDate);
623
		if (isAdmin) {
624
			if (fofoId == 0) {
625
				//No need to pull any data
626
				model.addAttribute("schemePayoutReports", new ArrayList<>());
627
				return "scheme-payout-report";
628
 
629
			} else {
630
				List<SchemePayoutReportModel> schemePayoutReports = fofoOrderRepository
631
						.selectSchemePayoutReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
632
 
633
				model.addAttribute("schemePayoutReports", schemePayoutReports);
634
				return "scheme-payout-report";
635
			}
636
		} else {
637
			fofoId = loginDetails.getFofoId();
638
 
639
			List<SchemePayoutReportModel> schemePayoutReports = fofoOrderRepository
640
					.selectSchemePayoutReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
641
 
642
			model.addAttribute("schemePayoutReports", schemePayoutReports);
643
			return "scheme-payout-report";
644
		}
645
 
646
	}
647
 
648
	@RequestMapping(value = "/offerPayoutReport", method = RequestMethod.GET)
649
	public String getOfferPayoutReport(HttpServletRequest request, Model model, @RequestParam(required = false) LocalDate startDate, @RequestParam(required = false) LocalDate endDate) throws Exception {
650
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
651
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
652
 
653
		if (startDate == null) {
654
			startDate = LocalDate.now().minusDays(30);
655
			endDate = LocalDate.now();
656
		}
657
		model.addAttribute("startDate", startDate);
658
		model.addAttribute("endDate", endDate);
659
 
660
 
661
		List<OfferPayoutDumpReportModel> offerPayoutDumpReports = fofoOrderRepository
662
				.selectOfferPayoutDumpReport(fofoDetails.getFofoId(), startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
663
		LOGGER.info("offerPayoutDumpReports {}", offerPayoutDumpReports);
664
 
665
		model.addAttribute("offerPayoutDumpReports", offerPayoutDumpReports);
666
		model.addAttribute("isAdmin", isAdmin);
667
 
668
		return "offer-payout-dump-report";
669
	}
670
 
671
	@RequestMapping(value = "/offerPayoutFetchReportByDate", method = RequestMethod.GET)
672
	public String getofferPayoutFetchReportByDate(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId,
673
												  @RequestParam(required = false) LocalDate startDate, @RequestParam(required = false) LocalDate endDate)
674
			throws ProfitMandiBusinessException {
675
 
676
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
677
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
678
		if (startDate == null) {
679
			startDate = LocalDate.now().minusDays(30);
680
			endDate = LocalDate.now();
681
		}
682
		model.addAttribute("startDate", startDate);
683
		model.addAttribute("endDate", endDate);
684
		model.addAttribute("isAdmin", isAdmin);
685
		LOGGER.info("q {}, starDate - {}, endDate - {}", fofoId, startDate, endDate);
686
		if (isAdmin) {
687
			if (fofoId == 0) {
688
				//No need to pull any data
689
				model.addAttribute("offerPayoutReports", new ArrayList<>());
690
				return "offer-payout-dump-report";
691
 
692
			} else {
693
				List<OfferPayoutDumpReportModel> offerPayoutDumpReports = fofoOrderRepository
694
						.selectOfferPayoutDumpReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
695
 
696
				model.addAttribute("offerPayoutDumpReports", offerPayoutDumpReports);
697
 
698
 
699
				return "offer-payout-dump-report";
700
 
701
			}
702
		} else {
703
			fofoId = loginDetails.getFofoId();
704
			List<OfferPayoutDumpReportModel> offerPayoutDumpReports = fofoOrderRepository
705
					.selectOfferPayoutDumpReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
706
 
707
			model.addAttribute("offerPayoutDumpReports", offerPayoutDumpReports);
708
 
709
 
710
			return "offer-payout-dump-report";
711
		}
712
	}
713
 
714
 
715
	@RequestMapping(value = "/selectPartnerBillingSummaryReport", method = RequestMethod.GET)
716
	public String getselectPartnerBillingSummaryReport(HttpServletRequest request, Model model) throws Exception {
717
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
718
 
719
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
720
		LocalDateTime currentStartMonth = currentDate.minusMonths(3).toLocalDate().atStartOfDay();
721
 
722
		List<PartnerBillingSummaryModel> partnerBillingSummaryReports = fofoOrderRepository
723
				.selectPartnerBillingSummaryReport(fofoDetails.getFofoId(), currentStartMonth, currentDate);
724
 
725
		model.addAttribute("startDate", currentDate.minusMonths(3).toLocalDate());
726
		model.addAttribute("endDate", LocalDate.now());
727
		model.addAttribute("partnerBillingSummaryReports", partnerBillingSummaryReports);
728
 
729
		return "partner-billing-summary-report";
730
	}
731
 
732
	@RequestMapping(value = "/priceDropReport", method = RequestMethod.GET)
733
	public String getSelectPriceDropReport(HttpServletRequest request, @RequestParam(name = "startDate", required = true, defaultValue = "") LocalDate startDate,
734
										   @RequestParam(name = "endDate", required = true, defaultValue = "") LocalDate endDate, Model model) throws Exception {
735
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
736
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
737
		if (startDate == null) {
738
			startDate = LocalDate.now().minusDays(30);
739
			endDate = LocalDate.now();
740
		}
741
		model.addAttribute("startDate", startDate);
742
		model.addAttribute("endDate", endDate);
743
		model.addAttribute("isAdmin", isAdmin);
744
		List<PriceDropReportModel> priceDropReports = orderRepository.selectPriceDropReport(fofoDetails.getFofoId(),
745
				startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
746
		model.addAttribute("priceDropReports", priceDropReports);
747
 
748
		return "price-drop-report";
749
	}
750
 
751
	@RequestMapping(value = "/priceDropFetchReportByDate", method = RequestMethod.GET)
752
	public String getpriceDropFetchReportByDate(HttpServletRequest request,
753
												@RequestParam(defaultValue = "0") int fofoId,
754
												@RequestParam(name = "startDate", required = true, defaultValue = "") LocalDate startDate,
755
												@RequestParam(name = "endDate", required = true, defaultValue = "") LocalDate endDate, Model model)
756
			throws Exception {
757
 
758
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
759
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
760
		if (startDate == null) {
761
			startDate = LocalDate.now().minusDays(30);
762
			endDate = LocalDate.now();
763
		}
764
		model.addAttribute("startDate", startDate);
765
		model.addAttribute("endDate", endDate);
766
		model.addAttribute("isAdmin", isAdmin);
767
		if (isAdmin) {
768
			if (fofoId == 0) {
769
				model.addAttribute("priceDropReports", new ArrayList<>());
770
				return "price-drop-report";
771
			} else {
772
				List<PriceDropReportModel> priceDropReports = orderRepository.selectPriceDropReport(fofoId,
773
						startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
774
				model.addAttribute("priceDropReports", priceDropReports);
775
				return "price-drop-report";
776
			}
777
 
778
		} else {
779
			List<PriceDropReportModel> priceDropReports = orderRepository.selectPriceDropReport(fofoDetails.getFofoId(),
780
					startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
781
			model.addAttribute("priceDropReports", priceDropReports);
782
			return "price-drop-report";
783
		}
784
	}
785
 
786
 
787
	@RequestMapping(value = "/downloadPriceDropReport", method = RequestMethod.GET)
788
	public ResponseEntity<?> getSelectDownloadPriceDropReport(HttpServletRequest request,
33108 tejus.loha 789
															  @RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 790
															  @RequestParam(name = "startDate") LocalDate startDate,
791
															  @RequestParam(name = "endDate") LocalDate endDate, Model model)
792
			throws Exception {
793
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
794
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
795
		List<List<?>> rows = new ArrayList<>();
796
		List<PriceDropReportModel> priceDropReports = null;
797
		if (isAdmin) {
33108 tejus.loha 798
			if (fofoId == 0)
799
				priceDropReports = new ArrayList<>();
800
			else
801
				priceDropReports = orderRepository.selectPriceDropReport(fofoId,
33102 tejus.loha 802
					startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
803
		} else {
804
			fofoId = fofoDetails.getFofoId();
805
			priceDropReports = orderRepository.selectPriceDropReport(fofoId,
806
					startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
807
		}
808
		for (PriceDropReportModel pdr : priceDropReports) {
809
 
810
			rows.add(Arrays.asList(pdr.getCode(), pdr.getId(), pdr.getBrand(), pdr.getModelName(), pdr.getModelNumber(),
811
					pdr.getAffectedOn(), pdr.getAmount(), pdr.getPartnerPayout(), pdr.getImei(), pdr.getStatus(),
812
					pdr.getUpdateTimestamp(), pdr.getRejectionReason()));
813
 
814
		}
815
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil
816
				.getCSVByteStream(Arrays.asList("code", "Price_Drop_Id", "brand", "model_name", "model_number",
817
						"affected_on", "amount", "partner_payout", "Imei", "status", "processed_on", "Reason"), rows);
818
 
819
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "price drop report");
820
 
821
		return responseEntity;
822
 
823
	}
824
 
825
	@RequestMapping(value = "/downloadPartnerBillingSummaryReport", method = RequestMethod.GET)
826
	public ResponseEntity<?> getdownloadPartnerBillingSummaryReport(HttpServletRequest request,
827
																	@RequestParam(name = "startDate") LocalDate startDate,
828
																	@RequestParam(name = "endDate") LocalDate endDate, Model model)
829
			throws Exception {
830
 
831
		List<List<?>> rows = new ArrayList<>();
832
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
833
 
834
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
835
		LocalDateTime currentStartMonth = currentDate.minusMonths(3).toLocalDate().atStartOfDay();
836
 
837
		List<PartnerBillingSummaryModel> partnerBillingSummaryReports = fofoOrderRepository
838
				.selectPartnerBillingSummaryReport(fofoDetails.getFofoId(), startDate.atStartOfDay(),
839
						endDate.atTime(LocalTime.MAX));
840
 
841
		for (PartnerBillingSummaryModel pbsr : partnerBillingSummaryReports) {
842
 
843
			rows.add(Arrays.asList(pbsr.getId(),
844
					FormattingUtils.format(pbsr.getCreateTimestamp()),
845
					FormattingUtils.format(pbsr.getBillingTimestamp()),
846
					FormattingUtils.format(pbsr.getDeliveryTimestamp()),
847
					FormattingUtils.format(pbsr.getPartnerGrnTimestamp()),
848
					pbsr.getTransactionId(),
849
					pbsr.getLogisticsTransactionId(), pbsr.getAirwayBillNumber(), pbsr.getStatusSubGroup(),
850
					pbsr.getStatusName(), pbsr.getRetailerId(), pbsr.getRetailerName(), pbsr.getItemId(),
851
					pbsr.getBrand(), pbsr.getModelName(), pbsr.getModelNumber(), pbsr.getColor(), pbsr.getUnitPrice(),
852
					pbsr.getQuantity(), pbsr.getTotalPrice(), pbsr.getInvoiceNumber(), pbsr.getSellerName(), pbsr.getGstNumber(), pbsr.getHsnCode(), pbsr.getIgstRate(),
853
					pbsr.getCgstRate(), pbsr.getSgstRate()));
854
 
855
		}
856
 
857
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList("OrderId",
858
				"Created On", "Billed On", "Delivered On", "Grned On", "Transaction_id", "master_order_id",
859
				"airwaybill_no", "statusSubGroupp", "statusName", "customer_id", "customer_name", "Item_Id", "brand",
860
				"model_name", "model_number", "color", "selling_price", "Quantity", "total_price", "invoice_number",
861
				"seller_name", "gst_number", "hsn_code", "igstrate", "cgstrate", "sgstrate"), rows);
862
 
863
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "Billing Statement Report");
864
 
865
		return responseEntity;
866
 
867
 
868
	}
869
 
870
	@RequestMapping(value = "/invoiceSchemeOutSummaryReport", method = RequestMethod.GET)
871
	public String getInvoiceSchemeOutSummaryReport(HttpServletRequest request, Model model) throws Exception {
872
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
873
 
874
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
875
		LocalDateTime currentStartMonth = currentDate.minusMonths(3).toLocalDate().atStartOfDay();
876
 
877
		List<FocoSchemeOutReportModel> focoSchemeOutReports = fofoOrderRepository
878
				.selectInvoiceSchemeOutSummaryReport(fofoDetails.getFofoId(), currentStartMonth, currentDate);
879
		LOGGER.info("focoSchemeOutReportModel {}", focoSchemeOutReports);
880
 
881
		model.addAttribute("startDate", currentDate.minusMonths(3).toLocalDate());
882
		model.addAttribute("endDate", LocalDate.now());
883
		model.addAttribute("focoSchemeOutReports", focoSchemeOutReports);
884
 
885
		return "invoicewise-scheme-out-report";
886
	}
887
 
888
	@RequestMapping(value = "/downloadInvoiceSchemeOutSummaryReport", method = RequestMethod.GET)
889
	public ResponseEntity<?> getDownloadInvoiceSchemeOutSummaryReport(HttpServletRequest request, Model model)
890
			throws Exception {
891
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
892
 
893
		List<List<?>> rows = new ArrayList<>();
894
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
895
		LocalDateTime currentStartMonth = currentDate.minusMonths(3).toLocalDate().atStartOfDay();
896
 
897
		List<FocoSchemeOutReportModel> focoSchemeOutReports = fofoOrderRepository
898
				.selectInvoiceSchemeOutSummaryReport(fofoDetails.getFofoId(), currentStartMonth, currentDate);
899
		LOGGER.info("focoSchemeOutReportModel {}", focoSchemeOutReports);
900
 
901
		for (FocoSchemeOutReportModel fsor : focoSchemeOutReports) {
902
			rows.add(Arrays.asList(fsor.getInvoiceNumber(), fsor.getQuantity(), fsor.getBrand(), fsor.getModelName(),
903
					fsor.getModelNumber(), fsor.getColor(), fsor.getAmount()));
904
 
905
		}
906
 
907
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
908
				Arrays.asList("InvoiceNumber", "Quantity", "Brand", "Model Name", "Model Number", "Color", "Amount"),
909
				rows);
910
 
911
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows,
912
				"invoice wise scheme out Summary Report");
913
 
914
		return responseEntity;
915
	}
916
 
917
	@RequestMapping(value = "/schemePayoutReportDownload", method = RequestMethod.GET)
918
	public ResponseEntity<?> getSchemePayoutReportDownload(HttpServletRequest request,
33108 tejus.loha 919
														   @RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 920
														   @RequestParam(name = "startDate") LocalDate startDate,
921
														   @RequestParam(name = "endDate") LocalDate endDate, Model model)
922
			throws Exception {
923
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
924
 
925
		List<List<?>> rows = new ArrayList<>();
926
 
927
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
928
 
929
		List<SchemePayoutReportModel> schemePayoutReports = null;
930
		if (isAdmin) {
33108 tejus.loha 931
			if (fofoId == 0)
932
				schemePayoutReports = new ArrayList<>();
933
			else
934
				schemePayoutReports = fofoOrderRepository
33102 tejus.loha 935
					.selectSchemePayoutReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
936
		} else {
937
			fofoId = fofoDetails.getFofoId();
938
			schemePayoutReports = fofoOrderRepository
939
					.selectSchemePayoutReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
940
		}
941
		LOGGER.info("schemePayoutReports {}", schemePayoutReports);
942
 
943
		for (SchemePayoutReportModel spr : schemePayoutReports) {
944
 
945
			rows.add(Arrays.asList(spr.getId(), spr.getSerialNumber(), spr.getBrand(), spr.getModelName(),
946
					spr.getModelNumber(), spr.getColor(), spr.getSchemeInDp(), spr.getSchemeOutDp(), spr.getSchemeId(),
947
					spr.getName(), spr.getType(), spr.getAmountType(), spr.getPurchaseReference(),
948
					spr.getInvoiceNumber(), spr.getSioAmount(), spr.getStatus(), spr.getStatusDescription(),
949
					spr.getCreateTimestamp(), spr.getRolledBackTimestamp()));
950
 
951
		}
952
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList("Item_Id",
953
				"serial_number", "Brand", "Model Name", "Model Number", "Color", "Scheme_IN_DP", "Scheme_out_dp",
954
				"Scheme_Id", "Name", "Type", "amount", "Purchase_Invoice", "SALE_INOVOICE", "Amount", "status",
955
				"description", "create_timestamp", "rolled_back_timestamp"), rows);
956
 
957
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "Scheme Payout Summary Report");
958
 
959
		return responseEntity;
960
	}
961
 
962
 
963
	@RequestMapping(value = "/offerPayoutDumpReportDownload", method = RequestMethod.GET)
964
	public ResponseEntity<?> getOfferPayoutDumpReportDownload(HttpServletRequest request,
33108 tejus.loha 965
															  @RequestParam(defaultValue = "0") int fofoId,
33102 tejus.loha 966
															  @RequestParam(name = "startDate") LocalDate startDate,
967
															  @RequestParam(name = "endDate") LocalDate endDate, Model model)
968
			throws Exception {
969
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
970
		List<List<?>> rows = new ArrayList<>();
971
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
972
		List<OfferPayoutDumpReportModel> offerPayoutReports = null;
973
		if (isAdmin) {
33108 tejus.loha 974
			if (fofoId == 0)
975
				offerPayoutReports = new ArrayList<>();
976
			else
977
				offerPayoutReports = fofoOrderRepository
33102 tejus.loha 978
					.selectOfferPayoutDumpReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
979
		} else {
980
			fofoId = fofoDetails.getFofoId();
981
			offerPayoutReports = fofoOrderRepository
982
					.selectOfferPayoutDumpReport(fofoId, startDate.atStartOfDay(), endDate.atTime(LocalTime.MAX));
983
		}
984
 
985
 
986
		for (OfferPayoutDumpReportModel opdr : offerPayoutReports) {
987
 
988
			rows.add(Arrays.asList(opdr.getId(), opdr.getBrand(), opdr.getModelName(),
989
					opdr.getModelNumber(), opdr.getColor(), opdr.getSerialNumber(), opdr.getOfferId(),
990
					opdr.getName(), opdr.getType(),
991
					opdr.getSlabAmount(), opdr.getAmount(), opdr.getDescription(),
992
					opdr.getCreateTimestamp(), opdr.getRejectTimestamp()));
993
 
994
		}
995
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList("Id",
996
				"Brand", "Model Name", "Model Number", "Color", "Serial number",
997
				"Offer Id", "Name", "Type", "Slab Amount", "Amount",
998
				"Description", "Credited On", "Rejected On"), rows);
999
 
1000
		ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "Offer Payout Summary Report");
1001
 
1002
		return responseEntity;
1003
	}
1004
 
1005
 
1006
	@GetMapping("/getAllOnlineOrder")
1007
	public String getAllOrders(HttpServletRequest request, @RequestParam(required = false) LocalDate date, Model model)
1008
			throws ProfitMandiBusinessException {
1009
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1010
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
1011
		if (date == null) {
1012
			date = LocalDate.now().minusDays(3);
1013
		}
1014
 
1015
		LOGGER.info("date" + date);
1016
		List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
1017
				.collect(Collectors.toList());
1018
 
1019
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
1020
 
1021
		Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> customRetailerMap.get(x))
1022
				.filter(x -> x != null).collect(Collectors.toList()).stream()
1023
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
1024
 
1025
		model.addAttribute("customRetailersMap", customRetailersMap);
1026
 
1027
		List<PendingOrderItem> pendingOrderItem = null;
1028
 
1029
		pendingOrderItem = pendingOrderItemRepository.selectAll(date.atStartOfDay(), LocalDateTime.now());
1030
 
1031
		Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, 0);
1032
 
1033
		model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
1034
		model.addAttribute("partnerInventoryMap", map.get("partnerInventoryMap"));
1035
		model.addAttribute("date", date);
1036
		model.addAttribute("isAdmin", isAdmin);
1037
		return "online-all-order-item";
1038
	}
1039
 
1040
 
23822 amit.gupta 1041
	@RequestMapping(value = "/reports", method = RequestMethod.GET)
28106 amit.gupta 1042
	public String reports(HttpServletRequest httpServletRequest, Model model) throws ProfitMandiBusinessException, UnsupportedOperationException, IOException {
28137 amit.gupta 1043
		//LoginDetails loginDetails = cookiesProcessor.getCookiesObject(httpServletRequest);
28106 amit.gupta 1044
		Map<ReporticoProject, List<ReporticoUrlInfo>> returnMap = ReporticoProject.reporticoProjectMap;
28137 amit.gupta 1045
		/*if(fofoStoreRepository.getWarehousePartnerMap().get(7720).stream().filter(x->x.getId()==loginDetails.getFofoId()).count() > 0) {
28106 amit.gupta 1046
			Map<ReporticoProject, List<ReporticoUrlInfo>> returnMap1 = new HashMap<ReporticoProject, List<ReporticoUrlInfo>>();
1047
			returnMap1.put(ReporticoProject.FOCO, returnMap.get(ReporticoProject.FOCO));
1048
			returnMap1.put(ReporticoProject.FOCOR, returnMap.get(ReporticoProject.FOCOR).stream().skip(1).collect(Collectors.toList()));
28107 amit.gupta 1049
			returnMap = returnMap1;
28137 amit.gupta 1050
		}*/
28107 amit.gupta 1051
		model.addAttribute("reporticoProjectMap", returnMap);
23637 amit.gupta 1052
		return "reports";
1053
	}
23612 amit.gupta 1054
}