Example #1
0
        /// <summary>
        /// [HieuVan] - Chuyển đổi trạng thái của một đối tượng Status
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="id"></param>
        /// <returns></returns>
        public string UpdateStatus <TEntity>(Guid ID, string type) where TEntity : class
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repo       = new CustomBaseRepository <TEntity>(unitOfWork);
                try
                {
                    List <object> listParamater = new List <object>();
                    string        tableName     = typeof(TEntity).Name;
                    tableName = tableName.Substring(0, tableName.Length - 6);
                    Type   dbEntityType = LibraryService.GetEntityType(tableName);
                    object dbEntity     = unitOfWork.CreateQueryable(Guid.Empty, dbEntityType, Constant.ID + " = @0", ID).FirstOrDefault();
                    dbEntity.SetPropertyValue("Status", type);
                    var status = unitOfWork.SaveChanges(Guid.Empty);

                    if (status == DataErrorCode.Locked)
                    {
                        return(NotificationType.Locked.ToString());
                    }
                    else
                    {
                        return(NotificationType.Success.ToString());
                    }
                }
                catch (Exception ex)
                {
                    return(NotificationType.Error + "," + ex.Message);
                }
            }
        }
Example #2
0
        /// <summary>
        /// [Hieu.Van] - Tạo mới một đối tượng return model
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        public TEntity Add <TEntity>(TEntity entity, ref string status) where TEntity : class
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repo       = new CustomBaseRepository <TEntity>(unitOfWork);
                try
                {
                    entity.SetPropertyValue(Constant.DateCreate, DateTime.Now);
                    repo.Add(entity);
                    var saveStatus = repo.SaveChanges();

                    if (saveStatus == DataErrorCode.Locked)
                    {
                        status = NotificationType.Locked.ToString();
                    }
                    else
                    {
                        status = NotificationType.Success.ToString();
                    }

                    return(entity);
                }
                catch (Exception ex)
                {
                    status = NotificationType.Error + "," + ex.Message;
                    return(null);
                }
            }
        }
Example #3
0
 public bool SetApproveKaiZenData(List <Guid> SelectIds)
 {
     using (var context = new VnrHrmDataContext())
     {
         try
         {
             var    unitOfWork                     = (IUnitOfWork)(new UnitOfWork(context));
             string status                         = string.Empty;
             var    repoKai_KaizenData             = new CustomBaseRepository <Kai_KaizenData>(unitOfWork);
             List <Kai_KaizenData> ListKaiZendData = repoKai_KaizenData.FindBy(m => m.IsDelete != true).ToList();
             foreach (var i in ListKaiZendData)
             {
                 if (SelectIds.Any(m => m == i.ID))
                 {
                     i.Status = EnumDropDown.Kai_KaizenDataStatus.E_APPROVED.ToString();
                 }
             }
             unitOfWork.SaveChanges();
             return(true);
         }
         catch
         {
             return(false);
         }
     }
 }
Example #4
0
        public static List <Att_Grade> getAllGrade2(List <Guid> listProfileId, DateTime monthYear)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork    = (IUnitOfWork)(new UnitOfWork(context));
                var repoAtt_Grade = new CustomBaseRepository <Att_Grade>(unitOfWork);

                List <Att_Grade> lst        = new List <Att_Grade>();
                string[]         strInclude = new string[] { "Cat_GradeAttendance" };

                lst = repoAtt_Grade.FindBy(gd => listProfileId.Contains(gd.ProfileID.Value) &&
                                           gd.MonthStart <= monthYear).OrderByDescending(prop => prop.MonthStart).ToList();

                List <Att_Grade> lstGrade = new List <Att_Grade>();
                foreach (Att_Grade grade in lst)
                {
                    Att_Grade grade1 = lstGrade.FirstOrDefault(prop => prop.ProfileID == grade.ProfileID);
                    if (grade1 == null)
                    {
                        lstGrade.Add(grade);
                    }
                }
                return(lstGrade);
            }
        }
Example #5
0
        public Guid ComputeAnnualLeaveAllowance(Sal_UnusualAllowanceEntity model)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork       = (IUnitOfWork) new UnitOfWork(context);
                var repoSys_AsynTask = new CustomBaseRepository <Sys_AsynTask>(unitOfWork);
                var repoCat_Element  = new CustomBaseRepository <Cat_Element>(unitOfWork);


                //tạo asynTask
                Sys_AsynTask asynTask = new Sys_AsynTask()
                {
                    ID              = Guid.NewGuid(),
                    Summary         = "Tính phép năm : " + model.MonthStart.Value.ToString("dd/MM/yyyy"),
                    Type            = AsynTask.Payroll_Compute_AnnualLeaveAllowance.ToString(),
                    Status          = AsynTaskStatus.Doing.ToString(),
                    TimeStart       = DateTime.Now,
                    PercentComplete = 0.01,
                };
                repoSys_AsynTask.Add(asynTask);
                unitOfWork.SaveChanges();

                Thread threadCompute = new Thread(() => ComputeBonusUnusualAllowance_Progress(asynTask.ID, model, true));
                threadCompute.Start();

                return(asynTask.ID);
            }
        }
        public Guid ComputeAnnualLeaveAllowance(Sal_UnusualAllowanceEntity model)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                var repoSys_AsynTask = new CustomBaseRepository<Sys_AsynTask>(unitOfWork);
                var repoCat_Element = new CustomBaseRepository<Cat_Element>(unitOfWork);


                //tạo asynTask
                Sys_AsynTask asynTask = new Sys_AsynTask()
                {
                    ID = Guid.NewGuid(),
                    Summary = "Tính phép năm : " + model.MonthStart.Value.ToString("dd/MM/yyyy"),
                    Type = AsynTask.Payroll_Compute_AnnualLeaveAllowance.ToString(),
                    Status = AsynTaskStatus.Doing.ToString(),
                    TimeStart = DateTime.Now,
                    PercentComplete = 0.01,
                };
                repoSys_AsynTask.Add(asynTask);
                unitOfWork.SaveChanges();

                Thread threadCompute = new Thread(() => ComputeBonusUnusualAllowance_Progress(asynTask.ID, model, true));
                threadCompute.Start();

                return asynTask.ID;
            }
        }
Example #7
0
        public static Att_Grade GetGrade(Hre_Profile profile, DateTime effectMonth)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoAtt_Grade = new CustomBaseRepository<Att_Grade>(unitOfWork);
                //NOTE: can modify lai cau truy van de gioi han data lay len
                List<Att_Grade> lst = repoAtt_Grade
                    .FindBy(alw => alw.IsDelete == null
                        && alw.ProfileID == profile.ID
                        && alw.MonthStart <= effectMonth)
                    .OrderByDescending(alw => alw.MonthStart).ToList();

                if (lst != null && lst.Count > 0)
                {
                    // Lấy grade có ngày đến hạn, nếu không có ngày đến hạn xem như Ok không hết hạn, nếu có ngày đến hạn
                    DateTime temp = new DateTime(effectMonth.Year, effectMonth.Month, 1);
                    if (!lst[0].MonthEnd.HasValue || (lst[0].MonthEnd.HasValue && lst[0].MonthEnd.Value >= temp))
                    {
                        return lst[0];
                    }
                }
                return null;
            }
        }
Example #8
0
 public string SaveEvalutionData(int year, Guid?TimesGetDataID, string orgStructureID, DateTime?_dateStart, DateTime?_dateEnd, string userLogin)
 {
     using (var context = new VnrHrmDataContext())
     {
         var evaServices = new Eva_ReportServices();
         List <Eva_EvalutionDataEntity> lstEvalutionDataEntity = new List <Eva_EvalutionDataEntity>();
         lstEvalutionDataEntity = evaServices.SummaryEvalutionData(year, TimesGetDataID, orgStructureID, _dateStart, _dateEnd, userLogin);
         var unitOfWork            = (IUnitOfWork) new UnitOfWork(context);
         var repoEva_EvalutionData = new CustomBaseRepository <Eva_EvalutionData>(unitOfWork);
         List <Eva_EvalutionData> lstEvalutionData = new List <Eva_EvalutionData>();
         lstEvalutionData = lstEvalutionDataEntity.Translate <Eva_EvalutionData>();
         if (lstEvalutionData != null)
         {
             int _total     = lstEvalutionData.Count;
             int _totalPage = _total / 200 + 1;
             int _pageSize  = 200;
             for (int _page = 1; _page <= _totalPage; _page++)
             {
                 int _skip           = _pageSize * (_page - 1);
                 var _listCurrenPage = lstEvalutionData.Skip(_skip).Take(_pageSize).ToList();
                 foreach (var item in _listCurrenPage)
                 {
                     repoEva_EvalutionData.Add(item);
                 }
                 unitOfWork.SaveChanges();
             }
         }
         return("SaveSuccess");
         //    #endregion
     }
 }
Example #9
0
        public static List<Att_Grade> getAllGrade2(List<Guid> listProfileId, DateTime monthYear)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoAtt_Grade = new CustomBaseRepository<Att_Grade>(unitOfWork);

                List<Att_Grade> lst = new List<Att_Grade>();
                string[] strInclude = new string[] { "Cat_GradeAttendance" };

                lst = repoAtt_Grade.FindBy(gd => listProfileId.Contains(gd.ProfileID.Value)
                    && gd.MonthStart <= monthYear).OrderByDescending(prop => prop.MonthStart).ToList();

                List<Att_Grade> lstGrade = new List<Att_Grade>();
                foreach (Att_Grade grade in lst)
                {
                    Att_Grade grade1 = lstGrade.FirstOrDefault(prop => prop.ProfileID == grade.ProfileID);
                    if (grade1 == null)
                    {
                        lstGrade.Add(grade);
                    }
                }
                return lstGrade;
            }
        }
Example #10
0
        public static Att_Grade GetGrade(Hre_Profile profile, DateTime effectMonth)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork    = (IUnitOfWork)(new UnitOfWork(context));
                var repoAtt_Grade = new CustomBaseRepository <Att_Grade>(unitOfWork);
                //NOTE: can modify lai cau truy van de gioi han data lay len
                List <Att_Grade> lst = repoAtt_Grade
                                       .FindBy(alw => alw.IsDelete == null &&
                                               alw.ProfileID == profile.ID &&
                                               alw.MonthStart <= effectMonth)
                                       .OrderByDescending(alw => alw.MonthStart).ToList();

                if (lst != null && lst.Count > 0)
                {
                    // Lấy grade có ngày đến hạn, nếu không có ngày đến hạn xem như Ok không hết hạn, nếu có ngày đến hạn
                    DateTime temp = new DateTime(effectMonth.Year, effectMonth.Month, 1);
                    if (!lst[0].MonthEnd.HasValue || (lst[0].MonthEnd.HasValue && lst[0].MonthEnd.Value >= temp))
                    {
                        return(lst[0]);
                    }
                }
                return(null);
            }
        }
Example #11
0
 public string SaveList(List<Att_RosterEntity> lstModel)
 {
     using (var context = new VnrHrmDataContext())
     {
         List<Att_Roster> lstSave = new List<Att_Roster>();
         lstSave = lstModel.Translate<Att_Roster>();
         var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         var repo = new CustomBaseRepository<Att_Roster>(unitOfWork);
         //int count = 0;
         foreach (var item in lstSave)
         {
             //count += 1;
             item.ID = Guid.NewGuid();
             repo.Add(item);
         }
         try
         {
             repo.SaveChanges();
             return "Success";
         }
         catch (Exception)
         {
             return "Error";
         }
     }
 }
Example #12
0
        public List<FIN_ClaimEntity> GetClaimApprovedList(Guid UserLogin)
        {
            List<FIN_ClaimEntity> lstReturn = new List<FIN_ClaimEntity>();

            string appType = ApproveType.E_FIN_ClaimRequest.ToString();
            string status = string.Empty;
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoFIN_Claim = new CustomBaseRepository<FIN_Claim>(unitOfWork);
                List<Sys_ConditionApproved> lstCondition = new List<Sys_ConditionApproved>();
                List<Hre_ProfileEntity> lstProfile = new List<Hre_ProfileEntity>();
                GetProfileWithPermissionLogin(UserLogin, appType, out lstCondition, out lstProfile);

                var lstExpensesCondition = lstCondition.Select(s => s.ExpensesType).Distinct().ToList();
                var dataClaim = repoFIN_Claim
                    .FindBy(s => s.IsDelete == null && lstExpensesCondition.Contains(s.ExpensesType))
                    .ToList().Translate<FIN_ClaimEntity>();

                foreach (var condition in lstCondition)
                {
                    List<Guid> lstGuidOrg = GetOrgInCondition(condition);
                    var profileInOrg = lstProfile.Where(s => lstGuidOrg.Contains(s.OrgStructureID.Value)).Select(a => a.ID).ToList();
                    
                    var resultCondition = dataClaim.Where(s => profileInOrg.Contains(s.ProfileID.Value)).ToList();
                    lstReturn.AddRange(resultCondition);
                }
            }
            return lstReturn;
        }
