using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ease.CoreV35.Caching; using Ease.CoreV35.Model; using System.Data; namespace Payroll.BO { #region MonthlyWorkPlan [Serializable] public class MonthlyWorkPlan : AuditTrailBase { #region Cache Store private static Cache _cache = new Cache(typeof(MonthlyWorkPlan)); #endregion #region Constructor public MonthlyWorkPlan() { _employeeID = null; _workDate = DateTime.MinValue; _shiftID = null; _holidayID = null; _employee = null; _workPlanGroupID = null; _type = EnumWorkPlanDayType.WorkingDay; } #endregion #region Properties #region employeeID : ID private ID _employeeID; public ID EmployeeID { get { return _employeeID; } set { base.OnPropertyChange("employeeID", _employeeID, value); _employeeID = value; } } #endregion #region workDate : DateTime private DateTime _workDate; public DateTime WorkDate { get { return _workDate; } set { base.OnPropertyChange("workDate", _workDate, value); _workDate = value; } } #endregion #region shiftID : ID private ID _shiftID; public ID ShiftID { get { return _shiftID; } set { base.OnPropertyChange("shiftID", _shiftID, value); _shiftID = value; } } #endregion #region holidayID : ID private ID _holidayID; public ID HolidayID { get { return _holidayID; } set { base.OnPropertyChange("holidayID", _holidayID, value); _holidayID = value; } } #endregion #region Type : EnumWorkPlanDayType private EnumWorkPlanDayType _type; public EnumWorkPlanDayType Type { get { return _type; } set { base.OnPropertyChange("Type", (short)_type, (short)value); _type = value; } } #endregion #region employee : Employee private Employee _employee; public Employee Employee { get { if (_employeeID.Integer > 0 && _employee == null) { _employee = new Employee(); _employee = Employee.Get(_employeeID); } return this._employee; } set { _employee = value; } } #endregion #region Shift : Shift private Shift _shift; public Shift Shift { get { if (_shiftID.Integer > 0 && _shift == null) { _shift = new Shift(); _shift = Shift.Get(_shiftID); } return this._shift; } set { _shift = value; } } #endregion #region WorkPlanGroupID : ID private ID _workPlanGroupID; public ID WorkPlanGroupID { get { return _workPlanGroupID; } set { base.OnPropertyChange("WorkPlanGroupID", _workPlanGroupID, value); _workPlanGroupID = value; } } #endregion #region WorkPlanGroup : WorkPlanGroup private WorkPlanGroup _workPlanGroup; public WorkPlanGroup WorkPlanGroup { get { if (_workPlanGroupID.Integer > 0 && _workPlanGroup == null) { _workPlanGroup = new WorkPlanGroup(); _workPlanGroup = WorkPlanGroup.Get(_workPlanGroupID); } return this._workPlanGroup; } set { _workPlanGroup = value; } } #endregion #region Service Factory IMonthlyWorkPlanService : IMonthlyWorkPlanService internal static IMonthlyWorkPlanService Service { get { return Services.Factory.CreateService(typeof(IMonthlyWorkPlanService)); } } #endregion #endregion #region Functions public static MonthlyWorkPlan Get(ID nID) { MonthlyWorkPlan oMonthlyWorkPlan = null; #region Cache Header oMonthlyWorkPlan = (MonthlyWorkPlan)_cache["Get", nID]; if (oMonthlyWorkPlan != null) return oMonthlyWorkPlan; #endregion oMonthlyWorkPlan = MonthlyWorkPlan.Service.Get(nID); #region Cache Footer _cache.Add(oMonthlyWorkPlan, "Get", nID); #endregion return oMonthlyWorkPlan; } public static MonthlyWorkPlan GetByEmpID(ID nEmpID, DateTime assDate, EnumWorkPlanGroup type) { MonthlyWorkPlan oMonthlyWorkPlan = null; #region Cache Header oMonthlyWorkPlan = (MonthlyWorkPlan)_cache["GetByEmpID", nEmpID, assDate, type]; if (oMonthlyWorkPlan != null) return oMonthlyWorkPlan; #endregion oMonthlyWorkPlan = MonthlyWorkPlan.Service.GetByEmpID(nEmpID, assDate, type); #region Cache Footer _cache.Add(oMonthlyWorkPlan, "GetByEmpID", nEmpID, assDate, type); #endregion return oMonthlyWorkPlan; } public static MonthlyWorkPlan GetByEmpID(ID nEmpID, DateTime workDate) { MonthlyWorkPlan oMonthlyWorkPlan = null; #region Cache Header oMonthlyWorkPlan = (MonthlyWorkPlan)_cache["GetByEmpID", nEmpID, workDate]; if (oMonthlyWorkPlan != null) return oMonthlyWorkPlan; #endregion oMonthlyWorkPlan = MonthlyWorkPlan.Service.GetByEmpID(nEmpID, workDate); #region Cache Footer _cache.Add(oMonthlyWorkPlan, "GetByEmpID", nEmpID, workDate); #endregion return oMonthlyWorkPlan; } public static ObjectsTemplate Get() { #region Cache Header ObjectsTemplate monthlyWorkPlans = _cache["Get"] as ObjectsTemplate; if (monthlyWorkPlans != null) return monthlyWorkPlans; #endregion try { monthlyWorkPlans = Service.Get(); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(monthlyWorkPlans, "Get"); #endregion return monthlyWorkPlans; } public static ObjectsTemplate Get(DateTime attnDate) { #region Cache Header ObjectsTemplate monthlyWorkPlans = _cache["Get", attnDate] as ObjectsTemplate; if (monthlyWorkPlans != null) return monthlyWorkPlans; #endregion try { monthlyWorkPlans = Service.Get(attnDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(monthlyWorkPlans, "Get", attnDate); #endregion return monthlyWorkPlans; } public static ObjectsTemplate GetByType(EnumWorkPlanGroup type) { #region Cache Header ObjectsTemplate monthlyWorkPlans = _cache["GetByType", type] as ObjectsTemplate; if (monthlyWorkPlans != null) return monthlyWorkPlans; #endregion try { monthlyWorkPlans = Service.GetByType(type); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(monthlyWorkPlans, "GetByType"); #endregion return monthlyWorkPlans; } public static ObjectsTemplate GetByDateAndWPGType(DateTime dAssDate, EnumWorkPlanGroup type) { #region Cache Header ObjectsTemplate monthlyWorkPlans = _cache["GetByDateAndWPGType", dAssDate, type] as ObjectsTemplate; if (monthlyWorkPlans != null) return monthlyWorkPlans; #endregion try { monthlyWorkPlans = Service.GetByDateAndWPGType(dAssDate, type); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(monthlyWorkPlans, "GetByDateAndWPGType"); #endregion return monthlyWorkPlans; } public static ObjectsTemplate GetByDateAndGroupID(DateTime dAssDate, ID groupID) { #region Cache Header ObjectsTemplate monthlyWorkPlans = _cache["GetByDateAndGroupID", dAssDate, groupID] as ObjectsTemplate; if (monthlyWorkPlans != null) return monthlyWorkPlans; #endregion try { monthlyWorkPlans = Service.GetByDateAndGroupID(dAssDate, groupID); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(monthlyWorkPlans, "GetByDateAndGroupID"); #endregion return monthlyWorkPlans; } public static ObjectsTemplate GetMonthlyDataByEmp(DateTime dAssDate, EnumWorkPlanGroup type, ID nEmpID) { #region Cache Header ObjectsTemplate monthlyWorkPlans = _cache["GetMonthlyDataByEmp", dAssDate, type, nEmpID] as ObjectsTemplate; if (monthlyWorkPlans != null) return monthlyWorkPlans; #endregion try { monthlyWorkPlans = Service.GetMonthlyDataByEmp(dAssDate, type, nEmpID); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(monthlyWorkPlans, "GetMonthlyDataByEmp"); #endregion return monthlyWorkPlans; } public ID Save() { return MonthlyWorkPlan.Service.Save(this); } public void Save(ObjectsTemplate oMWPlans) { foreach (MonthlyWorkPlan oMWPlan in oMWPlans) { oMWPlan.SetAuditTrailProperties(); } MonthlyWorkPlan.Service.Save(oMWPlans); } public void Delete() { MonthlyWorkPlan.Service.Delete(ID); } public void Delete(DateTime dFromDate, DateTime dToDate, EnumWorkPlanGroup type) { MonthlyWorkPlan.Service.Delete(dFromDate, dToDate, type); } public void Delete(DateTime assignDate, string empIds) { MonthlyWorkPlan.Service.Delete(assignDate, empIds); } public void Delete(DateTime dFromDate, DateTime dToDate, ID wpGroupID) { MonthlyWorkPlan.Service.Delete(dFromDate, dToDate, wpGroupID); } public void Delete(DateTime dFromDate, DateTime dToDate) { MonthlyWorkPlan.Service.Delete(dFromDate, dToDate); } public static int DayCount(EnumWorkPlanGroup type) { return MonthlyWorkPlan.Service.DayCount(type); } public static DataSet GetMissingEmp(ID groupID, DateTime assignDate) { DataSet missingEmp = null; try { missingEmp = Service.GetMissingEmp(groupID, assignDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } return missingEmp; } public static DataSet GetEmpNotInMonthlyWorkPlan(DateTime assignDate) { DataSet empInfo = null; try { empInfo = Service.GetEmpNotInMonthlyWorkPlan(assignDate); } catch (ServiceException e) { throw new Exception(e.Message, e); } return empInfo; } public static bool IsExist(DateTime dAssDate, ID groupID) { return MonthlyWorkPlan.Service.IsExist(dAssDate, groupID); } #endregion } #endregion #region IMonthlyWorkPlan Service public interface IMonthlyWorkPlanService { MonthlyWorkPlan Get(ID id); ObjectsTemplate Get(); ObjectsTemplate Get(DateTime attnDate); ObjectsTemplate GetByType(EnumWorkPlanGroup type); ObjectsTemplate GetByDateAndWPGType(DateTime dAssDate, EnumWorkPlanGroup type); ObjectsTemplate GetByDateAndGroupID(DateTime dAssDate, ID groupID); MonthlyWorkPlan GetByEmpID(ID empID, DateTime assDate, EnumWorkPlanGroup type); MonthlyWorkPlan GetByEmpID(ID empID, DateTime workDate); ObjectsTemplate GetMonthlyDataByEmp(DateTime dAssDate, EnumWorkPlanGroup type, ID nEmpID); ID Save(MonthlyWorkPlan item); void Save(ObjectsTemplate oMonthlyWPlans); void Delete(ID id); void Delete(DateTime dFromDate, DateTime dToDate, EnumWorkPlanGroup type); void Delete(DateTime dFromDate, DateTime dToDate, ID wpGroupID); void Delete(DateTime dFromDate, DateTime dToDate); void Delete(DateTime assignDate, string empIds); int DayCount(EnumWorkPlanGroup type); bool IsExist(DateTime dAssDate, ID groupID); DataSet GetMissingEmp(ID groupID, DateTime assignDate); DataSet GetEmpNotInMonthlyWorkPlan(DateTime assignDate); } #endregion }