EchoTex_Payroll/HRM.BO/Attendance/DailyAttnProcess.cs

3492 lines
138 KiB
C#
Raw Permalink Normal View History

2024-10-14 10:01:49 +06:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ease.Core;
using System.Data;
using Ease.CoreV35.DataAccess;
using HRM.BO.Configuration;
namespace HRM.BO
{
#region DailyAttnProcess
public class DailyAttnProcess : AuditTrailBase, IworkflowInterface
{
#region Constructor
public DailyAttnProcess()
{
_shiftID = null;
_inTime = null;
_outTime = null;
_workDayType = EnumWorkPlanDayType.WorkingDay;
_attenType = 0;
_comments = string.Empty;
_isManualEntry = false;
_isLate = false;
_referenceID = null;
_employee = null;
_lateHour = 0;
_earlyHour = 0;
_oTHour = 0;
_reason = string.Empty;
_otRemarks = string.Empty;
_lMRemarks = string.Empty;
_approvedOTHour = 0;
_wfStatus = EnumWFAttnStatus.None;
_actualShiftID = 0;
_lMApproveDate = null;
EmpApplyDate = null;
_actualInTime = null;
_actualOutTime = null;
_actualShiftID = null;
_lineManagerID = null;
_onbehalfEmpID = null;
_inTimeNearestAddress = "";
}
#endregion
#region Properties
#region LMApproveDate : DateTime
private DateTime? _lMApproveDate;
public DateTime? LMApproveDate
{
get { return _lMApproveDate; }
set
{
_lMApproveDate = value;
}
}
#endregion
#region LineManagerID : ID
private int? _lineManagerID;
public int? LineManagerID
{
get { return _lineManagerID; }
set
{
_lineManagerID = value;
}
}
#endregion
#region OnbehalfEmpID : ID
private int? _onbehalfEmpID;
public int? OnbehalfEmpID
{
get { return _onbehalfEmpID; }
set
{
_onbehalfEmpID = value;
}
}
#endregion
#region EmpRemarks : string
private string _empRemarks;
public string EmpRemarks
{
get { return _empRemarks; }
set { _empRemarks = value; }
}
#endregion
#region AttendanceWFHistory
private List<AttendanceWFHistory> _attendanceWFHistory;
public List<AttendanceWFHistory> AttnWFHistory
{
get
{
return _attendanceWFHistory;
}
set
{
_attendanceWFHistory = value;
}
}
#endregion
#region decimal : InTimeLatitude
private decimal _inTimeLatitude;
public decimal InTimeLatitude
{
get { return _inTimeLatitude; }
set { _inTimeLatitude = value; }
}
#endregion
#region decimal : OutTimeLatitude
private decimal _outTimeLatitude;
public decimal OutTimeLatitude
{
get { return _outTimeLatitude; }
set { _outTimeLatitude = value; }
}
#endregion
#region decimal : InTimeLongitue
private decimal _inTimeLongitude;
public decimal InTimeLongitude
{
get { return _inTimeLongitude; }
set { _inTimeLongitude = value; }
}
#endregion
#region decimal : OutTimeLongitude
private decimal _outTimeLongitude;
public decimal OutTimeLongitude
{
get { return _outTimeLongitude; }
set { _outTimeLongitude = value; }
}
#endregion
#region string : InTimeNearestAddress
private string _inTimeNearestAddress;
public string InTimeNearestAddress
{
get { return _inTimeNearestAddress; }
set { _inTimeNearestAddress = value; }
}
#endregion
#region string : OutTimeNearestAddress
private string _outTimeNearestAddress;
public string OutTimeNearestAddress
{
get { return _outTimeNearestAddress; }
set { _outTimeNearestAddress = value; }
}
#endregion
#region employeeID : ID
private int _employeeID;
public int EmployeeID
{
get { return _employeeID; }
set
{
//base.OnPropertyChange<ID>("employeeID", _employeeID, value);
_employeeID = value;
}
}
#endregion
#region attnDate : DateTime
private DateTime _attnDate;
public DateTime AttnDate
{
get { return _attnDate; }
set
{
//base.OnPropertyChange<DateTime>("attnDate", _attnDate, value);
_attnDate = value;
}
}
#endregion
#region shiftID : ID
private int? _shiftID;
public int? ShiftID
{
get { return _shiftID; }
set
{
//base.OnPropertyChange<ID>("shiftID", _shiftID, value);
_shiftID = value;
}
}
#endregion
public string ActualInOutTime { get; set; }
#region inTime : DateTime
private DateTime? _inTime;
public DateTime? InTime
{
get { return _inTime; }
set
{
//base.OnPropertyChange<DateTime>("inTime", _inTime, value);
_inTime = value;
}
}
#endregion
#region EmpAttenType : EnumAttendanceType
private EnumAttendanceType _empAttenType;
public EnumAttendanceType EmpAttenType
{
get { return _empAttenType; }
set
{
_empAttenType = value;
}
}
#endregion
#region outTime : DateTime
private DateTime? _outTime;
public DateTime? OutTime
{
get { return _outTime; }
set
{
//base.OnPropertyChange<DateTime>("outTime", _outTime, value);
_outTime = value;
}
}
#endregion
#region actualInTime : DateTime
private DateTime? _actualInTime;
public DateTime? ActualInTime
{
get { return _actualInTime; }
set
{
//base.OnPropertyChange<DateTime>("ActualInTime", _actualInTime, value);
_actualInTime = value;
}
}
#endregion
#region ActualOutTime : DateTime
private DateTime? _actualOutTime;
public DateTime? ActualOutTime
{
get { return _actualOutTime; }
set
{
//base.OnPropertyChange<DateTime>("ActualOutTime", _actualOutTime, value);
_actualOutTime = value;
}
}
#endregion
private int? _actualShiftID;
public int? ActualShiftID
{
get { return _actualShiftID; }
set { _actualShiftID = value; }
}
public MonthlyWorkPlan MonthlyWorkPlan { get; set; }
#region WorkDayType : EnumWorkPlanDayType
private EnumWorkPlanDayType _workDayType;
public EnumWorkPlanDayType WorkDayType
{
get { return _workDayType; }
set
{
//base.OnPropertyChange<short>("workDayType", (short)_workDayType, (short)value);
_workDayType = value;
}
}
#endregion
#region attenType : EnumAttendanceType
private EnumAttendanceType _attenType;
public EnumAttendanceType AttenType
{
get { return _attenType; }
set
{
//base.OnPropertyChange<short>("attenType", (short)_attenType, (short)value);
_attenType = value;
}
}
#endregion
#region comments : string
private string _comments;
public string Comments
{
get { return _comments; }
set
{
//base.OnPropertyChange<string>("comments", _comments, value);
_comments = value;
}
}
#endregion
#region Reason : string
private string _reason;
public string Reason
{
get { return _reason; }
set { _reason = value; }
}
#endregion
#region OtRemarks : string
private string _otRemarks;
public string OtRemarks
{
get { return _otRemarks; }
set { _otRemarks = value; }
}
#endregion
#region LMRemarks : string
private string _lMRemarks;
public string LMRemarks
{
get { return _lMRemarks; }
set { _lMRemarks = value; }
}
#endregion
#region isManualEntry : bool
private bool _isManualEntry;
public bool IsManualEntry
{
get { return _isManualEntry; }
set
{
//base.OnPropertyChange<bool>("isManualEntry", _isManualEntry, value);
_isManualEntry = value;
}
}
public bool OnlyManualInTime
{
get {
return (this.IsManualEntry == true && this.ActualInTime != null) ? true : false;}
}
public bool OnlyManualOutTime
{
get
{
return (this.IsManualEntry == true && this.ActualOutTime != null) ? true : false;
}
}
#endregion
#region IsLate : bool
private bool _isLate;
public bool IsLate
{
get { return _isLate; }
set
{
//base.OnPropertyChange<bool>("isLate", _isLate, value);
_isLate = value;
}
}
#endregion
#region LateHour : double
private double _lateHour;
public double LateHour
{
get { return _lateHour; }
set
{
//base.OnPropertyChange<double>("LateHour", _lateHour, value);
_lateHour = value;
}
}
#endregion
#region EarlyHour : double
private double _earlyHour;
public double EarlyHour
{
get { return _earlyHour; }
set
{
//base.OnPropertyChange<double>("EarlyHour", _earlyHour, value);
_earlyHour = value;
}
}
#endregion
#region OTHour : double
private double _oTHour;
public double OTHour
{
get { return _oTHour; }
set
{
//base.OnPropertyChange<double>("OTHour", _oTHour, value);
_oTHour = value;
}
}
#endregion
#region ApprovedOTHour : double
private double _approvedOTHour;
public double ApprovedOTHour
{
get { return _approvedOTHour; }
set
{
//base.OnPropertyChange<double>("ApprovedOTHour", _approvedOTHour, value);
_approvedOTHour = value;
}
}
#endregion
#region referenceID : ID
private int? _referenceID;
public int? ReferenceID
{
get { return _referenceID; }
set
{
//base.OnPropertyChange<ID>("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; }
}
public SearchEmployee SearchEmployee { get; set; }
#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 WFStatus : EnumAttendanceStatus
private EnumWFAttnStatus _wfStatus;
public EnumWFAttnStatus WFStatus
{
get { return _wfStatus; }
set { _wfStatus = value; }
}
#endregion
#region WorkHour : Double
private double _workHour;
public double WorkHour
{
get { return _workHour; }
set { _workHour = value; }
}
#endregion
//public bool IsFromMobile { get; set; }
public EnumIsFromMobile IsFromMobile { get; set; }
public DateTime? EmpApplyDate { get; set; }
#region Commented Code
//private List<AttendanceWFHistory> _attendanceWFHistory;
//public List<AttendanceWFHistory> AttnWFHistory
//{
// get
// {
// //if (this.ID != null && !this.ID.IsUnassigned && _attendanceWFHistory == null)
// //{
// // _attendanceWFHistory = AttendanceWFHistory.GetByEmpID(this.ID);
// //}
// return _attendanceWFHistory;
// }
// set { _attendanceWFHistory = value; }
//}
//#region Service Factory IDailyAttnProcessService : IDailyAttnProcessService
//internal static IDailyAttnProcessService Service
//{
// get { return Services.Factory.CreateService<IDailyAttnProcessService>(typeof(IDailyAttnProcessService)); }
//}
//#endregion
#endregion
public List<DailyAttendanceAllowance> Benifits { get; set; }
//#region Functions
////public void Validate()
////{
//// if (string.IsNullOrEmpty(Comments))
//// {
//// throw new CustomException(EnumExceptionType.Validation, "Remarks Cannot Be Empty");
//// }
//// if (AttenType == EnumAttendanceType.Leave)
//// {
//// LeaveEntry oLeaveEntry = LeaveEntry.Get(AttnDate, EmployeeID);
//// if (oLeaveEntry.ID.IsUnassigned)
//// {
//// throw new CustomException(EnumExceptionType.Validation, "Please apply for leave.");
//// }
//// }
//// if (AttenType == EnumAttendanceType.Absent)
//// {
//// throw new CustomException(EnumExceptionType.Validation, "Please select a correct status.");
//// }
//// if (AttenType == EnumAttendanceType.WeeklyHoliday)
//// {
//// if (WorkDayType != EnumWorkPlanDayType.WeeklyHoliday)
//// {
//// throw new CustomException(EnumExceptionType.Validation, "Please select a correct status.");
//// }
//// }
//// if (AttenType == EnumAttendanceType.Holiday)
//// {
//// if (WorkDayType != EnumWorkPlanDayType.NationalHoliday)
//// {
//// throw new CustomException(EnumExceptionType.Validation, "Please select a correct status.");
//// }
//// }
//// if (InTime == DateTime.MinValue)
//// throw new CustomException(EnumExceptionType.Validation, "You must fill in time");
//// if (OutTime == DateTime.MinValue)
//// throw new CustomException(EnumExceptionType.Validation, "You must fill out time");
////}
//public static DailyAttnProcess GetAttnDataByWFStatus(int DailyAttnProcessID, EnumWFAttnStatus status)
//{
// DailyAttnProcess dailyAttnProcesses = null;
// try
// {
// dailyAttnProcesses = Service.GetAttnDataByWFStatus(DailyAttnProcessID, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> RefreshObject(Employee emp, ID id, string ddlSelectedValue, string comment, DateTime InTime, DateTime OutTime)
//{
// DateTime tempDateTime = DateTime.MinValue;
// DailyAttnProcess daProcess = null;
// AttendanceWFHistory attnHistory = null;
// ObjectsTemplate<DailyAttnProcess> _dailyAttnProcesses = new ObjectsTemplate<DailyAttnProcess>();
// bool isChanged = false;
// EnumAttendanceType previousStatus;
// DateTime previousInTime = DateTime.MinValue;
// DateTime previousOutTime = DateTime.MinValue;
// isChanged = false;
// attnHistory = new AttendanceWFHistory();
// //previous code
// //ObjectsTemplate<DailyAttnProcess> oNotYetSubmittedAttnDatas = DailyAttnProcess.GetAttnDataByWFStatus(emp.ID.ToString(), EnumWFAttnStatus.None);
// //daProcess = oNotYetSubmittedAttnDatas.Where(o => o.ID == id).FirstOrDefault();
// //for optimization
// daProcess = DailyAttnProcess.GetAttnDataByWFStatus(id.Integer, EnumWFAttnStatus.None);
// if (daProcess == null)
// throw new CustomException(EnumExceptionType.Error, "Attendance Data Not Found");
// previousInTime = daProcess.InTime;
// previousOutTime = daProcess.OutTime;
// if (daProcess.ActualInTime == DateTime.MinValue)
// daProcess.ActualInTime = daProcess.InTime;
// if (daProcess.ActualOutTime == DateTime.MinValue)
// daProcess.ActualOutTime = daProcess.OutTime;
// previousStatus = daProcess.AttenType;
// attnHistory.EmployeeID = daProcess.EmployeeID;
// attnHistory.DailyAttnProcessID = daProcess.ID;
// daProcess.IsManualEntry = true;
// EnumAttendanceType value;
// if (ddlSelectedValue != string.Empty)
// {
// value = (EnumAttendanceType)Convert.ToInt32(ddlSelectedValue);
// daProcess.EmpAttenType = value;
// attnHistory.AttandanceStatus = value;
// if (previousStatus != value)
// isChanged = true;
// }
// //RadNumericTextBox txtBoxApprovedOT = (RadNumericTextBox)gridItem.FindControl("numActualOT");
// //if (txtBoxApprovedOT.Text != string.Empty)
// //{
// // daProcess.ApprovedOTHour = Convert.ToDouble(txtBoxApprovedOT.Text);
// // daProcess.OtRemarks = daProcess.ApprovedOTHour.ToString();
// // attnHistory.OTHour = daProcess.ApprovedOTHour;
// // isChanged = true;
// //}
// if (comment != string.Empty)
// {
// daProcess.Comments = comment;
// attnHistory.Remarks = daProcess.Comments;
// isChanged = true;
// }
// if (InTime != null)
// {
// if (InTime != DateTime.MinValue)
// {
// tempDateTime = InTime;
// daProcess.EmpInTime = new DateTime(daProcess.AttnDate.Year, daProcess.AttnDate.Month, daProcess.AttnDate.Day, tempDateTime.Hour, tempDateTime.Minute, tempDateTime.Second);
// }
// }
// if (OutTime != null)
// {
// if (OutTime != DateTime.MinValue)
// {
// tempDateTime = OutTime;
// daProcess.EmpOutTime = new DateTime(daProcess.AttnDate.Year, daProcess.AttnDate.Month, daProcess.AttnDate.Day, tempDateTime.Hour, tempDateTime.Minute, tempDateTime.Second); ;
// }
// }
// if (previousInTime != daProcess.InTime)
// isChanged = true;
// if (previousOutTime != daProcess.OutTime)
// isChanged = true;
// if (isChanged == true)
// {
// attnHistory.WFStatus = EnumWFAttnStatus.EmpSubmitted;
// }
// else
// {
// attnHistory.WFStatus = EnumWFAttnStatus.NotApplicable;
// daProcess.WFStatus = EnumWFAttnStatus.NotApplicable;
// }
// daProcess.WFStatus = EnumWFAttnStatus.EmpSubmitted;
// daProcess.AttnWFHistory.Add(attnHistory);
// _dailyAttnProcesses.Add(daProcess);
// return _dailyAttnProcesses;
//}
//private static EnumLateAttendanceType SetLateAttendanceType(DailyAttnProcess oDailyAttnProcess)
//{
// EnumLateAttendanceType lateAttntype = EnumLateAttendanceType.NotApplicable;
// DateTime Attdate = oDailyAttnProcess.AttnDate;
// DateTime tInTime = oDailyAttnProcess.InTime;
// DateTime tOutTime = DateTime.MinValue;
// ObjectsTemplate<Shift> _shifts = Shift.Get();
// Shift oShift = _shifts.Where(o => o.ID == oDailyAttnProcess.ShiftID).FirstOrDefault();
// if (oShift == null)
// throw new CustomException(EnumExceptionType.Validation, "An Error Occurred From SetLateAttendanceType. oShift is empty");
// DateTime dt0_00 = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oShift.InTime.Hour, oShift.InTime.Minute, oShift.InTime.Second);
// DateTime dt0_14 = dt0_00.AddMinutes(14);
// dt0_14 = dt0_14.AddSeconds(59);
// if (oDailyAttnProcess.InTime >= dt0_00 && oDailyAttnProcess.InTime <= dt0_14)
// {
// tOutTime = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oShift.OutTime.Hour, oShift.OutTime.Minute, 0);
// tOutTime = tOutTime.AddMinutes(15);
// if (oDailyAttnProcess.OutTime < tOutTime)
// lateAttntype = EnumLateAttendanceType.Nine_0am_to_Nine_14am;
// }
// DateTime dt0_15 = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oShift.InTime.Hour, oShift.InTime.Minute, 0);
// dt0_15 = dt0_15.AddMinutes(15);
// DateTime dt0_29 = dt0_15.AddMinutes(14);
// dt0_29 = dt0_29.AddSeconds(59);
// if (oDailyAttnProcess.InTime >= dt0_15 && oDailyAttnProcess.InTime <= dt0_29)
// {
// tOutTime = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oShift.OutTime.Hour, oShift.OutTime.Minute, 0);
// tOutTime = tOutTime.AddMinutes(30);
// if (oDailyAttnProcess.OutTime < tOutTime)
// lateAttntype = EnumLateAttendanceType.Nine_15am_to_Nine_29am;
// }
// DateTime dt0_30 = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oShift.InTime.Hour, oShift.InTime.Minute, oShift.InTime.Second);
// dt0_30 = dt0_30.AddMinutes(30);
// DateTime dt01_59 = dt0_30.AddHours(1);
// dt01_59 = dt01_59.AddMinutes(29);
// dt01_59 = dt01_59.AddSeconds(59);
// if (oDailyAttnProcess.InTime >= dt0_30 && oDailyAttnProcess.InTime <= dt01_59)
// {
// lateAttntype = EnumLateAttendanceType.Nine_30am_to_Ten_59am;
// }
// DateTime dt02_00 = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oShift.InTime.Hour, oShift.InTime.Minute, oShift.InTime.Second);
// dt02_00 = dt02_00.AddHours(2);
// DateTime dt04_30 = dt02_00.AddHours(2);
// dt04_30 = dt04_30.AddMinutes(30);
// if (oDailyAttnProcess.InTime >= dt02_00 && oDailyAttnProcess.InTime <= dt04_30)
// {
// lateAttntype = EnumLateAttendanceType.Eleven_0am_to_One_30pm;
// }
// return lateAttntype;
//}
//public static ObjectsTemplate<DailyAttnProcess> LMRefreshObject(ID DailyAttnProcessID, EnumWFAttnStatus WFStatus)
//{
// ObjectsTemplate<Shift> _shifts = Shift.Get();
// DailyAttnProcess dailyAttnProcess = DailyAttnProcess.Get(DailyAttnProcessID);
// if (dailyAttnProcess == null)
// throw new CustomException(EnumExceptionType.Validation, "An Error Occurred From SubmitData dailyAttnProcess is empty");
// ObjectsTemplate<DailyAttnProcess> _daPocessForSave = new ObjectsTemplate<DailyAttnProcess>();
// dailyAttnProcess.WFStatus = WFStatus;
// if (WFStatus == EnumWFAttnStatus.LMApproved)
// {
// dailyAttnProcess.AttenType = dailyAttnProcess.EmpAttenType;
// dailyAttnProcess.InTime = dailyAttnProcess.EmpInTime;
// dailyAttnProcess.OutTime = dailyAttnProcess.EmpOutTime;
// dailyAttnProcess.LateAttendanceType = SetLateAttendanceType(dailyAttnProcess);
// }
// AttendanceWFHistory attnWFHistory = new AttendanceWFHistory();
// attnWFHistory.EmployeeID = dailyAttnProcess.EmployeeID;
// attnWFHistory.DailyAttnProcessID = dailyAttnProcess.ID;
// attnWFHistory.WFStatus = WFStatus;
// dailyAttnProcess.SalaryMonth = SystemInformation.CurrentSysInfo.NextPayProcessDate; //SystemInformation.GetSystemMonth(SystemInformation.CurrentSysInfo.PayrollTypeID.Integer);
// dailyAttnProcess.AttnWFHistory.Add(attnWFHistory);
// _daPocessForSave.Add(dailyAttnProcess);
// return _daPocessForSave;
//}
//public static ObjectsTemplate<DailyAttnProcess> RefreshObjectDailyAttnMobile(Employee emp, ID id, EnumAttendanceType attenType, string comment, DateTime InTime, DateTime OutTime, EnumWFAttnStatus attStatus,
// string ZipcodeInTime = null, string ZipcodeOutTime = null, decimal InTimeLatitude = 0, decimal OutTimeLatitude = 0, decimal InTimeLongitude = 0, decimal OutTimeLongitude = 0, string InTimeNearestAddress = null, string OutTimeNearestAddress = null)
//{
// DateTime tempDateTime = DateTime.MinValue;
// DailyAttnProcess daProcess = null;
// AttendanceWFHistory attnHistory = null;
// ObjectsTemplate<DailyAttnProcess> _dailyAttnProcesses = new ObjectsTemplate<DailyAttnProcess>();
// bool isChanged = false;
// EnumAttendanceType previousStatus;
// DateTime previousInTime = DateTime.MinValue;
// DateTime previousOutTime = DateTime.MinValue;
// isChanged = false;
// attnHistory = new AttendanceWFHistory();
// //previous code
// //ObjectsTemplate<DailyAttnProcess> oNotYetSubmittedAttnDatas = DailyAttnProcess.GetAttnDataByWFStatus(emp.ID.ToString(), EnumWFAttnStatus.None);
// //daProcess = oNotYetSubmittedAttnDatas.Where(o => o.ID == id).FirstOrDefault();
// //for optimization
// daProcess = DailyAttnProcess.Get(id);
// if (daProcess == null)
// throw new CustomException(EnumExceptionType.Error, "Attendance Data Not Found");
// previousInTime = daProcess.InTime;
// previousOutTime = daProcess.OutTime;
// if (daProcess.ActualInTime == DateTime.MinValue)
// daProcess.ActualInTime = daProcess.InTime;
// if (daProcess.ActualOutTime == DateTime.MinValue)
// daProcess.ActualOutTime = daProcess.OutTime;
// previousStatus = daProcess.AttenType;
// attnHistory.EmployeeID = daProcess.EmployeeID;
// attnHistory.DailyAttnProcessID = daProcess.ID;
// daProcess.IsManualEntry = true;
// if ((int)attenType != 0)
// {
// daProcess.EmpAttenType = attenType;
// attnHistory.AttandanceStatus = attenType;
// if (previousStatus != attenType)
// isChanged = true;
// }
// //RadNumericTextBox txtBoxApprovedOT = (RadNumericTextBox)gridItem.FindControl("numActualOT");
// //if (txtBoxApprovedOT.Text != string.Empty)
// //{
// // daProcess.ApprovedOTHour = Convert.ToDouble(txtBoxApprovedOT.Text);
// // daProcess.OtRemarks = daProcess.ApprovedOTHour.ToString();
// // attnHistory.OTHour = daProcess.ApprovedOTHour;
// // isChanged = true;
// //}
// if (comment != string.Empty)
// {
// daProcess.Comments = comment;
// attnHistory.Remarks = daProcess.Comments;
// isChanged = true;
// }
// if (InTime != null)
// {
// if (InTime != DateTime.MinValue)
// {
// tempDateTime = InTime;
// daProcess.EmpInTime = new DateTime(daProcess.AttnDate.Year, daProcess.AttnDate.Month, daProcess.AttnDate.Day, tempDateTime.Hour, tempDateTime.Minute, tempDateTime.Second);
// }
// }
// if (OutTime != null)
// {
// if (OutTime != DateTime.MinValue)
// {
// tempDateTime = OutTime;
// daProcess.EmpOutTime = new DateTime(daProcess.AttnDate.Year, daProcess.AttnDate.Month, daProcess.AttnDate.Day, tempDateTime.Hour, tempDateTime.Minute, tempDateTime.Second); ;
// }
// }
// if (previousInTime != daProcess.InTime)
// isChanged = true;
// if (previousOutTime != daProcess.OutTime)
// isChanged = true;
// if (isChanged == true)
// {
// attnHistory.WFStatus = attStatus;
// }
// else
// {
// attnHistory.WFStatus = EnumWFAttnStatus.NotApplicable;
// daProcess.WFStatus = EnumWFAttnStatus.NotApplicable;
// }
// daProcess.ZipcodeInTime = ZipcodeInTime == null ? string.Empty : ZipcodeInTime;
// daProcess.ZipcodeOutTime = ZipcodeOutTime == null ? string.Empty : ZipcodeOutTime;
// daProcess.InTimeLatitude = InTimeLatitude;
// daProcess.OutTimeLatitude = OutTimeLatitude;
// daProcess.InTimeLongitude = InTimeLongitude;
// daProcess.OutTimeLongitude = OutTimeLongitude;
// daProcess.InTimeNearestAddress = InTimeNearestAddress == null ? string.Empty : InTimeNearestAddress;
// daProcess.OutTimeNearestAddress = OutTimeNearestAddress == null ? string.Empty : OutTimeNearestAddress;
// daProcess.WFStatus = attStatus;
// daProcess.AttnWFHistory.Add(attnHistory);
// _dailyAttnProcesses.Add(daProcess);
// return _dailyAttnProcesses;
//}
//public static void SaveAutoForLmApproved(ObjectsTemplate<DailyAttnProcess> dailyattProcesses, ObjectsTemplate<AttnMonthlyBenefit> oAtnMonthlyBenifits, AttnProcessRunSummary oAttnRunSummary, TransactionContext tc)
//{
// foreach (DailyAttnProcess dAttnProcess in dailyattProcesses)
// {
// dAttnProcess.SetAuditTrailProperties();
// }
// DailyAttnProcess.Service.SaveAutoForLmApproved(dailyattProcesses, oAtnMonthlyBenifits, oAttnRunSummary, tc);
//}
//public static ObjectsTemplate<DailyAttnProcess> GetManualProcess(DateTime attnDate, int payrollType)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["GetManualProcess", attnDate] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.GetManualProcess(attnDate, payrollType);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "GetManualProcess", attnDate);
// #endregion
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> Get(DateTime attnDate, int payrollType)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", attnDate] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.Get(attnDate, payrollType);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get", attnDate);
// #endregion
// return dailyAttnProcesses;
//}
//public static DateTime GetLastProcessDate(int payrollType)
//{
// DateTime lastProcessDate = DateTime.MinValue;
// try
// {
// lastProcessDate = DailyAttnProcess.Service.GetLastProcessDate(payrollType);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return lastProcessDate;
//}
//public void ValidateObject()
//{
// if (EmpRequestAttenType == EnumAttendanceType.None)
// throw new CustomException(EnumExceptionType.Error, "Please select a status other than None.");
// if (EmpRequestAttenType == EnumAttendanceType.Absent)
// throw new CustomException(EnumExceptionType.Error, "Please select a status other than Absent.");
// if (EmpRemarks == string.Empty)
// throw new CustomException(EnumExceptionType.Error, "Please write a remarks.");
// if (EmpRequestInTime == DateTime.MinValue)
// throw new CustomException(EnumExceptionType.Error, "InTime can not be empty.");
// if (EmpRequestOutTime == DateTime.MinValue)
// throw new CustomException(EnumExceptionType.Error, "OutTime can not be empty.");
// //if (GlobalFunctions.ApplyValidation(AttnDate))
// // throw new CustomException(EnumExceptionType.Error, "You can not apply for the previous month at this time while salary process is not completed yet");
//}
//public static DailyAttnProcess RefreshObject(DailyAttnProcess dAttProcess, string txtComments, ObjectsTemplate<EmployeeWorkPlanSetup> empWPGroups, DateTime inTime, DateTime outTime, int ddlStatus, int ddlShift)
//{
// DateTime tempDateTime = DateTime.MinValue;
// ObjectsTemplate<Shift> _shifts = Shift.Get();
// DateTime previousInTime = dAttProcess.InTime;
// DateTime previousOutTime = dAttProcess.OutTime;
// dAttProcess.EmpRemarks = txtComments;
// dAttProcess.ClaimWFStatus = EnumClaimWFStatus.EmpSubmitted;
// dAttProcess.EmpSubmitDate = DateTime.Now;
// ObjectsTemplate<ActingResponsibilitySetup> _tempraryShifts = ActingResponsibilitySetup.GetTemporaryShiftEmployee(dAttProcess.AttnDate);
// ActingResponsibilitySetup tempShiftEmployee = _tempraryShifts.Where(o => o.EmployeeID == dAttProcess.EmployeeID).FirstOrDefault();
// ObjectsTemplate<MonthlyWorkPlan> _monthlyWorkPlans = MonthlyWorkPlan.GetByDate(dAttProcess.AttnDate);
// MonthlyWorkPlan oMWPlan = null;
// if (tempShiftEmployee != null)
// oMWPlan = MonthlyWorkPlan.GetPlanwithEmployee(dAttProcess.AttnDate, dAttProcess.EmployeeID, empWPGroups, _monthlyWorkPlans, _tempraryShifts);
// else
// oMWPlan = MonthlyWorkPlan.GetPlanwithEmployee(dAttProcess.AttnDate, dAttProcess.EmployeeID, empWPGroups, _monthlyWorkPlans, null);
// if (inTime != DateTime.MinValue)
// {
// if (inTime != null)
// {
// tempDateTime = inTime;
// dAttProcess.EmpRequestInTime = new DateTime(dAttProcess.AttnDate.Year, dAttProcess.AttnDate.Month, dAttProcess.AttnDate.Day, tempDateTime.Hour, tempDateTime.Minute, tempDateTime.Second);
// }
// }
// if (outTime != DateTime.MinValue)
// {
// if (outTime != null)
// {
// tempDateTime = outTime;
// dAttProcess.EmpRequestOutTime = new DateTime(dAttProcess.AttnDate.Year, dAttProcess.AttnDate.Month, dAttProcess.AttnDate.Day, tempDateTime.Hour, tempDateTime.Minute, tempDateTime.Second); ;
// }
// }
// if (inTime != DateTime.MinValue)
// {
// dAttProcess.InTime = inTime;
// }
// if (outTime != DateTime.MinValue)
// {
// dAttProcess.OutTime = outTime;
// }
// EnumAttendanceType value;
// Shift sft = new Shift();
// if (ddlShift != -1)
// {
// sft = _shifts.Where(o => o.ID.Integer == Convert.ToInt32(ddlShift)).FirstOrDefault();
// dAttProcess.EmpRequestShiftID = sft == null ? Ease.CoreV35.Model.ID.FromInteger(0) : sft.ID;
// }
// if (dAttProcess.EmpRequestInTime != DateTime.MinValue && dAttProcess.EmpRequestOutTime != DateTime.MinValue && (previousInTime != dAttProcess.EmpRequestInTime) || (previousOutTime != dAttProcess.EmpRequestOutTime))
// {
// if (sft != null && sft.IsOverlapingDay)
// {
// if (dAttProcess.EmpRequestInTime > dAttProcess.EmpRequestOutTime)
// dAttProcess.EmpRequestOutTime = dAttProcess.EmpRequestOutTime.AddDays(1);
// }
// }
// if (oMWPlan != null && oMWPlan.Type == EnumWorkPlanDayType.WeeklyHoliday)
// dAttProcess.EmpRequestAttenType = EnumAttendanceType.WeeklyHoliday;
// else if (oMWPlan != null && oMWPlan.Type == EnumWorkPlanDayType.NationalHoliday)
// dAttProcess.EmpRequestAttenType = EnumAttendanceType.Holiday;
// else
// {
// if (ddlStatus != -1)
// {
// value = (EnumAttendanceType)Convert.ToInt32(ddlStatus);
// dAttProcess.EmpRequestAttenType = value;
// }
// }
// return dAttProcess;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetByStatus(ID empID, DateTime fromDate, DateTime toDate, string status)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["GetByStatus", empID, fromDate, toDate, status] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.GetByStatus(empID, fromDate, toDate, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "GetByStatus", empID, fromDate, toDate, status);
// #endregion
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> Get(string empID, DateTime fromDate, DateTime toDate, EnumClaimWFStatus status)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", empID, fromDate, toDate] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.Get(empID, fromDate, toDate, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get", empID, fromDate, toDate);
// #endregion
// return dailyAttnProcesses;
//}
//public static DataTable GetAttnData(ID employeeID, DateTime fromdate, DateTime toDate)
//{
// DataTable attnDataDT = null;
// try
// {
// attnDataDT = Service.GetAttnData(employeeID, fromdate, toDate);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return attnDataDT;
//}
//public static DataTable GetAttnData(ID employeeID, DateTime fromdate, DateTime toDate, string status)
//{
// DataTable attnDataDT = null;
// try
// {
// attnDataDT = Service.GetAttnData(employeeID, fromdate, toDate, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return attnDataDT;
//}
//public static DataTable GetTeamMembersAttnData(string sEmpID, DateTime fromdate, DateTime toDate, EnumClaimWFStatus empSubmitStatus)
//{
// DataTable attnDataDT = null;
// try
// {
// attnDataDT = Service.GetTeamMembersAttnData(sEmpID, fromdate, toDate, empSubmitStatus);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return attnDataDT;
//}
//public static DataTable GetTeamMembersAttnData(ID employeeID, DateTime fromdate, DateTime toDate, EnumClaimWFStatus empSubmitStatus)
//{
// DataTable attnDataDT = null;
// try
// {
// attnDataDT = Service.GetTeamMembersAttnData(employeeID, fromdate, toDate, empSubmitStatus);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return attnDataDT;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetBySalaryMonth(DateTime salaryMonth)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", salaryMonth] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.GetBySalaryMonth(salaryMonth, SystemInformation.CurrentSysInfo.PayrollTypeID.Integer);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get", salaryMonth);
// #endregion
// return dailyAttnProcesses;
//}
//public static void UpdateLateAttnBenefitStatus(ObjectsTemplate<DailyAttnProcess> dailyattProcesses)
//{
// DailyAttnProcess.Service.UpdateLateAttnBenefitStatus(dailyattProcesses);
//}
//public static DailyAttnProcess ProcessAttendanceForSingleEmployeeToday(Employee employee, GeoCoordinate coordinate, EnumAttendanceType attnType)
//{
// DailyAttnProcess attnProcess = new DailyAttnProcess();
// attnProcess.AttnDate = DateTime.Today;
// attnProcess.EmployeeID = employee.ID;
// attnProcess.IsManualEntry = true;
// attnProcess.EmpAttenType = attnType;
// attnProcess.AttenType = attnType;
// //attnProcess. = oDailyAttnProcessTmodel.AttenType;
// attnProcess.EmployeeID = employee.ID;
// attnProcess.WFStatus = EnumWFAttnStatus.EmpInTimeSubmitted;
// attnProcess.EmpInTime = DateTime.Now;
// //if (!coordinate.IsUnknown)
// //{
// // attnProcess.InTimeLatitude = (decimal)coordinate.Latitude;
// // attnProcess.InTimeLongitude = (decimal)coordinate.Longitude;
// //}
// //else
// //{
// // throw new CustomException(EnumExceptionType.Error, "Location has not been set");
// //}
// //attnProcess.InTimeLatitude = (decimal)23.7487;
// //attnProcess.InTimeLongitude = (decimal)90.3683;
// EmployeeWorkPlanSetup oEmpWorkplanSetup = EmployeeWorkPlanSetup.GetByEmpID(employee.ID);
// if (oEmpWorkplanSetup == null)
// {
// throw new CustomException(EnumExceptionType.Error, "Employee Not Assigned in work plan setup");
// }
// ObjectsTemplate<WorkPlanGroup> workPlanGroups = WorkPlanGroup.Get();
// WorkPlanGroup oEmpWPlanGroup = workPlanGroups.Where(o => o.ID.Integer == oEmpWorkplanSetup.WorkPlanGroupID.Integer)
// .Single();
// CalcullateWorkdayType(attnProcess, oEmpWorkplanSetup, oEmpWPlanGroup, employee, attnProcess.AttnDate);
// Shift oShift = CalculateShift(oEmpWPlanGroup, attnProcess, attnProcess.AttnDate, employee, oEmpWorkplanSetup);
// CalculateLateAttendance(attnProcess, oShift, attnProcess.AttnDate);
// return attnProcess;
//}
//private static void CalcullateWorkdayType(DailyAttnProcess attnProcess, EmployeeWorkPlanSetup oEmpWorkplan, WorkPlanGroup oEmpWPlanGroup, Employee emp, DateTime Attdate)
//{
// ObjectsTemplate<Shift> _shifts = Shift.Get();
// attnProcess.WorkDayType = EnumWorkPlanDayType.WorkingDay;
// AttnShiftWiseNationalHoliday attnShiftWiseHoliday = null;
// if (attnProcess.MonthlyWorkPlan != null)
// {
// attnProcess.WorkDayType = attnProcess.MonthlyWorkPlan.Type;
// // if (attnProcess.WorkDayType == EnumWorkPlanDayType.NationalHoliday) attnProcess.WorkDayType = EnumWorkPlanDayType.WorkingDay; // National holiday calaculated in bottom of function
// }
// else
// {
// if (oEmpWPlanGroup.WorkPlanGroupType != EnumWorkPlanGroupType.Triple_Shift_Auto)
// {
// if ((oEmpWPlanGroup.WeekEndOn != null && attnProcess.AttnDate.DayOfWeek == (DayOfWeek)oEmpWPlanGroup.WeekEndOn)
// || (oEmpWPlanGroup.WeekEndOn2 != null && attnProcess.AttnDate.DayOfWeek == (DayOfWeek)oEmpWPlanGroup.WeekEndOn2))
// {
// attnProcess.WorkDayType = EnumWorkPlanDayType.WeeklyHoliday;
// }
// }
// else
// {
// #region Counter clock
// if (oEmpWorkplan.WeekEndOn != null)
// {
// if (attnProcess.AttnDate.DayOfWeek == (DayOfWeek)oEmpWorkplan.WeekEndOn)
// attnProcess.WorkDayType = EnumWorkPlanDayType.WeeklyHoliday;
// }
// else
// {
// if (attnProcess.AttnDate >= oEmpWorkplan.StartDate)
// {
// int nShiftInterval = 7;
// TimeSpan st = attnProcess.AttnDate - oEmpWorkplan.StartDate;
// int dayCount = st.Days;
// int nCircleDay = (dayCount % nShiftInterval);
// if ((nShiftInterval - nCircleDay - 1) == 0 || (nShiftInterval - nCircleDay - 2) == 0)
// attnProcess.WorkDayType = EnumWorkPlanDayType.WeeklyHoliday;
// #region Do not Delete / 6 Day of Week
// //int nShiftInterval = 7;
// //TimeSpan st = attnProcess.AttnDate - oEmpWorkplan.StartDate;
// //int dayCount = st.Days;
// //int nCircleDay = (dayCount % nShiftInterval);
// //if ((nShiftInterval - nCircleDay - 1) == 0)
// //{
// // attnProcess.WorkDayType = EnumWorkPlanDayType.WeeklyHoliday;
// //}
// #endregion
// }
// }
// #endregion
// }
// }
// Employee employee = new Employee();
// employee = emp;
// ID workPlanGroupID = null;
// workPlanGroupID = oEmpWorkplan.WorkPlanGroupID;
// //ID shiftID = null;
// //if (attnProcess.TempShiftID == null)
// // shiftID = attnProcess.ShiftID;
// //else
// // shiftID = attnProcess.TempShiftID;
// DateTime oLastDate = GlobalFunctions.LastDateOfMonth(Attdate);
// DateTime oFirstDate = GlobalFunctions.FirstDateOfMonth(Attdate);
// ObjectsTemplate<AttnNationalHoliday> _AttNHolidays = AttnNationalHoliday.GetByMonth(oFirstDate, oLastDate);
// AttnNationalHoliday holiday = AttnNationalHoliday.GetHoliday(_AttNHolidays, Attdate, employee.LocationID, workPlanGroupID);
// if (attnProcess.WorkDayType == EnumWorkPlanDayType.NationalHoliday && holiday == null)
// throw new Exception("Attandance date is defined Holiday in Monthly Calender, but not found in Holiday calender");
// if (holiday != null)
// {
// attnProcess.WorkDayType = EnumWorkPlanDayType.NationalHoliday;
// attnProcess.ReferenceID = holiday.ID;
// attnProcess.Holiday = holiday;
// attnProcess.Reason = holiday.ID.ToString();
// }
// //if (attnProcess.WorkDayType == EnumWorkPlanDayType.NationalHoliday && holiday != null)
// //{
// // attnProcess.WorkDayType = EnumWorkPlanDayType.NationalHoliday;
// // attnProcess.ReferenceID = holiday.ID;
// // attnProcess.Holiday = holiday;
// // attnProcess.Reason = holiday.ID.ToString();
// //}
// if (attnProcess.WorkDayType == EnumWorkPlanDayType.WorkingDay && holiday != null && (holiday.HolidayType == HolidayType.Hartal || holiday.HolidayType == HolidayType.Other))
// {
// // attnProcess.WorkDayType = EnumWorkPlanDayType.HartalDay;
// if (holiday.AttnShiftWiseNationalHolidays.Count == 0)
// {
// attnProcess.ReferenceID = holiday.ID;
// attnProcess.Holiday = holiday;
// attnProcess.Reason = holiday.ID.ToString();
// }
// else
// {
// attnShiftWiseHoliday = holiday.AttnShiftWiseNationalHolidays.Where(o => o.WorkPlanGroupID == attnProcess.MonthlyWorkPlan.WorkPlanGroupID).FirstOrDefault();
// if (attnShiftWiseHoliday != null)
// {
// attnProcess.ReferenceID = holiday.ID;
// attnProcess.Holiday = holiday;
// attnProcess.Reason = holiday.ID.ToString();
// }
// }
// //Hortal Time Range Business Logic Start Here //Need to Debug
// //DateTime hortalFromTime = holiday.FromTime;
// //DateTime hortalToTime = holiday.ToTime;
// //DateTime shiftInTime = new DateTime(attnProcess.AttnDate.Year, attnProcess.AttnDate.Month, attnProcess.AttnDate.Day, attnProcess.Shift.InTime.Hour, attnProcess.Shift.InTime.Minute, attnProcess.Shift.InTime.Second);
// //DateTime shiftOutTime = DateTime.MinValue;
// //if (attnProcess.Shift.InTime.Hour > 16)
// // shiftOutTime = shiftInTime.AddDays(1);
// //else
// // shiftOutTime = shiftInTime;
// //shiftOutTime = new DateTime(shiftOutTime.Year, shiftOutTime.Month, shiftOutTime.Day, attnProcess.Shift.OutTime.Hour, attnProcess.Shift.OutTime.Minute, attnProcess.Shift.OutTime.Second);
// //if ((shiftInTime >= hortalFromTime && shiftInTime < hortalToTime) || (shiftOutTime > hortalFromTime && shiftOutTime <= hortalToTime))
// //{
// // // "Hortal";
// //}
// //else
// //{
// // // "No Hortal";
// //}
// //Hortal Time Range Business Logic End Here
// }
// //if (attnProcess.WorkDayType != EnumWorkPlanDayType.WeeklyHoliday)
// //{
// // if (_AttNHolidays.Count > 0)
// // oAttNHoliday = _AttNHolidays.Where(o => attnProcess.AttnDate.Date >= o.FromDate.Date && attnProcess.AttnDate.Date <= o.ToDate.Date).FirstOrDefault();
// // if (oAttNHoliday != null && oAttNHoliday.AttnNationalHolidayLocations.Count==0)
// // {
// // attnProcess.WorkDayType = EnumWorkPlanDayType.NationalHoliday;
// // attnProcess.ReferenceID = oAttNHoliday.ID;
// // attnProcess.Holiday = oAttNHoliday;
// // return;
// // }
// // if (oAttNHoliday != null && oAttNHoliday.AttnNationalHolidayLocations.Count > 0)
// // {
// // employee = new Employee();
// // employee = employees.Where(o => o.ID == attnProcess.EmployeeID).FirstOrDefault();
// // foreach (AttnNationalHolidayLocation anHoliday in oAttNHoliday.AttnNationalHolidayLocations)
// // {
// // if (anHoliday.LocationID == employee.LocationID)
// // {
// // attnProcess.WorkDayType = EnumWorkPlanDayType.NationalHoliday;
// // attnProcess.ReferenceID = oAttNHoliday.ID;
// // attnProcess.Holiday = oAttNHoliday;
// // }
// // else
// // {
// // attnProcess.WorkDayType = EnumWorkPlanDayType.WorkingDay;
// // }
// // }
// // }
// //}
//}
//private static void CalculateLateAttendance(DailyAttnProcess attnProcess, Shift oShift, DateTime Attdate)
//{
// if (attnProcess.WorkDayType == EnumWorkPlanDayType.WorkingDay && attnProcess.AttenType == EnumAttendanceType.Present)
// {
// CalcullateLateAttendanceType(attnProcess, oShift, Attdate);
// if (attnProcess.LateAttendanceType != EnumLateAttendanceType.NotApplicable)
// {
// attnProcess.IsLate = true;
// double _lateHour = 0;
// if (oShift != null)
// _lateHour = (attnProcess.InTime.TimeOfDay.Subtract(oShift.InTime.TimeOfDay).TotalMinutes) / 60;
// attnProcess.LateHour = _lateHour;
// }
// }
//}
//private static void CalcullateLateAttendanceType(DailyAttnProcess attnProcess, Shift oshift, DateTime Attdate)
//{
// int extraMinutes = 0;
// if (attnProcess.InTime == DateTime.MinValue || attnProcess.OutTime == DateTime.MinValue)
// {
// return;
// }
// DateTime tInTime = attnProcess.InTime;
// DateTime tOutTime = DateTime.MinValue;
// DateTime dt_0_hour_00_minutes = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oshift.InTime.Hour, oshift.InTime.Minute, oshift.InTime.Second);
// DateTime dt0_hour_14_minutes = dt_0_hour_00_minutes.AddMinutes(14).AddSeconds(59);
// if (attnProcess.InTime >= dt_0_hour_00_minutes && attnProcess.InTime <= dt0_hour_14_minutes)
// {
// extraMinutes = 15;
// tOutTime = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oshift.OutTime.Hour, oshift.OutTime.Minute, 0);
// tOutTime = tOutTime.AddMinutes(extraMinutes);
// if (attnProcess.OutTime < tOutTime)
// {
// attnProcess.LateAttendanceType = EnumLateAttendanceType.Nine_0am_to_Nine_14am;
// }
// }
// DateTime dt0_hours_15_minutes = dt_0_hour_00_minutes.AddMinutes(15);
// DateTime dt0_hours_29_minutes = dt_0_hour_00_minutes.AddMinutes(29).AddSeconds(59);
// if (attnProcess.InTime >= dt0_hours_15_minutes && attnProcess.InTime <= dt0_hours_29_minutes)
// {
// extraMinutes = 30;
// tOutTime = new DateTime(Attdate.Year, Attdate.Month, Attdate.Day, oshift.OutTime.Hour, oshift.OutTime.Minute, 0);
// tOutTime = tOutTime.AddMinutes(extraMinutes);
// if (attnProcess.OutTime < tOutTime)
// {
// attnProcess.LateAttendanceType = EnumLateAttendanceType.Nine_15am_to_Nine_29am;
// }
// }
// DateTime dt_0_hour_30_minutes = dt_0_hour_00_minutes.AddMinutes(30);
// DateTime dt_1_hour_59_minutes = dt_0_hour_00_minutes.AddHours(1).AddMinutes(59).AddSeconds(59);
// if (attnProcess.InTime >= dt_0_hour_30_minutes && attnProcess.InTime <= dt_1_hour_59_minutes)
// {
// attnProcess.LateAttendanceType = EnumLateAttendanceType.Nine_30am_to_Ten_59am;
// }
// DateTime dt_2hour_00_minutes = dt_0_hour_00_minutes.AddHours(2);
// DateTime dt_4_hour_30_minutes = dt_0_hour_00_minutes.AddHours(4).AddMinutes(30);
// if (attnProcess.InTime >= dt_2hour_00_minutes && attnProcess.InTime <= dt_4_hour_30_minutes)
// {
// attnProcess.LateAttendanceType = EnumLateAttendanceType.Eleven_0am_to_One_30pm;
// }
//}
//private static Shift CalculateShift(WorkPlanGroup oEmpWPlanGroup, DailyAttnProcess attnProcess, DateTime Attdate, Employee emp, EmployeeWorkPlanSetup oEmpWorkplanSetup)
//{
// #region Calculate Particular Shift Based On WorkPlan Group Type
// Shift oShift = null;
// ObjectsTemplate<MonthlyWorkPlan> monthlyWorkPlans = MonthlyWorkPlan.GetByDate(Attdate);
// ObjectsTemplate<ActingResponsibilitySetup> _tempraryShifts = new ObjectsTemplate<ActingResponsibilitySetup>();
// MonthlyWorkPlan mplan = null;
// ActingResponsibilitySetup tempShiftEmployee = null; //_tempraryShifts.Where(o => o.EmployeeID == attnProcess.EmployeeID).FirstOrDefault();
// ObjectsTemplate<Shift> shifts = Shift.Get();
// ObjectsTemplate<ShiftRotation> CounterClockRotation = ShiftRotation.Get(EnumWorkPlanGroupType.Fixed);
// ObjectsTemplate<ShiftRotation> CounterClock2Rotation = ShiftRotation.Get(EnumWorkPlanGroupType.Double_Shift_Fixed);
// ObjectsTemplate<ShiftRotation> CounterClock3Rotation = ShiftRotation.Get(EnumWorkPlanGroupType.Triple_Shift_Fixed);
// ObjectsTemplate<ShiftRotation> CounterClock4Rotation = ShiftRotation.Get(EnumWorkPlanGroupType.Triple_Shift_Auto);
// if (oEmpWPlanGroup.WorkPlanGroupType == EnumWorkPlanGroupType.Fixed || oEmpWPlanGroup.WorkPlanGroupType == EnumWorkPlanGroupType.Exception)
// {
// if (oEmpWPlanGroup.WorkPlanGroupType == EnumWorkPlanGroupType.Exception && attnProcess.MonthlyWorkPlan != null)
// {
// attnProcess.ShiftID = mplan.ShiftID;
// attnProcess.TempShiftID = null;
// if (tempShiftEmployee != null)
// {
// mplan = GetPlanwithEmployee(Attdate, emp.ID, oEmpWorkplanSetup, monthlyWorkPlans, _tempraryShifts);
// attnProcess.MonthlyWorkPlan = mplan;
// attnProcess.TempShiftID = mplan.ShiftID;
// }
// }
// else
// {
// switch (Attdate.DayOfWeek)
// {
// case DayOfWeek.Friday:
// attnProcess.ShiftID = oEmpWPlanGroup.FridayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.FridayShiftID.Value) : ID.FromInteger(0);
// break;
// case DayOfWeek.Monday:
// attnProcess.ShiftID = oEmpWPlanGroup.MondayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.MondayShiftID.Value) : ID.FromInteger(0);
// break;
// case DayOfWeek.Saturday:
// attnProcess.ShiftID = oEmpWPlanGroup.SaturdayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.SaturdayShiftID.Value) : ID.FromInteger(0);
// break;
// case DayOfWeek.Sunday:
// attnProcess.ShiftID = oEmpWPlanGroup.SundayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.SundayShiftID.Value) : ID.FromInteger(0);
// break;
// case DayOfWeek.Thursday:
// attnProcess.ShiftID = oEmpWPlanGroup.ThursdayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.ThursdayShiftID.Value) : ID.FromInteger(0);
// break;
// case DayOfWeek.Tuesday:
// attnProcess.ShiftID = oEmpWPlanGroup.TuesdayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.TuesdayShiftID.Value) : ID.FromInteger(0);
// break;
// case DayOfWeek.Wednesday:
// attnProcess.ShiftID = oEmpWPlanGroup.WednesdayShiftID.HasValue ? ID.FromInteger(oEmpWPlanGroup.WednesdayShiftID.Value) : ID.FromInteger(0);
// break;
// default:
// break;
// }
// }
// }
// else
// {
// if (attnProcess.MonthlyWorkPlan != null)
// {
// attnProcess.ShiftID = mplan.ShiftID;
// attnProcess.TempShiftID = null;
// if (tempShiftEmployee != null)
// {
// mplan = GetPlanwithEmployee(Attdate, emp.ID, oEmpWorkplanSetup, monthlyWorkPlans, _tempraryShifts);
// attnProcess.MonthlyWorkPlan = mplan;
// attnProcess.TempShiftID = mplan.ShiftID;
// }
// }
// else
// {
// ObjectsTemplate<ShiftRotation> osrs;
// if (oEmpWPlanGroup.WorkPlanGroupType == EnumWorkPlanGroupType.Double_Shift_Fixed)
// osrs = CounterClock2Rotation;
// else if (oEmpWPlanGroup.WorkPlanGroupType == EnumWorkPlanGroupType.Triple_Shift_Fixed)
// osrs = CounterClock3Rotation;
// else if (oEmpWPlanGroup.WorkPlanGroupType == EnumWorkPlanGroupType.Triple_Shift_Auto)
// osrs = CounterClock4Rotation;
// else osrs = CounterClockRotation;
// foreach (ShiftRotation sr in osrs)
// {
// Shift oshift = shifts.Where(o => o.ID.Integer == sr.ShiftID.Integer)
// .Single();
// DateTime shiftInTime = Attdate.Subtract(Attdate.TimeOfDay).Add(oshift.InTime.TimeOfDay);
// attnProcess.ShiftID = sr.ShiftID;
// }
// }
// }
// if (attnProcess.TempShiftID == null)
// {
// oShift = shifts.GetItem(attnProcess.ShiftID);
// }
// else
// {
// oShift = shifts.GetItem(attnProcess.TempShiftID);
// }
// #endregion
// return oShift;
//}
//private static MonthlyWorkPlan GetPlanwithEmployee(DateTime EffectDate, ID employeeid, EmployeeWorkPlanSetup plans, ObjectsTemplate<MonthlyWorkPlan> MworkPlans, ObjectsTemplate<ActingResponsibilitySetup> temporaryShiftEmps)
//{
// MonthlyWorkPlan dPlan = null;
// if (temporaryShiftEmps == null)
// {
// EmployeeWorkPlanSetup workGroup = plans;
// if (workGroup != null)
// {
// dPlan = MworkPlans.FirstOrDefault(x => x.WorkPlanGroupID.Integer == workGroup.WorkPlanGroupID.Integer && x.WorkDate == EffectDate);
// dPlan.EmployeeID = employeeid.Integer;
// }
// }
// else
// {
// ActingResponsibilitySetup tempShift = temporaryShiftEmps.FirstOrDefault(x => x.EmployeeID.Integer == employeeid.Integer && x.GradeID == null);
// if (tempShift != null)
// {
// dPlan = MworkPlans.FirstOrDefault(x => x.WorkPlanGroupID.Integer == tempShift.WorkPlanGroupID.Integer && x.WorkDate == EffectDate);
// dPlan.EmployeeID = employeeid.Integer;
// }
// }
// return dPlan;
//}
//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 DailyAttnProcess Get(int empId, DateTime attnDate)
//{
// DailyAttnProcess oDailyAttnProcess = null;
// #region Cache Header
// oDailyAttnProcess = (DailyAttnProcess)_cache["Get", empId];
// if (oDailyAttnProcess != null)
// return oDailyAttnProcess;
// #endregion
// oDailyAttnProcess = DailyAttnProcess.Service.Get(empId, attnDate);
// #region Cache Footer
// _cache.Add(oDailyAttnProcess, "Get", empId);
// #endregion
// return oDailyAttnProcess;
//}
//public static ObjectsTemplate<DailyAttnProcess> Get()
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get"] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.Get();
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get");
// #endregion
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetByEmployeeID(ID employeeID)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get"] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.GetByEmployeeID(employeeID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get");
// #endregion
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetEmpMonthlySchedule(DateTime fromDate, DateTime toDate, EnumWorkPlanGroup _workGroup)
//{
// ObjectsTemplate<EmployeeWorkPlanSetup> empWorkPlanSetups = EmployeeWorkPlanSetup.Get(_workGroup);
// ObjectsTemplate<DailyAttnProcess> dailyattProcesses = new ObjectsTemplate<DailyAttnProcess>();
// ObjectsTemplate<ShiftRotation> shiftRotations = ShiftRotation.Get(_workGroup);
// DailyAttnProcess daProcess = new DailyAttnProcess();
// foreach (EmployeeWorkPlanSetup esetup in empWorkPlanSetups)
// {
// TimeSpan timeInterval = esetup.StartDate - toDate;
// int ti = timeInterval.Days;
// DateTime empStartDate = esetup.StartDate;
// for (DateTime startdate = empStartDate; startdate <= toDate; startdate = startdate.AddDays(1))
// {
// TimeSpan timespan = startdate - empStartDate;
// int tSpan = timespan.Days;
// daProcess = new DailyAttnProcess();
// daProcess.EmployeeID = esetup.EmployeeID;
// daProcess.AttnDate = startdate;
// if (tSpan >= 0 && tSpan < 8)
// {
// daProcess.ShiftID = esetup.ShiftID;
// }
// if (tSpan >= 8 && tSpan < 16)
// {
// shiftRotations[1].ShiftID = esetup.ShiftID;
// }
// if (tSpan >= 16 && tSpan < 24)
// {
// shiftRotations[2].ShiftID = esetup.ShiftID;
// if (tSpan == 23)
// {
// empStartDate.AddDays(24);
// }
// }
// int nShiftInterval = 8;
// TimeSpan st = startdate - empStartDate;
// int dayCount = st.Days;
// int nCircleDay = (dayCount % nShiftInterval);
// if ((nShiftInterval - nCircleDay - 1) == 0 || (nShiftInterval - nCircleDay - 2) == 0)
// {
// daProcess.WorkDayType = EnumWorkPlanDayType.WeeklyHoliday;
// }
// dailyattProcesses.Add(daProcess);
// }
// }
// return dailyattProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetProcessByWPG(EnumWorkPlanGroup wpg, DateTime attnDate)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["GetProcessByWPG", wpg, attnDate] as ObjectsTemplate<DailyAttnProcess>;
// 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<DailyAttnProcess> Get(DateTime attnDate)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", attnDate] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.Get(attnDate, SystemInformation.CurrentSysInfo.PayrollTypeID.Integer);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get", attnDate);
// #endregion
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> Get(DateTime attnDate, string empids)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", attnDate] as ObjectsTemplate<DailyAttnProcess>;
// if (dailyAttnProcesses != null)
// return dailyAttnProcesses;
// #endregion
// try
// {
// dailyAttnProcesses = Service.Get(attnDate, empids, SystemInformation.CurrentSysInfo.PayrollTypeID.Integer);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(dailyAttnProcesses, "Get", attnDate);
// #endregion
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetManualProcess(DateTime attnDate)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["GetManualProcess", attnDate] as ObjectsTemplate<DailyAttnProcess>;
// 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<DailyAttnProcess> Get(ID empID, DateTime fromDate, DateTime toDate)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", empID, fromDate, toDate] as ObjectsTemplate<DailyAttnProcess>;
// 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<DailyAttnProcess> Get(string empID, DateTime fromDate, DateTime toDate)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", empID, fromDate, toDate] as ObjectsTemplate<DailyAttnProcess>;
// 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<DailyAttnProcess> Get(DateTime fromDate, DateTime toDate)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", fromDate, toDate] as ObjectsTemplate<DailyAttnProcess>;
// 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<DailyAttnProcess> Get(DateTime attnDate, ID shiftID, EnumAttendanceType attnType)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["Get", attnDate, shiftID, attnType] as ObjectsTemplate<DailyAttnProcess>;
// 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 static int GetAttnDataByWFStatusCount(DateTime fromdate, DateTime toDate, EnumWFAttnStatus status)
//{
// try
// {
// return Service.GetAttnDataByWFStatusCount(fromdate, toDate, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
//}
//public ID Save()
//{
// this.SetAuditTrailProperties();
// return DailyAttnProcess.Service.Save(this);
//}
//public static void Save(ObjectsTemplate<DailyAttnProcess> dAttnProcessess)
//{
// foreach (DailyAttnProcess dAttnProcess in dAttnProcessess)
// {
// dAttnProcess.SetAuditTrailProperties();
// }
// DailyAttnProcess.Service.Save(dAttnProcessess);
//}
//public static void Save(ObjectsTemplate<DailyAttnProcess> dAttnProcessess, bool IscounterClock)
//{
// foreach (DailyAttnProcess dAttnProcess in dAttnProcessess)
// {
// dAttnProcess.SetAuditTrailProperties();
// }
// DailyAttnProcess.Service.Save(dAttnProcessess, IscounterClock);
//}
//public static void Save(ObjectsTemplate<DailyAttnProcess> dAttnProcessess, ObjectsTemplate<AttnMonthlyBenefit> attnMonthlyBenefits, bool IscounterClock)
//{
// foreach (DailyAttnProcess dAttnProcess in dAttnProcessess)
// {
// dAttnProcess.SetAuditTrailProperties();
// }
// DailyAttnProcess.Service.Save(dAttnProcessess, attnMonthlyBenefits, IscounterClock);
//}
//public static void SaveAuto(ObjectsTemplate<DailyAttnProcess> dailyattProcesses, ObjectsTemplate<AttnMonthlyBenefit> oAtnMonthlyBenifits, AttnProcessRunSummary oAttnRunSummary)
//{
// foreach (DailyAttnProcess dAttnProcess in dailyattProcesses)
// {
// dAttnProcess.SetAuditTrailProperties();
// }
// DailyAttnProcess.Service.SaveAuto(dailyattProcesses, oAtnMonthlyBenifits, oAttnRunSummary);
//}
//public static void SaveForBridgeHoliday(ObjectsTemplate<DailyAttnProcess> dailyattProcesses, ObjectsTemplate<LeaveEntry> oLeaveEntrys)
//{
// foreach (DailyAttnProcess dAttnProcess in dailyattProcesses)
// {
// dAttnProcess.SetAuditTrailProperties();
// }
// DailyAttnProcess.Service.SaveForBridgeHoliday(dailyattProcesses, oLeaveEntrys);
//}
////new
//public static ObjectsTemplate<DailyAttnProcess> GetWhrOutTimeIsNull(DateTime attnDate, ID shiftID)
//{
// #region Cache Header
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = _cache["GetWhrOutTimeIsNull", attnDate, shiftID] as ObjectsTemplate<DailyAttnProcess>;
// 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;
//}
////
//#region Process
///*
//public void Process(DateTime Attdate)
//{
// //making date time
// try
// {
// DateTime fromDate = Attdate.Subtract(Attdate.TimeOfDay).Subtract(new TimeSpan(2, 0, 0));
// DateTime toDate = Attdate.AddDays(1).Subtract(Attdate.TimeOfDay).Add(new TimeSpan(12, 0, 0));
// ////for test
// //Employee E = Employee.Get(ID.FromInteger(4364));
// //ObjectsTemplate<Employee> employees = new ObjectsTemplate<Employee>();
// //employees.Add(E);
// //ObjectsTemplate<Employee> employees = Employee.GetByEmpIDs("4364");
// //////
// ObjectsTemplate<Employee> employees = Employee.Get();
// ObjectsTemplate<AttnRawData> attRawdatas = AttnRawData.Get(fromDate, toDate);// get raw data by a date and order by date, employee, punchTime
// ObjectsTemplate<DailyAttnProcess> dailyattProcesses = new ObjectsTemplate<DailyAttnProcess>();
// ObjectsTemplate<EmployeeOutsideDuty> outSideDuties = EmployeeOutsideDuty.Get(Attdate); // get transaction by the a rate
// ObjectsTemplate<MonthlyWorkPlan> monthlyWorkPlans = MonthlyWorkPlan.Get(Attdate); // get workplans by the date
// ObjectsTemplate<LeaveEntry> leaves = LeaveEntry.Get(Attdate); // workplans by the date
// ObjectsTemplate<BuyerSetup> buyers = BuyerSetup.Get();
// ObjectsTemplate<BuyerDailyAttProcess> bDailyattProcesses = new ObjectsTemplate<BuyerDailyAttProcess>();
// ObjectsTemplate<Shift> shifts = Shift.Get();
// ObjectsTemplate<WorkPlanGroup> workPlanGroups = WorkPlanGroup.Get();
// #region Process
// foreach (Employee emp in employees)
// {
// if (monthlyWorkPlans == null || monthlyWorkPlans.Count == 0)
// {
// //MessageBox.Show("Please Set up Monthly work plan", "Monthly work plan", MessageBoxButtons.OK, MessageBoxIcon.Information);
// return;
// }
// DailyAttnProcess attnProcess = new DailyAttnProcess();
// attnProcess.AttnDate = Attdate;
// attnProcess.EmployeeID = emp.ID;
// attnProcess.IsManualEntry = false;
// _lateHour = 0;
// _earlyHour = 0;
// _oTHour = 0;
// MonthlyWorkPlan empMonthlyWorkPlan = null;
// List<AttnRawData> empAttnDatas = null;
// EmployeeOutsideDuty empOutsideDuty = null;
// LeaveEntry empLeaveEntry = null;
// if (attRawdatas != null && attRawdatas.Count > 0)
// {
// var attnDatas = from AttnRawData item in attRawdatas
// where item.EmployeeID == emp.ID
// select item;
// if (attnDatas.ToList().Count > 0)
// {
// empAttnDatas = attnDatas.ToList();
// }
// }
// if (outSideDuties != null && outSideDuties.Count > 0)
// {
// var outSideDuty = from EmployeeOutsideDuty item in outSideDuties
// where item.EmployeeID == emp.ID
// select item;
// if (outSideDuty.ToList().Count > 0)
// {
// empOutsideDuty = outSideDuty.FirstOrDefault();
// }
// }
// if (leaves != null && leaves.Count > 0)
// {
// var leave = from LeaveEntry item in leaves
// where item.EmpID == emp.ID.Integer
// select item;
// if (leave.ToList().Count > 0)
// {
// empLeaveEntry = leave.FirstOrDefault();
// }
// }
// if (monthlyWorkPlans != null && monthlyWorkPlans.Count > 0)
// {
// empMonthlyWorkPlan = monthlyWorkPlans.Find(delegate(MonthlyWorkPlan item)
// { return item.EmployeeID == emp.ID && item.WorkDate.ToString("dd MMM yyyy") == Attdate.ToString("dd MMM yyyy"); });
// if (empMonthlyWorkPlan != null)
// {
// if (!empMonthlyWorkPlan.ShiftID.IsUnassigned)
// {
// attnProcess.ShiftID = empMonthlyWorkPlan.ShiftID;
// }
// if (!empMonthlyWorkPlan.HolidayID.IsUnassigned)
// {
// attnProcess.ReferenceID = empMonthlyWorkPlan.HolidayID;
// }
// }
// else
// {
// continue;
// }
// }
// if (empAttnDatas != null && attnProcess.ShiftID.Integer != 0)
// {
// Shift oshift = shifts.GetItem(attnProcess.ShiftID);
// DateTime shiftIntimeStart = Attdate.Subtract(Attdate.TimeOfDay).AddHours(oshift.InTime.Hour).AddMinutes(oshift.InTime.Minute).Subtract(new TimeSpan(2, 0, 0));
// DateTime shiftIntimeEnd = Attdate.Subtract(Attdate.TimeOfDay).AddHours(oshift.InTime.Hour).AddMinutes(oshift.InTime.Minute).Add(new TimeSpan(4, 0, 0));
// DateTime shiftOutTimeEnd = DateTime.MinValue;
// if (oshift.InTime > oshift.OutTime)
// {
// shiftOutTimeEnd = Attdate.AddDays(1).Subtract(Attdate.TimeOfDay).AddHours(oshift.OutTime.Hour).AddMinutes(oshift.OutTime.Minute).Add(new TimeSpan(6, 0, 0));
// }
// else
// {
// shiftOutTimeEnd = Attdate.Subtract(Attdate.TimeOfDay).AddHours(oshift.OutTime.Hour).AddMinutes(oshift.OutTime.Minute).Add(new TimeSpan(6, 0, 0));
// }
// bool inTime = false;
// foreach (AttnRawData attndata in empAttnDatas)
// {
// if (inTime == false && attndata.PunchTime >= shiftIntimeStart && attndata.PunchTime <= shiftIntimeEnd)
// {
// attnProcess.InTime = attndata.PunchTime;
// inTime = true;
// }
// if (inTime == true && attndata.PunchTime > shiftIntimeEnd && attndata.PunchTime <= shiftOutTimeEnd)
// {
// attnProcess.OutTime = attndata.PunchTime;
// }
// //if (inTime == true && attnProcess.OutTime == DateTime.MinValue)
// //{
// // if (oshift.InTime > oshift.OutTime)
// // {
// // attnProcess.OutTime = Attdate.AddDays(1).Subtract(Attdate.TimeOfDay).AddHours(oshift.OutTime.Hour).AddMinutes(oshift.OutTime.Minute);
// // }
// // else
// // {
// // attnProcess.OutTime = Attdate.Subtract(Attdate.TimeOfDay).AddHours(oshift.OutTime.Hour).AddMinutes(oshift.OutTime.Minute);
// // }
// //}
// }
// //attnProcess.InTime = empAttnDatas[0].PunchTime;
// //attnProcess.OutTime = empAttnDatas[empAttnDatas.Count - 1].PunchTime;
// if (attnProcess.InTime != DateTime.MinValue && !attnProcess.ShiftID.IsUnassigned && attnProcess.ShiftID.Integer != 0)
// {
// attnProcess.AttenType = GetAttnType(attnProcess.InTime, attnProcess.OutTime, oshift, Attdate, empMonthlyWorkPlan);
// if (emp.IsEligibleOT)
// {
// attnProcess.LateHour = _lateHour;
// attnProcess.EarlyHour = _earlyHour;
// attnProcess.OTHour = _oTHour;
// }
// }
// else if (!attnProcess.ReferenceID.IsUnassigned && attnProcess.ReferenceID.Integer != 0)
// {
// attnProcess.AttenType = EnumAttendanceType.Holiday;
// }
// }
// if (attnProcess.InTime == DateTime.MinValue)
// {
// if (empOutsideDuty != null)
// {
// attnProcess.AttenType = EnumAttendanceType.OutSideDuty;
// attnProcess.ReferenceID = empOutsideDuty.ID;
// }
// else if (empLeaveEntry != null)
// {
// attnProcess.AttenType = EnumAttendanceType.Leave;
// attnProcess.ReferenceID = empLeaveEntry.ID;
// }
// else if (empMonthlyWorkPlan != null && empMonthlyWorkPlan.Type != EnumWorkPlanDayType.WorkingDay)
// {
// if (empMonthlyWorkPlan.Type == EnumWorkPlanDayType.NationalHoliday)
// {
// attnProcess.AttenType = EnumAttendanceType.Holiday;
// }
// else if (empMonthlyWorkPlan.Type == EnumWorkPlanDayType.WeeklyHoliday)
// {
// attnProcess.AttenType = EnumAttendanceType.WeeklyHoliday;
// }
// }
// else
// {
// attnProcess.AttenType = EnumAttendanceType.Absent;
// }
// }
// dailyattProcesses.Add(attnProcess);
// #region BuyerWise Process
// foreach (BuyerSetup buyerSetup in buyers)
// {
// BuyerDailyAttProcess bDailyAttnProcess = new BuyerDailyAttProcess();
// bDailyAttnProcess.BuyerID = buyerSetup.ID;
// bDailyAttnProcess.AttnDate = attnProcess.AttnDate;
// bDailyAttnProcess.Comments = attnProcess.Comments;
// bDailyAttnProcess.EmployeeID = attnProcess.EmployeeID;
// bDailyAttnProcess.IsManualEntry = attnProcess.IsManualEntry;
// bDailyAttnProcess.ShiftID = attnProcess.ShiftID;
// bDailyAttnProcess.AttenType = attnProcess.AttenType;
// if (empMonthlyWorkPlan != null && empMonthlyWorkPlan.Type != EnumWorkPlanDayType.WorkingDay)
// {
// bDailyAttnProcess.ReferenceID = attnProcess.ReferenceID;
// bDailyAttnProcess.LateHour = 0;
// bDailyAttnProcess.EarlyHour = 0;
// WorkPlanGroup workPlanGroup = workPlanGroups.GetItem(empMonthlyWorkPlan.WorkPlanGroupID);
// if (buyerSetup.IsHolidayOTAllowed && workPlanGroup.Type != EnumWorkPlanGroup.CounterClock)
// {
// bDailyAttnProcess.InTime = attnProcess.InTime;
// if (attnProcess.OTHour > buyerSetup.MaxHolidayOTHour)
// {
// bDailyAttnProcess.OTHour = buyerSetup.MaxHolidayOTHour;
// bDailyAttnProcess.OutTime = attnProcess.InTime.AddHours(buyerSetup.MaxHolidayOTHour);
// }
// else
// {
// bDailyAttnProcess.OTHour = attnProcess.OTHour;
// bDailyAttnProcess.OutTime = attnProcess.InTime.AddHours(bDailyAttnProcess.OTHour);
// }
// }
// else
// {
// bDailyAttnProcess.OTHour = 0;
// }
// }
// else
// {
// // in Counter Clock wise shift there should be no OTHour and in & out time should be shift In & out Time
// Shift oShift = attnProcess.Shift;
// WorkPlanGroup workPlanGroup = workPlanGroups.GetItem(empMonthlyWorkPlan.WorkPlanGroupID);
// //there are some fixed type employee whose OT should not be Calculated
// if (attnProcess.InTime != DateTime.MinValue && (workPlanGroup.Type == EnumWorkPlanGroup.CounterClock || empMonthlyWorkPlan.WorkPlanGroupID.Integer == 4))
// {
// int rand = 0;
// Random rd = new Random();
// rand = rd.Next(0, 15);
// bDailyAttnProcess.InTime = Attdate.Subtract(Attdate.TimeOfDay).Add(attnProcess.Shift.InTime.TimeOfDay).AddMinutes(Convert.ToDouble(rand));
// rand = rd.Next(0, 15);
// if (oShift.InTime > oShift.OutTime)
// {
// bDailyAttnProcess.OutTime = Attdate.AddDays(1).Subtract(Attdate.TimeOfDay).Add(attnProcess.Shift.OutTime.TimeOfDay).AddMinutes(Convert.ToDouble(rand));
// }
// else
// {
// bDailyAttnProcess.OutTime = Attdate.Subtract(Attdate.TimeOfDay).Add(attnProcess.Shift.OutTime.TimeOfDay).AddMinutes(Convert.ToDouble(rand));
// }
// bDailyAttnProcess.ReferenceID = attnProcess.ReferenceID;
// bDailyAttnProcess.EarlyHour = 0;
// bDailyAttnProcess.LateHour = 0;
// bDailyAttnProcess.OTHour = 0;
// bDailyAttnProcess.AttenType = EnumAttendanceType.Present;
// }
// else
// {
// bDailyAttnProcess.InTime = attnProcess.InTime;
// bDailyAttnProcess.ReferenceID = attnProcess.ReferenceID;
// bDailyAttnProcess.LateHour = attnProcess.LateHour;
// bDailyAttnProcess.EarlyHour = attnProcess.EarlyHour;
// bDailyAttnProcess.OTHour = GetOTHourForBuyer(buyerSetup, attnProcess.OTHour);
// if (bDailyAttnProcess.OTHour > 0)
// {
// int rand = 0;
// Random rd = new Random();
// rand = rd.Next(0, 15);
// if (oShift.InTime > oShift.OutTime)
// {
// bDailyAttnProcess.OutTime = Attdate.AddDays(1).Subtract(Attdate.TimeOfDay).Add(oShift.OutTime.TimeOfDay).AddHours(bDailyAttnProcess.OTHour).AddMinutes(Convert.ToDouble(rand));
// }
// else
// {
// bDailyAttnProcess.OutTime = Attdate.Subtract(Attdate.TimeOfDay).Add(oShift.OutTime.TimeOfDay).AddHours(bDailyAttnProcess.OTHour).AddMinutes(Convert.ToDouble(rand));
// }
// }
// else
// {
// bDailyAttnProcess.OutTime = attnProcess.OutTime;
// }
// }
// }
// //if (bDailyAttnProcess.AttenType == EnumAttendanceType.Present || bDailyAttnProcess.AttenType == EnumAttendanceType.Delay || bDailyAttnProcess.AttenType == EnumAttendanceType.Late)
// //{
// // if (attnProcess.Shift == null)
// // {
// // attnProcess.ShiftID = defaultShift.ID;
// // }
// // bDailyAttnProcess.OutTime = attnProcess.Shift.OutTime.Add(TimeSpan.FromHours(bDailyAttnProcess.OTHour));
// //}
// //else
// //{
// // bDailyAttnProcess.OutTime = attnProcess.OutTime;
// //}
// bDailyattProcesses.Add(bDailyAttnProcess);
// }
// }
// if (dailyattProcesses.Count == 0)
// {
// return;
// }
// #endregion
// DailyAttnProcess.Save(dailyattProcesses);
// BuyerDailyAttProcess.Save(bDailyattProcesses);
// #endregion
// }
// catch (Exception e)
// {
// throw new ServiceException(e.Message, e);
// }
//}
//public EnumAttendanceType GetAttnType(DateTime empInTime, DateTime empOutTime, Shift shift, DateTime attnDate, MonthlyWorkPlan empMonthlyWorkPlan)
//{
// EnumAttendanceType attntype = EnumAttendanceType.Present;
// DateTime shiftInTime = attnDate.Subtract(attnDate.TimeOfDay).Add(shift.InTime.TimeOfDay);
// DateTime shiftOutTime = DateTime.MinValue;
// DateTime shiftOutTimeWithMinimumOT = DateTime.MinValue;
// if (shift.InTime <= shift.OutTime)
// {
// shiftOutTime = attnDate.Subtract(attnDate.TimeOfDay).Add(shift.OutTime.TimeOfDay);
// shiftOutTimeWithMinimumOT = attnDate.Subtract(attnDate.TimeOfDay).Add(shift.OutTime.TimeOfDay).AddMinutes(shift.MinimumOTHour);
// }
// else
// {
// shiftOutTime = attnDate.AddDays(1).Subtract(attnDate.TimeOfDay).Add(shift.OutTime.TimeOfDay);
// shiftOutTimeWithMinimumOT = attnDate.AddDays(1).Subtract(attnDate.TimeOfDay).Add(shift.OutTime.TimeOfDay).AddMinutes(shift.MinimumOTHour);
// }
// DateTime shiftInTimeWithLatehour = attnDate.Subtract(attnDate.TimeOfDay).Add(shift.InTime.TimeOfDay).AddMinutes(shift.LateCalcualtion);
// if (empMonthlyWorkPlan.Type != EnumWorkPlanDayType.WorkingDay)
// {
// TimeSpan OTHour = empOutTime.Subtract(empInTime);
// _oTHour = Convert.ToDouble(OTHour.Hours) + (Convert.ToDouble(OTHour.Minutes) >= Convert.ToDouble(shift.MinimumOTHour) ? 1 : 0);
// //For Launch break
// if (_oTHour > 6)
// {
// _oTHour = _oTHour - 1;
// }
// if (empMonthlyWorkPlan.Type == EnumWorkPlanDayType.NationalHoliday)
// {
// attntype = EnumAttendanceType.Holiday;
// }
// else if (empMonthlyWorkPlan.Type == EnumWorkPlanDayType.WeeklyHoliday)
// {
// attntype = EnumAttendanceType.WeeklyHoliday;
// }
// }
// else
// {
// //if (empInTime >= shiftInTimeWithLatehour)
// //{
// // TimeSpan lateHour = empInTime.Subtract(shiftInTime);
// // _lateHour = Convert.ToDouble(lateHour.Hours + "." + lateHour.Minutes.ToString("d2"));
// // attntype = EnumAttendanceType.Late;
// //}
// if (empOutTime > shiftOutTimeWithMinimumOT)
// {
// TimeSpan OTHour = empOutTime.Subtract(shiftOutTime);
// _oTHour = Convert.ToDouble(OTHour.Hours) + (Convert.ToDouble(OTHour.Minutes) >= Convert.ToDouble(shift.MinimumOTHour) ? 1 : 0);
// }
// }
// return attntype;
//}
//private double GetOTHourForBuyer(BuyerSetup buyerSetup, double totalOTHour)
//{
// double OTHour = totalOTHour;
// double AssignedOTHour = 0;
// if (buyerSetup.IsHolidayOTAllowed)
// {
// AssignedOTHour = Math.Round((buyerSetup.AcceptHour - (buyerSetup.MaxHolidayOTHour * buyerSetup.MaxHDInMonth)) / 26);
// }
// else
// {
// AssignedOTHour = Math.Round(buyerSetup.AcceptHour / 26);//maximum OT Hour for each day
// }
// if (OTHour > AssignedOTHour)
// {
// //double rand = 0;
// //Random rd = new Random();
// //rand = Convert.ToDouble(rd.Next(0, 15));
// //OTHour = AssignedOTHour - rand / 10;
// OTHour = AssignedOTHour;
// }
// return OTHour;
//}
// */
//#endregion
//public void Delete()
//{
// DailyAttnProcess.Service.Delete(ID);
//}
//public static string GetShortAttnWFStatus(EnumWFAttnStatus attnWFStatus)
//{
// string wFStatus = string.Empty;
// switch (attnWFStatus)
// {
// case EnumWFAttnStatus.None:
// wFStatus = "Not Yet Submitted";
// break;
// case EnumWFAttnStatus.EmpSubmitted:
// wFStatus = "Employee Submitted";
// break;
// case EnumWFAttnStatus.LMApproved:
// wFStatus = "LM Approved";
// break;
// case EnumWFAttnStatus.DHApproved:
// wFStatus = "DH Approved";
// break;
// case EnumWFAttnStatus.HRApproved:
// wFStatus = "HR Approved";
// break;
// case EnumWFAttnStatus.NotApplicable:
// wFStatus = "Not Applicable";
// break;
// case EnumWFAttnStatus.Rejected:
// wFStatus = "Rejected";
// break;
// }
// return wFStatus;
//}
//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 GetLastProcessDate(ID employeeID)
//{
// DateTime lastProcessDate = DateTime.MinValue;
// try
// {
// lastProcessDate = DailyAttnProcess.Service.GetLastProcessDate(employeeID);
// }
// 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 GetMonthlyOverTime(DateTime dFromDate, DateTime dToDate, EnumWorkPlanDayType wpType)
//{
// DataSet monthlyAttn = null;
// try
// {
// monthlyAttn = Service.GetMonthlyOverTime(dFromDate, dToDate, wpType);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return monthlyAttn;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetAttnDataByWFStatus(DateTime fromDate, DateTime toDate, string sEmpID, EnumWFAttnStatus status)
//{
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = null;
// try
// {
// dailyAttnProcesses = Service.GetAttnDataByWFStatus(fromDate, toDate, sEmpID, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyAttnProcesses;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetAttnDataByWFStatus(string sEmpID, EnumWFAttnStatus status)
//{
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = null;
// try
// {
// dailyAttnProcesses = Service.GetAttnDataByWFStatus(sEmpID, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyAttnProcesses;
//}
//public static int GetAttnDataByWFStatusCount(string sEmpID, EnumWFAttnStatus status)
//{
// try
// {
// return Service.GetAttnDataByWFStatusCount(sEmpID, status);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
//}
//public static ObjectsTemplate<DailyAttnProcess> GetAttnSubmittedData(string sEmpID, bool isCurrentMonth)
//{
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = null;
// try
// {
// dailyAttnProcesses = Service.GetAttnSubmittedData(sEmpID, isCurrentMonth);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyAttnProcesses;
//}
//public static DataSet GetAttnSubmittedData(string sEmpIDs, EnumWFAttnStatus status, bool isCurrentMonth)
//{
// DataSet oDataSet = null;
// try
// {
// oDataSet = Service.GetAttnSubmittedData(sEmpIDs, status, isCurrentMonth);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return oDataSet;
//}
//public static DataSet GetAttnSubmittedData(string sEmpIDs, EnumWFAttnStatus status, DateTime fromDate, DateTime toDate)
//{
// DataSet oDataSet = null;
// try
// {
// oDataSet = Service.GetAttnSubmittedData(sEmpIDs, status, fromDate, toDate);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return oDataSet;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetAttnSubmittedData(string sEmpID, DateTime FromDate, DateTime toDate)
//{
// ObjectsTemplate<DailyAttnProcess> dailyAttnProcesses = null;
// try
// {
// dailyAttnProcesses = Service.GetAttnSubmittedData(sEmpID, FromDate, toDate);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyAttnProcesses;
//}
//public static DataSet GetAttnApprovedData(string sEmpID, EnumWFAttnStatus status, DateTime FromDate, DateTime toDate)
//{
// DataSet oDataSet = null;
// try
// {
// oDataSet = Service.GetAttnApprovedData(sEmpID, status, FromDate, toDate);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return oDataSet;
//}
//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 GetLMDailyAttnReport(DateTime attndate, string sEmpID)
//{
// DataSet lmAttnReport = null;
// try
// {
// lmAttnReport = Service.GetLMDailyAttnReport(attndate, sEmpID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return lmAttnReport;
//}
//public static DataSet GetTimeSheetAttnReport(DateTime fromDate, DateTime toDate, int sEmpID)
//{
// DataSet timeSheetAttnReport = null;
// try
// {
// timeSheetAttnReport = Service.GetTimeSheetAttnReport(fromDate, toDate, sEmpID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return timeSheetAttnReport;
//}
//public static DataSet GetPersonalInfoForDailyAttnReport(int sEmpID)
//{
// DataSet lmAttnReport = null;
// try
// {
// lmAttnReport = Service.GetPersonalInfoForDailyAttnReport(sEmpID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return lmAttnReport;
//}
//public static DataSet GetPersonalInfoForTimeSheet(int sEmpID)
//{
// DataSet prsnlInfo = null;
// try
// {
// prsnlInfo = Service.GetPersonalInfoForTimeSheet(sEmpID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return prsnlInfo;
//}
//public static DataSet GetDailyInOut(DateTime fromDate, DateTime toDate, string sEmpID)
//{
// DataSet dailyInOut = null;
// try
// {
// dailyInOut = Service.GetDailyInOut(fromDate, toDate, sEmpID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyInOut;
//}
//public static DataSet GetDailyAbsent(DateTime fromDate, DateTime toDate, string sEmpID, EnumAttendanceType status)
//{
// DataSet dailyAbsent = null;
// try
// {
// dailyAbsent = Service.GetDailyAbsent(fromDate, toDate, sEmpID, status, SystemInformation.CurrentSysInfo.PayrollTypeID.Integer);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return dailyAbsent;
//}
//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 GetDailyDataByStatus(DateTime fromDate, DateTime toDate, 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(fromDate, toDate, 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;
//}
////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 DataSet GetAllNecessaryDataForDailyAttnProcess(DateTime attnDate, DateTime fromTime, DateTime toTime, EnumWorkPlanGroupType wpGroupType)
//{
// DataSet requiredAttnDatas = null;
// try
// {
// requiredAttnDatas = Service.GetAllNecessaryDataForDailyAttnProcess(attnDate, fromTime, toTime, wpGroupType, SystemInformation.CurrentSysInfo.PayrollTypeID.Integer);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return requiredAttnDatas;
//}
//public static ObjectsTemplate<DailyAttnProcess> GetEmployeesFirstAttendances(string employeeIDs)
//{
// ObjectsTemplate<DailyAttnProcess> 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 DailyAttnProcess RefreshObjectDailyAttnMobile(Employee emp, ID id, EnumAttendanceType attenType, string comment, DateTime InTime, DateTime OutTime, EnumWFAttnStatus attStatus,
//// string ZipcodeInTime = null, string ZipcodeOutTime = null, decimal InTimeLatitude = 0, decimal OutTimeLatitude = 0, decimal InTimeLongitude = 0, decimal OutTimeLongitude = 0, string InTimeNearestAddress = null, string OutTimeNearestAddress = null)
////{
//// DateTime tempDateTime = DateTime.MinValue;
//// DailyAttnProcess daProcess = null;
//// AttendanceWFHistory attnHistory = null;
//// bool isChanged = false;
//// EnumAttendanceType previousStatus;
//// DateTime previousInTime = DateTime.MinValue;
//// DateTime previousOutTime = DateTime.MinValue;
//// isChanged = false;
//// attnHistory = new AttendanceWFHistory();
//// //previous code
//// //ObjectsTemplate<DailyAttnProcess> oNotYetSubmittedAttnDatas = DailyAttnProcess.GetAttnDataByWFStatus(emp.ID.ToString(), EnumWFAttnStatus.None);
//// //daProcess = oNotYetSubmittedAttnDatas.Where(o => o.ID == id).FirstOrDefault();
//// //for optimization
//// //daProcess = DailyAttnProcess.Get(id);
//// daProcess = DailyAttnProcess.Get(emp.ID.Integer, DateTime.Today);
//// if (daProcess == null)
//// throw new CustomException(EnumExceptionType.Error, "Attendance Data Not Found");
//// previousInTime = daProcess.InTime;
//// previousOutTime = daProcess.OutTime;
//// if (daProcess.ActualInTime == DateTime.MinValue)
//// daProcess.ActualInTime = daProcess.InTime;
//// if (daProcess.ActualOutTime == DateTime.MinValue)
//// daProcess.ActualOutTime = daProcess.OutTime;
//// previousStatus = daProcess.AttenType;
//// attnHistory.EmployeeID = daProcess.EmployeeID;
//// attnHistory.DailyAttnProcessID = daProcess.ID;
//// daProcess.IsManualEntry = true;
//// if ((int)attenType != 0)
//// {
//// daProcess.EmpAttenType = attenType;
//// attnHistory.AttandanceStatus = attenType;
//// if (previousStatus != attenType)
//// isChanged = true;
//// }
//// //RadNumericTextBox txtBoxApprovedOT = (RadNumericTextBox)gridItem.FindControl("numActualOT");
//// //if (txtBoxApprovedOT.Text != string.Empty)
//// //{
//// // daProcess.ApprovedOTHour = Convert.ToDouble(txtBoxApprovedOT.Text);
//// // daProcess.OtRemarks = daProcess.ApprovedOTHour.ToString();
//// // attnHistory.OTHour = daProcess.ApprovedOTHour;
//// // isChanged = true;
//// //}
//// if (comment != string.Empty)
//// {
//// daProcess.Comments = comment;
//// attnHistory.Remarks = daProcess.Comments;
//// isChanged = true;
//// }
//// if (InTime != null && InTime != DateTime.MinValue)
//// {
//// daProcess.InTime = InTime;
//// }
//// if (OutTime != null && OutTime != DateTime.MinValue)
//// {
//// daProcess.OutTime = OutTime;
//// }
//// if (previousInTime != daProcess.InTime)
//// isChanged = true;
//// if (previousOutTime != daProcess.OutTime)
//// isChanged = true;
//// if (isChanged == true)
//// {
//// attnHistory.WFStatus = attStatus;
//// }
//// else
//// {
//// attnHistory.WFStatus = EnumWFAttnStatus.NotApplicable;
//// daProcess.WFStatus = EnumWFAttnStatus.NotApplicable;
//// }
//// daProcess.ZipcodeInTime = ZipcodeInTime == null ? string.Empty : ZipcodeInTime;
//// daProcess.ZipcodeOutTime = ZipcodeOutTime == null ? string.Empty : ZipcodeOutTime;
//// daProcess.InTimeLatitude = InTimeLatitude;
//// daProcess.OutTimeLatitude = OutTimeLatitude;
//// daProcess.InTimeLongitude = InTimeLongitude;
//// daProcess.OutTimeLongitude = OutTimeLongitude;
//// daProcess.InTimeNearestAddress = InTimeNearestAddress == null ? string.Empty : InTimeNearestAddress;
//// daProcess.OutTimeNearestAddress = OutTimeNearestAddress == null ? string.Empty : OutTimeNearestAddress;
//// daProcess.WFStatus = attStatus;
//// daProcess.AttnWFHistory.Add(attnHistory);
//// return daProcess;
////}
//public static ObjectsTemplate<DailyAttnProcess> Get(ID empID, ID shiftID, DateTime fromdate, DateTime todate, EnumAttendanceType enumAttendanceType)
//{
// ObjectsTemplate<DailyAttnProcess> odAttnProcesses = null;
// try
// {
// odAttnProcesses = Service.Get(empID, shiftID, fromdate, todate, enumAttendanceType);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return odAttnProcesses;
//}
//public static DataSet GetDailyAttndanceBenefitDataFromVB(DateTime AttnDate)
//{
// return DailyAttnProcess.Service.GetDailyAttndanceBenefitDataFromVB(AttnDate);
//}
//public static DataSet GetMonthlyAttndanceBenefitDataFromVB(int Year, int Month)
//{
// return DailyAttnProcess.Service.GetMonthlyAttndanceBenefitDataFromVB(Year, Month);
//}
//#endregion
#endregion
public string ObjectDescription
{
get
{
string str = "";
str = this.EmployeeID + " has checked in and checked out at " + this.AttnDate.ToString("DD MM YYYY");
return str;
}
}
public int SetupID { get; set; }
public int ObjectID { get; set; }
public string ZipcodeInTime { get; set; }
public string ZipcodeOutTime { get; set; }
public int LocationID { get; set; }
public DateTime SalaryMonth { get; set; }
public static string getWFstatusDescription(EnumWFAttnStatus type)
{
string str = "";
if (type == EnumWFAttnStatus.EmpSubmitted)
{
str = "Submitted";
}
else if (type == EnumWFAttnStatus.LMApproved)
{
str = "Approved";
}
else if (type == EnumWFAttnStatus.Reject)
{
str = "Rejected";
}
else str = "";
return str;
}
}
#endregion
#region IDailyAttnProcess Service
public class attnProcessRequest
{
public DateTime fromDate { get; set; }
public DateTime ToDate { get; set; }
public int? employeeID { get; set; }
}
public interface IDailyAttnProcessService
{
List<DailyAttnProcess> GetByEmployeeID(int employeeID);
DataSet GetEarnedLeaveOpening(int employeeID, int leaveid, DateTime fromDate, DateTime toDate);
JobCardReport GetMonthJobCardByEmployeeId(int employeeID, DateTime fromDate, DateTime toDate, int payrollTypeId);
public List<DailyAttnByStatusReport> GetDailyDataByStatusReport(DateTime attnDate, string sStatus, string sEmpID);
public List<DailyAttnByStatusReport> GetDataByStatusReport(DateTime fromDate, DateTime todate, string sStatus, string sEmpID);
public List<DailyAttnByStatusReport> GetDateRangeWiseDataByStatusReport(DateTime fromDate, DateTime toDate, string sStatus, string sEmpID);
public List<DailyAttnByStatusReport> GetDailyOddDataByStatusReport(DateTime attnDate, string sEmpID);
public List<DailyAttnByStatusReport> GetDateWiseAttnRecords(DateTime attnDate, string sEmpID);
List<DailyAttnProcess> GetAttnDataByWFStatus(DateTime fromDate, DateTime toDate, string sEmpID,
EnumWFAttnStatus status);
List<DailyAttnProcess> getMyNotSubmittedAbsentList(int employeeid);
DateTime GetLastProcessDateByEmpId(int employeeID);
List<DailyAttnProcess> GetAttnSubmittedData(string sEmpID, DateTime FromDate, DateTime toDate);
DataSet GetAttnSubmittedData(string sEmpIDs, DateTime nextPayProcessDate, EnumWFAttnStatus status, bool isCurrentMonth);
List<DailyAttnProcess> GetAttnSubmittedData(string sEmpID, bool isCurrentMonth);
List<DailyAttnProcess> GetAttnDataByWFStatus(string sEmpID, EnumWFAttnStatus status);
int GetAttnDataByWFStatusCount(string empID, EnumWFAttnStatus status);
DailyAttnProcess Get(int id);
DailyAttnProcess Get(int empId, DateTime attnDate);
List<DailyAttnMailSenderReport> AttendanceDataForMailSchedular(DateTime fromDate, DateTime toDate, EnumAttendanceType attnType, int payrollTypeid);
List<DailyAttnProcess> GetProcessByWPG(EnumWorkPlanGroup wpg, DateTime attnDate);
List<DailyAttnProcess> Get(DateTime attnDate, int payrollTypeID);
List<DailyAttnProcess> GetManualProcess(DateTime attnDate);
List<DailyAttnProcess> Get(int empID, DateTime fromDate, DateTime toDate);
List<DailyAttnProcess> Get(string empID, DateTime fromDate, DateTime toDate);
List<DailyAttnProcess> Get(DateTime fromDate, DateTime toDate);
List<DailyAttnProcess> Get(DateTime attnDate, int shiftID, EnumAttendanceType attnType);
//new
DailyAttnProcess GetDailyEmployeeAbsent(int nID, DateTime dateTime);
List<DailyAttnProcess> GetWhrOutTimeIsNull(DateTime attnDate, int shiftID);
List<DailyAttnProcess> GetEmployeesFirstAttendances(string employeeIDs);
DateTime GetLastProcessDate();
//
List<DailyAttnProcess> Get(int empID, int shiftID, DateTime fromdate, DateTime todate,
EnumAttendanceType enumAttendanceType);
List<DailyAttnProcess> Get(DateTime attnDate, string empids, int payrollTypeID);
int GetAttnDataByWFStatusCount(DateTime fromdate, DateTime toDate, EnumWFAttnStatus status);
DataSet GetMonthlyKPIDetail(DateTime dFromDate, DateTime dToDate, string sEmpID, EnumAttendanceType eAttnType);
List<DailyAttnProcess> GetBySalaryMonth(DateTime salaryMonth, int payrollTypeID);
List<DailyAttnProcess> GetByStatus(int empID, DateTime fromDate, DateTime toDate, string status);
List<DailyAttnProcess> Get(string empID, DateTime fromDate, DateTime toDate, EnumClaimWFStatus status);
DateTime GetLastProcessDate(int payrollType);
List<DailyAttnProcess> GetManualProcess(DateTime attnDate, int payrollType);
DailyAttnProcess GetAttnDataByWFStatus(int dailyAttnProcessID, EnumWFAttnStatus status);
//int Save(DailyAttnProcess item);
//void Save(List<DailyAttnProcess> _dAttnProcessess, bool IscounterClock);
//void Save(List<DailyAttnProcess> dAttnProcessess);
void Save(List<DailyAttnProcess> dAttnProcessess, List<AttnMonthlyBenefit> attnMonthlyBenefits);
void ManualEditSave(List<DailyAttnProcess> oDAttnProcessess, int payrolltypeid, int userid, List<DailyAttendanceAllowance> attnMonthlyBenefit);
void SendRegularizationApplicationMail(DailyAttnProcess dAttnProcessess, EmailSettings emailSettings);
void SendRegularizationApprovalMail(DailyAttnProcess dAttnProcessess, EmailSettings emailSettings);
void Delete(int id);
// void UpdateLeave(int employeeID, int leaveID, DateTime leavaDate, int n);
//void SaveForBridgeHoliday(List<DailyAttnProcess> dailyattProcesses, List<LeaveEntry> oLeaveEntrys);
//void SaveAutoForLmApproved(List<DailyAttnProcess> dailyattProcesses,
// List<AttnMonthlyBenefit> oAtnMonthlyBenifits, AttnProcessRunSummary oAttnRunSummary);
//void SaveAuto(List<DailyAttnProcess> dailyattProcesses, List<AttnMonthlyBenefit> oAtnMonthlyBenifits,
// AttnProcessRunSummary oAttnRunSummary);
int GetAttnDataByWFStatusCountForMobile(int sEmpID, EnumWFAttnStatus status);
void RejectAttnStatusByLM(int EmpID, DateTime attnDate, int linemanagerID, string remarks, string reason);
void ApproveAttnByLM(DailyAttnProcess item);
//List<DailyAttnProcess> CheckOutFixedPosition(int attnID, string comment,
// decimal OutTimeLatitude, decimal OutTimeLongitude, int locationID, EnumIsFromMobile IsFromMobile, string OutTimeNearestAddress);
DailyAttnProcess GetAttnDataForMobile(int empId, DateTime attnDate);
DailyAttnProcess GetAttnDataForMobileWithNoLock(int empId, DateTime attnDate);
List<DailyAttnProcess> GetRegularizableAttn(int EmpID, DateTime fromDate, DateTime toDate);
List<DailyAttnProcess> GetAttnForStatement(int EmpID, DateTime fromDate, DateTime toDate);
List<DailyAttnProcess> GetAttnForStatementWithNoLock(int EmpID, DateTime fromDate, DateTime toDate);
List<DailyAttnProcess> GetByLMID(int LMID, DateTime AttnDate);
List<DailyAttnProcess> GetByLMIDMobileWithNoLock(int LMID, DateTime AttnDate);
List<DailyAttnProcess> RefreshObject(Employee emp, int id, string ddlSelectedValue, string comment, DateTime InTime, DateTime OutTime);
//List<DailyAttnProcess> RefreshObjectDailyAttnMobile(int EmployeeID, int id, EnumAttendanceType attenType, string comment, DateTime InTime, DateTime OutTime, EnumWFAttnStatus attStatus,
// string ZipcodeInTime = null, string ZipcodeOutTime = null, decimal InTimeLatitude = 0, decimal OutTimeLatitude = 0, decimal InTimeLongitude = 0, decimal OutTimeLongitude = 0, string InTimeNearestAddress = null, string OutTimeNearestAddress = null,
// int locationID = 0, EnumIsFromMobile IsFromMobile = EnumIsFromMobile.None);
DataSet GetAttnShiftAndWorkDatType(int EmployeeID, DateTime AttnDate);
DataSet GetAttnShiftAndWorkDatTypeMobileWithNoLock(int EmployeeID, DateTime AttnDate);
DataTable GetTypeWiseAttnCount(string empID, DateTime fromDate, DateTime toDate, params EnumAttendanceType[] attnType);
DataTable getMyTeamNotApprovedList(int lineManagerID);
DataTable getMyTeamAbsentAndLeaveList(int lineManagerID, DateTime fromDate, DateTime toDate);
DataTable GetAttendanceDashboard(Employee employee);
DataTable getTopEmpAbsentData(Employee oEmp, EnumAttendanceType type);
DataTable getcorehrAbsentData(Employee oEmp, EnumAttendanceType type);
DataSet AttnDaysSummaryForSalaryProcess(DateTime FromDate, DateTime ToDate);
}
#endregion
#region DTO
public class JobCardReport
{
public string EmployeeNo { get; set; }
public string EmpName { get; set; }
public string Designation { get; set; }
public string Department { get; set; }
public string JoiningDate { get; set; }
public string FromDate { get; set; }
public string ToDate { get; set; }
public string PresentDays { get; set; }
public string AbsentDays { get; set; }
public string LateDays { get; set; }
public string LeaveDays { get; set; }
public string WeeklyHolidays { get; set; }
public string OSDDays { get; set; }
public string FestivalHolidays { get; set; }
public string WorkingDays { get; set; }
public string PresentInholidays { get; set; }
public string TotalLateHour { get; set; }
public string TotalOTHour { get; set; }
public List<JobCardReportDetails> JobCardReportDetails { get; set; }
public JobCardReport()
{
JobCardReportDetails = new List<JobCardReportDetails>();
}
}
public class JobCardReportDetails
{
public string Date { get; set; }
public string Day { get; set; }
public string InTime { get; set; }
public string OutTime { get; set; }
public string LateBy { get; set; }
public string WorkingHour { get; set; }
public string OTHour { get; set; }
public string Status { get; set; }
public string Shift { get; set; }
public string Remarks { get; set; }
public string Reason { get; set; }
}
public class DailyAttnByStatusReport
{
public string AttendanceDate { get; set; }
public string EmployeeNo { get; set; }
public string EmpName { get; set; }
public string Designation { get; set; }
public string Department { get; set; }
public string Shift { get; set; }
public string InTime { get; set; }
public string OutTime { get; set; }
public string Time { get; set; }
public string Status { get; set; }
public string StatusFull { get; set; }
public string OTHour { get; set; }
}
public class AttendanceRegularizationDTO
{
public int DailyAttnProcessID { get; set; }
public string AttendanceDate { get; set; }
public string Shift { get; set; }
public DateTime? InTime { get; set; }
public DateTime? OutTime { get; set; }
public double lateHour { get; set; }
public double otHour { get; set; }
public double earlyHour { get; set; }
public double workHour { get; set; }
public bool IsLate { get; set; }
public DateTime? ActualInTime { get; set; }
public DateTime? ActualOutTime { get; set; }
public EnumWFAttnStatus WFStatus { get; set; }
public string WFStatusDescription { get; set; }
public EnumAttendanceType Status { get; set; }
public string StatusDescription { get; set; }
public string Comments { get; set; }
public string LMRemarks { get; set; }
public string empRemarks { get; set; }
public int ReferenceId { get; set; }
public string Reference { get; set; }
}
public class DailyAttnMailSenderReport : AuditTrailBase
{
public int DailyAttnProcessID { get; set; }
public int EmployeeId { get; set; }
public string EmployeeNo { get; set; }
public string Name { get; set; }
public string Designation { get; set; }
public string Department { get; set; }
public DateTime AttnDate { get; set; }
public string Day { get; set; }
public DateTime InTime { get; set; }
public DateTime OutTime { get; set; }
public string AttnType { get; set; }
public string NotPresentType { get; set; }
public string LineManagerNo { get; set; }
public string LineManagerName { get; set; }
public string TotalWorkingHour { get; set; }
public string LateCount { get; set; }
}
#endregion
}