Example #13
0
 public string SaveEvalutionData(int year, Guid? TimesGetDataID, string orgStructureID, DateTime? _dateStart, DateTime? _dateEnd,string userLogin)
 {
     using (var context = new VnrHrmDataContext())
     {
         var evaServices = new Eva_ReportServices();
         List<Eva_EvalutionDataEntity> lstEvalutionDataEntity = new List<Eva_EvalutionDataEntity>();
         lstEvalutionDataEntity = evaServices.SummaryEvalutionData(year, TimesGetDataID, orgStructureID, _dateStart, _dateEnd,userLogin);
         var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
         var repoEva_EvalutionData = new CustomBaseRepository<Eva_EvalutionData>(unitOfWork);
         List<Eva_EvalutionData> lstEvalutionData = new List<Eva_EvalutionData>();
         lstEvalutionData = lstEvalutionDataEntity.Translate<Eva_EvalutionData>();
         if (lstEvalutionData != null)
         {
             int _total = lstEvalutionData.Count;
             int _totalPage = _total / 200 + 1;
             int _pageSize = 200;
             for (int _page = 1; _page <= _totalPage; _page++)
             {
                 int _skip = _pageSize * (_page - 1);
                 var _listCurrenPage = lstEvalutionData.Skip(_skip).Take(_pageSize).ToList();
                 foreach (var item in _listCurrenPage)
                 {
                     repoEva_EvalutionData.Add(item);
                 }
                 unitOfWork.SaveChanges();
             }
         }
         return "SaveSuccess";
         //    #endregion
     }
 }  
Example #14
0
        /// <summary>
        /// [Hieu.Van]
        /// Xử lý Gửi yêu cầu phê duyệt
        /// </summary>
        /// <param name="LoginID"></param>
        /// <param name="userApprovedID"></param>
        /// <param name="recordID"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public string ProcessSendRequest(string host, Guid LoginID, Guid userApprovedID, Guid recordID, string type)
        {
            DataErrorCode status = DataErrorCode.Success;

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoFIN_PurchaseRequest = new CustomBaseRepository <FIN_PurchaseRequest>(unitOfWork);
                var repoSys_UserApprove     = new CustomBaseRepository <Sys_UserApprove>(unitOfWork);

                var record = repoFIN_PurchaseRequest.FindBy(s => s.ID == recordID).FirstOrDefault();
                if (record.UserCreateID != LoginID)
                {
                    return(DataErrorCode.NoPermission.ToString());
                }
                if (record.Status == EnumDropDown.Status.E_REJECTED.ToString())
                {
                    return(DataErrorCode.Error_Reject.ToString());
                }
                if (record.Status != null)
                {
                    return(DataErrorCode.Error_SendRequest.ToString());
                }
                var userApproved = repoSys_UserApprove.FindBy(s => s.ID == userApprovedID).FirstOrDefault();
                // Lấy status hiện tại của bản ghi
                string currentStatus = record.Status;

                // truyền từ Dropdownlist chọn người duyệt, lấy ra giá trị Status tiếp theo
                string nextStatus = userApproved.CurrentStatus;

                record.Status        = nextStatus;
                record.UserApproveID = userApprovedID;
                repoFIN_PurchaseRequest.Edit(record);
                status = repoFIN_PurchaseRequest.SaveChanges();


                if (status == DataErrorCode.Success)
                {
                    if (nextStatus != "Approved")
                    {
                        status = SendMail_ToNextApproved(host, recordID, userApprovedID, nextStatus, type);
                    }

                    var repoSys_ConfigProcessApprove = new CustomBaseRepository <Sys_ConfigProcessApprove>(unitOfWork);
                    var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == record.Status).FirstOrDefault();
                    if (configProcess == null)
                    {
                        return(DataErrorCode.Success.ToString());
                    }
                    else
                    {
                        return(DataErrorCode.Success_Forward.ToString());
                    }
                }

                return(status.ToString());
            }
        }
Example #15
0
        /// <summary>
        /// [Hieu.Van]
        /// Xử lý Gửi yêu cầu phê duyệt
        /// </summary>
        /// <param name="LoginID"></param>
        /// <param name="userApprovedID"></param>
        /// <param name="recordID"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public string ProcessSendRequest(string host, Guid LoginID, Guid userApprovedID, Guid recordID, string type)
        {
            DataErrorCode status = DataErrorCode.Success;
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoFIN_PurchaseRequest = new CustomBaseRepository<FIN_PurchaseRequest>(unitOfWork);
                var repoSys_UserApprove = new CustomBaseRepository<Sys_UserApprove>(unitOfWork);

                var record = repoFIN_PurchaseRequest.FindBy(s => s.ID == recordID).FirstOrDefault();
                if (record.UserCreateID != LoginID)
                {
                    return DataErrorCode.NoPermission.ToString();
                }
                if (record.Status == EnumDropDown.Status.E_REJECTED.ToString())
                {
                    return DataErrorCode.Error_Reject.ToString();
                }
                if (record.Status != null)
                {
                    return DataErrorCode.Error_SendRequest.ToString();
                }
                var userApproved = repoSys_UserApprove.FindBy(s => s.ID == userApprovedID).FirstOrDefault();
                // Lấy status hiện tại của bản ghi
                string currentStatus = record.Status;

                // truyền từ Dropdownlist chọn người duyệt, lấy ra giá trị Status tiếp theo
                string nextStatus = userApproved.CurrentStatus;

                record.Status = nextStatus;
                record.UserApproveID = userApprovedID;
                repoFIN_PurchaseRequest.Edit(record);
                status = repoFIN_PurchaseRequest.SaveChanges();

                
                if (status == DataErrorCode.Success)
                {
                    if (nextStatus != "Approved")
                    {
                        status = SendMail_ToNextApproved(host, recordID, userApprovedID, nextStatus, type);
                    }

                    var repoSys_ConfigProcessApprove = new CustomBaseRepository<Sys_ConfigProcessApprove>(unitOfWork);
                    var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == record.Status).FirstOrDefault();
                    if (configProcess == null)
                    {
                        return DataErrorCode.Success.ToString();
                    }
                    else
                    {
                        return DataErrorCode.Success_Forward.ToString();
                    }
                }

                return status.ToString();
            }
        }
Example #16
0
        public bool AddList(List <Att_AnnualLeaveDetailEntity> models)
        {
            bool isSuccess = false;
            var  leaveType = string.Empty;
            var  status    = string.Empty;
            var  year      = 2013;

            if (models != null && models.FirstOrDefault() != null && models.FirstOrDefault().Year != null)
            {
                year      = Convert.ToInt32(models.FirstOrDefault().Year);
                leaveType = models.FirstOrDefault().Type;
            }

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repo       = new CustomBaseRepository <Att_AnnualLeaveDetail>(unitOfWork);
                try
                {
                    var annualLeaveDetails = GetAllUseEntity <Att_AnnualLeaveDetail>(ref status).Where(p => p.Type == leaveType && p.Year == year).ToList().AsQueryable();
                    foreach (var attAnnualLeaveDetail in models)
                    {
                        var addSuccess        = false;
                        var existAnnualDetail = annualLeaveDetails.Where(p => p.ProfileID == attAnnualLeaveDetail.ProfileID).FirstOrDefault();
                        if (existAnnualDetail != null)
                        {
                            existAnnualDetail.Month1  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month2  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month3  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month4  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month5  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month6  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month7  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month8  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month9  = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month10 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month11 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month12 = attAnnualLeaveDetail.Month1;

                            repo.Edit(existAnnualDetail);
                        }
                        else
                        {
                            Att_AnnualLeaveDetail temp = new Att_AnnualLeaveDetail();
                            temp = attAnnualLeaveDetail.CopyData <Att_AnnualLeaveDetail>();
                            repo.Add(temp);
                        }
                    }
                    repo.SaveChanges();
                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
        }
        public bool AddList(List<Att_AnnualLeaveDetailEntity> models)
        {
            bool isSuccess = false;
            var leaveType = string.Empty;
            var status = string.Empty;
            var year = 2013;
            if (models != null && models.FirstOrDefault() != null && models.FirstOrDefault().Year != null) 
            {
                year = Convert.ToInt32(models.FirstOrDefault().Year);
                leaveType = models.FirstOrDefault().Type;
            }

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repo = new CustomBaseRepository<Att_AnnualLeaveDetail>(unitOfWork);
                try
                {
                    var annualLeaveDetails = GetAllUseEntity<Att_AnnualLeaveDetail>(ref status).Where(p => p.Type == leaveType && p.Year == year).ToList().AsQueryable();
                    foreach (var attAnnualLeaveDetail in models)
                    {
                        var addSuccess = false;
                        var existAnnualDetail = annualLeaveDetails.Where(p => p.ProfileID == attAnnualLeaveDetail.ProfileID ).FirstOrDefault();
                        if (existAnnualDetail != null)
                        {
                            existAnnualDetail.Month1 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month2 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month3 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month4 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month5 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month6 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month7 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month8 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month9 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month10 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month11 = attAnnualLeaveDetail.Month1;
                            existAnnualDetail.Month12 = attAnnualLeaveDetail.Month1;

                            repo.Edit(existAnnualDetail);
                        }
                        else
                        {
                            Att_AnnualLeaveDetail temp = new Att_AnnualLeaveDetail();
                            temp = attAnnualLeaveDetail.CopyData<Att_AnnualLeaveDetail>();
                            repo.Add(temp);
                        }
                    }
                    repo.SaveChanges();
                    return true;
                }
                catch
                {
                    return false;
                }

            }
        }
        public void ComputeCommission(List <Hre_ProfileEntity> listProfile, Att_CutOffDurationEntity CutOffDuration, Guid asynTaskID, string HeaderTemplateLog, string methodPayroll, Guid CutOffDuration2ID, string UserLogin)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork       = (IUnitOfWork) new UnitOfWork(context);
                var repoSys_AsynTask = new CustomBaseRepository <Sys_AsynTask>(unitOfWork);
                var repoPayrollTable = new CustomBaseRepository <Sal_PayrollTable>(unitOfWork);
                var Sys_Model        = repoSys_AsynTask.FindBy(m => m.ID == asynTaskID).FirstOrDefault();

                if (!DeletePayrollTable(listProfile.Select(d => d.ID).ToList(), CutOffDuration.ID))
                {
                    Sys_Model.Status          = AsynTaskStatus.Error.ToString();
                    Sys_Model.Description     = "Không thể xóa bảng lương cũ";
                    Sys_Model.PercentComplete = 1;
                    unitOfWork.SaveChanges();
                }
                else
                {
                    #region Get All Data

                    DateTime DatetimeStart            = DateTime.Now;
                    ComputePayrollDataModel TotalData = PayrollServices.GetDataForComputeSalary(CutOffDuration, UserLogin);
                    //FileLog.WriteLog("", "Get Data", Common.ComputeTime(DatetimeStart, DateTime.Now));

                    #endregion

                    //Kiểm tra xem có lỗi store hay không
                    if (TotalData.Status != null && TotalData.Status != string.Empty)
                    {
                        Sys_Model.Status          = AsynTaskStatus.Error.ToString();
                        Sys_Model.Description     = TotalData.Status;
                        Sys_Model.PercentComplete = 1;
                        unitOfWork.SaveChanges();
                    }
                    else
                    {
                        #region Ghi Log
                        //Lấy đường dẫn thư mục ghi log
                        //set lại thư mục ghi log
                        //WriteLog.SettingPath = Common.GetPath("Log");
                        //WriteLog.DynamicDirectory = "ComputePayroll" + DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss");
                        //WriteLog.FileName = "LogFile";
                        //WriteLog.WriteLog(HeaderTemplateLog, "", "");
                        #endregion

                        int pageSize     = 100;               //mỗi lần tính cho 100 nhân viên
                        int totalProfile = listProfile.Count; //Tổng số nhâ viên

                        foreach (var listProfileBySize in listProfile.Chunk(pageSize))
                        {
                            ComputeCommission_Progress(TotalData, listProfileBySize.ToList(), CutOffDuration, Sys_Model.ID, totalProfile, methodPayroll, CutOffDuration2ID);
                        }
                    }
                }
            }
        }
Example #19
0
        public void ActionApprovedAll(List <Guid> lstId, string status, Guid userId)
        {
            var    statusMes        = string.Empty;
            var    objTravelRequest = new List <object>();
            string UserLogin        = string.Empty;

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork    = (IUnitOfWork)(new UnitOfWork(context));
                var repoClaimItem = new CustomBaseRepository <FIN_ClaimItem>(unitOfWork);
                var repoClaim     = new CustomBaseRepository <FIN_Claim>(unitOfWork);
                var lstClaimId    = repoClaim.GetAll().Where(s => s.IsDelete == null && lstId.Contains(s.ID)).Select(s => s.ID).ToList();

                var lstClaimItem = repoClaimItem.GetAll().Where(s => s.IsDelete == null).ToList();


                var objApprovedClaim = new List <object>();
                objApprovedClaim.AddRange(new object[6]);
                objApprovedClaim[4] = 1;
                objApprovedClaim[5] = int.MaxValue - 1;
                var lstApprovedClaim = GetData <FIN_ApproverECLAIMEntity>(objApprovedClaim, ConstantSql.hrm_fin_sp_get_ApproverECLAIM, UserLogin, ref statusMes).ToList();

                var approvedType1  = FinApproverType.FIN_Claim_Profile.ToString();
                var approvedType2  = FinApproverType.FIN_Claim_Manufacture.ToString();
                var approvedEntity = lstApprovedClaim.Where(s => s.ApprovedID != null && s.ApprovedID.Value == userId && (s.ApprovedType == approvedType1 || s.ApprovedType == approvedType2)).FirstOrDefault();

                if (status == "E_REQUEST")
                {
                    if (lstClaimId.Count > 0)
                    {
                        lstClaimItem = lstClaimItem.Where(s => s.ClaimID != null && lstClaimId.Contains(s.ClaimID.Value)).ToList();
                        foreach (var item in lstClaimItem)
                        {
                            item.Description2 = status;
                        }
                        repoClaimItem.SaveChanges();
                    }
                }

                if (status == "E_APPROVED")
                {
                    if (lstClaimId.Count > 0)
                    {
                        if (approvedEntity != null)
                        {
                            lstClaimItem = lstClaimItem.Where(s => s.ClaimID != null && lstClaimId.Contains(s.ClaimID.Value)).ToList();
                            foreach (var item in lstClaimItem)
                            {
                                item.Description2 = status + "_" + approvedEntity.OrderNo.ToString();
                            }
                            repoClaimItem.SaveChanges();
                        }
                    }
                }
            }
        }
