Subversion Repositories SmartDukaan

Rev

Rev 22273 | Rev 22473 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 22273 Rev 22355
Line 2... Line 2...
2
 
2
 
3
import java.util.Set;
3
import java.util.Set;
4
 
4
 
5
import javax.servlet.http.HttpServletRequest;
5
import javax.servlet.http.HttpServletRequest;
6
 
6
 
7
import org.apache.commons.lang3.StringUtils;
-
 
8
import org.apache.thrift.TException;
-
 
9
import org.apache.thrift.transport.TTransportException;
-
 
10
import org.slf4j.Logger;
7
import org.slf4j.Logger;
11
import org.slf4j.LoggerFactory;
8
import org.slf4j.LoggerFactory;
12
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.beans.factory.annotation.Autowired;
-
 
10
import org.springframework.beans.factory.annotation.Qualifier;
13
import org.springframework.http.ResponseEntity;
11
import org.springframework.http.ResponseEntity;
14
import org.springframework.stereotype.Controller;
12
import org.springframework.stereotype.Controller;
15
import org.springframework.transaction.annotation.Transactional;
13
import org.springframework.transaction.annotation.Transactional;
16
import org.springframework.web.bind.annotation.RequestBody;
14
import org.springframework.web.bind.annotation.RequestBody;
17
import org.springframework.web.bind.annotation.RequestMapping;
15
import org.springframework.web.bind.annotation.RequestMapping;
Line 32... Line 30...
32
import com.spice.profitmandi.dao.entity.dtr.ShopAddress;
30
import com.spice.profitmandi.dao.entity.dtr.ShopAddress;
33
import com.spice.profitmandi.dao.entity.dtr.User;
31
import com.spice.profitmandi.dao.entity.dtr.User;
34
import com.spice.profitmandi.dao.entity.dtr.UserAccounts;
32
import com.spice.profitmandi.dao.entity.dtr.UserAccounts;
35
import com.spice.profitmandi.dao.entity.dtr.UserRole;
33
import com.spice.profitmandi.dao.entity.dtr.UserRole;
36
import com.spice.profitmandi.dao.entity.user.Address;
34
import com.spice.profitmandi.dao.entity.user.Address;
-
 
35
import com.spice.profitmandi.dao.entity.user.Cart;
-
 
36
import com.spice.profitmandi.dao.entity.user.Counter;
-
 
37
import com.spice.profitmandi.dao.entity.user.PrivateDealUser;
-
 
38
import com.spice.profitmandi.dao.entity.user.PrivateDealUserAddressId;
-
 
39
import com.spice.profitmandi.dao.entity.user.PrivateDealUserAddressMapping;
37
import com.spice.profitmandi.dao.enumuration.dtr.AccountType;
40
import com.spice.profitmandi.dao.enumuration.dtr.AccountType;
38
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
41
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
39
import com.spice.profitmandi.dao.repository.dtr.BrandRepository;
42
import com.spice.profitmandi.dao.repository.dtr.BrandRepository;
40
import com.spice.profitmandi.dao.repository.dtr.DocumentRepository;
43
import com.spice.profitmandi.dao.repository.dtr.DocumentRepository;
41
import com.spice.profitmandi.dao.repository.dtr.RetailerAddressRepository;
44
import com.spice.profitmandi.dao.repository.dtr.RetailerAddressRepository;
Line 46... Line 49...
46
import com.spice.profitmandi.dao.repository.dtr.ShopRepository;
49
import com.spice.profitmandi.dao.repository.dtr.ShopRepository;
47
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
50
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
48
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
51
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
49
import com.spice.profitmandi.dao.repository.dtr.UserRoleRepository;
52
import com.spice.profitmandi.dao.repository.dtr.UserRoleRepository;
50
import com.spice.profitmandi.dao.repository.user.AddressRepository;
53
import com.spice.profitmandi.dao.repository.user.AddressRepository;
51
import com.spice.profitmandi.thrift.clients.UserClient;
54
import com.spice.profitmandi.dao.repository.user.CartRepository;
-
 
55
import com.spice.profitmandi.dao.repository.user.CounterRepository;
-
 
56
import com.spice.profitmandi.dao.repository.user.PrivateDealUserAddressMappingRepository;
-
 
