package com.itsol.quantrivanphong.access.register.bussiness;


import com.itsol.quantrivanphong.access.register.dto.EmailDTO;
import com.itsol.quantrivanphong.access.register.dto.RegisterDTO;
import com.itsol.quantrivanphong.access.register.repository.RegisterRepository;
import com.itsol.quantrivanphong.model.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class RegisterBussiness {
    @Autowired
    private RegisterRepository registerRepository;

    @Autowired
    private EmailBussiness emailBussiness;

    public String register(RegisterDTO registerDTO) {
        String mess;
        //lấy thông tin employee trong DB thông qua usernameDTO
        Employee employee = registerRepository.findByUsername(registerDTO.getUsername());
        //Nếu Username không tồn tại thì cho đăng ký
        if (employee == null){
            //Kiểm tra Email được đăng ký hay chưa
            Employee employee1 = registerRepository.findByEmailAddress(registerDTO.getEmailAddress());
            if (employee1 == null){

                            Employee employee2 = new Employee();
                //Đổ dữ liệu từ DTO vào Empl
               employee2.setUsername(registerDTO.getUsername());
               employee2.setFirstName(registerDTO.getFirstName());
               employee2.setLastName(registerDTO.getLastName());
               employee2.setPicture(registerDTO.getPicture());
               employee2.setEmailAddress(registerDTO.getEmailAddress());
               employee2.setPhoneNumber(String.valueOf(registerDTO.getPhoneNumber()));
               employee2.setSkype(registerDTO.getSkype());
               employee2.setFacebookProfile(registerDTO.getFacebookProfile());
               employee2.setPosition(registerDTO.getPosition());
               employee2.setHomeTown(registerDTO.getHomeTown());
               employee2.setEducation(registerDTO.getEducation());
               employee2.setSchool(registerDTO.getSchool());
               employee2.setDepartment(registerDTO.getDepartment());
               employee2.setGraduationYear(String.valueOf(registerDTO.getGraduationYear()));
               employee2.setChecked(false);
               employee2.setStatus(false);
            //Xử lý việc thêm mới
            Employee employee3 = registerRepository.save(employee2);

            if (employee3 != null){
                EmailDTO emailDTO = new EmailDTO();
                emailDTO.setRecipientEmail(employee3.getEmailAddress());
                emailDTO.setMessage("Link: <a href = 'http://localhost:8081/verify/"+employee3.getUsername()+"'> Register verify account...</a>");
                emailDTO.setUsername(employee3.getUsername());
                emailDTO.setSubject("Confirm register:"+employee3.getUsername());
                emailBussiness.sendEmail(emailDTO);

                mess = "Đk thành công => Check email xác nhận mật khẩu";
            }else {
                mess = "ĐK không thành công";
            }

            }else {
                mess = "Email đã được đăng ký với tài khoản khác chọn lại email";
            }

        //Nếu Username tồn tại
        }else {
            //Kiểm tra tiếp email nếu tồn tại
            if (employee.getEmailAddress().equals(registerDTO.getEmailAddress())){
                //Kiểm tra tiếp trạng thái kích hoạt
                if (employee.isStatus()){
                    mess = "Username đã tồn tại => Đăng nhập";
                }else {
                    mess = "Username đã tồn tại => Kích hoạt";
                }
            //Nếu email không tồn tại
            }else {
                mess = "username đã tồn tại chọn username khác!";
            }
        }

        return mess;
    }
}
