Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21615 kshitij.so 1
package com.spice.profitmandi.web.controller;
2
 
23568 govind 3
import java.io.IOException;
4
import java.net.URISyntaxException;
24276 amit.gupta 5
import java.time.LocalDateTime;
23884 amit.gupta 6
import java.util.List;
23568 govind 7
 
22086 amit.gupta 8
import javax.servlet.http.HttpServletRequest;
9
 
23786 amit.gupta 10
import org.apache.logging.log4j.LogManager;
23568 govind 11
import org.apache.logging.log4j.Logger;
22481 ashik.ali 12
import org.springframework.beans.factory.annotation.Autowired;
23379 ashik.ali 13
import org.springframework.beans.factory.annotation.Value;
21615 kshitij.so 14
import org.springframework.stereotype.Controller;
22481 ashik.ali 15
import org.springframework.transaction.annotation.Transactional;
22073 ashik.ali 16
import org.springframework.ui.Model;
21615 kshitij.so 17
import org.springframework.web.bind.annotation.RequestMapping;
18
import org.springframework.web.bind.annotation.RequestMethod;
24098 tejbeer 19
import org.springframework.web.bind.annotation.RequestParam;
21615 kshitij.so 20
 
22481 ashik.ali 21
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
24203 amit.gupta 22
import com.spice.profitmandi.common.model.ProfitMandiConstants;
24098 tejbeer 23
import com.spice.profitmandi.dao.entity.dtr.NotificationData;
22654 ashik.ali 24
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
23884 amit.gupta 25
import com.spice.profitmandi.dao.entity.transaction.Order;
22481 ashik.ali 26
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
24098 tejbeer 27
import com.spice.profitmandi.dao.repository.dtr.NotificationPanelRepository;
24203 amit.gupta 28
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
24271 amit.gupta 29
import com.spice.profitmandi.dao.repository.fofo.PurchaseReturnItemRepository;
23884 amit.gupta 30
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
23844 amit.gupta 31
import com.spice.profitmandi.service.authentication.RoleManager;
23884 amit.gupta 32
import com.spice.profitmandi.service.inventory.InventoryService;
24271 amit.gupta 33
import com.spice.profitmandi.service.slab.TargetSlabService;
23884 amit.gupta 34
import com.spice.profitmandi.service.transaction.TransactionService;
35
import com.spice.profitmandi.service.wallet.WalletService;
22481 ashik.ali 36
import com.spice.profitmandi.web.model.LoginDetails;
37
import com.spice.profitmandi.web.util.CookiesProcessor;
24263 tejbeer 38
import com.spice.profitmandi.web.util.MVCResponseSender;
22481 ashik.ali 39
 
