package com.csc.library.dwr;

import java.util.Hashtable;
import java.util.Iterator;

import com.csc.library.databean.Mtime0;
import com.csc.library.dwr.DWR_base;
import com.csc.library.session.DbInquiry;
import com.csc.library.session.DbRecord;
import com.csc.library.session.InitialInquiry;
import com.csc.library.session.InitialRecord;
import com.csc.library.timeattendance.DayShift;
import com.csc.library.timeattendance.WorkingShift;
import com.csc.library.timeinterface.TimeResult;
import com.csc.library.utilities.CscCalendar;


public class Honda_CheckOT_DWR extends DWR_base{

	private Hashtable htbSotpOt ; 
	
	public String checkOTDay(String employeeid,String argStDate,String argEndDate){
		this.setUProfile();
		this.retrieveMconfig();
		WorkingShift ws = null;
		String[] stDateList = argStDate.split(",");
		String[] endDateList = argEndDate.split(",");
		CscCalendar stDate = new CscCalendar();
		CscCalendar endDate = new CscCalendar();
		
		try{
			DbInquiry inqEmp = new InitialInquiry(this.up).getDbInquiry();
	        inqEmp.setSchemaName(this.up.getSchemaName());
	        inqEmp.initMyTable("Memployee", "employeeid='"  + employeeid + "'", "");
	        inqEmp.setColumn("employeeid, time0,companyid, status, startdate, resigndate");
	        inqEmp.refresh();
	        while (inqEmp.next()) {
	        	Mtime0 rec = (Mtime0) new InitialRecord(this.up).getDbRecord("Mtime0");
	        	DbRecord empRec = inqEmp.getCurrentDbRecord();
	        	rec.setEmpRec(empRec);
	        	rec.set("time0id", inqEmp.getString("time0"));
	            rec.set("companyid", this.up.get("companyid"));
	            if (rec.search()==0) {
	            	//�ҵ��ҧ��÷ӧҹ���͵��ҧ��������
	            }else{
	            	for(int ii=0;ii<stDateList.length;ii++){
	            		stDate = new CscCalendar(stDateList[ii]);
	            		endDate = new CscCalendar(endDateList[ii]);
	            		
	            		ws = rec.genWorkingShift(new CscCalendar(stDate.getYYYYMMDD()), 
	                    		new CscCalendar(endDate.getYYYYMMDD()),"true");
	            		ws.setUProfile(this.up);
	            		ws.setEmployeeid(employeeid);
	            		ws.adjust();
	            	}//end if          	
	            }//end if 
	        }//end while 
		}catch(Exception ex){
			System.out.print(">>>>>Error on Honda_CheckOT_DWR.checkOTDay()"+ex.getStackTrace());
		}//end try
		
		//storage data for DWR
		String dataReturn = "";
		 int tValue = 0;
		 int hValue = 0;
		 int sValue = 0;
		for (Iterator<?> IT = ws.keySet().iterator(); IT.hasNext();) {  
			 String key = (String) IT.next();
             DayShift dShift = (DayShift) ws.get(key);
             if(dataReturn.equals("")){
            	 dataReturn = key;
             }else{
            	 dataReturn +="#"+ key;
             }//end if 
             String eventGrp ="";
             CscCalendar DateList  = new CscCalendar(key);
             String dayOfWeek = DateList.getDOWENG().toUpperCase(); 
             if(this.htbSotpOt.containsKey(dayOfWeek)){
            	 //�ѹ��� config �����ҧ� OT
            	 eventGrp = ":S";
            	 sValue++;
             }else{
	             for (Iterator IT1 = dShift.keySet().iterator(); IT1.hasNext();) {                    	
	                 String key1 = (String) IT1.next();
	                 TimeResult tr = (TimeResult) dShift.get(key1);
	                 if(eventGrp.equals("")){
	                	 eventGrp = tr.getResultEventGroup();
	                 }else{
	                	 eventGrp += ","+tr.getResultEventGroup();
	                 }//end if 
	             }//end for    
	             
	             if(eventGrp.indexOf("T")>=0 || eventGrp.indexOf("A")>=0){
	            	 //�� T ���� A �ʴ�����ѹ����ѹ�ӧҹ 
	            	 eventGrp=":T";
	            	 tValue++;
	             }else if(eventGrp.indexOf("H")>=0 || eventGrp.indexOf("I")>=0){
	            	//��  H ���� I �ʴ�����ѹ����ѹ��ش
	            	 eventGrp=":H";
	            	 hValue++;
	             }
             }
             dataReturn += eventGrp;
		 }//end for 
		 
		return "tValue:"+tValue+"#hValue:"+hValue+"#sValue:"+sValue;
	}//end method checkOTDay
	 
	private void retrieveMconfig(){ 	
		this.htbSotpOt = new Hashtable();
		try{
			DbInquiry inqMconfig = new InitialInquiry(this.up).getDbInquiry();
			inqMconfig.setSchemaName(this.up.getSchemaName());
			inqMconfig.initMyTable("Mconfig", "configid like 'TA_STOPOT%' and config_value ='on'", "");
			inqMconfig.setColumn("configid, config_type,edesc");
			inqMconfig.refresh();
			 while (inqMconfig.next()) {
				 this.htbSotpOt.put(inqMconfig.getString("edesc"),inqMconfig.getString("config_type"));
			 }//end while
		}catch(Exception ex){
			System.out.print(">>>>>Error on Honda_CheckOT_DWR.retrieveMconfig()"+ex.getStackTrace());
		}
	
	}//end method retrieveEmployeeTime0()
	 
}//end class Honda_CheckOT_DWR