Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
24383 amit.gupta 1
package com.spice.profitmandi.web.controller;
2
 
3
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
4
import com.spice.profitmandi.common.model.ProfitMandiConstants;
5
import com.spice.profitmandi.dao.entity.auth.AuthUser;
27806 tejbeer 6
import com.spice.profitmandi.dao.entity.cs.PartnerPosition;
7
import com.spice.profitmandi.dao.entity.cs.Position;
24383 amit.gupta 8
import com.spice.profitmandi.dao.entity.dtr.Role;
9
import com.spice.profitmandi.dao.entity.dtr.User;
10
import com.spice.profitmandi.dao.entity.dtr.UserRole;
11
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
32493 amit.gupta 12
import com.spice.profitmandi.dao.repository.cs.PartnerPositionRepository;
27806 tejbeer 13
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
24383 amit.gupta 14
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
15
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
16
import com.spice.profitmandi.dao.repository.dtr.UserRoleRepository;
17
import com.spice.profitmandi.service.AuthService;
37105 amit 18
import com.spice.profitmandi.service.user.UserService;
24383 amit.gupta 19
import com.spice.profitmandi.web.model.LoginDetails;
20
import com.spice.profitmandi.web.util.CookiesProcessor;
29209 manish 21
import com.spice.profitmandi.web.util.MVCResponseSender;
31238 amit.gupta 22
import org.apache.logging.log4j.LogManager;
23
import org.apache.logging.log4j.Logger;
24
import org.springframework.beans.factory.annotation.Autowired;
25
import org.springframework.beans.factory.annotation.Qualifier;
37105 amit 26
import org.springframework.beans.factory.annotation.Value;
31238 amit.gupta 27
import org.springframework.stereotype.Controller;
28
import org.springframework.transaction.annotation.Transactional;
29
import org.springframework.ui.Model;
30
import org.springframework.web.bind.annotation.GetMapping;
31
import org.springframework.web.bind.annotation.PostMapping;
32
import org.springframework.web.bind.annotation.RequestParam;
24383 amit.gupta 33
 
31238 amit.gupta 34
import javax.servlet.http.HttpServletRequest;
35
import java.time.LocalDateTime;
36
import java.util.HashMap;
37
import java.util.List;
38
import java.util.Map;
33065 raveendra. 39
import java.util.stream.Collectors;
31238 amit.gupta 40
 