57
import com.spice.profitmandi.dao.repository.user.PrivateDealUserRepository;
52
import com.spice.profitmandi.web.req.Category;
58
import com.spice.profitmandi.web.req.Category;
53
import com.spice.profitmandi.web.req.CreateRetailerAddressRequest;
59
import com.spice.profitmandi.web.req.CreateRetailerAddressRequest;
54
import com.spice.profitmandi.web.req.CreateRetailerRequest;
60
import com.spice.profitmandi.web.req.CreateRetailerRequest;
55
import com.spice.profitmandi.web.req.RetailerAddBrandRequest;
61
import com.spice.profitmandi.web.req.RetailerAddBrandRequest;
56
 
62
 
57
import in.shop2020.model.v1.user.Sex;
63
import in.shop2020.model.v1.user.CartStatus;
58
import in.shop2020.model.v1.user.UserContextException;
-
 
59
import io.swagger.annotations.ApiImplicitParam;
64
import io.swagger.annotations.ApiImplicitParam;
60
import io.swagger.annotations.ApiImplicitParams;
65
import io.swagger.annotations.ApiImplicitParams;
61
import io.swagger.annotations.ApiOperation;
66
import io.swagger.annotations.ApiOperation;
62
 
67
 
63
@Controller
68
@Controller
Line 65... Line 70...
65
public class RetailerController {
70
public class RetailerController {
66
	
71
	
67
	private static final Logger LOGGER=LoggerFactory.getLogger(RetailerController.class);
72
	private static final Logger LOGGER=LoggerFactory.getLogger(RetailerController.class);
68
	
73
	
69
	@Autowired
74
	@Autowired
-
 
75
	@Qualifier("userRepository")
70
	UserRepository userRepository;
76
	UserRepository userRepository;
71
	
77
	
72
	@Autowired
78
	@Autowired
-
 
79
	@Qualifier("userUserRepository")
-
 
80
	com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
-
 
81
	
-
 
82
	@Autowired
73
	UserRoleRepository userRoleRepository;
83
	UserRoleRepository userRoleRepository;
74
	
84
	
75
	@Autowired
85
	@Autowired
76
	ResponseSender<?> responseSender;
86
	ResponseSender<?> responseSender;
77
	
87
	
Line 103... Line 113...
103
	ShopAddressRepository shopAddressRepository;
113
	ShopAddressRepository shopAddressRepository;
104
	
114
	
105
	@Autowired
115
	@Autowired
106
	RetailerBrandRepository retailerBrandRepository;
116
	RetailerBrandRepository retailerBrandRepository;
107
	
117
	
-
 
118
	@Autowired
-
 
119
	CounterRepository counterRepository;
-
 
120
	
-
 
121
	@Autowired
-
 
122
	PrivateDealUserRepository privateDealUserRepository;
-
 
123
	
-
 
124
	@Autowired
-
 
125
	PrivateDealUserAddressMappingRepository privateDealUserAddressMappingRepository;
-
 
126
	
-
 
127
	@Autowired
-
 
128
	CartRepository cartRepository;
-
 
129
	
108
	@ApiImplicitParams({
130
	@ApiImplicitParams({
109
		@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", 
131
		@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", 
110
				required = true, dataType = "string", paramType = "header")
132
				required = true, dataType = "string", paramType = "header")
111
	})
133
	})
112
	
134
	
113
	@ApiOperation(value = "Create Retailer")
135
	@ApiOperation(value = "Create Retailer")
114
	@RequestMapping(value = ProfitMandiConstants.URL_RETAILER, method=RequestMethod.POST)
136
	@RequestMapping(value = ProfitMandiConstants.URL_RETAILER, method=RequestMethod.POST)
