using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ease.CoreV35.Caching; using Ease.CoreV35.Model; using System.Data; namespace Payroll.BO { #region DailyAttnProcess [Serializable] public class DailyAttnProcess : AuditTrailBase { #region Cache Store private static Cache _cache = new Cache(typeof(DailyAttnProcess)); #endregion #region Constructor public DailyAttnProcess() { _employeeID = ID.FromInteger(0); _attnDate = DateTime.MinValue; _shiftID = ID.FromInteger(0); _inTime = DateTime.MinValue; _outTime = DateTime.MinValue; _workDayType = EnumWorkPlanDayType.WorkingDay; _attenType = 0; _comments = string.Empty; _isManualEntry = false; _isLate = false; _referenceID = ID.FromInteger(0); _employee = null; _lateHour = 0; _earlyHour = 0; _oTHour = 0; _reason = string.Empty; } #endregion #region Properties #region employeeID : ID private ID _employeeID; public ID EmployeeID { get { return _employeeID; } set { base.OnPropertyChange("employeeID", _employeeID, value); _employeeID = value; } } #endregion #region attnDate : DateTime private DateTime _attnDate; public DateTime AttnDate { get { return _attnDate; } set { base.OnPropertyChange("attnDate", _attnDate, value); _attnDate = value; } } #endregion #region shiftID : ID private ID _shiftID; public ID ShiftID { get { return _shiftID; } set { base.OnPropertyChange("shiftID", _shiftID, value); _shiftID = value; } } #endregion #region inTime : DateTime private DateTime _inTime; public DateTime InTime { get { return _inTime; } set { base.OnPropertyChange("inTime", _inTime, value); _inTime = value; } } #endregion #region outTime : DateTime private DateTime _outTime; public DateTime OutTime { get { return _outTime; } set { base.OnPropertyChange("outTime", _outTime, value); _outTime = value; } } #endregion #region WorkDayType : EnumWorkPlanDayType private EnumWorkPlanDayType _workDayType; public EnumWorkPlanDayType WorkDayType { get { return _workDayType; } set { base.OnPropertyChange("workDayType", (short)_workDayType, (short)value); _workDayType = value; } } #endregion #region attenType : EnumAttendanceType private EnumAttendanceType _attenType; public EnumAttendanceType AttenType { get { return _attenType; } set { base.OnPropertyChange("attenType", (short)_attenType, (short)value); _attenType = value; } } #endregion #region comments : string private string _comments; public string Comments { get { return _comments; } set { base.OnPropertyChange("comments", _comments, value); _comments = value; } } #endregion #region Reason : string private string _reason; public string Reason { get { return _reason; } set { _reason = value; } } #endregion #region isManualEntry : bool private bool _isManualEntry; public bool IsManualEntry { get { return _isManualEntry; } set { base.OnPropertyChange("isManualEntry", _isManualEntry, value); _isManualEntry = value; } } #endregion #region IsLate : bool private bool _isLate; public bool IsLate { get { return _isLate; } set { base.OnPropertyChange("isLate", _isLate, value); _isLate = value; } } #endregion #region LateHour : double private double _lateHour; public double LateHour { get { return _lateHour; } set { base.OnPropertyChange("LateHour", _lateHour, value); _lateHour = value; } } #endregion #region EarlyHour : double private double _earlyHour; public double EarlyHour { get { return _earlyHour; } set { base.OnPropertyChange("EarlyHour", _earlyHour, value); _earlyHour = value; } } #endregion #region OTHour : double private double _oTHour; public double OTHour { get { return _oTHour; } set { base.OnPropertyChange("OTHour", _oTHour, value); _oTHour = value; } } #endregion #region referenceID : ID private ID _referenceID; public ID ReferenceID { get { return _referenceID; } set { base.OnPropertyChange("referenceID", _referenceID, value); _referenceID = value; } } #endregion #region employee : Employee private Employee _employee; public Employee Employee { get { if (_employeeID.Integer > 0 && _employee == null) { _employee = new Employee(); _employee = Employee.Get(_employeeID); } return this._employee; } set { _employee = value; } } #endregion #region Shift : Shift private Shift _shift; public Shift Shift { get { if (_shiftID.Integer > 0 && _shift == null) { _shift = new Shift(); _shift = Shift.Get(_shiftID); } return this._shift; } set { _shift = value; } } #endregion #region Service Factory IDailyAttnProcessService : IDailyAttnProcessService internal static IDailyAttnProcessService Service { get { return Services.Factory.CreateService(typeof(IDailyAttnProcessService)); } } #endregion #endregion #region Functions public static DailyAttnProcess Get(ID nID) { DailyAttnProcess oDailyAttnProcess = null; #region Cache Header oDailyAttnProcess = (DailyAttnProcess)_cache["Get", nID]; if (oDailyAttnProcess != null) return oDailyAttnProcess; #endregion oDailyAttnProcess = DailyAttnProcess.Service.Get(nID); #region Cache Footer _cache.Add(oDailyAttnProcess, "Get", nID); #endregion return oDailyAttnProcess; } public static ObjectsTemplate Get() { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["Get"] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = DailyAttnProcess.Service.Get(); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "Get"); #endregion return dailyAttnProcesses; } public static ObjectsTemplate GetProcessByWPG(EnumWorkPlanGroup wpg, DateTime attnDate) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["GetProcessByWPG", wpg, attnDate] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.GetProcessByWPG(wpg, attnDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "GetProcessByWPG", wpg, attnDate); #endregion return dailyAttnProcesses; } public static ObjectsTemplate Get(DateTime attnDate) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["Get", attnDate] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.Get(attnDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "Get", attnDate); #endregion return dailyAttnProcesses; } public static ObjectsTemplate GetManualProcess(DateTime attnDate) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["GetManualProcess", attnDate] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.GetManualProcess(attnDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "GetManualProcess", attnDate); #endregion return dailyAttnProcesses; } public static ObjectsTemplate Get(ID empID, DateTime fromDate, DateTime toDate) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["Get", empID, fromDate, toDate] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.Get(empID, fromDate, toDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "Get", empID, fromDate, toDate); #endregion return dailyAttnProcesses; } public static ObjectsTemplate Get(string empID, DateTime fromDate, DateTime toDate) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["Get", empID, fromDate, toDate] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.Get(empID, fromDate, toDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "Get", empID, fromDate, toDate); #endregion return dailyAttnProcesses; } public static ObjectsTemplate Get(DateTime fromDate, DateTime toDate) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["Get", fromDate, toDate] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.Get(fromDate, toDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "Get",fromDate, toDate); #endregion return dailyAttnProcesses; } public static ObjectsTemplate Get(DateTime attnDate, ID shiftID, EnumAttendanceType attnType) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["Get", attnDate, shiftID, attnType] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.Get(attnDate, shiftID, attnType); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "Get", attnDate, shiftID, attnType); #endregion return dailyAttnProcesses; } public ID Save() { this.SetAuditTrailProperties(); return DailyAttnProcess.Service.Save(this); } public static void Save(ObjectsTemplate dAttnProcessess, bool IscounterClock) { foreach (DailyAttnProcess dAttnProcess in dAttnProcessess) { dAttnProcess.SetAuditTrailProperties(); } DailyAttnProcess.Service.Save(dAttnProcessess, IscounterClock); } public static void SaveAuto(ObjectsTemplate dailyattProcesses, AttnProcessRunSummary oAttnRunSummary) { foreach (DailyAttnProcess dAttnProcess in dailyattProcesses) { dAttnProcess.SetAuditTrailProperties(); } DailyAttnProcess.Service.SaveAuto(dailyattProcesses, oAttnRunSummary); } //new public static ObjectsTemplate GetWhrOutTimeIsNull(DateTime attnDate, ID shiftID) { #region Cache Header ObjectsTemplate dailyAttnProcesses = _cache["GetWhrOutTimeIsNull", attnDate, shiftID] as ObjectsTemplate; if (dailyAttnProcesses != null) return dailyAttnProcesses; #endregion try { dailyAttnProcesses = Service.GetWhrOutTimeIsNull(attnDate, shiftID); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(dailyAttnProcesses, "GetWhrOutTimeIsNull", attnDate, shiftID); #endregion return dailyAttnProcesses; } // public void Delete() { DailyAttnProcess.Service.Delete(ID); } public static DateTime GetLastProcessDate() { DateTime lastProcessDate = DateTime.MinValue; try { lastProcessDate = DailyAttnProcess.Service.GetLastProcessDate(); } catch (ServiceException e) { throw new Exception(e.Message, e); } return lastProcessDate; } public static DateTime GetLastProcessDateByPayrollType() { DateTime lastProcessDate = DateTime.MinValue; try { lastProcessDate = DailyAttnProcess.Service.GetLastProcessDateByPayrollType(SystemInformation.CurrentSysInfo.PayrollTypeID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return lastProcessDate; } public void UpdateLeave(ID employeeID, ID leaveID, DateTime leavaDate, int n) { DailyAttnProcess.Service.UpdateLeave(employeeID, leaveID, leavaDate, n); } public static DataSet GetMonthlyAttn(DateTime dFromDate, DateTime dToDate, string sEmpID) { DataSet monthlyAttn = null; try { monthlyAttn = Service.GetMonthlyAttn(dFromDate, dToDate, sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return monthlyAttn; } public static DataSet GetDailyInOut(DateTime attndate, string sEmpID) { DataSet dailyInOut = null; try { dailyInOut = Service.GetDailyInOut(attndate, sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return dailyInOut; } public static DataSet GetDailyDataByStatus(DateTime attnDate, string sEmpID, params EnumAttendanceType[] eStatus) { DataSet dailyInOut = null; string sStatus = string.Empty; sStatus = eStatus.Aggregate(new StringBuilder(), (sb, el) => sb.Append(((int)el).ToString() + ","), sb => sb.ToString().Trim(',')); try { dailyInOut = Service.GetDailyDataByStatus(attnDate,sStatus,sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return dailyInOut; } public static DataSet GetDateRangeDataByStatus(DateTime attnFromDate, DateTime attnToDate, string sEmpID, params EnumAttendanceType[] eStatus) { DataSet dailyInOut = null; string sStatus = string.Empty; sStatus = eStatus.Aggregate(new StringBuilder(), (sb, el) => sb.Append(((int)el).ToString() + ","), sb => sb.ToString().Trim(',')); try { dailyInOut = Service.GetDateRangeDataByStatus(attnFromDate,attnToDate, sStatus, sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return dailyInOut; } public static DataSet GetDailyAbsent(DateTime attndate, string sEmpID) { DataSet dailyAbsent = null; try { dailyAbsent = Service.GetDailyAbsent(attndate, sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return dailyAbsent; } public static DataSet GetDailyInOutAndAbsent(DateTime attnDate, string sEmpID) { DataSet dailyInOutAndAbsent = null; try { dailyInOutAndAbsent = Service.GetDailyInOutAndAbsent(attnDate, sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return dailyInOutAndAbsent; } public static DataSet GetMonthlyDetail(DateTime dFromDate, DateTime dToDate, string sEmpID) { DataSet monthlyDetail = null; try { monthlyDetail = Service.GetMonthlyDetail(dFromDate, dToDate, sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return monthlyDetail; } public static DataSet GetMonthlyLongAbsent(DateTime dFromDate, DateTime dToDate, int totalAbsentDays) { DataSet monthlyDetail = null; try { monthlyDetail = Service.GetMonthlyLongAbsent(dFromDate, dToDate, totalAbsentDays); } catch (ServiceException e) { throw new Exception(e.Message, e); } return monthlyDetail; } public static DataSet GetEmpAttenInfo(string sEmpID) { DataSet empAttenInfo = null; try { empAttenInfo = Service.GetEmpAttenInfo(sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return empAttenInfo; } //for creating AccessCard public static DataSet GetEmpCardInfo(string sEmpID) { DataSet empAttenInfo = null; try { empAttenInfo = Service.GetEmpCardInfo(sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return empAttenInfo; } public static DataSet GetEmpCardInfoPerPage(string sEmpID) { DataSet empAttenInfo = null; try { empAttenInfo = Service.GetEmpCardInfoPerPage(sEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return empAttenInfo; } //return no. of holidays by month range public static DataSet GetHolidays(DateTime attndate, ID empID) { DataSet holidays = null; try { holidays = Service.GetHolidays(attndate, empID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return holidays; } public static DataSet GetPresentDays(DateTime attndate, ID empID) { DataSet presentDays = null; try { presentDays = Service.GetPresentDays(attndate, empID); } catch (ServiceException e) { throw new Exception(e.Message, e); } return presentDays; } public static ObjectsTemplate GetEmployeesFirstAttendances(string employeeIDs) { ObjectsTemplate oFirstAttendances = null; try { oFirstAttendances = Service.GetEmployeesFirstAttendances(employeeIDs); } catch (ServiceException e) { throw new Exception(e.Message, e); } return oFirstAttendances; } public static DailyAttnProcess GetDailyEmployeeAbsent(ID nID, DateTime dateTime) { DailyAttnProcess oEmployeeAbsent = null; try { oEmployeeAbsent = Service.GetDailyEmployeeAbsent(nID, dateTime); } catch (ServiceException e) { throw new Exception(e.Message, e); } return oEmployeeAbsent; } public static ObjectsTemplate Get(ID empID, ID shiftID, DateTime fromdate, DateTime todate,EnumAttendanceType enumAttendanceType) { ObjectsTemplate odAttnProcesses = null; try { odAttnProcesses = Service.Get(empID, shiftID, fromdate, todate, enumAttendanceType); } catch (ServiceException e) { throw new Exception(e.Message, e); } return odAttnProcesses; } #endregion } #endregion #region IDailyAttnProcess Service public interface IDailyAttnProcessService { DailyAttnProcess Get(ID id); ObjectsTemplate Get(); ObjectsTemplate GetProcessByWPG(EnumWorkPlanGroup wpg, DateTime attnDate); ObjectsTemplate Get(DateTime attnDate); ObjectsTemplate GetManualProcess(DateTime attnDate); ObjectsTemplate Get(ID empID, DateTime fromDate, DateTime toDate); ObjectsTemplate Get(string empID, DateTime fromDate, DateTime toDate); ObjectsTemplate Get(DateTime fromDate, DateTime toDate); ObjectsTemplate Get(DateTime attnDate, ID shiftID, EnumAttendanceType attnType); ID Save(DailyAttnProcess item); void Save(ObjectsTemplate _dAttnProcessess, bool IscounterClock); void Delete(ID id); void UpdateLeave(ID employeeID, ID leaveID, DateTime leavaDate, int n); DataSet GetMonthlyAttn(DateTime dFromDate, DateTime dToDate, string sEmpID); DataSet GetDailyInOut(DateTime attndate, string sEmpID); DataSet GetDailyDataByStatus(DateTime attnDate, string sStatus, string sEmpID); DataSet GetDateRangeDataByStatus(DateTime attnFromDate, DateTime attnToDate, string sStatus, string sEmpID); DataSet GetDailyAbsent(DateTime attndate, string sEmpID); DataSet GetDailyInOutAndAbsent(DateTime attnDate, string sEmpID); DataSet GetMonthlyDetail(DateTime dFromDate, DateTime dToDate, string sEmpID); DataSet GetEmpAttenInfo(string sEmpID); DataSet GetEmpCardInfo(string sEmpID); DataSet GetEmpCardInfoPerPage(string sEmpID); DataSet GetHolidays(DateTime attndate, ID empID); DataSet GetPresentDays(DateTime attndate, ID empID); DataSet GetMonthlyLongAbsent(DateTime dFromDate, DateTime dToDate, int totalAbsentDays); //new DailyAttnProcess GetDailyEmployeeAbsent(ID nID, DateTime dateTime); ObjectsTemplate GetWhrOutTimeIsNull(DateTime attnDate, ID shiftID); ObjectsTemplate GetEmployeesFirstAttendances(string employeeIDs); DateTime GetLastProcessDate(); DateTime GetLastProcessDateByPayrollType(ID PayrolltypeID); // void SaveAuto(ObjectsTemplate dailyattProcesses, AttnProcessRunSummary oAttnRunSummary); ObjectsTemplate Get(ID empID, ID shiftID, DateTime fromdate, DateTime todate,EnumAttendanceType enumAttendanceType); } #endregion }