Example #20
0
 public List<Att_WorkdayEntity> GetWorkDaysByDate(DateTime DateFrom, DateTime DateTo)
 {
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         var repo = new Att_WorkDayRepository(unitOfWork);
         var repoAtt_Workday = new CustomBaseRepository<Att_Workday>(unitOfWork);
         return repoAtt_Workday.FindBy(m => m.IsDelete == null && m.WorkDate >= DateFrom && m.WorkDate <= DateTo).Select(s => new Att_WorkdayEntity { ID = s.ID, ProfileID = s.ProfileID, InTimeRoot = s.InTimeRoot, OutTimeRoot = s.OutTimeRoot, LateEarlyDuration = s.LateEarlyDuration, ShiftID = s.ShiftID, MissInOutReason = s.MissInOutReason }).ToList<Att_WorkdayEntity>();
     }
 }
Example #21
0
        public void ActionApproved(List<Guid> lstId, string status, Guid userId)
        {
            var statusMes = string.Empty;
            var objTravelRequest = new List<object>();
            string UserLogin = string.Empty;
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoTravelRequestItem = new CustomBaseRepository<FIN_ClaimItem>(unitOfWork);
                var lstTravelRequestItem = repoTravelRequestItem.GetAll().Where(s => s.IsDelete == null).ToList();

                if(status == "E_APPROVED")
                {
                    var objApprovedClaim = new List<object>();
                    objApprovedClaim.AddRange(new object[6]);
                    objApprovedClaim[4] = 1;
                    objApprovedClaim[5] = int.MaxValue - 1;
                    var lstApprovedClaim = GetData<FIN_ApproverECLAIMEntity>(objApprovedClaim, ConstantSql.hrm_fin_sp_get_ApproverECLAIM, UserLogin, ref statusMes).ToList();

                    var approvedType1 = FinApproverType.FIN_Claim_Profile.ToString();
                    var approvedType2 = FinApproverType.FIN_Claim_Manufacture.ToString();

                    var approvedEntity = lstApprovedClaim.Where(s => s.ApprovedID != null && s.ApprovedID.Value == userId && (s.ApprovedType == approvedType1 || s.ApprovedType == approvedType2)).FirstOrDefault();
                    if (lstId.Count > 0)
                    {
                        if (approvedEntity != null)
                        {
                            lstTravelRequestItem = lstTravelRequestItem.Where(s => lstId.Contains(s.ID)).ToList();
                            foreach (var item in lstTravelRequestItem)
                            {
                                item.Description2 = status;
                            }
                            repoTravelRequestItem.SaveChanges();
                        }
                        
                    }
                }

                if(status == "E_REJECTED")
                {
                    if (lstId.Count > 0)
                    {
                        lstTravelRequestItem = lstTravelRequestItem.Where(s => lstId.Contains(s.ID)).ToList();
                        foreach (var item in lstTravelRequestItem)
                        {
                            item.Description2 = status;
                        }
                        repoTravelRequestItem.SaveChanges();
                    }
                
                }
               

            }
        }
Example #22
0
        public void SaveUnusualAllowance(List <Sal_UnusualAllowanceEntity> model)
        {
            using (var context = new VnrHrmDataContext())
            {
                string status               = string.Empty;
                var    unitOfWork           = (IUnitOfWork) new UnitOfWork(context);
                var    repoUnusualAllowance = new CustomBaseRepository <Sal_UnusualAllowance>(unitOfWork);

                repoUnusualAllowance.Add(model.Translate <Sal_UnusualAllowance>());
                unitOfWork.SaveChanges();
            }
        }
Example #23
0
        public void CreateFormulaTemplate(List<Cat_FormulaTemplateEntity> listFormulaTemplate,Guid GradeID)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                var repoCat_FormulaTemplate = new CustomBaseRepository<Cat_FormulaTemplate>(unitOfWork);
                var repoCat_Element = new CustomBaseRepository<Cat_Element>(unitOfWork);

                #region Xử lý bảng template
                //lấy các phần tử template trong grade
                List<Cat_FormulaTemplate> listFormulaTemplateByGrade = repoCat_FormulaTemplate.FindBy(m => m.IsDelete != true && m.GradeID != null && m.GradeID == GradeID).ToList();
                //xóa các phần tử đó
                repoCat_FormulaTemplate.Delete(listFormulaTemplateByGrade);

                //insert lại các phần tử mới
                List<Cat_FormulaTemplate> listFormulaTemplateModel = listFormulaTemplate.Translate<Cat_FormulaTemplate>();
                listFormulaTemplateModel.ForEach(m => m.GradeID = GradeID);
                repoCat_FormulaTemplate.Add(listFormulaTemplateModel); 
                #endregion

                #region Xử lý bảng cat_element
                //lấy các phần tử có cùng mã code với template
                List<Cat_Element> listElement = repoCat_Element.FindBy(m => m.IsDelete != true && m.GradePayrollID == GradeID).ToList();
                listElement = listElement.Where(m => listFormulaTemplate.Any(t => t.ElementCode.ReplaceSpace() == m.ElementCode.ReplaceSpace())).ToList();
                //xóa các phần tử đó đi
                repoCat_Element.Delete(listElement);

                //tạo ra các element
                List<Cat_Element> listElementModel = new List<Cat_Element>();
                Cat_Element item = new Cat_Element();
                foreach (var template in listFormulaTemplate)
                {
                    item = new Cat_Element();
                    item.GradePayrollID = GradeID;
                    item.ElementCode = template.ElementCode.ReplaceSpace();
                    item.ElementName = template.ElementName;
                    item.Formula = template.Formula;
                    item.IsBold = template.IsBold;
                    item.Invisible = template.Invisible;
                    item.Description = template.Description;
                    item.TabType = CatElementType.Payroll.ToString();
                    item.MethodPayroll = MethodPayroll.E_NORMAL.ToString();
                    item.ElementType = CatElementType.Payroll.ToString();    
                    item.Type = EnumDropDown.ElementDataType.Double.ToString();
                    listElementModel.Add(item);
                }
                repoCat_Element.Add(listElementModel);

                unitOfWork.SaveChanges();
                #endregion

            }
        }
Example #24
0
 public Guid GetProfileIDByTravelRequests(Guid TravelRequestID)
 {
     Guid rs = Guid.Empty;
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         var repoTravelRequest = new CustomBaseRepository<FIN_TravelRequest>(unitOfWork);
         var TravelRequest = repoTravelRequest.GetById(TravelRequestID);
         rs = TravelRequest.ProfileID.Value;
     }
     return rs;
 }
Example #25
0
        public void AddDataForBasicSalary(string ProfileIDs, string BasicSalary, DateTime DateHire, Guid SalaryRankID,string UserLogin)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                string status = string.Empty;
                var repoBasicSalary = new CustomBaseRepository<Sal_BasicSalary>(unitOfWork);
                List<Guid> lstProfileIDs = ProfileIDs.Split(',').Select(x => Guid.Parse(x)).ToList();
                List<Sal_BasicSalary> lstBasicSalary = new List<Sal_BasicSalary>();
                //chua co cach giai quyet nen hard code lay mac dinh la VND
                var repoCurrency = new CustomBaseRepository<Cat_Currency>(unitOfWork);
                var currency = repoCurrency.FindBy(s => s.IsDelete == null && s.CurrencyName == "VND").FirstOrDefault();
                //var repoSalaryRank = new CustomBaseRepository<Cat_SalaryRank>(unitOfWork);
                //var repoSalaryClass = new CustomBaseRepository<Cat_SalaryClass>(unitOfWork);
                //var salaryRank = repoSalaryRank.FindBy(s => s.IsDelete == null && s.ID == SalaryRankID).FirstOrDefault();
                //var salaryClass = repoSalaryClass.FindBy(s => s.IsDelete == null && s.ID == salaryRank.SalaryClassID).FirstOrDefault();
                var salaryRankServices = new Cat_SalaryRankServices();
                var lstObjRank = new List<object>();
                lstObjRank.Add(null);
                lstObjRank.Add(null);
                lstObjRank.Add(1);
                lstObjRank.Add(int.MaxValue -1);
                var lstRank = salaryRankServices.GetData<Cat_SalaryRankEntity>(lstObjRank, ConstantSql.hrm_cat_sp_get_SalaryRank, UserLogin, ref status).ToList().Translate<Cat_SalaryRank>();
                var rankEntity = lstRank.Where(s => s.ID == SalaryRankID).FirstOrDefault();

                var salaryClassServices = new Cat_SalaryClassServices();
                var lstObjClass = new List<object>();
                lstObjClass.Add(null);
                lstObjClass.Add(1);
                lstObjClass.Add(int.MaxValue -1);
                var salaryClass = salaryClassServices.GetData<Cat_SalaryClassEntity>(lstObjClass, ConstantSql.hrm_cat_sp_get_SalaryClass, UserLogin, ref status).ToList().Translate<Cat_SalaryClass>();
                
                var salaryClassEntity = salaryClass.Where(s => rankEntity.SalaryClassID == s.ID).FirstOrDefault();
               
                foreach (var item in lstProfileIDs)
                {
                    Sal_BasicSalary objBasicSalary = new Sal_BasicSalary();
                    objBasicSalary.ProfileID = item;
                    objBasicSalary.GrossAmount = BasicSalary;
                    objBasicSalary.Amount = BasicSalary.Encrypt(); 
                    objBasicSalary.DateOfEffect = DateHire;
                    objBasicSalary.RankRateID = SalaryRankID;
                    objBasicSalary.CurrencyID = currency.ID;
                    objBasicSalary.ClassRateID = salaryClassEntity == null ? Guid.Empty : salaryClassEntity.ID;
                    lstBasicSalary.Add(objBasicSalary);
                }

                repoBasicSalary.Add(lstBasicSalary);
                repoBasicSalary.SaveChanges();


            }
        }
Example #26
0
        public void SaveUnusualAllowance(List<Sal_UnusualAllowanceEntity> model)
        {
            using (var context = new VnrHrmDataContext())
            {
                string status = string.Empty;
                var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                var repoUnusualAllowance = new CustomBaseRepository<Sal_UnusualAllowance>(unitOfWork);

                repoUnusualAllowance.Add(model.Translate<Sal_UnusualAllowance>());
                unitOfWork.SaveChanges();
            }
        }
Example #27
0
        public List <Sal_PayrollEstimateDetailEntity> GetTemplatePayrollEstimate(Sal_PayrollEstimateEntity model)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork                = (IUnitOfWork) new UnitOfWork(context);
                var repoOrgStructure          = new CustomBaseRepository <Cat_OrgStructure>(unitOfWork);
                var repoPayrollEstimateDetail = new CustomBaseRepository <Sal_PayrollEstimateDetail>(unitOfWork);

                List <Cat_OrgStructure> listOrg = repoOrgStructure.FindBy(m => m.IsDelete != true).ToList();
                if (model.OrgStructureIDs != null)
                {
                    string[] listOrdernumber = model.OrgStructureIDs.Split(',');
                    listOrg = listOrg.Where(m => listOrdernumber.Contains(m.OrderNumber.ToString())).ToList();
                }

                List <Sal_PayrollEstimateDetail> ListPayrollEstimateDetail = new List <Sal_PayrollEstimateDetail>();
                ListPayrollEstimateDetail = repoPayrollEstimateDetail.FindBy(m => m.IsDelete != true && m.PayrollEstimateID == null).ToList();

                List <Sal_PayrollEstimateDetailEntity> Result = new List <Sal_PayrollEstimateDetailEntity>();
                foreach (var i in listOrg)
                {
                    Sal_PayrollEstimateDetailEntity item = new Sal_PayrollEstimateDetailEntity();
                    item.ID = Guid.NewGuid();
                    item.OrgStructureName = i.OrgStructureName;
                    item.OrgStructureCode = i.Code;
                    item.OrgStructureID   = i.ID;
                    var _tmp = ListPayrollEstimateDetail.FirstOrDefault(m => m.OrgStructureID == i.ID);
                    if (_tmp != null)
                    {
                        item.LeaveUnpaid          = _tmp.LeaveUnpaid != null ? _tmp.LeaveUnpaid : 0;
                        item.OvertimeHoliday      = _tmp.OvertimeHoliday != null ? _tmp.OvertimeHoliday : 0;
                        item.OvertimeNightHoliday = _tmp.OvertimeNightHoliday != null ? _tmp.OvertimeNightHoliday : 0;
                        item.OvertimeNightNormal  = _tmp.OvertimeNightNormal != null ? _tmp.OvertimeNightNormal : 0;
                        item.OvertimeNightWeekend = _tmp.OvertimeNightWeekend != null ? _tmp.OvertimeNightWeekend : 0;
                        item.OvertimeNormal       = _tmp.OvertimeNormal != null ? _tmp.OvertimeNormal : 0;
                        item.OvertimeWeekend      = _tmp.OvertimeWeekend != null ? _tmp.OvertimeWeekend : 0;
                    }
                    else
                    {
                        item.LeaveUnpaid          = 0;
                        item.OvertimeHoliday      = 0;
                        item.OvertimeNightHoliday = 0;
                        item.OvertimeNightNormal  = 0;
                        item.OvertimeNightWeekend = 0;
                        item.OvertimeNormal       = 0;
                        item.OvertimeWeekend      = 0;
                    }
                    Result.Add(item);
                }
                return(Result);
            }
        }