115
	public ResponseEntity<?> createRetailer(HttpServletRequest request, @RequestBody CreateRetailerRequest createRetailerRequest){
137
	public ResponseEntity<?> createRetailer(HttpServletRequest request, @RequestBody CreateRetailerRequest createRetailerRequest) throws ProfitMandiBusinessException{
116
		LOGGER.info("requested url : "+request.getRequestURL().toString());
138
		LOGGER.info("request received with body [{}] at url {{}}: ", createRetailerRequest, request.getRequestURL().toString());
117
		try{
139
		try{
118
			UserInfo userInfo = (UserInfo)request.getAttribute("userInfo");
140
			UserInfo userInfo = (UserInfo)request.getAttribute("userInfo");
-
 
141
			LOGGER.info("requestAttribute [userInfo={}]", userInfo);
119
			User user = userRepository.selectById(userInfo.getUserId());
142
			User user = userRepository.selectById(userInfo.getUserId());
120
			this.createRetailer(user, createRetailerRequest);
143
			this.createRetailer(user, createRetailerRequest);
121
			return responseSender.ok(ResponseCodeHolder.getMessage("RTLR_OK_1000"));
144
			return responseSender.ok(ResponseCodeHolder.getMessage("RTLR_OK_1000"));
122
		}catch (ProfitMandiBusinessException profitMandiBusinessException) {
145
		}catch (ProfitMandiBusinessException profitMandiBusinessException) {
123
			LOGGER.error("ProfitMandi error: ", profitMandiBusinessException);
146
			LOGGER.error("ProfitMandi error: ", profitMandiBusinessException);
-
 
147
			throw profitMandiBusinessException;
124
			return responseSender.badRequest(profitMandiBusinessException);
148
			//return responseSender.badRequest(profitMandiBusinessException);
125
		}
149
		}
126
	}
150
	}
127
	
151
	
128
	private void createRetailer(User user, CreateRetailerRequest createRetailerRequest) 
152
	private void createRetailer(User user, CreateRetailerRequest createRetailerRequest) 