21615 kshitij.so 40
@Controller
22481 ashik.ali 41
@Transactional(rollbackFor = Throwable.class)
21615 kshitij.so 42
public class DashboardController {
23923 amit.gupta 43
 
23379 ashik.ali 44
	@Value("${web.api.host}")
45
	private String webApiHost;
23923 amit.gupta 46
 
24072 amit.gupta 47
	@Value("${web.api.scheme}")
48
	private String webApiScheme;
24271 amit.gupta 49
 
24078 amit.gupta 50
	@Value("${web.api.root}")
51
	private String webApiRoot;
52
 
23379 ashik.ali 53
	@Value("${web.api.port}")
54
	private int webApiPort;
21615 kshitij.so 55
 
24271 amit.gupta 56
 
22481 ashik.ali 57
	@Autowired
22927 ashik.ali 58
	private CookiesProcessor cookiesProcessor;
23923 amit.gupta 59
 
23568 govind 60
	@Autowired
23786 amit.gupta 61
	private RoleManager roleManager;
23923 amit.gupta 62
 
23838 ashik.ali 63
	@Autowired
64
	private FofoStoreRepository fofoStoreRepository;
23884 amit.gupta 65
 
66
	@Autowired
67
	private WalletService walletService;
23923 amit.gupta 68
 
23884 amit.gupta 69
	@Autowired
70
	private InventoryService inventoryService;
24271 amit.gupta 71
 
72
	@Autowired
73
	private TargetSlabService targetSlabService;
23923 amit.gupta 74
 
23884 amit.gupta 75
	@Autowired
76
	private OrderRepository orderRepository;
24271 amit.gupta 77
 
23951 amit.gupta 78
	@Autowired
24271 amit.gupta 79
	private PurchaseReturnItemRepository purchaseReturnItemRepository;
80
 
23923 amit.gupta 81
	/*
82
	 * @Autowired private ScanRepository scanRepository;
83
	 */
84
 
23884 amit.gupta 85
	@Autowired
86
	private TransactionService transactionService;
24263 tejbeer 87
 
24098 tejbeer 88
	@Autowired
24263 tejbeer 89
	private MVCResponseSender mvcResponseSender;
90
 
91
	@Autowired
24098 tejbeer 92
	private NotificationPanelRepository notificationPanelRepository;
23923 amit.gupta 93
 
24203 amit.gupta 94
	@Autowired
95
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
96
 
23568 govind 97
	private static final Logger LOGGER = LogManager.getLogger(DashboardController.class);
23923 amit.gupta 98
 
21615 kshitij.so 99
	@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
24098 tejbeer 100
	public String dashboard(HttpServletRequest request,@RequestParam(name = "offset", defaultValue = "0") int offset,
101
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
23923 amit.gupta 102
			throws ProfitMandiBusinessException, URISyntaxException, IOException {
103
		// LOGGER.info("scanRepository.selectScansByInventoryItemId(1)",
104
		// scanRepository.selectScansByInventoryItemId(1));
23884 amit.gupta 105
		LOGGER.info("In Dashboard");
22927 ashik.ali 106
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23923 amit.gupta 107
 
22481 ashik.ali 108
		FofoStore fofoStore = null;
109
		try {
22927 ashik.ali 110
			fofoStore = fofoStoreRepository.selectByRetailerId(loginDetails.getFofoId());
22481 ashik.ali 111
		} catch (ProfitMandiBusinessException e) {
22927 ashik.ali 112
			LOGGER.error("FofoStore Code not found of fofoId {}", loginDetails.getFofoId());
22481 ashik.ali 113
		}
23884 amit.gupta 114
 
23923 amit.gupta 115
		float walletAmount = 0;
116
		float inStockAmount = 0;
117
		float unbilledStockAmount = 0;
118
		float grnPendingStockAmount = 0;
119
		float shortPercentage = 100;
120
		float totalInvestedAmount = 0;
23936 tejbeer 121
		float minimumInvestment = 0;
24271 amit.gupta 122
		float returnedStockInTransit=0;
123
		float sale=0;
23923 amit.gupta 124
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
125
			model.addAttribute("showAlert", false);
24263 tejbeer 126
			model.addAttribute("sale", sale);
127
			List<NotificationData> notificationData = null;
128
			long size = 0;
129
 
130
			notificationData = notificationPanelRepository.selectAllNotificationData(offset, limit);
131
			size = notificationPanelRepository.selectAllCount();
132
			LOGGER.info("notification_data {}", notificationData);
133
 
134
			LOGGER.info("notification_data {}", size);
135
 
136
			if (!notificationData.isEmpty()) {
137
 
138
				model.addAttribute("notificationData", notificationData);
139
				LOGGER.info("notificationdata", notificationData);
140
				model.addAttribute("start", offset + 1);
141
				model.addAttribute("size", size);
142
				model.addAttribute("url", "/getPaginatedNotificationData");
143
 
144
				LOGGER.info("start {}", offset + 1);
145
				LOGGER.info("SIZE {}", size);
146
 
147
				if (notificationData.size() < limit) {
148
					model.addAttribute("end", offset + notificationData.size());
149
					LOGGER.info("SIZE2 {}", offset + notificationData.size());
150
				} else {
151
					model.addAttribute("end", offset + limit);
152
 
153
					LOGGER.info("end {}", size);
154
 
155
				}
156
 
157
			} else {
158
 
159
				model.addAttribute("notificationData", notificationData);
160
				model.addAttribute("size", size);
161
				LOGGER.info("sizeOriginal {}", size);
162
 
163
			}
23923 amit.gupta 164
		} else if (roleManager.isPartner(loginDetails.getRoleIds())) {
165
			walletAmount = walletService.getUserWallet(loginDetails.getFofoId()).getAmount();
166
			inStockAmount = inventoryService.getTotalAmountInStock(loginDetails.getFofoId());
24271 amit.gupta 167
 
23884 amit.gupta 168
			List<Order> unbilledOrders = transactionService.getInTransitOrders(loginDetails.getFofoId());
23923 amit.gupta 169
			for (Order unBilledOrder : unbilledOrders) {
23884 amit.gupta 170
				unbilledStockAmount += unBilledOrder.getTotalAmount();
171
			}
172
 
23904 amit.gupta 173
			List<Order> grnPendingOrders = orderRepository.selectPendingGrnOrders(loginDetails.getFofoId());
23923 amit.gupta 174
			for (Order grnPendingOrder : grnPendingOrders) {
23884 amit.gupta 175
				grnPendingStockAmount += grnPendingOrder.getTotalAmount();
176
			}
24271 amit.gupta 177
			totalInvestedAmount = walletAmount + inStockAmount + unbilledStockAmount + grnPendingStockAmount + sale;
23923 amit.gupta 178
			shortPercentage = ((fofoStore.getMinimumInvestment() - totalInvestedAmount)
179
					/ fofoStore.getMinimumInvestment()) * 100;
23944 amit.gupta 180
			model.addAttribute("showAlert", shortPercentage > 10);
23936 tejbeer 181
			minimumInvestment = fofoStore.getMinimumInvestment();
24263 tejbeer 182
 
183
			// debitNoteRepository.se
184
			List<NotificationData> notificationData = null;
185
			long size = 0;
186
 
187
			notificationData = notificationPanelRepository.selectAllNotificationDataByActiveFlag(offset, limit, true);
188
			size = notificationPanelRepository.selectCountByActiveFlag(true);
189
			LOGGER.info("notification_data {}", notificationData);
190
 
191
			LOGGER.info("notification_data {}", size);
192
 
193
			if (!notificationData.isEmpty()) {
194
 
195
				model.addAttribute("notificationData", notificationData);
196
				LOGGER.info("notificationdata", notificationData);
197
				model.addAttribute("start", offset + 1);
198
				model.addAttribute("size", size);
199
				model.addAttribute("url", "/getPaginatedNotificationData");
200
 
201
				LOGGER.info("start {}", offset + 1);
202
				LOGGER.info("SIZE {}", size);
203
 
204
				if (notificationData.size() < limit) {
205
					model.addAttribute("end", offset + notificationData.size());
206
					LOGGER.info("SIZE2 {}", offset + notificationData.size());
207
				} else {
208
					model.addAttribute("end", offset + limit);
209
 
210
					LOGGER.info("end {}", size);
211
 
212
				}
213
 
214
			} else {
215
 
216
				model.addAttribute("notificationData", notificationData);
217
				model.addAttribute("size", size);
218
				LOGGER.info("sizeOriginal {}", size);
219
 
220
			}
23884 amit.gupta 221
		}
24271 amit.gupta 222
		model.addAttribute("sale", sale);
23923 amit.gupta 223
		model.addAttribute("walletAmount", walletAmount);
224
		model.addAttribute("inStockAmount", inStockAmount);
225
		model.addAttribute("unbilledStockAmount", unbilledStockAmount);
226
		model.addAttribute("grnPendingStockAmount", grnPendingStockAmount);
227
		model.addAttribute("shortPercentage", shortPercentage);
228
		model.addAttribute("totalInvestedAmount", totalInvestedAmount);
23936 tejbeer 229
		model.addAttribute("minimumInvestmentAmount", minimumInvestment);
23951 amit.gupta 230
		model.addAttribute("returnedStockInTransit", returnedStockInTransit);
23923 amit.gupta 231
 
23848 ashik.ali 232
		model.addAttribute("fofoStore", fofoStore);
23918 amit.gupta 233
		model.addAttribute("walletAmount");
22086 amit.gupta 234
		model.addAttribute("appContextPath", request.getContextPath());
23796 amit.gupta 235
		model.addAttribute("isAdmin", roleManager.isAdmin(loginDetails.getRoleIds()));
23379 ashik.ali 236
		model.addAttribute("webApiHost", webApiHost);
237
		model.addAttribute("webApiPort", webApiPort);
24072 amit.gupta 238
		model.addAttribute("webApiScheme", webApiScheme);
24077 amit.gupta 239
		model.addAttribute("webApiRoot", webApiRoot);
24203 amit.gupta 240
		model.addAttribute("hasGift", hasGift(loginDetails.getFofoId()));
241
		model.addAttribute("giftItemId", ProfitMandiConstants.GIFT_ID);
24248 govind 242
		model.addAttribute("sale", sale);
24098 tejbeer 243
 
23923 amit.gupta 244
		// LOGGER.info("loginDetails.getFofoId()"+loginDetails.getFofoId());
245
		// inventoryService.prebookingAvailabilitySendMessage(loginDetails.getFofoId());
21615 kshitij.so 246
		return "dashboard";
247
	}
23923 amit.gupta 248
 
24271 amit.gupta 249
	//This method is currently hardcoded to faciliate watches sold as gift.
24203 amit.gupta 250
	private boolean hasGift(int fofoId) {
251
		try {
24271 amit.gupta 252
			return currentInventorySnapshotRepository.selectByItemIdAndFofoId(ProfitMandiConstants.GIFT_ID, fofoId).getAvailability() > 0;
24203 amit.gupta 253
		} catch (ProfitMandiBusinessException e) {
254
			return false;
255
		}
256
	}
24098 tejbeer 257
	@RequestMapping(value = "/getPaginatedNotificationData", method = RequestMethod.GET)
258
	public String getPaginatedNotificationData(HttpServletRequest request,
259
			@RequestParam(name = "offset", defaultValue = "0") int offset,
260
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
24263 tejbeer 261
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24098 tejbeer 262
 
24263 tejbeer 263
		FofoStore fofoStore = null;
264
		try {
265
			fofoStore = fofoStoreRepository.selectByRetailerId(loginDetails.getFofoId());
266
		} catch (ProfitMandiBusinessException e) {
267
			LOGGER.error("FofoStore Code not found of fofoId {}", loginDetails.getFofoId());
268
		}
269
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
270
			List<NotificationData> notificationData = null;
24098 tejbeer 271
 
24263 tejbeer 272
			notificationData = notificationPanelRepository.selectAllNotificationData(offset, limit);
24098 tejbeer 273
 
24263 tejbeer 274
			LOGGER.info("notification_data {}", notificationData);
24098 tejbeer 275
 
24263 tejbeer 276
			if (!notificationData.isEmpty()) {
24098 tejbeer 277
 
24263 tejbeer 278
				model.addAttribute("notificationData", notificationData);
279
				model.addAttribute("url", "/getPaginatedNotificationData");
280
 
281
			} else {
282
				model.addAttribute("notificationData", notificationData);
283
 
284
			}
285
		} else if (roleManager.isPartner(loginDetails.getRoleIds())) {
286
 
287
			List<NotificationData> notificationData = null;
288
 
289
			notificationData = notificationPanelRepository.selectAllNotificationDataByActiveFlag(offset, limit, true);
290
			LOGGER.info("notification_data {}", notificationData);
291
 
292
			if (!notificationData.isEmpty()) {
293
 
294
				model.addAttribute("notificationData", notificationData);
295
				model.addAttribute("url", "/getPaginatedNotificationData");
296
 
297
			} else {
298
				model.addAttribute("notificationData", notificationData);
299
 
300
			}
24098 tejbeer 301
		}
302
 
303
		return "dashboard-paginated";
304
	}
