Subversion Repositories SmartDukaan

Rev

Rev 23273 | Rev 23984 | 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;
5
import java.util.Map;
22845 amit.gupta 6
 
21525 amit.gupta 7
import org.hibernate.Criteria;
8
import org.hibernate.Session;
9
import org.hibernate.SessionFactory;
10
import org.hibernate.criterion.Restrictions;
11
import org.springframework.beans.factory.annotation.Autowired;
23781 ashik.ali 12
import org.springframework.beans.factory.annotation.Qualifier;
21525 amit.gupta 13
import org.springframework.stereotype.Component;
22038 amit.gupta 14
import org.springframework.transaction.annotation.Transactional;
21525 amit.gupta 15
 
23204 ashik.ali 16
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
17
import com.spice.profitmandi.common.model.ProfitMandiConstants;
22020 ashik.ali 18
import com.spice.profitmandi.dao.entity.dtr.ActivationCode;
21729 ashik.ali 19
import com.spice.profitmandi.dao.entity.dtr.Retailer;
23781 ashik.ali 20
import com.spice.profitmandi.dao.entity.dtr.Role;
21729 ashik.ali 21
import com.spice.profitmandi.dao.entity.dtr.User;
23273 ashik.ali 22
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
23204 ashik.ali 23
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
24
import com.spice.profitmandi.dao.enumuration.dtr.AccountType;
25
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
26
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
21729 ashik.ali 27
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
23781 ashik.ali 28
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
23204 ashik.ali 29
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
21729 ashik.ali 30
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
23204 ashik.ali 31
import com.spice.profitmandi.dao.repository.dtr.UserRoleRepository;
21525 amit.gupta 32
import com.spice.profitmandi.thrift.clients.TransactionClient;
33
 
34
import in.shop2020.model.v1.order.TransactionService;
35
 
36
@Component
22038 amit.gupta 37
@Transactional(rollbackFor=Throwable.class)
21525 amit.gupta 38
public class UserServiceImpl implements UserService {
39
 
40
	@Autowired
22931 ashik.ali 41
	private SessionFactory sessionFactory;
21525 amit.gupta 42
 
43
	@Autowired
23781 ashik.ali 44
	@Qualifier(value = "userRepository")
23204 ashik.ali 45
	private UserRepository userRepository;
21525 amit.gupta 46
 
47
	@Autowired
23204 ashik.ali 48
	private RetailerRepository retailerRepo;
21525 amit.gupta 49
 
23204 ashik.ali 50
	@Autowired
51
	private FofoStoreRepository fofoStoreRepository;
52
 
53
	@Autowired
54
	private UserAccountRepository userAccountRepository;
55
 
56
	@Autowired
57
	private UserRoleRepository userRoleRepository;
58
 
23781 ashik.ali 59
	@Autowired
60
	private RoleRepository roleRepository;
61
 
21525 amit.gupta 62
 
23204 ashik.ali 63
	@SuppressWarnings("deprecation")
21525 amit.gupta 64
	@Override
65
	public boolean updateActivation(int userId, int retailerId, String activationCode) throws Throwable {
66
 
67
		TransactionClient transactionServiceClient = new TransactionClient();
68
		TransactionService.Client tsc = transactionServiceClient.getClient();
69
		boolean registered = tsc.registerRsa(retailerId, activationCode);
70
 
71
		Session session = sessionFactory.getCurrentSession();
72
 
73
		if(!registered){
74
			Criteria cr = session.createCriteria(ActivationCode.class);
75
			cr.add(Restrictions.eq("code", activationCode)).add(Restrictions.eq("status", true));
76
			ActivationCode code = (ActivationCode)cr.uniqueResult();
77
			if(code==null) {
78
				return false;
79
			} else {
80
				registered=true;
81
				code.setStatus(false);
82
				session.update(code);
83
			}
84
		}
85
 
86
		if(registered) {
23204 ashik.ali 87
			User user = userRepository.selectById(userId);
21525 amit.gupta 88
			user.setActivated(true);
22845 amit.gupta 89
			user.setActivationTime(LocalDateTime.now());
21525 amit.gupta 90
			user.setReferrer(activationCode);
91
			session.update(user);
92
 
93
			Retailer retailer = retailerRepo.selectById(retailerId);
94
			retailer.setActive(true);
95
			session.update(retailer);
96
		}
97
 
98
		return registered;
99
	}
22845 amit.gupta 100
 
101
 
102
	@Override
103
	public boolean createActivationCode(int userId) throws Throwable {
104
		// TODO Auto-generated method stub
105
		return false;
106
	}
23204 ashik.ali 107
 
108
	@Override
109
	public Map<String, String> getEmailsAndFofoStoreCodeByUserId(int userId) throws ProfitMandiBusinessException {
110
		User user = userRepository.selectById(userId);
23273 ashik.ali 111
		UserAccount userAccount = userAccountRepository.selectByUserIdType(userId, AccountType.saholic);
23781 ashik.ali 112
		Role role = roleRepository.selectByName(RoleType.FOFO.toString());
23204 ashik.ali 113
		Map<String, String> map = new HashMap<>();
114
		map.put(ProfitMandiConstants.EMAIL_ID, user.getEmailId());
115
		map.put(ProfitMandiConstants.SECONDRY_EMAIL_ID, user.getSecondryEmailId());
23781 ashik.ali 116
		userRoleRepository.selectByUserIdAndRoleId(userId, role.getId());
23273 ashik.ali 117
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(userAccount.getAccountKey());
23204 ashik.ali 118
		map.put(ProfitMandiConstants.CODE, fofoStore.getCode());
119
		return map;
120
	}
23781 ashik.ali 121
 
21525 amit.gupta 122
}