Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
23781 ashik.ali 1
package com.spice.profitmandi.service.user;
21525 amit.gupta 2
 
22845 amit.gupta 3
import java.time.LocalDateTime;
23204 ashik.ali 4
import java.util.HashMap;
23984 govind 5
import java.util.HashSet;
6
import java.util.List;
23204 ashik.ali 7
import java.util.Map;
22845 amit.gupta 8
 
21525 amit.gupta 9
import org.hibernate.Criteria;
10
import org.hibernate.Session;
11
import org.hibernate.SessionFactory;
12
import org.hibernate.criterion.Restrictions;
13
import org.springframework.beans.factory.annotation.Autowired;
23781 ashik.ali 14
import org.springframework.beans.factory.annotation.Qualifier;
21525 amit.gupta 15
import org.springframework.stereotype.Component;
22038 amit.gupta 16
import org.springframework.transaction.annotation.Transactional;
21525 amit.gupta 17
 
23204 ashik.ali 18
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
19
import com.spice.profitmandi.common.model.ProfitMandiConstants;
24099 amit.gupta 20
import com.spice.profitmandi.common.util.DesEncrypter;
22020 ashik.ali 21
import com.spice.profitmandi.dao.entity.dtr.ActivationCode;
21729 ashik.ali 22
import com.spice.profitmandi.dao.entity.dtr.Retailer;
23781 ashik.ali 23
import com.spice.profitmandi.dao.entity.dtr.Role;
21729 ashik.ali 24
import com.spice.profitmandi.dao.entity.dtr.User;
23273 ashik.ali 25
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
23204 ashik.ali 26
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
27
import com.spice.profitmandi.dao.enumuration.dtr.AccountType;
28
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
29
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
21729 ashik.ali 30
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
23781 ashik.ali 31
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
23204 ashik.ali 32
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
21729 ashik.ali 33
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
23204 ashik.ali 34
import com.spice.profitmandi.dao.repository.dtr.UserRoleRepository;
21525 amit.gupta 35
import com.spice.profitmandi.thrift.clients.TransactionClient;
36
 
37
import in.shop2020.model.v1.order.TransactionService;
38
 
39
@Component
40
public class UserServiceImpl implements UserService {
41
 
42
	@Autowired
22931 ashik.ali 43
	private SessionFactory sessionFactory;
21525 amit.gupta 44
 
45
	@Autowired
23781 ashik.ali 46
	@Qualifier(value = "userRepository")
23204 ashik.ali 47
	private UserRepository userRepository;
21525 amit.gupta 48
 
49
	@Autowired
24099 amit.gupta 50
	@Qualifier(value = "userUserRepository")
51
	private com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
52
 
53
	@Autowired
23204 ashik.ali 54
	private RetailerRepository retailerRepo;
21525 amit.gupta 55
 
23204 ashik.ali 56
	@Autowired
57
	private FofoStoreRepository fofoStoreRepository;
58
 
59
	@Autowired
60
	private UserAccountRepository userAccountRepository;
61
 
62
	@Autowired
63
	private UserRoleRepository userRoleRepository;
64
 
23781 ashik.ali 65
	@Autowired
66
	private RoleRepository roleRepository;
67
 
24099 amit.gupta 68
	private static final DesEncrypter encrypter = new DesEncrypter("saholic");
69
 
70
 
23204 ashik.ali 71
	@SuppressWarnings("deprecation")
21525 amit.gupta 72
	@Override
73
	public boolean updateActivation(int userId, int retailerId, String activationCode) throws Throwable {
74
 
75
		TransactionClient transactionServiceClient = new TransactionClient();
76
		TransactionService.Client tsc = transactionServiceClient.getClient();
77
		boolean registered = tsc.registerRsa(retailerId, activationCode);
78
 
79
		Session session = sessionFactory.getCurrentSession();
80
 
81
		if(!registered){
82
			Criteria cr = session.createCriteria(ActivationCode.class);
83
			cr.add(Restrictions.eq("code", activationCode)).add(Restrictions.eq("status", true));
84
			ActivationCode code = (ActivationCode)cr.uniqueResult();
85
			if(code==null) {
86
				return false;
87
			} else {
88
				registered=true;
89
				code.setStatus(false);
90
				session.update(code);
91
			}
92
		}
93
 
94
		if(registered) {
23204 ashik.ali 95
			User user = userRepository.selectById(userId);
21525 amit.gupta 96
			user.setActivated(true);
22845 amit.gupta 97
			user.setActivationTime(LocalDateTime.now());
21525 amit.gupta 98
			user.setReferrer(activationCode);
99
			session.update(user);
100
 
101
			Retailer retailer = retailerRepo.selectById(retailerId);
102
			retailer.setActive(true);
103
			session.update(retailer);
104
		}
105
 
106
		return registered;
107
	}
22845 amit.gupta 108
 
109
 
110
	@Override
111
	public boolean createActivationCode(int userId) throws Throwable {
112
		// TODO Auto-generated method stub
113
		return false;
114
	}
23204 ashik.ali 115
 
116
	@Override
117
	public Map<String, String> getEmailsAndFofoStoreCodeByUserId(int userId) throws ProfitMandiBusinessException {
118
		User user = userRepository.selectById(userId);
23273 ashik.ali 119
		UserAccount userAccount = userAccountRepository.selectByUserIdType(userId, AccountType.saholic);
23781 ashik.ali 120
		Role role = roleRepository.selectByName(RoleType.FOFO.toString());
23204 ashik.ali 121
		Map<String, String> map = new HashMap<>();
122
		map.put(ProfitMandiConstants.EMAIL_ID, user.getEmailId());
123
		map.put(ProfitMandiConstants.SECONDRY_EMAIL_ID, user.getSecondryEmailId());
23781 ashik.ali 124
		userRoleRepository.selectByUserIdAndRoleId(userId, role.getId());
23273 ashik.ali 125
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(userAccount.getAccountKey());
23204 ashik.ali 126
		map.put(ProfitMandiConstants.CODE, fofoStore.getCode());
127
		return map;
128
	}
23984 govind 129
 
130
 
131
	@Override
132
	public Map<Integer, String> getAllUseUserIdEmailIdMap(List<Integer> userIds) {
133
		 Map<Integer, String> userIdEmailIdMap=new HashMap<>();
134
		 List<User> users=userRepository.selectAllByIds(new HashSet<>(userIds));
135
		 for(User user:users)
136
		 {
137
			 userIdEmailIdMap.put(user.getId(),user.getEmailId());
138
		 }
139
		return userIdEmailIdMap;
140
	}
24099 amit.gupta 141
 
142
 
143
	@Override
144
	public User authenticate(String emailMobile, String password) throws ProfitMandiBusinessException {
145
		User user = userRepository.selectByEmailIdOrMobileNumber(emailMobile);
146
		if(!user.getPassword().equals(encrypter.decrypt(password))) {
147
			throw new ProfitMandiBusinessException("Username Password", emailMobile, "Invalid Username or Password");
148
		}
149
		return user;
150
	}
151
 
152
 
153
	@Override
154
	public boolean resetPassword(String emailMobile, String password) throws ProfitMandiBusinessException {
155
		User user = userRepository.selectByEmailIdOrMobileNumber(emailMobile);
156
		user.setPassword(encrypter.encrypt(password));
157
		userRepository.persist(user);
158
		return true;
159
	}
23781 ashik.ali 160
 
21525 amit.gupta 161
}