package com.csc.library.process;


import com.csc.library.cdi.GetCdiInstance;
import com.csc.library.controller.ApplyCompanyController;
import com.csc.library.controller.MemberRegisterController;
import com.csc.library.controller.ApplyCompanyController.ResultApplyCompany;
import com.csc.library.controller.MemberRegisterController.ResultRegister;
import com.csc.library.entity.CompanyProfile;
import com.csc.library.entity.MemberProfile;
import com.csc.library.entity.manager.CompanyManager;
import com.csc.library.status.StatusMessage;
import com.csc.library.status.StatusResultMessage;
import com.csc.library.utilities.CscCalendar;
import com.csc.library.utilities.MyLog;

import th.co.csc.apimodel.common.FaceTemplateCommonModel;
import th.co.csc.apimodel.request.ApplyCompanyRequestModel;
import th.co.csc.apimodel.request.RegisterNewEmployeeRequestModel;
import th.co.csc.apimodel.request.RegisterRequestModel;

public class GenerateCompanyEmployee {
	
	public GenerateCompanyEmployee(){}
	
	public boolean process(RegisterNewEmployeeRequestModel param, EmployeeImpProp eip, MemberProfile mb
			, CompanyProfile cp){
		try {
			RegisterRequestModel registerData = param.getMemberRegisterModel();
			
			if(mb != null){
				
				ApplyCompanyRequestModel applyModel = param.getApplyCompanyModel();
				
				ApplyCompanyController applyComController = GetCdiInstance.of(ApplyCompanyController.class);
				StatusResultMessage<ResultApplyCompany> srmApplyCom = applyComController.createBuilder()
						.setMemberId(mb.getMemberid())
						.setCompanyId(eip.getCompanyid())
						.setBranchId(cp.getMainbranchId())
						.setPosition(eip.getPosition())
						.setDepartment(eip.getDepartment())
						.apply();
				if(srmApplyCom.isSuccess()){
					ResultApplyCompany resultApplyCom = srmApplyCom.getResult();
					StatusMessage smApprove = applyComController.createApproveBuilder()
						.setCompanyId(eip.getCompanyid())
						.setMemberid(mb.getMemberid())
						//.setEmployeeCode(eip.getEmployeeid())
						.setApplyDatetime(resultApplyCom.getApplyDateTime())
						.setPosition(eip.getPosition())
						.setDepartment(eip.getDepartment())
						.setBossMajor(cp.getOwnerId())
						.setBranchId(cp.getMainbranchId())
						.approve();
					if(smApprove.isSuccess()){
						/* write log success */
					}else{
						/* write log not success */
					}
				}else{
					/* write log auto apply unsuccess */
				}
			}else {
				/* write log regis member not success */
			}
		}catch(Exception e){
			MyLog.error(this,e);
		}
		return true ; /* default */
	}
}