Example #28
0
        public void CreateFormulaTemplate(List <Cat_FormulaTemplateEntity> listFormulaTemplate, Guid GradeID)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork) new UnitOfWork(context);
                var repoCat_FormulaTemplate = new CustomBaseRepository <Cat_FormulaTemplate>(unitOfWork);
                var repoCat_Element         = new CustomBaseRepository <Cat_Element>(unitOfWork);

                #region Xử lý bảng template
                //lấy các phần tử template trong grade
                List <Cat_FormulaTemplate> listFormulaTemplateByGrade = repoCat_FormulaTemplate.FindBy(m => m.IsDelete != true && m.GradeID != null && m.GradeID == GradeID).ToList();
                //xóa các phần tử đó
                repoCat_FormulaTemplate.Delete(listFormulaTemplateByGrade);

                //insert lại các phần tử mới
                List <Cat_FormulaTemplate> listFormulaTemplateModel = listFormulaTemplate.Translate <Cat_FormulaTemplate>();
                listFormulaTemplateModel.ForEach(m => m.GradeID = GradeID);
                repoCat_FormulaTemplate.Add(listFormulaTemplateModel);
                #endregion

                #region Xử lý bảng cat_element
                //lấy các phần tử có cùng mã code với template
                List <Cat_Element> listElement = repoCat_Element.FindBy(m => m.IsDelete != true && m.GradePayrollID == GradeID).ToList();
                listElement = listElement.Where(m => listFormulaTemplate.Any(t => t.ElementCode.ReplaceSpace() == m.ElementCode.ReplaceSpace())).ToList();
                //xóa các phần tử đó đi
                repoCat_Element.Delete(listElement);

                //tạo ra các element
                List <Cat_Element> listElementModel = new List <Cat_Element>();
                Cat_Element        item             = new Cat_Element();
                foreach (var template in listFormulaTemplate)
                {
                    item = new Cat_Element();
                    item.GradePayrollID = GradeID;
                    item.ElementCode    = template.ElementCode.ReplaceSpace();
                    item.ElementName    = template.ElementName;
                    item.Formula        = template.Formula;
                    item.IsBold         = template.IsBold;
                    item.Invisible      = template.Invisible;
                    item.Description    = template.Description;
                    item.TabType        = CatElementType.Payroll.ToString();
                    item.MethodPayroll  = MethodPayroll.E_NORMAL.ToString();
                    item.ElementType    = CatElementType.Payroll.ToString();
                    item.Type           = EnumDropDown.ElementDataType.Double.ToString();
                    listElementModel.Add(item);
                }
                repoCat_Element.Add(listElementModel);

                unitOfWork.SaveChanges();
                #endregion
            }
        }
Example #29
0
        public void SetCompensationLeaveBeginYear(List <Guid> lstProfileIDs, double?limitMaximum, int Year, int?MonthResetANL, Guid?AllowanceTypeID, Guid?CuttOffDurationID)
        {
            using (var context = new VnrHrmDataContext())
            {
                var      unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var      repoAtt_CompensationConfig = new CustomBaseRepository <Att_CompensationConfig>(unitOfWork);
                DateTime EndLastYear = new DateTime(Year - 1, 12, 1);

                List <Att_CompensationDetail> lstCompensationDetail = unitOfWork.CreateQueryable <Att_CompensationDetail>(m => m.MonthYear == EndLastYear &&
                                                                                                                          m.ProfileID != null &&
                                                                                                                          lstProfileIDs.Contains(m.ProfileID.Value)).ToList();
                var lstCompensationLeaveInDB = unitOfWork.CreateQueryable <Att_CompensationConfig>(m => m.Year == Year && m.ProfileID != null && lstProfileIDs.Contains(m.ProfileID.Value)).ToList();

                List <Att_CompensationConfig> lstNewData  = new List <Att_CompensationConfig>();
                List <Att_CompensationConfig> lstEditData = new List <Att_CompensationConfig>();
                foreach (var ProfileID in lstProfileIDs)
                {
                    Att_CompensationConfig CompensationLeaveConfigByProfile = lstCompensationLeaveInDB.Where(m => m.ProfileID == ProfileID).FirstOrDefault();
                    bool IsNew = false;
                    if (CompensationLeaveConfigByProfile == null)
                    {
                        IsNew = true;
                        CompensationLeaveConfigByProfile           = new Att_CompensationConfig();
                        CompensationLeaveConfigByProfile.ID        = Guid.NewGuid();
                        CompensationLeaveConfigByProfile.ProfileID = ProfileID;
                        CompensationLeaveConfigByProfile.Year      = Year;
                    }
                    CompensationLeaveConfigByProfile.MonthResetInitAvailable = MonthResetANL;
                    double RemainLastYear = lstCompensationDetail.Where(m => m.ProfileID == ProfileID).Select(m => m.Remain ?? 0).FirstOrDefault();
                    if (limitMaximum != null)
                    {
                        CompensationLeaveConfigByProfile.InitAvailable = RemainLastYear > limitMaximum.Value ? limitMaximum.Value : RemainLastYear;
                    }
                    else
                    {
                        CompensationLeaveConfigByProfile.InitAvailable = RemainLastYear;
                    }
                    if (IsNew)
                    {
                        lstNewData.Add(CompensationLeaveConfigByProfile);
                    }
                    else
                    {
                        lstEditData.Add(CompensationLeaveConfigByProfile);
                    }
                    //Sửa lại theo phần tử mới mà Sơn build
                }
                repoAtt_CompensationConfig.Add(lstNewData);
                repoAtt_CompensationConfig.Edit(lstEditData);
                unitOfWork.SaveChanges();
            }
        }
Example #30
0
        public void SetCompensationLeaveBeginYear(List<Guid> lstProfileIDs, double? limitMaximum, int Year, int? MonthResetANL, Guid? AllowanceTypeID, Guid? CuttOffDurationID)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoAtt_CompensationConfig = new CustomBaseRepository<Att_CompensationConfig>(unitOfWork);
                DateTime EndLastYear = new DateTime(Year - 1, 12, 1);

                List<Att_CompensationDetail> lstCompensationDetail = unitOfWork.CreateQueryable<Att_CompensationDetail>(m => m.MonthYear == EndLastYear
                                                                        && m.ProfileID != null
                                                                        && lstProfileIDs.Contains(m.ProfileID.Value)).ToList();
                var lstCompensationLeaveInDB = unitOfWork.CreateQueryable<Att_CompensationConfig>(m => m.Year == Year && m.ProfileID != null && lstProfileIDs.Contains(m.ProfileID.Value)).ToList();

                List<Att_CompensationConfig> lstNewData = new List<Att_CompensationConfig>();
                List<Att_CompensationConfig> lstEditData = new List<Att_CompensationConfig>();
                foreach (var ProfileID in lstProfileIDs)
                {
                    Att_CompensationConfig CompensationLeaveConfigByProfile = lstCompensationLeaveInDB.Where(m => m.ProfileID == ProfileID).FirstOrDefault();
                    bool IsNew = false;
                    if (CompensationLeaveConfigByProfile == null)
                    {
                        IsNew = true;
                        CompensationLeaveConfigByProfile = new Att_CompensationConfig();
                        CompensationLeaveConfigByProfile.ID = Guid.NewGuid();
                        CompensationLeaveConfigByProfile.ProfileID = ProfileID;
                        CompensationLeaveConfigByProfile.Year = Year;
                    }
                    CompensationLeaveConfigByProfile.MonthResetInitAvailable = MonthResetANL;
                    double RemainLastYear = lstCompensationDetail.Where(m => m.ProfileID == ProfileID).Select(m => m.Remain ?? 0).FirstOrDefault();
                    if (limitMaximum != null)
                    {
                        CompensationLeaveConfigByProfile.InitAvailable = RemainLastYear > limitMaximum.Value ? limitMaximum.Value : RemainLastYear;
                    }
                    else
                    {
                        CompensationLeaveConfigByProfile.InitAvailable = RemainLastYear;
                    }
                    if (IsNew)
                    {
                        lstNewData.Add(CompensationLeaveConfigByProfile);
                    }
                    else
                    {
                        lstEditData.Add(CompensationLeaveConfigByProfile);
                    }
                    //Sửa lại theo phần tử mới mà Sơn build
                }
                repoAtt_CompensationConfig.Add(lstNewData);
                repoAtt_CompensationConfig.Edit(lstEditData);
                unitOfWork.SaveChanges();
            }
        }
Example #31
0
        public void AddDataForBasicSalary(string ProfileIDs, string BasicSalary, DateTime DateHire, Guid SalaryRankID, string UserLogin)
        {
            using (var context = new VnrHrmDataContext())
            {
                var                    unitOfWork      = (IUnitOfWork)(new UnitOfWork(context));
                string                 status          = string.Empty;
                var                    repoBasicSalary = new CustomBaseRepository <Sal_BasicSalary>(unitOfWork);
                List <Guid>            lstProfileIDs   = ProfileIDs.Split(',').Select(x => Guid.Parse(x)).ToList();
                List <Sal_BasicSalary> lstBasicSalary  = new List <Sal_BasicSalary>();
                //chua co cach giai quyet nen hard code lay mac dinh la VND
                var repoCurrency = new CustomBaseRepository <Cat_Currency>(unitOfWork);
                var currency     = repoCurrency.FindBy(s => s.IsDelete == null && s.CurrencyName == "VND").FirstOrDefault();
                //var repoSalaryRank = new CustomBaseRepository<Cat_SalaryRank>(unitOfWork);
                //var repoSalaryClass = new CustomBaseRepository<Cat_SalaryClass>(unitOfWork);
                //var salaryRank = repoSalaryRank.FindBy(s => s.IsDelete == null && s.ID == SalaryRankID).FirstOrDefault();
                //var salaryClass = repoSalaryClass.FindBy(s => s.IsDelete == null && s.ID == salaryRank.SalaryClassID).FirstOrDefault();
                var salaryRankServices = new Cat_SalaryRankServices();
                var lstObjRank         = new List <object>();
                lstObjRank.Add(null);
                lstObjRank.Add(null);
                lstObjRank.Add(1);
                lstObjRank.Add(int.MaxValue - 1);
                var lstRank    = salaryRankServices.GetData <Cat_SalaryRankEntity>(lstObjRank, ConstantSql.hrm_cat_sp_get_SalaryRank, UserLogin, ref status).ToList().Translate <Cat_SalaryRank>();
                var rankEntity = lstRank.Where(s => s.ID == SalaryRankID).FirstOrDefault();

                var salaryClassServices = new Cat_SalaryClassServices();
                var lstObjClass         = new List <object>();
                lstObjClass.Add(null);
                lstObjClass.Add(1);
                lstObjClass.Add(int.MaxValue - 1);
                var salaryClass = salaryClassServices.GetData <Cat_SalaryClassEntity>(lstObjClass, ConstantSql.hrm_cat_sp_get_SalaryClass, UserLogin, ref status).ToList().Translate <Cat_SalaryClass>();

                var salaryClassEntity = salaryClass.Where(s => rankEntity.SalaryClassID == s.ID).FirstOrDefault();

                foreach (var item in lstProfileIDs)
                {
                    Sal_BasicSalary objBasicSalary = new Sal_BasicSalary();
                    objBasicSalary.ProfileID    = item;
                    objBasicSalary.GrossAmount  = BasicSalary;
                    objBasicSalary.Amount       = BasicSalary.Encrypt();
                    objBasicSalary.DateOfEffect = DateHire;
                    objBasicSalary.RankRateID   = SalaryRankID;
                    objBasicSalary.CurrencyID   = currency.ID;
                    objBasicSalary.ClassRateID  = salaryClassEntity == null ? Guid.Empty : salaryClassEntity.ID;
                    lstBasicSalary.Add(objBasicSalary);
                }

                repoBasicSalary.Add(lstBasicSalary);
                repoBasicSalary.SaveChanges();
            }
        }
Example #32
0
        public bool CheckLeader(Guid LeaderID, Guid ProfileID)
        {
            bool rs = false;
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoProfile = new CustomBaseRepository<Hre_Profile>(unitOfWork);
                var Profile = repoProfile.GetById(ProfileID);
                if (Profile.SupervisorID == LeaderID || Profile.HighSupervisorID == LeaderID)
                    rs = true;

            }
            return rs;
        }
Example #33
0
 public ResultsObject UpdateStatus(string Ids,string Status)
 {
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
         var repoHDTJobGroup = new CustomBaseRepository<Cat_HDTJobGroup>(unitOfWork);
         List<Cat_HDTJobGroup> listHDTJob = repoHDTJobGroup.FindBy(m => m.IsDelete != true).ToList();
         string[] ListIds = Ids.Split(',');
         listHDTJob = listHDTJob.Where(m => ListIds.Contains(m.ID.ToString())).ToList();
         listHDTJob.ForEach(m => m.Status = Status);
         unitOfWork.SaveChanges();
         return new ResultsObject();
     }
 }
Example #34
0
 public ResultsObject UpdateStatus(string Ids, string Status)
 {
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork      = (IUnitOfWork) new UnitOfWork(context);
         var repoHDTJobGroup = new CustomBaseRepository <Cat_HDTJobGroup>(unitOfWork);
         List <Cat_HDTJobGroup> listHDTJob = repoHDTJobGroup.FindBy(m => m.IsDelete != true).ToList();
         string[] ListIds = Ids.Split(',');
         listHDTJob = listHDTJob.Where(m => ListIds.Contains(m.ID.ToString())).ToList();
         listHDTJob.ForEach(m => m.Status = Status);
         unitOfWork.SaveChanges();
         return(new ResultsObject());
     }
 }
        public ResultsObject UpdateSatus(List <Guid> listIds, string status)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork           = (IUnitOfWork) new UnitOfWork(context);
                var repoUnusualAllowance = new CustomBaseRepository <Sal_UnusualAllowance>(unitOfWork);

                List <Sal_UnusualAllowance> listResult = repoUnusualAllowance.FindBy(m => m.IsDelete != true).ToList();
                listResult = listResult.Where(m => listIds.Contains(m.ID)).ToList();
                listResult.ForEach(m => m.Status = status);
                unitOfWork.SaveChanges();
                return(new ResultsObject());
            }
        }
