Subversion Repositories SmartDukaan

Rev

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