129
			throws ProfitMandiBusinessException{
153
			throws ProfitMandiBusinessException{
Line 151... Line 175...
151
		documentRepository.markDocumentAsPersisted(retailerDocument.getId());
175
		documentRepository.markDocumentAsPersisted(retailerDocument.getId());
152
		if(retailerRepository.isExistByNumberAndType(retailer.getNumber(), retailer.getType())){
176
		if(retailerRepository.isExistByNumberAndType(retailer.getNumber(), retailer.getType())){
153
			throw new ProfitMandiBusinessException(ProfitMandiConstants.NUMBER + ", " + ProfitMandiConstants.TYPE, retailer.getNumber() + ", " + retailer.getType(), "RTLR_1001");
177
			throw new ProfitMandiBusinessException(ProfitMandiConstants.NUMBER + ", " + ProfitMandiConstants.TYPE, retailer.getNumber() + ", " + retailer.getType(), "RTLR_1001");
154
		}
178
		}
155
		documentRepository.markDocumentAsPersisted(shopDocument.getId());
179
		documentRepository.markDocumentAsPersisted(shopDocument.getId());
-
 
180
		
-
 
181
		com.spice.profitmandi.dao.entity.user.User saholicUser = null;
-
 
182
		boolean foundRetailer = false;
-
 
183
		saholicUser = userUserRepository.selectByEmailId(user.getEmailId());
-
 
184
		if(saholicUser == null){
-
 
185
			Cart cart = new Cart();
-
 
186
			cart.setCartStatus(CartStatus.ACTIVE);
-
 
187
			cartRepository.persist(cart);
-
 
188
			saholicUser = new com.spice.profitmandi.dao.entity.user.User();
-
 
189
			saholicUser.setEmailId(user.getEmailId());
-
 
190
			saholicUser.setName(createRetailerRequest.getName());
-
 
191
			saholicUser.setActiveCartId(cart.getId());
-
 
192
			userUserRepository.persist(saholicUser);
-
 
193
		}else{
-
 
194
			foundRetailer = true;
-
 
195
		}
156
		in.shop2020.model.v1.user.User saholicUser = this.createSaholicUser(user.getEmailId()); 
196
		//in.shop2020.model.v1.user.User saholicUser = Utils.createSaholicUser(user.getEmailId()); 
157
		retailer.setId((int)saholicUser.getUserId());
197
		retailer.setId(saholicUser.getId());
158
		retailerRepository.persist(retailer);
198
		retailerRepository.persist(retailer);
-
 
199
		
159
		Shop shop = new Shop();
200
		Shop shop = new Shop();
160
		shop.setName(createRetailerRequest.getShop().getName());
201
		shop.setName(createRetailerRequest.getShop().getName());
161
		shop.setDocumentId(shopDocument.getId());
202
		shop.setDocumentId(shopDocument.getId());
162
		shop.setRetailerId(retailer.getId());
203
		shop.setRetailerId(retailer.getId());
163
		shopRepository.persist(shop);
204
		shopRepository.persist(shop);
164
		this.addBrandWithRetailer(retailer.getId(), createRetailerRequest.getCategories());
205
		this.addBrandWithRetailer(retailer.getId(), createRetailerRequest.getCategories());
165
		final Address addressRetailer = this.createAddress(createRetailerRequest.getAddress());
206
		final Address addressRetailer = this.createAddress(createRetailerRequest.getAddress());
166
		addressRetailer.setRetaierId(retailer.getId());
207
		addressRetailer.setRetaierId(retailer.getId());
167
		addressRepository.persist(addressRetailer);
208
		addressRepository.persist(addressRetailer);
-
 
209
		
168
		final RetailerRegisteredAddress retailerRegisteredAddress = new RetailerRegisteredAddress();
210
		final RetailerRegisteredAddress retailerRegisteredAddress = new RetailerRegisteredAddress();
169
		retailerRegisteredAddress.setRetailerId(retailer.getId());
211
		retailerRegisteredAddress.setRetailerId(retailer.getId());
170
		retailerRegisteredAddress.setAddressId(addressRetailer.getId());
212
		retailerRegisteredAddress.setAddressId(addressRetailer.getId());
171
		retailerRegisteredAddressRepository.persist(retailerRegisteredAddress);
213
		retailerRegisteredAddressRepository.persist(retailerRegisteredAddress);
172
		if(!createRetailerRequest.isShopAddressSameAsRetailerAddress() && createRetailerRequest.getAddress() == null){
214
		if(!createRetailerRequest.isShopAddressSameAsRetailerAddress() && createRetailerRequest.getAddress() == null){
Line 184... Line 226...
184
			shopAddress.setShopId(shop.getId());
226
			shopAddress.setShopId(shop.getId());
185
			shopAddress.setAddressId(addressShop.getId());
227
			shopAddress.setAddressId(addressShop.getId());
186
			shopAddressRepository.persist(shopAddress);
228
			shopAddressRepository.persist(shopAddress);
187
		}
229
		}
188
		UserAccounts ua = new UserAccounts();
230
		UserAccounts ua = new UserAccounts();
189
		ua.setAccount_key(String.valueOf(saholicUser.getUserId()));
231
		ua.setAccount_key(String.valueOf(saholicUser.getId()));
190
		ua.setUser_id(user.getId());
232
		ua.setUser_id(user.getId());
191
		ua.setAccount_type(AccountType.saholic);
233
		ua.setAccount_type(AccountType.saholic);
192
		userAccountRepository.persist(ua);
234
		userAccountRepository.persist(ua);
193
 
235
 
194
		UserAccounts ua2 = new UserAccounts();
236
		UserAccounts ua2 = new UserAccounts();
Line 199... Line 241...
199
		
241
		
200
		UserRole ur = new UserRole();
242
		UserRole ur = new UserRole();
201
		ur.setRoleType(RoleType.RETAILER);
243
		ur.setRoleType(RoleType.RETAILER);
202
		ur.setUserId(user.getId());
244
		ur.setUserId(user.getId());
203
		userRoleRepository.persist(ur);
245
		userRoleRepository.persist(ur);
-
 
246
		
-
 
247
		if(foundRetailer){
-
 
248
			LOGGER.info("\n\n\n****retailer found\n\n\n");
-
 
249
			PrivateDealUser privateDealUser = privateDealUserRepository.selectById(saholicUser.getId());
-
 
250
			if(privateDealUser.getCounterId() == null){
-
 
251
				Integer counterId = this.createCounter(user.getEmailId(), createRetailerRequest.getGstNumber(), user.getMobileNumber(), retailer.getName(), addressRetailer.getId());
-
 
252
				privateDealUser.setCounterId(counterId);
-
 
253
				privateDealUserRepository.persist(privateDealUser);
-
 
254
			}
-
 
255
		}else{
-
 
256
			LOGGER.info("retailer not found");
-
 
257
			//gst number intergration with counter
-
 
258
			Integer counterId = this.createCounter(user.getEmailId(), createRetailerRequest.getGstNumber(), user.getMobileNumber(), retailer.getName(), addressRetailer.getId());
-
 
259
			
-
 
260
			
-
 
261
				PrivateDealUser privateDealUser = privateDealUserRepository.selectById(saholicUser.getId());
-
 
262
			if(privateDealUser != null){
-
 
263
				//LOGGER.info("PrivateDealUser found with id [{}]", saholicUser.getId());
-
 
264
				privateDealUser.setCounterId(counterId);
-
 
265
				privateDealUserRepository.update(privateDealUser);
-
 
266
			}else{	
-
 
267
				LOGGER.info("PrivateDealUser not found with id [{}]", saholicUser.getId());
-
 
268
				privateDealUser = new PrivateDealUser();
-
 
269
				privateDealUser.setActive(true);
-
 
270
				privateDealUser.setBulkShipmentAmountLimit(50000);
-
 
271
				privateDealUser.setId(saholicUser.getId());
-
 
272
				privateDealUser.setCounterId(counterId);
-
 
273
				privateDealUserRepository.persist(privateDealUser);
-
 
274
			}
-
 
275
			PrivateDealUserAddressMapping privateDealUserAddressMapping = new PrivateDealUserAddressMapping();
-
 
276
			PrivateDealUserAddressId privateDealUserAddressId = new PrivateDealUserAddressId();
-
 
277
			privateDealUserAddressId.setUserId(retailer.getId());
-
 
278
			privateDealUserAddressId.setAddressId(addressRetailer.getId());
-
 
279
			privateDealUserAddressMapping.setId(privateDealUserAddressId);
-
 
280
			privateDealUserAddressMappingRepository.persist(privateDealUserAddressMapping);
-
 
281
			
-
 
282
			saholicUser.setAddressId(addressRetailer.getId());
-
 
283
			userUserRepository.persist(saholicUser);
-
 
284
		}
204
	}
285
	}
