Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
28371 amit.gupta 1
package com.spice.profitmandi.web.controller;
2
 
30622 tejbeer 3
import java.time.LocalDateTime;
4
import java.util.List;
5
import java.util.Map;
6
import java.util.Optional;
7
import java.util.stream.Collectors;
8
 
9
import javax.servlet.http.HttpServletRequest;
10
import javax.transaction.Transactional;
11
 
28371 amit.gupta 12
import org.apache.logging.log4j.LogManager;
13
import org.apache.logging.log4j.Logger;
14
import org.json.JSONObject;
15
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.stereotype.Controller;
17
import org.springframework.ui.Model;
30622 tejbeer 18
import org.springframework.web.bind.annotation.PathVariable;
19
import org.springframework.web.bind.annotation.RequestBody;
20
import org.springframework.web.bind.annotation.RequestMapping;
21
import org.springframework.web.bind.annotation.RequestMethod;
22
import org.springframework.web.bind.annotation.RequestParam;
28371 amit.gupta 23
 
30622 tejbeer 24
import com.spice.profitmandi.common.solr.SolrService;
25
import com.spice.profitmandi.common.web.util.ResponseSender;
26
import com.spice.profitmandi.dao.entity.dtr.WebOffer;
27
import com.spice.profitmandi.dao.entity.dtr.WebOfferProduct;
28
import com.spice.profitmandi.dao.repository.dtr.WebOfferProductRepository;
29
import com.spice.profitmandi.dao.repository.dtr.WebOfferRepository;
28371 amit.gupta 30
 
31
@Controller
32
@Transactional(rollbackOn = Throwable.class)
33
public class WebOffersController {
34
 
35
	private static final Logger LOGGER = LogManager.getLogger(WebOffersController.class);
36
 
37
	@Autowired
38
	ResponseSender<?> responseSender;
30596 tejbeer 39
 
28371 amit.gupta 40
	@Autowired
41
	WebOfferRepository webOfferRepository;
30596 tejbeer 42
 
28371 amit.gupta 43
	@Autowired
44
	WebOfferProductRepository webOfferProductRepository;
45
 
46
	@Autowired
47
	SolrService solrService;
48
 
49
	@RequestMapping(value = "/web-offers", method = RequestMethod.GET)
50
	public String getOfferListing(HttpServletRequest request, Model model) {
51
		List<WebOffer> webListing = webOfferRepository.selectAllWebListing(Optional.of(true));
52
		model.addAttribute("webListings", webListing);
53
		return "web-offer";
54
	}
55
 
56
	@RequestMapping(value = "/web-offer/add", method = RequestMethod.POST)
57
	public String addWebListing(HttpServletRequest request, @RequestBody WebOffer webOffer, Model model) {
58
		webOffer.setCreatedDate(LocalDateTime.now());
30610 tejbeer 59
 
28371 amit.gupta 60
		webOfferRepository.persist(webOffer);
61
		return getOfferListing(request, model);
62
	}
30596 tejbeer 63
 
64
	@RequestMapping(value = "/getwebOffer/{webOfferId}", method = RequestMethod.GET)
65
	public String getWebOfferbyId(HttpServletRequest request, Model model, @PathVariable int webOfferId)
66
			throws Exception {
67
		WebOffer webOffer = webOfferRepository.selectById(webOfferId);
68
 
69
		LOGGER.info("webOffer {}", webOffer);
70
		model.addAttribute("webOffer", webOffer);
71
		return "web-offer-edit";
72
	}
73
 
28371 amit.gupta 74
	@RequestMapping(value = "/web-offer/{webOfferId}", method = RequestMethod.GET)
75
	public String getWebProductListing(HttpServletRequest request, Model model, @PathVariable int webOfferId)
76
			throws Exception {
77
		List<WebOfferProduct> webOfferProducts = webOfferProductRepository.selectAllByWebOfferId(webOfferId);
78
		if (webOfferProducts.size() > 0) {
79
			Map<Integer, JSONObject> entityMap = solrService.getContentByCatalogIds(
80
					webOfferProducts.stream().map(x -> x.getEntityId()).collect(Collectors.toList()));
81
			webOfferProducts.stream()
82
					.forEach(x -> x.setProductName(entityMap.get(x.getEntityId()).getString("title_s")));
83
		}
84
 
85
		WebOffer webOffer = webOfferRepository.selectById(webOfferId);
86
		model.addAttribute("productListings", webOfferProducts);
30596 tejbeer 87
		model.addAttribute("webOffer", webOffer);
28371 amit.gupta 88
		return "web-offer-product";
89
	}
30596 tejbeer 90
 
28371 amit.gupta 91
	@RequestMapping(value = "/web-offer-product/add", method = RequestMethod.POST)
30596 tejbeer 92
	public String addWebOfferProduct(HttpServletRequest request, @RequestBody List<WebOfferProduct> webOfferProducts,
93
			Model model) throws Exception {
28371 amit.gupta 94
		webOfferProducts.stream().forEach(webOfferProduct -> {
95
			boolean exists = webOfferProductRepository.isExists(webOfferProduct.getWebOfferId(),
96
					webOfferProduct.getEntityId());
97
			if (!exists) {
98
				webOfferProductRepository.persist(webOfferProduct);
99
			}
100
 
101
		});
102
		return getWebProductListing(request, model, webOfferProducts.get(0).getWebOfferId());
103
	}
30596 tejbeer 104
 
28371 amit.gupta 105
	@RequestMapping(value = "/web-offer-product/remove", method = RequestMethod.DELETE)
30596 tejbeer 106
	public String addWebOfferProduct(HttpServletRequest request, @RequestParam int webOfferProductId, Model model)
107
			throws Exception {
28371 amit.gupta 108
		WebOfferProduct webOfferProduct = webOfferProductRepository.selectById(webOfferProductId);
109
		webOfferProductRepository.delete(webOfferProduct);
110
		return getWebProductListing(request, model, webOfferProduct.getWebOfferId());
111
	}
112
 
30596 tejbeer 113
	@RequestMapping(value = "/web-offer-duration/update", method = RequestMethod.POST)
30610 tejbeer 114
	public String updateWebOfferDuration(HttpServletRequest request, @RequestBody WebOffer wo, Model model)
115
			throws Exception {
116
		WebOffer webOffer = webOfferRepository.selectById(wo.getId());
30596 tejbeer 117
 
30610 tejbeer 118
		if (webOffer != null) {
119
 
120
			webOffer.setStartDate(wo.getStartDate());
121
			webOffer.setEndDate(wo.getEndDate());
122
			webOffer.setDetailedText(wo.getDetailedText());
123
			webOffer.setTitle(wo.getTitle());
30622 tejbeer 124
			webOfferRepository.persist(webOffer);
30610 tejbeer 125
		}
30596 tejbeer 126
		return getOfferListing(request, model);
127
	}
128
 
129
	@RequestMapping(value = "/web-offer/order/{webListingId}", method = RequestMethod.POST)
28371 amit.gupta 130
	public String orderWebProductListing(HttpServletRequest request, Model model, @PathVariable int webListingId,
30596 tejbeer 131
 
28371 amit.gupta 132
			@RequestBody List<Integer> webListingProductIds) throws Exception {
30596 tejbeer 133
		List<WebOfferProduct> productListings = webOfferProductRepository.selectAllByWebOfferId(webListingId);
28371 amit.gupta 134
 
135
		productListings.forEach(productListing -> {
136
			productListing.setRank(webListingProductIds.indexOf(productListing.getId()) + 1);
137
		});
138
		return getWebProductListing(request, model, webListingId);
139
	}
140
 
141
}