Example #36
0
        public ResultsObject SaveChangeHoldSalary(List <Sal_HoldSalaryEntity> ListEntity)
        {
            try
            {
                using (var context = new VnrHrmDataContext())
                {
                    var unitOfWork         = (IUnitOfWork) new UnitOfWork(context);
                    var repoSal_HoldSalary = new CustomBaseRepository <Sal_HoldSalary>(unitOfWork);
                    List <Sal_HoldSalary> TotalHoldSalary = repoSal_HoldSalary.FindBy(m => m.IsDelete != true).ToList();

                    foreach (var i in ListEntity)
                    {
                        #region Kiểm tra nhân viên đã có dữ liệu giữ lương hay chưa

                        Sal_HoldSalary HoldSalaryByProfile = TotalHoldSalary.FirstOrDefault(m => m.ProfileID == i.ProfileID && m.MonthSalary != null && m.MonthSalary.Value.Day == i.MonthSalary.Value.Day && m.TimeAnalyzeID != null && m.TimeAnalyzeID == i.TimeAnalyzeID);
                        if (HoldSalaryByProfile != null)
                        {
                            if (HoldSalaryByProfile.Status == EnumDropDown.HoldSalaryStatus.E_APPROVED.ToString())
                            {
                                continue;
                            }
                            else
                            {
                                HoldSalaryByProfile.AmountSalary      = i.AmountSalary;
                                HoldSalaryByProfile.IsLeaveContinuous = i.IsLeaveContinuous;
                                HoldSalaryByProfile.IsLeaveM          = i.IsLeaveM;
                                HoldSalaryByProfile.Terminate         = i.Terminate;
                                HoldSalaryByProfile.TimeAnalyzeID     = i.TimeAnalyzeID;
                            }
                        }
                        else
                        {
                            Sal_HoldSalary HoldSalary = i.Copy <Sal_HoldSalary>();
                            repoSal_HoldSalary.Add(HoldSalary);
                        }
                        #endregion
                    }
                    unitOfWork.SaveChanges();
                    return(new ResultsObject());
                }
            }
            catch (Exception ex)
            {
                return(new ResultsObject()
                {
                    Success = false, Messenger = ex.Message
                });
            }
        }
Example #37
0
 /// <summary>
 /// [Chuc.Nguyen] - Xóa dữ liệu theo điều kiện sử dụng Store
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="condition"></param>
 /// <param name="storeName"></param>
 /// <returns></returns>
 public string DeleteData <TEntity>(ListQueryModel condition, string storeName) where TEntity : class
 {
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         var repo       = new CustomBaseRepository <TEntity>(unitOfWork);
         try
         {
             return(repo.DeleteData(condition, storeName));
         }
         catch (Exception ex)
         {
             return(NotificationType.Error + "," + ex.Message);
         }
     }
 }
Example #38
0
        public List<Sys_UserInfoEntity> ResourceUserApproved(Guid orgEmp, string type)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoSys_UserApprove = new CustomBaseRepository<Sys_UserApprove>(unitOfWork);
                var repoCat_OrgStructure = new CustomBaseRepository<Cat_OrgStructure>(unitOfWork);
                var repoSys_UserInfo = new CustomBaseRepository<Sys_UserInfo>(unitOfWork);

                List<object> listObj = new List<object>();
                listObj.Add(null);
                listObj.Add(string.Empty);
                listObj.Add(string.Empty);

                string status = string.Empty;
                //var dataProfile = GetData<Hre_Profile>(listObj, ConstantSql.hrm_hr_sp_get_ProfileIdsByOrg, ref status).ToList();
                var dataUA = repoSys_UserApprove.FindBy(s => s.IsDelete == null && s.Type == type).ToList();

                // lấy UserInfo của Người Duyệt
                var lstUserInfo = dataUA.Select(s => s.UserApproveID).Distinct().ToList();
                // Lấy guid Nhân Viên từ UserInfo
                var lstUser = repoSys_UserInfo.FindBy(s => lstUserInfo.Contains(s.ID)).ToList();
                //var lstProGuid = lstUser.Select(s => s.ProfileID).Distinct().ToList();
                var dataCat_OrgStructure = repoCat_OrgStructure.FindBy(s => s.OrderNumber != null).ToList();

                List<Sys_UserInfoEntity> lstReturn = new List<Sys_UserInfoEntity>();
                foreach (var item in dataUA)
                {
                    var user = lstUser.Where(d => d.ID == item.UserApproveID).FirstOrDefault();
                    //var idUser = lstUserInfo.Where(s => s == item.UserApproveID).FirstOrDefault();
                    //var idOrg = lstUser.Where(s => s.ID == idUser).Select(s => s.OrgStructureID).FirstOrDefault();

                    if (item.OrgStructureID != null && IsParentOrgStructure(orgEmp, item.OrgStructureID.Value, dataCat_OrgStructure))
                    {
                        Sys_UserInfoEntity entity = new Sys_UserInfoEntity()
                        {
                            ID = item.UserApproveID,
                            UserInfoName = user.UserInfoName,
                            UserLogin = user.UserLogin

                        };
                        lstReturn.Add(entity);
                    }
                }
                return lstReturn;
            }
        }
        public Eva_PerformanceExtendEntity GetPerformanceExtendByPerID(string ID,string userLogin)
        {
            Guid perID = Guid.Empty;
            Guid.TryParse( ID, out perID);
            BaseService service = new BaseService();
            string status = string.Empty;

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoEva_Performance = new CustomBaseRepository<Eva_Performance>(unitOfWork);
                var repoEva_PerformanceExtend = new CustomBaseRepository<Eva_PerformanceExtend>(unitOfWork);

                var performance = repoEva_Performance.GetAll().Where(s => s.ID == perID).FirstOrDefault();
                var extend = repoEva_PerformanceExtend.GetAll().Where(s => s.ID == performance.PerformanceExtendID).FirstOrDefault();

                var result = extend.Copy<Eva_PerformanceExtendEntity>();
                string proID = Common.DotNetToOracle(performance.ProfileID.Value.ToString());
                var profile = service.GetData<Hre_ProfileEntity>(proID, ConstantSql.hrm_hr_sp_get_ProfileById,userLogin, ref status).FirstOrDefault();

                if (profile != null && result == null)
                {
                    result = new Eva_PerformanceExtendEntity();
                }
                
                result.ProfileName = profile.ProfileName ?? string.Empty;
                result.CodeEmp = profile.CodeEmp ?? string.Empty;
                result.PositionName = profile.PositionName ?? string.Empty;
                result.JobTitleName = profile.JobTitleName ?? string.Empty;
                result.DateOfBirth = profile.DateOfBirth;
                result.DateHire = profile.DateHire;
                result.PayrollGroupName = profile.PayrollGroupName ?? string.Empty;
                result.SupervisorName = profile.SupervisorName ?? string.Empty;
                result.HighSupervisorName = profile.HighSupervisorName ?? string.Empty;
                result.WorkPlaceName = profile.WorkPlaceName ?? string.Empty;
                result.TCountryName = profile.TCountryName ?? string.Empty;
                result.TProvinceName = profile.TProvinceName ?? string.Empty;
                result.Channel = profile.Channel ?? string.Empty;
                result.Region = profile.Region ?? string.Empty;
                result.Area = profile.Area ?? string.Empty;
                result.DateOfEffect = profile.DateOfEffect;

                return result;

            }
        }
        public Eva_PerformanceExtendEntity GetPerformanceExtendByPerID(string ID, string userLogin)
        {
            Guid perID = Guid.Empty;

            Guid.TryParse(ID, out perID);
            BaseService service = new BaseService();
            string      status  = string.Empty;

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork                = (IUnitOfWork)(new UnitOfWork(context));
                var repoEva_Performance       = new CustomBaseRepository <Eva_Performance>(unitOfWork);
                var repoEva_PerformanceExtend = new CustomBaseRepository <Eva_PerformanceExtend>(unitOfWork);

                var performance = repoEva_Performance.GetAll().Where(s => s.ID == perID).FirstOrDefault();
                var extend      = repoEva_PerformanceExtend.GetAll().Where(s => s.ID == performance.PerformanceExtendID).FirstOrDefault();

                var    result  = extend.Copy <Eva_PerformanceExtendEntity>();
                string proID   = Common.DotNetToOracle(performance.ProfileID.Value.ToString());
                var    profile = service.GetData <Hre_ProfileEntity>(proID, ConstantSql.hrm_hr_sp_get_ProfileById, userLogin, ref status).FirstOrDefault();

                if (profile != null && result == null)
                {
                    result = new Eva_PerformanceExtendEntity();
                }

                result.ProfileName        = profile.ProfileName ?? string.Empty;
                result.CodeEmp            = profile.CodeEmp ?? string.Empty;
                result.PositionName       = profile.PositionName ?? string.Empty;
                result.JobTitleName       = profile.JobTitleName ?? string.Empty;
                result.DateOfBirth        = profile.DateOfBirth;
                result.DateHire           = profile.DateHire;
                result.PayrollGroupName   = profile.PayrollGroupName ?? string.Empty;
                result.SupervisorName     = profile.SupervisorName ?? string.Empty;
                result.HighSupervisorName = profile.HighSupervisorName ?? string.Empty;
                result.WorkPlaceName      = profile.WorkPlaceName ?? string.Empty;
                result.TCountryName       = profile.TCountryName ?? string.Empty;
                result.TProvinceName      = profile.TProvinceName ?? string.Empty;
                result.Channel            = profile.Channel ?? string.Empty;
                result.Region             = profile.Region ?? string.Empty;
                result.Area         = profile.Area ?? string.Empty;
                result.DateOfEffect = profile.DateOfEffect;

                return(result);
            }
        }
Example #41
0
        public string[] SetWaitApproveKaiZenData(List <Guid> SelectIds)
        {
            using (var context = new VnrHrmDataContext())
            {
                try
                {
                    var    unitOfWork                     = (IUnitOfWork)(new UnitOfWork(context));
                    string status                         = string.Empty;
                    var    repoKai_KaizenData             = new CustomBaseRepository <Kai_KaizenData>(unitOfWork);
                    var    repoKai_RankMark               = new CustomBaseRepository <Kai_RankMark>(unitOfWork);
                    List <Kai_KaizenData> ListKaiZendData = repoKai_KaizenData.FindBy(m => m.IsDelete != true).ToList();
                    List <Kai_RankMark>   ListKaiRank     = repoKai_RankMark.FindBy(m => m.IsDelete != true).ToList();

                    int    Pass     = 0;
                    int    Fail     = 0;
                    string FailCode = string.Empty;

                    foreach (var i in ListKaiZendData)
                    {
                        if (SelectIds.Any(m => m == i.ID))
                        {
                            #region Kiểm tra hợp lệ vùng điểm
                            List <Kai_RankMark> ListKaiRankByRankMark = ListKaiRank.Where(m => m.MarkIdea == i.MarkIdea).ToList();
                            if (ListKaiRankByRankMark.Any(m => m.MarkPerform == i.MarkPerform))
                            {
                                i.Status = EnumDropDown.Kai_KaizenDataStatus.E_WATTING_APPROVED.ToString();
                                Pass++;
                            }
                            else
                            {
                                Fail++;
                                FailCode += i.Hre_Profile.CodeEmp + ",";
                            }
                            #endregion
                        }
                    }
                    unitOfWork.SaveChanges();

                    return(new string[] { Pass.ToString(), Fail.ToString(), FailCode });
                }
                catch
                {
                    return(new string[] { "0", "0", string.Empty });
                }
            }
        }
Example #42
0
        public string ActionRejectTraineeRegister(List <Guid> selectedIds, Guid UserId, string Reason)
        {
            using (var context = new VnrHrmDataContext())
            {
                var message    = string.Empty;
                var status     = string.Empty;
                var UserLogin  = string.Empty;
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));

                var objTraineeRegister = new List <object>();
                objTraineeRegister.AddRange(new object[12]);
                objTraineeRegister[10] = 1;
                objTraineeRegister[11] = int.MaxValue - 1;
                var lstTraineeRegister = GetData <Tra_TraineeRegisterEntity>(objTraineeRegister, ConstantSql.hrm_tra_sp_get_TraineeRegister, UserLogin, ref status).ToList();

                var repo_UserApproved = new CustomBaseRepository <Sys_UserApprove>(unitOfWork);
                var lstUserApproved   = repo_UserApproved.GetAll().Where(s => s.IsDelete != null).ToList();

                if (selectedIds.Count > 0)
                {
                    lstTraineeRegister = lstTraineeRegister.Where(s => selectedIds.Contains(s.ID)).ToList();
                }

                foreach (var item in lstTraineeRegister)
                {
                    #region Check Loại Người Duyệt
                    if (item.UserApproveID1 != null && item.UserApproveID1.Value == UserId)
                    {
                        item.Status  = EnumDropDown.TraineeRegisterStatus.E_REJECTED.ToString();
                        item.Reason1 = Reason;
                        message      = Edit(item);
                    }
                    #endregion

                    #region Người duyệt cuối
                    if (item.UserApproveID2 != null && item.UserApproveID2.Value == UserId)
                    {
                        item.Status  = EnumDropDown.TraineeRegisterStatus.E_REJECTED.ToString();
                        item.Reason2 = Reason;
                        message      = Edit(item);
                    }
                    #endregion
                }
                return(message);
            }
        }