22354 ashik.ali 305
	@RequestMapping(value = "/contactUs", method = RequestMethod.GET)
23923 amit.gupta 306
	public String contactUs(HttpServletRequest request, Model model) throws Throwable {
22354 ashik.ali 307
		model.addAttribute("appContextPath", request.getContextPath());
308
		return "contact-us";
309
	}
23923 amit.gupta 310
 
311
	/*
312
	 * private List<PaymentOption> getPaymentOptions(int fofoId){ List<Integer>
313
	 * paymentOptionIds =
24263 tejbeer 314
	 * fofoPartnerPaymentOptionRepository.selectPaymentOptionIdsByFofoId(fofoId)
315
	 * ; if(paymentOptionIds.isEmpty()){ return new ArrayList<>(); } return
23923 amit.gupta 316
	 * paymentOptionRepository.selectByIds(new HashSet<>(paymentOptionIds)); }
317
	 */
318
 
24263 tejbeer 319
	@RequestMapping(value = "/inactiveNotificationData", method = RequestMethod.POST)
320
	public String inactiveNotificationData(HttpServletRequest request,
321
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
322
 
323
		NotificationData notificationData = notificationPanelRepository.selectById(id);
324
		if (notificationData != null) {
325
 
326
			notificationData.setActive(false);
327
			LOGGER.info("notification" + notificationData);
328
			notificationPanelRepository.persist(notificationData);
329
 
330
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
331
		} else {
332
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
333
 
334
		}
335
		return "response";
336
	}
337
 
338
	@RequestMapping(value = "/activeNotificationData", method = RequestMethod.POST)
339
	public String activeNotificationData(HttpServletRequest request,
340
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
341
 
342
		NotificationData notificationData = notificationPanelRepository.selectById(id);
343
		if (notificationData != null) {
344
 
345
			notificationData.setActive(true);
346
			notificationData.setCreated_timestamp(LocalDateTime.now());
347
			LOGGER.info("notification" + notificationData);
348
			notificationPanelRepository.persist(notificationData);
349
 
350
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
351
		} else {
352
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
353
 
354
		}
355
		return "response";
356
	}
357
 
21615 kshitij.so 358
}