Subversion Repositories SmartDukaan

Rev

Rev 22038 | Rev 22931 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.spice.profitmandi.service;

import java.time.LocalDateTime;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.spice.profitmandi.dao.entity.dtr.ActivationCode;
import com.spice.profitmandi.dao.entity.dtr.Retailer;
import com.spice.profitmandi.dao.entity.dtr.User;
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
import com.spice.profitmandi.thrift.clients.TransactionClient;

import in.shop2020.model.v1.order.TransactionService;

@Component
@Transactional(rollbackFor=Throwable.class)
public class UserServiceImpl implements UserService {

        @Autowired
        SessionFactory sessionFactory;

        @Autowired
        UserRepository userRepo;

        @Autowired
        RetailerRepository retailerRepo;
        

        @Override
        public boolean updateActivation(int userId, int retailerId, String activationCode) throws Throwable {
                
                TransactionClient transactionServiceClient = new TransactionClient();
                TransactionService.Client tsc = transactionServiceClient.getClient();
                boolean registered = tsc.registerRsa(retailerId, activationCode);

                Session session = sessionFactory.getCurrentSession();

                if(!registered){
                        Criteria cr = session.createCriteria(ActivationCode.class);
                        cr.add(Restrictions.eq("code", activationCode)).add(Restrictions.eq("status", true));
                        ActivationCode code = (ActivationCode)cr.uniqueResult();
                        if(code==null) {
                                return false;
                        } else {
                                registered=true;
                                code.setStatus(false);
                                session.update(code);
                        }
                }
        
                if(registered) {
                        User user = userRepo.selectById(userId);
                        user.setActivated(true);
                        user.setActivationTime(LocalDateTime.now());
                        user.setReferrer(activationCode);
                        session.update(user);
                        
                        Retailer retailer = retailerRepo.selectById(retailerId);
                        retailer.setActive(true);
                        session.update(retailer);
                }
                        
                return registered;
        }


        @Override
        public boolean createActivationCode(int userId) throws Throwable {
                // TODO Auto-generated method stub
                return false;
        }
}