Example #43
0
        public int[] ApprevedKaiZenData(List <Guid> selectedIds, DateTime MonthYear, Guid UnusualEDTypeID, Guid Currency)
        {
            using (var context = new VnrHrmDataContext())
            {
                string status                   = string.Empty;
                var    unitOfWork               = (IUnitOfWork) new UnitOfWork(context);
                var    repoKai_KaizenData       = new CustomBaseRepository <Kai_KaizenData>(unitOfWork);
                var    repoSal_UnusualAllowance = new CustomBaseRepository <Sal_UnusualAllowance>(unitOfWork);
                List <Sal_UnusualAllowance> listUnusualAllowance = new List <Sal_UnusualAllowance>();

                //lọc ra các kaizen được chọn
                List <Kai_KaizenData> listKaiZendata = repoKai_KaizenData.FindBy(m => m.IsDelete != true).ToList();
                listKaiZendata = listKaiZendata.Where(m => m.Status == EnumDropDown.Kai_KaizenDataStatus.E_APPROVED.ToString() && selectedIds.Any(t => t == m.ID)).ToList();

                int Pass = 0;
                int Fail = 0;

                Sal_UnusualAllowance item = new Sal_UnusualAllowance();
                foreach (var KaiZenItem in listKaiZendata)
                {
                    if (KaiZenItem.DateTransferPayment == null && (KaiZenItem.IsPaymentOut == null || KaiZenItem.IsPaymentOut == false))
                    {
                        item                 = new Sal_UnusualAllowance();
                        item.ProfileID       = KaiZenItem.ProfileID != null ? (Guid)KaiZenItem.ProfileID : Guid.NewGuid();
                        item.MonthStart      = new DateTime(MonthYear.Year, MonthYear.Month, 1);
                        item.MonthEnd        = new DateTime(MonthYear.Year, MonthYear.Month, 1).AddMonths(1).AddDays(-1);
                        item.Type            = EnumDropDown.EDType.E_EARNING.ToString();
                        item.UnusualEDTypeID = UnusualEDTypeID;
                        item.CurrencyID      = Currency;
                        item.Amount          = KaiZenItem.SumAmount != null ? KaiZenItem.SumAmount : 0;
                        listUnusualAllowance.Add(item);

                        KaiZenItem.DateTransferPayment = MonthYear;
                        Pass++;
                    }
                    else
                    {
                        Fail++;
                    }
                }
                repoSal_UnusualAllowance.Add(listUnusualAllowance);
                unitOfWork.SaveChanges();
                return(new int[] { Pass, Fail });
            }
        }
Example #44
0
 /// <summary>
 /// [Chuc.Nguyen] - Lấy dữ liệu theo keyword sử dụng Store
 /// </summary>
 /// <param name="keyword">Từ khóa lấy dữ liệu: có thể là ListId, Id, có thể là Text...</param>
 /// <param name="storeName">Tên store lấy dữ liệu</param>
 /// <param name="status">Trạng thái lấy thành công hoặc lỗi</param>
 /// <returns></returns>
 public List <TEntity> GetData <TEntity>(object keyword, string storeName, string userLogin, ref string status) where TEntity : class
 {
     using (var context = new VnrHrmDataContext())
     {
         List <TEntity> listEntity = new List <TEntity>();
         var            unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         var            repo       = new CustomBaseRepository <TEntity>(unitOfWork);
         try
         {
             listEntity = repo.GetData(keyword, storeName, userLogin, ref status).ToList();
         }
         catch (Exception ex)
         {
             listEntity = null;
             status     = NotificationType.Error + "," + ex.Message;
         }
         return(listEntity);
     }
 }
Example #45
0
        public bool SaveTemplatePayrollEstimate(List <Sal_PayrollEstimateDetailEntity> listEntity)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork                = (IUnitOfWork) new UnitOfWork(context);
                var repoOrgStructure          = new CustomBaseRepository <Cat_OrgStructure>(unitOfWork);
                var repoPayrollEstimateDetail = new CustomBaseRepository <Sal_PayrollEstimateDetail>(unitOfWork);

                List <Sal_PayrollEstimateDetail> ListPayrollEstimateDetail = new List <Sal_PayrollEstimateDetail>();
                ListPayrollEstimateDetail = repoPayrollEstimateDetail.FindBy(m => m.IsDelete != true && m.PayrollEstimateID == null).ToList();

                foreach (var i in listEntity)
                {
                    var _tmp = ListPayrollEstimateDetail.FirstOrDefault(m => m.OrgStructureID == i.OrgStructureID);
                    if (_tmp != null)
                    {
                        _tmp.LeaveUnpaid          = i.LeaveUnpaid;
                        _tmp.OvertimeHoliday      = i.OvertimeHoliday;
                        _tmp.OvertimeNightHoliday = i.OvertimeNightHoliday;
                        _tmp.OvertimeNightNormal  = i.OvertimeNightNormal;
                        _tmp.OvertimeNightWeekend = i.OvertimeNightWeekend;
                        _tmp.OvertimeNormal       = i.OvertimeNormal;
                        _tmp.OvertimeWeekend      = i.OvertimeWeekend;
                    }
                    else
                    {
                        Sal_PayrollEstimateDetail item = new Sal_PayrollEstimateDetail();
                        item.ID                   = Guid.NewGuid();
                        item.OrgStructureID       = i.OrgStructureID;
                        item.LeaveUnpaid          = i.LeaveUnpaid;
                        item.OvertimeHoliday      = i.OvertimeHoliday;
                        item.OvertimeNightHoliday = i.OvertimeNightHoliday;
                        item.OvertimeNightNormal  = i.OvertimeNightNormal;
                        item.OvertimeNightWeekend = i.OvertimeNightWeekend;
                        item.OvertimeNormal       = i.OvertimeNormal;
                        item.OvertimeWeekend      = i.OvertimeWeekend;
                        repoPayrollEstimateDetail.Add(item);
                    }
                }
                unitOfWork.SaveChanges();
                return(true);
            }
        }
Example #46
0
 public string DeleteColumMode(Guid id, string gridName)
 {
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         try
         {
             var repo   = new CustomBaseRepository <Sys_ColumnMode>(unitOfWork);
             var entity = repo.FindBy(d => d.UserInfoID == id && d.GridControlName == gridName).FirstOrDefault();
             unitOfWork.RemoveObject(typeof(Sys_ColumnMode), entity);
             unitOfWork.SaveChanges(Guid.Empty);
             return(NotificationType.Success.ToString());
         }
         catch (Exception ex)
         {
             return(NotificationType.Error + "," + ex.Message);
         }
     }
 }
        public bool HasConfigAnnualLeaveAtTotalConfig()
        {
            var isConfig = false;
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoSys_AppConfig = new CustomBaseRepository<Sys_AppConfig>(unitOfWork);

                string E_STANDARD_WORKDAY = AppConfig.E_STANDARD_WORKDAY.ToString();
                var appconfig = repoSys_AppConfig.FindBy(p => p.Info == E_STANDARD_WORKDAY).FirstOrDefault();
                if (appconfig == null || string.IsNullOrEmpty(appconfig.Value78) ||
                    string.IsNullOrEmpty(appconfig.Value79))
                {
                    //xuat thong bao : Vui lòng cấu hình tham số và công thức tính phép năm ở "Cấu hình chung" (PleaseConfigAnnualLeaveAtTotalConfig)
                    return false;
                }
            }
            return isConfig;
        }
Example #48
0
        /// <summary>
        /// [Chuc.Nguyen] - Chỉnh sửa một danh sách đối tượng
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="listEntity"></param>
        /// <returns></returns>
        public string Edit <TEntity>(List <TEntity> listEntity) where TEntity : class
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repo       = new CustomBaseRepository <TEntity>(unitOfWork);
                try
                {
                    repo.Edit(listEntity);
                    var status = repo.SaveChanges();

                    if (status == DataErrorCode.Locked)
                    {
                        return(NotificationType.Locked.ToString());
                    }
                    else
                    {
                        return(NotificationType.Success.ToString());
                    }
                }
                catch (DbEntityValidationException ex)
                {
                    // Retrieve the error messages as a list of strings.
                    var errorMessages = ex.EntityValidationErrors
                                        .SelectMany(x => x.ValidationErrors)
                                        .Select(x => x.ErrorMessage);

                    // Join the list to a single string.
                    var fullErrorMessage = string.Join("; ", errorMessages);

                    // Combine the original exception message with the new one.
                    var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

                    // Throw a new DbEntityValidationException with the improved exception message.
                    return(NotificationType.Error + "," + exceptionMessage);
                }
                catch (Exception ex)
                {
                    return(NotificationType.Error + "," + ex.Message);
                }
            }
        }
Example #49
0
        public List <Sys_UserApproveEntity> GetUserApprovedForMulti_E_FIN_ClaimRequest(Guid recordID, string userLogin)
        {
            List <Sys_UserApproveEntity> lstReturn = new List <Sys_UserApproveEntity>();

            using (var context = new VnrHrmDataContext())
            {
                var    type       = ApproveType.E_FIN_ClaimRequest.ToString();
                var    unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                string status     = string.Empty;

                var    repoSys_ConfigProcessApprove = new CustomBaseRepository <Sys_ConfigProcessApprove>(unitOfWork);
                var    repoSys_UserApprove          = new CustomBaseRepository <Sys_UserApprove>(unitOfWork);
                var    repoSys_UserInfo             = new CustomBaseRepository <Sys_UserInfo>(unitOfWork);
                var    lstUserInfo   = repoSys_UserInfo.FindBy(s => s.IsDelete == null).ToList();
                var    record        = GetData <FIN_ClaimEntity>(recordID, ConstantSql.hrm_hr_sp_get_ClaimById, userLogin, ref status).FirstOrDefault();
                string currentStatus = record.Status;
                var    configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == currentStatus).FirstOrDefault();

                List <ElementFormula> listFomula = new List <ElementFormula>();
                ElementFormula        FomulaItem = new ElementFormula("Total", record.Total, 0);
                ElementFormula        statusItem = new ElementFormula(configProcess.NextStatusFormular, configProcess.NextStatusFormular, 1);
                listFomula.Add(FomulaItem);
                listFomula.Add(statusItem);
                string nextStatus = GetObjectValue(new List <Cat_ElementEntity>(), listFomula, configProcess.NextStatusFormular).ToString();

                var lstUserApprove          = repoSys_UserApprove.FindBy(s => s.IsDelete == null && s.Type == type && s.CurrentStatus == nextStatus).ToList();
                Sys_UserApproveEntity model = new Sys_UserApproveEntity();
                foreach (var item in lstUserApprove)
                {
                    if (item.UserRequestID != null && item.UserRequestID == record.UserCreateID)
                    {
                        model = new Sys_UserApproveEntity();
                        var temp = lstUserInfo.Where(s => s.ID == item.UserApproveID).FirstOrDefault();
                        model.ID = item.ID;
                        model.UserApproveName = temp.UserInfoName;
                        model.UserApproveID   = item.UserApproveID;
                        lstReturn.Add(model);
                    }
                }
            }
            return(lstReturn);
        }
Example #50
0
 public void AddDataForGrade(string ProfileIDs, Guid GradePayrollID, DateTime DateHire)
 {
     using (var context = new VnrHrmDataContext())
     {
         var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
         var repoGrade = new CustomBaseRepository<Sal_Grade>(unitOfWork);
         List<Guid> lstProfileIDs = ProfileIDs.Split(',').Select(x => Guid.Parse(x)).ToList();
         List<Sal_Grade> lstGrade = new List<Sal_Grade>();
         foreach (var item in lstProfileIDs)
         {
             Sal_Grade Grade = new Sal_Grade();
             Grade.ProfileID = item;
             Grade.GradePayrollID = GradePayrollID;
             Grade.MonthStart = DateHire;
             lstGrade.Add(Grade);
         }
         repoGrade.Add(lstGrade);
         repoGrade.SaveChanges();
     }
 }
Example #51
0
        public List<Sys_UserApproveEntity> GetUserApprovedForMulti_E_FIN_ClaimRequest(Guid recordID, string userLogin)
        {
            List<Sys_UserApproveEntity> lstReturn = new List<Sys_UserApproveEntity>();
            using (var context = new VnrHrmDataContext())
            {
                var type = ApproveType.E_FIN_ClaimRequest.ToString();
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                string status = string.Empty;

                var repoSys_ConfigProcessApprove = new CustomBaseRepository<Sys_ConfigProcessApprove>(unitOfWork);
                var repoSys_UserApprove = new CustomBaseRepository<Sys_UserApprove>(unitOfWork);
                var repoSys_UserInfo = new CustomBaseRepository<Sys_UserInfo>(unitOfWork);
                var lstUserInfo = repoSys_UserInfo.FindBy(s => s.IsDelete == null).ToList();
                var record = GetData<FIN_ClaimEntity>(recordID, ConstantSql.hrm_hr_sp_get_ClaimById, userLogin, ref status).FirstOrDefault();
                string currentStatus = record.Status;
                var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == currentStatus).FirstOrDefault();

                List<ElementFormula> listFomula = new List<ElementFormula>();
                ElementFormula FomulaItem = new ElementFormula("Total", record.Total, 0);
                ElementFormula statusItem = new ElementFormula(configProcess.NextStatusFormular, configProcess.NextStatusFormular, 1);
                listFomula.Add(FomulaItem);
                listFomula.Add(statusItem);
                string nextStatus = GetObjectValue(new List<Cat_ElementEntity>(), listFomula, configProcess.NextStatusFormular).ToString();

                var lstUserApprove = repoSys_UserApprove.FindBy(s => s.IsDelete == null && s.Type == type && s.CurrentStatus == nextStatus).ToList();
                Sys_UserApproveEntity model = new Sys_UserApproveEntity();
                foreach (var item in lstUserApprove)
                {
                    if (item.UserRequestID != null && item.UserRequestID == record.UserCreateID)
                    {
                        model = new Sys_UserApproveEntity();
                        var temp = lstUserInfo.Where(s => s.ID == item.UserApproveID).FirstOrDefault();
                        model.ID = item.ID;
                        model.UserApproveName = temp.UserInfoName;
                        model.UserApproveID = item.UserApproveID;
                        lstReturn.Add(model);
                    }
                }
            }
            return lstReturn;
        }