205
	
286
	
206
 
-
 
207
	private in.shop2020.model.v1.user.User createSaholicUser(String emailId) throws ProfitMandiBusinessException{
287
	private Integer createCounter(String emailId, String gstNumber, String mobileNumber, String name, int addressId){
208
		in.shop2020.model.v1.user.User user = new in.shop2020.model.v1.user.User();
288
		if(gstNumber != null && !gstNumber.isEmpty()){
209
		user.setEmail(emailId);
-
 
210
		user.setPassword("");
289
			Counter counter = new Counter();
211
		user.setCommunicationEmail(emailId);
290
			counter.setEmailId(emailId);
212
		user.setSex(Sex.WONT_SAY);
291
			counter.setGstin(gstNumber);
213
 
-
 
214
		try {
-
 
215
			UserClient userContextServiceClient = new UserClient();
-
 
216
			in.shop2020.model.v1.user.UserContextService.Client userClient = userContextServiceClient.getClient();
-
 
217
			user = userClient.createUser(user);
292
			counter.setMobileNumber(mobileNumber);
218
			return user;
293
			counter.setName(name);
219
		}catch (UserContextException ux){
294
			counter.setAddressId(addressId);
220
			LOGGER.error("Unable to register user: " + ux.getMessage());
-
 
221
			throw new ProfitMandiBusinessException(ProfitMandiConstants.EMAIL_ID, emailId, "");
-
 
222
		} catch (TTransportException e) {
295
			counterRepository.persist(counter);
223
			LOGGER.error("Unable to register user." + e);
296
			return counter.getId();
224
			throw new ProfitMandiBusinessException(ProfitMandiConstants.EMAIL_ID, emailId, "");
-
 
225
		}catch (TException e) {
297
		}else{
226
			LOGGER.error("Unable to register user." + e);
298
			return null;
227
			throw new ProfitMandiBusinessException(ProfitMandiConstants.EMAIL_ID, emailId, "");
-
 
228
		} 
299
		}
229
	}
300
	}
-
 
301
		
-
 
302
	
230
	private void addBrandWithRetailer(int retailerId, Set<Category> categories)
303
	private void addBrandWithRetailer(int retailerId, Set<Category> categories)
231
		throws ProfitMandiBusinessException{
304
		throws ProfitMandiBusinessException{
232
		for(Category category : categories){
305
		for(Category category : categories){
233
			for(com.spice.profitmandi.web.req.Brand brandModel : category.getBrands()){
306
			for(com.spice.profitmandi.web.req.Brand brandModel : category.getBrands()){
234
				Brand brand = brandRepository.selectByIdAndName(brandModel.getId(), brandModel.getName());
307
				Brand brand = brandRepository.selectByIdAndName(brandModel.getId(), brandModel.getName());