24383 amit.gupta 41
@Controller
25192 tejbeer 42
@Transactional(rollbackFor = Throwable.class)
24383 amit.gupta 43
public class AuthUserController {
44
 
45
	private static final Logger LOGGER = LogManager.getLogger(AuthUserController.class);
46
 
47
	@Autowired
48
	private AuthService authService;
49
 
50
	@Autowired
37105 amit 51
	private UserService userService;
52
 
53
	@Value("${prod}")
54
	private boolean isProd;
55
 
56
	@Autowired
24383 amit.gupta 57
	private AuthRepository authRepository;
58
 
59
	@Autowired
60
	private UserRepository userRepository;
61
 
62
	@Autowired
63
	private RoleRepository roleRepository;
64
 
65
	@Autowired
29209 manish 66
	private MVCResponseSender mvcResponseSender;
67
 
68
	@Autowired
24383 amit.gupta 69
	private UserRoleRepository userRoleRepository;
70
 
71
	@Autowired
72
	private CookiesProcessor cookiesProcessor;
73
 
74
	@Autowired
27806 tejbeer 75
	private PositionRepository positionRepository;
76
 
77
	@Autowired
32493 amit.gupta 78
	private PartnerPositionRepository partnerPositionRepository;
27806 tejbeer 79
 
80
	@Autowired
24383 amit.gupta 81
	@Qualifier("userUserRepository")
82
	private com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
83
 
33065 raveendra. 84
 
24383 amit.gupta 85
	@GetMapping(value = "/createAuthUser")
86
	public String getcreateAuthUser(HttpServletRequest request,
87
			@RequestParam(name = "offset", defaultValue = "0") int offset,
33066 raveendra. 88
									@RequestParam(name = "limit", defaultValue = "0") int limit, Model model)
24383 amit.gupta 89
			throws ProfitMandiBusinessException {
25570 tejbeer 90
		// List<AuthUser> authUsers = authRepository.selectAll(offset, limit);
29209 manish 91
		List<AuthUser> activeAuthUsers = authRepository.selectAllActiveUser();
33066 raveendra. 92
		//List<AuthUser> authUsers = activeAuthUsers.stream().skip(offset).limit(limit).collect(Collectors.toList());
93
		List<AuthUser> authUsers = activeAuthUsers.stream().skip(offset).collect(Collectors.toList());
29209 manish 94
 
33065 raveendra. 95
		Map<Integer, AuthUser> userManagerMap = activeAuthUsers.stream()
96
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
33103 amit.gupta 97
 
33065 raveendra. 98
		long size = activeAuthUsers.size();
29209 manish 99
		model.addAttribute("userManagerMap", userManagerMap);
100
		model.addAttribute("activeAuthUsers", activeAuthUsers);
24383 amit.gupta 101
		model.addAttribute("authUsers", authUsers);
102
		model.addAttribute("start", offset + 1);
103
		model.addAttribute("size", size);
29209 manish 104
		model.addAttribute("url", "/getPaginatedAuthUser");
32559 amit.gupta 105
 
24383 amit.gupta 106
		if (authUsers.size() < limit) {
107
			model.addAttribute("end", offset + authUsers.size());
108
		} else {
109
			model.addAttribute("end", offset + limit);
110
		}
29209 manish 111
 
24383 amit.gupta 112
		return "create-auth-user";
113
 
114
	}
29209 manish 115
	@PostMapping(value = "/addManagerId")
116
	public String addManagerId(HttpServletRequest request, @RequestParam(name = "authId") int authId,
117
			@RequestParam(name = "managerId") int managerId, Model model) throws Exception {
118
		// List<AuthUser> authUsers = authRepository.selectAll(offset, limit);
119
		AuthUser authUser = authRepository.selectById(authId);
120
 
121
		if (authUser.getId() != 0) {
122
 
123
			authUser.setManagerId(managerId);
124
		}
125
		List<AuthUser> activeAuthUsers = authRepository.selectAllActiveUser();
126
 
127
		AuthUser manager = authRepository.selectById(authUser.getManagerId());
128
 
129
		model.addAttribute("activeAuthUsers", activeAuthUsers);
130
		model.addAttribute("authUser", authUser);
131
		model.addAttribute("manager", manager);
132
 
133
		return "create-auth-user";
134
 
135
	}
136
 
24383 amit.gupta 137
	@PostMapping(value = "/createAuthUser")
138
	public String createAuthUser(HttpServletRequest request,
139
			@RequestParam(name = ProfitMandiConstants.FIRST_NAME, defaultValue = "") String firstName,
140
			@RequestParam(name = ProfitMandiConstants.LAST_NAME, defaultValue = "") String lastName,
141
			@RequestParam(name = ProfitMandiConstants.EMAIL_ID, defaultValue = "") String emailId,
142
			@RequestParam(name = ProfitMandiConstants.MOBILE_NUMBER, defaultValue = "") String mobileNumber,
25366 tejbeer 143
			@RequestParam(name = ProfitMandiConstants.GMAIL_ID, defaultValue = "") String gmailId,
27595 tejbeer 144
			@RequestParam(name = "employeeCode", defaultValue = "") String employeeCode,
32463 jai.hind 145
								 @RequestParam(name = "imageUrl", defaultValue = "") String imageUrl,
146
								 @RequestParam(name = "offset", defaultValue = "0") int offset,
33066 raveendra. 147
								 @RequestParam(name = "limit", defaultValue = "0") int limit, Model model)
24383 amit.gupta 148
			throws ProfitMandiBusinessException {
149
		AuthUser authUser = null;
150
		User user = null;
151
		List<Role> roles = roleRepository.selectAll();
152
		try {
153
			user = userRepository.selectByEmailId(emailId);
154
			userRoleRepository.deleteByUserId(user.getId());
155
			for (Role role : roles) {
156
				UserRole userRole = new UserRole();
157
				userRole.setRoleId(role.getId());
158
				userRole.setUserId(user.getId());
159
				userRoleRepository.persist(userRole);
160
			}
161
		} catch (Exception ex) {
162
			user = new User();
163
			user.setFirstName(firstName);
164
			user.setLastName(lastName);
165
			user.setUsername(emailId);
166
			user.setEmailId(emailId);
167
			user.setPassword("");
168
			user.setMobileNumber(mobileNumber);
169
			user.setCity("Noida");
170
			user.setPinCode(201301);
171
			user.setActivated(true);
172
			user.setMobile_verified(true);
173
			user.setReferral_url("");
174
			user.setUpdateTimestamp(LocalDateTime.now());
175
			user.setStatus(0);
176
			user.setCreateTimestamp(LocalDateTime.now());
177
			userRepository.persist(user);
178
			LOGGER.info("User created successfully");
179
			for (Role role : roles) {
180
				UserRole userRole = new UserRole();
181
				userRole.setRoleId(role.getId());
182
				userRole.setUserId(user.getId());
183
				userRoleRepository.persist(userRole);
184
			}
185
		}
186
		authUser = new AuthUser();
187
		authUser.setEmailId(emailId);
188
		authUser.setFirstName(firstName);
189
		authUser.setLastName(lastName);
190
		authUser.setMobileNumber(mobileNumber);
25366 tejbeer 191
		authUser.setGmailId(gmailId);
32463 jai.hind 192
		authUser.setImageUrl(imageUrl);
27595 tejbeer 193
		authUser.setEmployeeCode(employeeCode);
25587 tejbeer 194
		authUser.setActive(true);
25570 tejbeer 195
 
24383 amit.gupta 196
		authUser.setCreatedTimestamp(LocalDateTime.now());
197
		authService.addAuthUser(authUser);
198
 
199
		List<AuthUser> authUsers = authRepository.selectAll(offset, limit);
200
		long size = authRepository.selectCountAuthUser();
201
		model.addAttribute("authUsers", authUsers);
202
		model.addAttribute("start", offset + 1);
203
		model.addAttribute("size", size);
204
		if (authUsers.size() < limit) {
205
			model.addAttribute("end", offset + authUsers.size());
206
		} else {
207
			model.addAttribute("end", offset + limit);
208
		}
209
		return "create-auth-user";
210
	}
211
 
212
	@GetMapping(value = "/changePassword")
213
	public String getChangePassword(HttpServletRequest request, Model model) {
214
		return "change-auth-user-password";
215
	}
216
 
217
	@PostMapping(value = "/changePassword")
218
	public String changePassword(HttpServletRequest request,
219
			@RequestParam(name = "oldPassword", defaultValue = "") String oldPassword,
220
			@RequestParam(name = "newPassword", defaultValue = "") String newPassword, Model model)
221
			throws ProfitMandiBusinessException {
222
 
223
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
224
		authService.changePassword(loginDetails.getEmailId(), oldPassword, newPassword);
225
		return "change-auth-user-password";
226
	}
227
 
37105 amit 228
	@GetMapping(value = "/resetPasswordPage")
229
	public String getResetPasswordPage(HttpServletRequest request, Model model) {
230
		return "reset-password";
231
	}
232
 
233
	@PostMapping(value = "/resetPasswordOverride")
234
	public String resetPasswordOverride(HttpServletRequest request,
235
			@RequestParam(name = "type", defaultValue = "") String type,
236
			@RequestParam(name = "identifier", defaultValue = "") String identifier,
237
			@RequestParam(name = "retailerId", defaultValue = "0") int retailerId,
238
			@RequestParam(name = "newPassword", defaultValue = "") String newPassword, Model model)
239
			throws Exception {
240
		if (isProd) {
241
			throw new ProfitMandiBusinessException("Access Denied", "Environment",
242
					"Password override is disabled in production");
243
		}
244
		if (newPassword.trim().isEmpty()) {
245
			throw new ProfitMandiBusinessException("Password", "newPassword", "New password cannot be blank");
246
		}
247
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
248
		if ("PARTNER".equalsIgnoreCase(type)) {
249
			if (retailerId <= 0) {
250
				throw new ProfitMandiBusinessException("Partner", "retailerId", "Please select a partner");
251
			}
252
			userService.resetPasswordById(retailerId, newPassword);
253
			LOGGER.info("Password override for partner retailerId={} by {}", retailerId, loginDetails.getEmailId());
254
		} else {
255
			if (identifier.trim().isEmpty()) {
256
				throw new ProfitMandiBusinessException("Auth User", "identifier", "Please enter an email or mobile");
257
			}
258
			authService.resetPassword(identifier.trim(), newPassword);
259
			LOGGER.info("Password override for authUser={} by {}", identifier.trim(), loginDetails.getEmailId());
260
		}
261
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
262
		return "response";
263
	}
264
 
24383 amit.gupta 265
	@GetMapping(value = "/getPaginatedAuthUser")
266
	public String getPaginatedAuthUser(HttpServletRequest request,
267
			@RequestParam(name = "offset", defaultValue = "0") int offset,
268
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
27806 tejbeer 269
		// List<AuthUser> authUsers = authRepository.selectAll(offset, limit);
29209 manish 270
 
271
		List<AuthUser> activeAuthUsers = authRepository.selectAllActiveUser();
272
 
25570 tejbeer 273
		List<AuthUser> authUsers = authRepository.selectAllActiveUser(offset, limit);
29209 manish 274
 
275
		Map<Integer, AuthUser> userManagerMap = new HashMap<>();
276
 
277
		for (AuthUser authUser : authUsers) {
278
			if (authUser.getManagerId() != 0) {
279
				userManagerMap.put(authUser.getId(), authRepository.selectById(authUser.getManagerId()));
280
			}
281
		}
282
		model.addAttribute("userManagerMap", userManagerMap);
24383 amit.gupta 283
		model.addAttribute("authUsers", authUsers);
29209 manish 284
		model.addAttribute("activeAuthUsers", activeAuthUsers);
285
		model.addAttribute("url", "/getPaginatedAuthUser");
24383 amit.gupta 286
		return "auth-users-paginated";
287
	}
25570 tejbeer 288
 
289
	@GetMapping(value = "/authuser/edit")
290
	public String updateAuthUser(Model model, @RequestParam String gmailId, @RequestParam String emailId)
291
			throws Exception {
24478 amit.gupta 292
		AuthUser user = authRepository.selectByEmailOrMobile(emailId);
293
		user.setGmailId(gmailId);
32559 amit.gupta 294
		//authRepository.persist(user);
31238 amit.gupta 295
		model.addAttribute("response1", "true");
24478 amit.gupta 296
		return "response";
297
	}
32463 jai.hind 298
	@GetMapping(value = "/authuser/editImageUrl")
299
	public String updateAuthUserImage(Model model, @RequestParam String imageUrl ,@RequestParam String emailId)
300
		throws Exception{
301
		AuthUser user = authRepository.selectByEmailOrMobile(emailId);
302
		user.setImageUrl(imageUrl);
303
		model.addAttribute("response1", "true");
304
		return "response";
305
	}
27595 tejbeer 306
 
25570 tejbeer 307
	@PostMapping(value = "/authuser/remove")
27595 tejbeer 308
	public String removeAuthUser(Model model, @RequestParam int id) throws Exception {
25570 tejbeer 309
		AuthUser user = authRepository.selectById(id);
27806 tejbeer 310
 
25570 tejbeer 311
		user.setActive(false);
35395 amit 312
		List<Position> positions = positionRepository.selectAllByAuthUserId(user.getId());
27806 tejbeer 313
		for (Position position : positions) {
314
			List<PartnerPosition> partnerPositions = partnerPositionRepository.selectByPositionId(position.getId());
315
			positionRepository.delete(position.getId());
316
			for (PartnerPosition partnerPosition : partnerPositions) {
317
				partnerPositionRepository.delete(partnerPosition.getPositionId());
318
			}
319
		}
31238 amit.gupta 320
		model.addAttribute("response1", "true");
25570 tejbeer 321
		return "response";
322
	}
25366 tejbeer 323
 
24383 amit.gupta 324
}