Example #52
0
        public bool SaveAmountKaiZen(List<Guid> SelectIds)
        {
            using (var context = new VnrHrmDataContext())
            {
                try
                {
                    var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                    string status = string.Empty;
                    var repoKai_KaizenData = new CustomBaseRepository<Kai_KaizenData>(unitOfWork);
                    List<Kai_KaizenData> listKai_KaizenData = repoKai_KaizenData.FindBy(m => m.IsDelete != true && SelectIds.Any(t => t == m.ID)).ToList();
                    listKai_KaizenData.ForEach(m => m.AmountTransfered = m.SumAmount);
                    unitOfWork.SaveChanges();
                    return true;
                }
                catch
                {
                    return false;
                }

            }
        }
Example #53
0
        public string GetNextStatusOfRecord(Guid recordID)
        {
            using (var context = new VnrHrmDataContext())
            {
                string type = ApproveType.E_FIN_PurchaseRequest.ToString();
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var repoSys_ConfigProcessApprove = new CustomBaseRepository<Sys_ConfigProcessApprove>(unitOfWork);
                var UserLogin = string.Empty;
                string stt = string.Empty;
                var record = GetData<FIN_PurchaseRequestEntity>(recordID, ConstantSql.hrm_hr_sp_get_PurchaseRequestById, UserLogin, ref stt).FirstOrDefault();
                var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == record.Status).FirstOrDefault();
                double total = record.Total != null ? record.Total.Value : 0.0;
                List<ElementFormula> listFomula = new List<ElementFormula>();
                ElementFormula FomulaItem = new ElementFormula("Total", total, 0);
                ElementFormula statusItem = new ElementFormula(configProcess.NextStatusFormular, configProcess.NextStatusFormular, 1);
                listFomula.Add(FomulaItem);
                listFomula.Add(statusItem);
                string nextStatus = GetObjectValue(new List<Cat_ElementEntity>(), listFomula, configProcess.NextStatusFormular).ToString();
                return nextStatus;
            }

        }
        public Guid ComputeCommission(List<Hre_ProfileEntity> listProfile, Att_CutOffDurationEntity CutOffDuration, string HeaderTemplateLog, string methodPayroll, Guid CutOffDuration2ID, string UserLogin)
        {
            Sys_AsynTask asynTask = new Sys_AsynTask()
            {
                ID = Guid.NewGuid(),
                Summary = "Tính Hoa Hồng Cho Tháng " + CutOffDuration.CutOffDurationName,
                Type = AsynTask.Payroll_Computing.ToString(),
                Status = AsynTaskStatus.Doing.ToString(),
                TimeStart = DateTime.Now,
                PercentComplete = 0.01,
            };

            Task.Run(() =>
            {
                using (var context = new VnrHrmDataContext())
                {
                    var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                    var repoSys_AsynTask = new CustomBaseRepository<Sys_AsynTask>(unitOfWork);

                    if (listProfile.Count == 0)
                    {
                        asynTask.TimeEnd = DateTime.Now;
                        asynTask.Description = "Không tồn tại nhân viên nào !";
                        asynTask.PercentComplete = 1D;
                    }

                    repoSys_AsynTask.Add(asynTask);
                    unitOfWork.SaveChanges();
                }

                if (listProfile.Count > 0)
                {
                    ComputeCommission(listProfile, CutOffDuration,
                        asynTask.ID, HeaderTemplateLog, methodPayroll, CutOffDuration2ID, UserLogin);
                }
            });

            return asynTask.ID;
        }
Example #55
0
        public string ActionApproved(string selectedIds)
        {
            using (var context = new VnrHrmDataContext())
            {
                string message = string.Empty;
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                //var repo = new Hre_WorkHistoryRepository(unitOfWork);
                var repoWorkHistory = new CustomBaseRepository<Hre_WorkHistory>(unitOfWork);
                var repoProfile = new CustomBaseRepository<Hre_Profile>(unitOfWork);
                List<Guid> lstIds = selectedIds.Split(',').Select(x => Guid.Parse(x)).ToList();
                var lstWorkHistorys = repoWorkHistory.FindBy(m => lstIds.Contains(m.ID)).ToList();
                foreach (var WorkHistory in lstWorkHistorys)
                {
                    WorkHistory.Status = WorkHistoryStatus.E_APPROVED.ToString();

                    if (WorkHistory.DateEffective != null && WorkHistory.DateEffective <= DateTime.Now.Date)
                    {
                        string status = string.Empty;
                        Hre_Profile profile = repoProfile.FindBy(m => m.IsDelete != true && m.ID == WorkHistory.ProfileID).FirstOrDefault();
                        if (profile != null)
                        {
                            profile.OrgStructureID = WorkHistory.OrganizationStructureID;
                            profile.JobTitleID = WorkHistory.JobTitleID;
                            profile.PositionID = WorkHistory.PositionID;
                            profile.DateOfEffect = WorkHistory.DateEffective;
                            profile.LaborType = WorkHistory.LaborType;
                            profile.CostCentreID = WorkHistory.CostCentreID;
                            profile.FormType = WorkHistory.FormType;
                            profile.EmpTypeID = WorkHistory.EmployeeTypeID;
                            profile.WorkingPlace = WorkHistory.WorkLocation;
                            //profileServices.Edit(profile);
                        }
                    }
                }
                unitOfWork.SaveChanges();
                message = NotificationType.Success.ToString();
                return message;
            }
        }
        /// <summary>
        /// Button Tìm Kiếm Trong Phân Tích BHXH
        /// </summary>
        /// <param name="Year"></param>
        /// <param name="orgStructure"></param>
        /// <param name="LstProfileStatus"></param>
        /// <returns></returns>
        public List<Att_AnnualLeaveDetailEntity> SearchAnnualInsuranceLeaveDetail(int Year, string orgStructure, string LstProfileStatus,string UserLogin)
        {
            using (var context = new VnrHrmDataContext())
            {
                string status = string.Empty;
                var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                var repoAtt_AnnualLeaveDetail = new CustomBaseRepository<Att_AnnualLeaveDetail>(unitOfWork);

                List<object> lstObj = new List<object>();
                lstObj.Add(orgStructure);
                lstObj.Add(null);
                lstObj.Add(null);
                var lstProfileQuery = GetData<Hre_ProfileEntity>(lstObj, ConstantSql.hrm_hr_sp_get_ProfileIdsByOrg, UserLogin, ref status).ToList();

                string E_INSURANCE_LEAVE = AnnualLeaveDetailType.E_INSURANCE_LEAVE.ToString();

                List<Guid> lstProfileID = lstProfileQuery.Select(m => m.ID).ToList<Guid>();
                List<Att_AnnualLeaveDetailEntity> lstAnnDetail = repoAtt_AnnualLeaveDetail
                    .FindBy(m => m.IsDelete == null && m.Type == E_INSURANCE_LEAVE && m.Year == Year
                    && m.ProfileID != null && lstProfileID.Contains(m.ProfileID.Value)).ToList().Translate<Att_AnnualLeaveDetailEntity>();
                return lstAnnDetail;
            }
        }
Example #57
0
        public int[] SetPayrmentOut(List<Guid> SelectIds, DateTime MonthYear)
        {
            using (var context = new VnrHrmDataContext())
            {
                try
                {
                    var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                    string status = string.Empty;
                    var repoKai_KaizenData = new CustomBaseRepository<Kai_KaizenData>(unitOfWork);
                    List<Kai_KaizenData> ListKaiZendData = repoKai_KaizenData.FindBy(m => m.IsDelete != true && m.Status == EnumDropDown.Kai_KaizenDataStatus.E_APPROVED.ToString()).ToList();
                    ListKaiZendData = ListKaiZendData.Where(m => SelectIds.Any(t => t == m.ID)).ToList();

                    int Pass = 0;
                    int Fail = 0;

                    foreach (var i in ListKaiZendData)
                    {
                        if (i.IsPaymentOut == null && i.DateTransferPayment == null)
                        {
                            i.IsPaymentOut = true;
                            i.DateTransferPayment = MonthYear;
                            Pass++;
                        }
                        else
                        {
                            Fail++;
                        }
                    }
                    unitOfWork.SaveChanges();
                    return new int[] { Pass, Fail };
                }
                catch
                {
                    return new int[] { 0, 0 };
                }
            }
        }
