Subversion Repositories SmartDukaan

Rev

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