/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.modules.workieavetemplate.service;

import java.util.List;

import com.jeeplus.common.utils.StringUtils;
import com.jeeplus.modules.sys.dao.OfficeDao;
import com.jeeplus.modules.sys.dao.UserDao;
import com.jeeplus.modules.sys.entity.Office;
import com.jeeplus.modules.sys.entity.User;
import com.jeeplus.modules.sys.utils.UserUtils;
import com.jeeplus.modules.workieavetemplate.dao.WorkIeaveTemplateUserDao;
import com.jeeplus.modules.workieavetemplate.entity.WorkIeaveTemplateUser;
import com.jeeplus.modules.workofficechange.entity.WorkOfficeChange;
import com.jeeplus.modules.workofficechange.entity.WorkOfficeChangeUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeeplus.common.persistence.Page;
import com.jeeplus.common.service.CrudService;
import com.jeeplus.modules.workieavetemplate.entity.WorkIeaveTemplate;
import com.jeeplus.modules.workieavetemplate.dao.WorkIeaveTemplateDao;

import javax.servlet.http.HttpServletRequest;

/**
 * 离职模板Service
 * @author chenyuping
 * @version 2018-08-06
 */
@Service
@Transactional(readOnly = true)
public class WorkIeaveTemplateService extends CrudService<WorkIeaveTemplateDao, WorkIeaveTemplate> {
	@Autowired
	private UserDao userDao;
	@Autowired
	private OfficeDao officeDao;

	@Autowired
	private WorkIeaveTemplateUserDao workIeaveTemplateUserDao;
	public WorkIeaveTemplate get(String id) {
		return super.get(id);
	}
	
	public List<WorkIeaveTemplate> findList(WorkIeaveTemplate workIeaveTemplate) {
		Office office =officeDao.get(UserUtils.getSelectOffice().getId());
		if(StringUtils.isNotBlank(office.getBranchOffice())){
			workIeaveTemplate.setBranchOffice(office.getBranchOffice());
		}else{
			workIeaveTemplate.setBranchOffice(UserUtils.getSelectCompany().getId());
		}
		return super.findList(workIeaveTemplate);
	}
	
	public Page<WorkIeaveTemplate> findPage(Page<WorkIeaveTemplate> page, WorkIeaveTemplate workIeaveTemplate) {
		workIeaveTemplate.setPage(page);
		page.setList(findList(workIeaveTemplate));
		return page;
	}
	
	@Transactional(readOnly = false)
	public void save(WorkIeaveTemplate workIeaveTemplate) {
		super.save(workIeaveTemplate);
		updateWorkOfficeChangeList(workIeaveTemplate);
	}
	@Transactional(readOnly = false)
	public void updateWorkOfficeChangeList(WorkIeaveTemplate workIeaveTemplate) {
		if(workIeaveTemplate.getWorkIeaveTemplateUserList()!=null&&workIeaveTemplate.getWorkIeaveTemplateUserList().size()>0){
			for (WorkIeaveTemplateUser workIeaveTemplateUser :workIeaveTemplate.getWorkIeaveTemplateUserList()) {
				if (StringUtils.isBlank(workIeaveTemplateUser.getId()) ) {
					workIeaveTemplateUser.preInsert();
					workIeaveTemplateUser.setTemplateId(workIeaveTemplate.getId());
					User user=userDao.get(workIeaveTemplateUser.getAuditor());
					workIeaveTemplateUser.setOfficeId(user.getOffice().getId());
					workIeaveTemplateUser.setCompanyId(UserUtils.getSelectCompany().getId());
					workIeaveTemplateUser.setBranchOffice(workIeaveTemplate.getBranchOffice());
					workIeaveTemplateUserDao.insert(workIeaveTemplateUser);
				} else {
					workIeaveTemplateUser.preUpdate();
					workIeaveTemplateUser.setTemplateId(workIeaveTemplate.getId());
					User user=userDao.get(workIeaveTemplateUser.getAuditor());
					workIeaveTemplateUser.setOfficeId(user.getOffice().getId());
					workIeaveTemplateUser.setCompanyId(UserUtils.getSelectCompany().getId());
					workIeaveTemplateUser.setBranchOffice(workIeaveTemplate.getBranchOffice());
					workIeaveTemplateUserDao.update(workIeaveTemplateUser);
				}
			}
		}
	}
	
	@Transactional(readOnly = false)
	public void delete(WorkIeaveTemplate workIeaveTemplate) {
		super.delete(workIeaveTemplate);
		if(workIeaveTemplate.getWorkIeaveTemplateUserList()!=null&&workIeaveTemplate.getWorkIeaveTemplateUserList().size()>0){
			for (WorkIeaveTemplateUser workIeaveTemplateUser :workIeaveTemplate.getWorkIeaveTemplateUserList()) {
				workIeaveTemplateUser.setTemplateId(workIeaveTemplate.getId());
					workIeaveTemplateUserDao.deleteByTemplateId(workIeaveTemplateUser);

			}
		}
	}
	
	
	
	
}