Example #58
0
        public void ComputeDepartment(Guid departmentID)
        {
            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (UnitOfWork)(new UnitOfWork(context));
                var repoSal_SalaryDepartment = new CustomBaseRepository<Sal_SalaryDepartment>(unitOfWork);
                var repoSal_SalaryDepartmentItem = new CustomBaseRepository<Sal_SalaryDepartmentItem>(unitOfWork);
                var repoAtt_CutOffDuration = new CustomBaseRepository<Att_CutOffDurationEntity>(unitOfWork);

                Sal_SalaryDepartment item = new Sal_SalaryDepartment();
                item = repoSal_SalaryDepartment.GetById(departmentID);

                //xóa các item nếu đã tính trước đó
                List<Sal_SalaryDepartmentItem> listDepartmentItem = new List<Sal_SalaryDepartmentItem>();
                listDepartmentItem = repoSal_SalaryDepartmentItem.GetAll().Where(m => m.SalaryDepartmentID == departmentID).ToList();
                repoSal_SalaryDepartmentItem.Delete(listDepartmentItem);
                unitOfWork.SaveChanges();

                //nếu chọn theo cutoff thì lấy datefrom dateto của cutoff
                if (item.CutOffDurationID != null)
                {
                    var cutoff= repoAtt_CutOffDuration.GetById((Guid)item.CutOffDurationID);
                    item.MonthYear = cutoff.MonthYear;
                    item.DateFrom = cutoff.DateStart;
                    item.DateTo = cutoff.DateEnd;
                }

                Hashtable hasTable = new Hashtable();
                List<Sal_SalaryDepartment> listSalaryDepartment = new List<Sal_SalaryDepartment>(); 
                listSalaryDepartment.Add(item);

                ComputeSalaryDepartment(item.MonthYear, (DateTime)item.DateFrom, (DateTime)item.DateTo, listSalaryDepartment, ref hasTable);

              
            }
        }
        /// <summary>
        /// Button Tính Phép Bệnh (Cơ Chế Mới)
        /// Lưu vào Att_AnnualDetail
        /// </summary>
        /// <param name="Year"></param>
        /// <param name="orgStructure"></param>
        /// <param name="LstProfileStatus"></param>
        /// <returns></returns>
        public bool ComputeAnnualSick(int Year, string orgStructure, string LstProfileStatus, bool isFullEmp, string UserLogin)
        {
            var result = false;
            using (var context = new VnrHrmDataContext())
            {
                string status = string.Empty;
                var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                var repoCat_GradeAttendance = new CustomBaseRepository<Cat_GradeAttendance>(unitOfWork);
                var repoCat_DayOff = new CustomBaseRepository<Cat_DayOff>(unitOfWork);
                var repoCat_Shift = new CustomBaseRepository<Cat_Shift>(unitOfWork);
                var repoAtt_AnnualDetail = new CustomBaseRepository<Att_AnnualDetail>(unitOfWork);
                var repoAtt_RosterGroup = new CustomBaseRepository<Att_RosterGroup>(unitOfWork);
                var repoAtt_AnnualLeave = new CustomBaseRepository<Att_AnnualLeave>(unitOfWork);
                var repoAtt_Grade = new CustomBaseRepository<Att_Grade>(unitOfWork);
                var repoSys_AllSetting = new CustomBaseRepository<Sys_AllSetting>(unitOfWork);

                List<Guid> lstLeaveDayApproveIDs = new List<Guid>();
                List<Guid> lstLeaveDayRejectIDs = new List<Guid>();
                var shifts = repoCat_Shift.FindBy(s => s.IsDelete == null).ToList();

                List<object> lstObj = new List<object>();
                lstObj.Add(orgStructure);
                lstObj.Add(null);
                lstObj.Add(null);
                var lstProfile = GetData<Hre_ProfileEntity>(lstObj, ConstantSql.hrm_hr_sp_get_ProfileIdsByOrg, UserLogin, ref status);

                List<Att_AnnualDetail> lstResult = new List<Att_AnnualDetail>();
                List<Guid> lstProfileID = lstProfile.Select(m => m.ID).ToList();
                int BeginMonth = MonthStartAnl;
                DateTime BeginYear = new DateTime(Year, BeginMonth, 1);
                DateTime EndYear = BeginYear.AddYears(1).AddMinutes(-1);
                DateTime BeginYearToGetData = BeginYear.AddMonths(-1); //trừ một tháng để lấy data (bao những data thuộc những ngày trước tháng dành cho chế độ lương ko phải từ ngày 1)

                var lstGradeCgf = repoCat_GradeAttendance.FindBy(s => s.ID != null).ToList();
                string E_APPROVED = LeaveDayStatus.E_APPROVED.ToString();

                var lstAnnualDetailInDB = new List<Att_AnnualDetail>();
                var lstLeaveDaySick = new List<Att_LeaveDay>();
                var lstAttGrade = new List<Att_Grade>();
                var lstAnualLeaveCfg = new List<Att_AnnualLeave>();
                var lstWorkingHistory = new List<Hre_WorkHistory>();
                var lstRoster = new List<Att_Roster>();

                #region Lấy Dữ Liệu
                List<object> lst2Param = new List<object>();
                lst2Param.Add(null);
                lst2Param.Add(EndYear);

                List<object> lst3Param = new List<object>();
                lst3Param.Add(null);
                lst3Param.Add(null);
                lst3Param.Add(null);

                List<object> lst4Param = new List<object>();
                lst4Param.Add(null);
                lst4Param.Add(BeginYearToGetData);
                lst4Param.Add(EndYear);
                lst4Param.Add(E_APPROVED);

                var dataAtt_LeaveDay = GetData<Att_LeaveDay>(lst3Param, ConstantSql.hrm_att_getdata_LeaveDay_Inner, UserLogin, ref status).ToList();
                var dataHre_WorkHistory = GetData<Hre_WorkHistory>(lst2Param, ConstantSql.hrm_hre_getdata_WorkHistory, UserLogin, ref status).ToList();
                var dataAtt_Roster_Inner = GetData<Att_Roster>(lst4Param, ConstantSql.hrm_att_getdata_Roster_Inner, UserLogin, ref status).ToList();
                #endregion

                if (isFullEmp != null && isFullEmp == true)
                {
                    lstAnnualDetailInDB = repoAtt_AnnualDetail.FindBy(m => m.IsDelete == null && m.ProfileID != null && m.Year == Year).ToList<Att_AnnualDetail>();
                    lstLeaveDaySick = dataAtt_LeaveDay
                                        .Where(m => m.Status == E_APPROVED && m.DateStart <= EndYear && m.DateEnd >= BeginYearToGetData && m.Cat_LeaveDayType != null && m.Cat_LeaveDayType.Code == LeavedayTypeCode.SICK.ToString() && lstProfileID.Contains(m.ProfileID)).ToList<Att_LeaveDay>();
                    lstAttGrade = repoAtt_Grade.FindBy(m => m.IsDelete == null).ToList();
                    lstAnualLeaveCfg = repoAtt_AnnualLeave.FindBy(m => m.IsDelete == null && m.Year == Year).ToList<Att_AnnualLeave>();
                    lstWorkingHistory = dataHre_WorkHistory.Where(m => m.DateEffective <= EndYear).OrderByDescending(m => m.DateEffective).ToList();
                    lstRoster = dataAtt_Roster_Inner.Where(m => m.Status == E_APPROVED && m.DateStart <= EndYear && m.DateEnd >= BeginYearToGetData).ToList<Att_Roster>();
                }
                else
                {
                    lstAnnualDetailInDB = repoAtt_AnnualDetail.FindBy(m => m.IsDelete == null && m.ProfileID != null && lstProfileID.Contains(m.ProfileID.Value) && m.Year == Year).ToList<Att_AnnualDetail>();
                    lstLeaveDaySick = dataAtt_LeaveDay
                                        .Where(m => m.Status == E_APPROVED && m.DateStart <= EndYear && m.DateEnd >= BeginYearToGetData && m.Cat_LeaveDayType != null && m.Cat_LeaveDayType.Code == LeavedayTypeCode.SICK.ToString() && lstProfileID.Contains(m.ProfileID)).ToList<Att_LeaveDay>();
                    lstAttGrade = repoAtt_Grade.FindBy(m => m.IsDelete == null && lstProfileID.Contains(m.ProfileID.Value)).ToList<Att_Grade>();
                    lstAnualLeaveCfg = repoAtt_AnnualLeave.FindBy(m => m.IsDelete == null && m.Year == Year && lstProfileID.Contains(m.ProfileID)).ToList<Att_AnnualLeave>();
                    lstWorkingHistory = dataHre_WorkHistory.Where(m => m.DateEffective <= EndYear && lstProfileID.Contains(m.ProfileID)).OrderByDescending(m => m.DateEffective).ToList<Hre_WorkHistory>();
                    lstRoster = dataAtt_Roster_Inner.Where(m => m.Status == E_APPROVED && m.DateStart <= EndYear && m.DateEnd >= BeginYearToGetData && lstProfileID.Contains(m.ProfileID)).ToList<Att_Roster>();
                }

                if (lstLeaveDayApproveIDs != null && lstLeaveDayApproveIDs.Count > 0)
                {
                    lstLeaveDaySick.AddRange(dataAtt_LeaveDay.Where(m => lstLeaveDayApproveIDs.Contains(m.ID)).ToList<Att_LeaveDay>());
                    lstLeaveDaySick = lstLeaveDaySick.Distinct().ToList();
                }
                if (lstLeaveDayRejectIDs != null && lstLeaveDayRejectIDs.Count > 0)
                {
                    lstLeaveDaySick = lstLeaveDaySick.Where(m => !lstLeaveDayRejectIDs.Contains(m.ID)).ToList();
                }
                var lstRosterGroup = repoAtt_RosterGroup.FindBy(m => m.IsDelete == null && m.DateStart <= EndYear && m.DateEnd >= BeginYearToGetData).ToList<Att_RosterGroup>();
                var lstDayOff = repoCat_DayOff.FindBy(m => m.IsDelete == null && m.DateOff >= BeginYearToGetData && m.DateOff <= EndYear).ToList<Cat_DayOff>();

                // Phép Năm chốt Từ Ngày 1 -> 31 Hàng Tháng 
                bool IsFrom1To31 = false;
                string type2 = AppConfig.HRM_ATT_ANNUALLEAVE_ANNUALBEGINMONTHTOENDMONTH.ToString();
                Sys_AllSetting sys_ANNUAL_BEGINMONTHTO_ENDMONTH = repoSys_AllSetting.FindBy(sy => sy.IsDelete == null && sy.Name == type2).FirstOrDefault();
                if (sys_ANNUAL_BEGINMONTHTO_ENDMONTH != null && sys_ANNUAL_BEGINMONTHTO_ENDMONTH.Value1 == bool.TrueString)
                {
                    IsFrom1To31 = true;
                }

                foreach (var profile in lstProfile)
                {
                    var lstGradeByProfile = lstAttGrade.Where(m => m.ProfileID == profile.ID).OrderByDescending(m => m.MonthStart).ToList();
                    var lstLeaveDaySickByprofile = lstLeaveDaySick.Where(m => m.ProfileID == profile.ID).ToList();
                    var AnualLeaveCfg = lstAnualLeaveCfg.Where(m => m.ProfileID == profile.ID).FirstOrDefault();
                    var lstRosterByProfile = lstRoster.Where(m => m.ProfileID == profile.ID).ToList();
                    var lstWorkHistoryByProfile = lstWorkingHistory.Where(m => m.ProfileID == profile.ID).ToList();

                    List<Att_AnnualDetail> lstAnnualDetailByProfile = AnalyzeAnnualSickPerProfile(profile, lstGradeCgf, lstGradeByProfile,
                        BeginYear, EndYear, lstLeaveDaySickByprofile, lstAnnualDetailInDB, AnualLeaveCfg, lstRosterByProfile,
                        lstRosterGroup, lstWorkHistoryByProfile, lstDayOff, IsFrom1To31, shifts);

                    //lstResult.AddRange(lstAnnualDetailByProfile);
                    repoAtt_AnnualDetail.Add(lstAnnualDetailByProfile);
                }
                repoAtt_AnnualDetail.SaveChanges();


                //DataErrorCode DataErr = DataErrorCode.Unknown;
                //if (lstAnnualDetail.Count > 0)
                //{
                //    #region lấy dữ liệu dưới DB xóa đi
                //    List<Guid> lstProfileID_InDB = lstAnnualDetail.Where(m => m.ProfileID != null).Select(m => m.ProfileID.Value).ToList();


                //    List<Att_AnnualDetail> lstAnnualLeaveDetail_InDB = repoAtt_AnnualDetail
                //        .FindBy(m => m.IsDelete == null && m.Year == Year && m.Type == E_SICK_LEAVE && m.ProfileID != null && lstProfileID_InDB.Contains(m.ProfileID.Value)).ToList<Att_AnnualDetail>();
                //    foreach (var item in lstAnnualLeaveDetail_InDB)
                //    {
                //        item.IsDelete = true;
                //    }
                //    #endregion

                //    repoAtt_AnnualDetail.Add(lstAnnualDetail);
                //    try
                //    {
                //        repoAtt_AnnualDetail.SaveChanges();
                //    }
                //    catch (Exception)
                //    {
                //        return false;
                //    }
                //}
                result = true;
            }
            return result;
        }
        /// <summary>
        /// Button Tìm Kiếm Phép Bệnh
        /// </summary>
        /// <param name="Year"></param>
        /// <param name="orgStructure"></param>
        /// <param name="LstProfileStatus"></param>
        /// <returns></returns>
        public List<Att_AnnualLeaveDetailEntity> SearchAnnualSickLeaveDetail(int Year, string orgStructure, string LstProfileStatus, string UserLogin)
        {
            using (var context = new VnrHrmDataContext())
            {
                string status = string.Empty;
                var unitOfWork = (IUnitOfWork)new UnitOfWork(context);
                var repoAtt_AnnualLeaveDetail = new CustomBaseRepository<Att_AnnualLeaveDetail>(unitOfWork);
                var repoHre_Profile = new CustomBaseRepository<Hre_Profile>(unitOfWork);
                var repoHre_HDTJob = new CustomBaseRepository<Hre_HDTJob>(unitOfWork);

                string E_SICK_LEAVE = AnnualLeaveDetailType.E_SICK_LEAVE.ToString();

                Att_AnnualLeaveDetail AnnualLeaveDetailTop = AnnualLeaveDetailTop = repoAtt_AnnualLeaveDetail
                    .FindBy(m => m.IsDelete == null && m.Type == E_SICK_LEAVE && m.Year == Year).FirstOrDefault();
                if (AnnualLeaveDetailTop == null)
                {
                    return new List<Att_AnnualLeaveDetailEntity>();
                }
                DateTime beginyear = (AnnualLeaveDetailTop == null || AnnualLeaveDetailTop.MonthStart == null) ? new DateTime(Year, 1, 1) : AnnualLeaveDetailTop.MonthStart.Value;
                DateTime endYear = beginyear.AddYears(1).AddMinutes(-1);

                List<object> lstObj = new List<object>();
                lstObj.Add(orgStructure);
                lstObj.Add(null);
                lstObj.Add(null);
                var lstProfileQuery = GetData<Hre_ProfileEntity>(lstObj, ConstantSql.hrm_hr_sp_get_ProfileIdsByOrg, UserLogin, ref status).ToList();

                if (LstProfileStatus != null)
                {
                    if (LstProfileStatus == StatusEmpLeaveDetail.E_NEWEMPINYEAR.ToString())
                    {
                        lstProfileQuery = lstProfileQuery.Where(m => m.DateHire != null && m.DateHire >= beginyear && m.DateHire <= endYear).ToList();
                    }
                    if (LstProfileStatus == StatusEmpLeaveDetail.E_RESIGNEMPINYEAR.ToString())
                    {
                        lstProfileQuery = lstProfileQuery.Where(m => m.DateQuit != null && m.DateQuit >= beginyear && m.DateQuit <= endYear).ToList();
                    }
                    if (LstProfileStatus == StatusEmpLeaveDetail.E_EMPOFHDT4.ToString())
                    {
                        string Job4 = HDTJobType.E_Four.ToString();
                        List<Guid> lstprofileHDT4 = repoHre_HDTJob
                            .FindBy(m => m.IsDelete == null && m.Type == Job4 && m.DateFrom <= endYear && m.DateTo >= beginyear && m.ProfileID != null)
                            .Select(m => m.ProfileID.Value).ToList<Guid>();
                        lstProfileQuery = lstProfileQuery.Where(m => lstprofileHDT4.Contains(m.ID)).ToList();
                    }
                    if (LstProfileStatus == StatusEmpLeaveDetail.E_EMPOFHDT5.ToString())
                    {
                        string Job5 = HDTJobType.E_Five.ToString();
                        List<Guid> lstprofileHDT5 = repoHre_HDTJob
                            .FindBy(m => m.IsDelete == null && m.Type == Job5 && m.DateFrom <= endYear && m.DateTo >= beginyear && m.ProfileID != null)
                            .Select(m => m.ProfileID.Value).ToList<Guid>();
                        lstProfileQuery = lstProfileQuery.Where(m => lstprofileHDT5.Contains(m.ID)).ToList();
                    }
                }

                List<Guid> lstProfileID = lstProfileQuery.Select(m => m.ID).Distinct().ToList<Guid>();
                List<Att_AnnualLeaveDetailEntity> lstAnnDetail = repoAtt_AnnualLeaveDetail
                    .FindBy(m => m.IsDelete == null && m.Type == E_SICK_LEAVE && m.Year == Year
                    && m.ProfileID != null && lstProfileID.Contains(m.ProfileID.Value)).ToList().Translate<Att_AnnualLeaveDetailEntity>();

                foreach (var ann in lstAnnDetail)
                {
                    var pro = lstProfileQuery.Where(s => s.ID == ann.ProfileID).FirstOrDefault();

                    ann.ProfileName = pro.ProfileName ?? string.Empty;
                    ann.CodeEmp = pro.CodeEmp ?? string.Empty;
                    ann.OrgStructureName = pro.OrgStructureName ?? string.Empty;
                    ann.DateHire = pro.DateHire ?? null;
                }
                return lstAnnDetail;

            }
        }