public ActionResult PostLeaveTrans(IEnumerable <LeaveTransOpenBalanceViewModel> models, string transDate) { string message = "Ok"; var AbsenceType = _hrUnitOfWork.Repository <LeaveType>().Where(a => a.Id == models.Select(s => s.TypeId).FirstOrDefault()).Select(a => a.AbsenceType).FirstOrDefault(); foreach (var item in models) { if (item.flag == true && item.transQty != 0) { var LeaveTrans = new LeaveTrans { AbsenceType = AbsenceType, EmpId = item.EmpId, TransDate = Convert.ToDateTime(transDate), TransQty = item.transQty, TransType = 0, CompanyId = CompanyId, TransFlag = 1, CreatedTime = DateTime.Now, CreatedUser = UserName, PeriodId = item.PeriodId, TypeId = item.TypeId }; _hrUnitOfWork.LeaveRepository.Add(LeaveTrans); } } var errors = SaveChanges(User.Identity.GetLanguage()); if (errors.Count() > 0) { message = errors.First().errors.First().message; } return(Json(message, JsonRequestBehavior.AllowGet)); }
//SaveAdjustment public ActionResult SaveAdjustment(LeaveMoneyAdjustFormViewModel model, OptionsViewModel moreInfo) { var message = "OK"; if (model.NofDays > 0) { if (model.NofDays <= model.Balance) { var Absence = _hrUnitOfWork.Repository <LeaveType>().Where(a => a.Id == model.TypeId).Select(s => s.AbsenceType).FirstOrDefault(); var TransRecord = new LeaveTrans() { AbsenceType = Absence, CompanyId = CompanyId, CreatedUser = UserName, CreatedTime = DateTime.Now, TransFlag = -1, EmpId = model.EmpId, PeriodId = model.PeriodId, TypeId = model.TypeId, TransDate = DateTime.Now, TransType = 12, TransQty = model.NofDays }; _hrUnitOfWork.LeaveRepository.Add(TransRecord); var AdjustRecord = new LeaveAdjust() { NofDays = model.NofDays, EmpId = model.EmpId, PeriodId = model.PeriodId, CreatedUser = UserName, CreatedTime = DateTime.Now, TypeId = model.TypeId, AdjustDate = DateTime.Now, CompanyId = CompanyId, TransType = 12, PayDone = false }; _hrUnitOfWork.LeaveRepository.Add(AdjustRecord); } else { ModelState.AddModelError("", MsgUtils.Instance.Trls("NotEnoughBalance")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } } else { ModelState.AddModelError("", MsgUtils.Instance.Trls("EnterNoOfDays")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } var Errors = SaveChanges(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; } return(Json(message)); }
public ActionResult SaveRestLeave(LeaveRestFormViewModel model) { var message = "OK"; int periodId = 0; var LeaveTypeRecord = _hrUnitOfWork.Repository <LeaveType>().Where(a => a.Id == model.TypeId).Select(s => new { Absence = s.AbsenceType, CalenderId = s.CalendarId }).FirstOrDefault(); var PeriodRecord = _hrUnitOfWork.Repository <Period>().Where(a => a.StartDate <= model.WorkingDate && a.EndDate >= model.WorkingDate && a.CalendarId == LeaveTypeRecord.CalenderId).FirstOrDefault(); if (PeriodRecord == null) { ModelState.AddModelError("", MsgUtils.Instance.Trls("Periodnotdefined")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } else { periodId = PeriodRecord.Id; } foreach (var item in model.IEmpId) { var TransRecord = new LeaveTrans() { AbsenceType = LeaveTypeRecord.Absence, CompanyId = CompanyId, CreatedUser = UserName, CreatedTime = DateTime.Now, TransFlag = 1, EmpId = item, PeriodId = periodId, TypeId = model.TypeId, TransDate = DateTime.Now, TransType = 3, TransQty = model.NofDays }; _hrUnitOfWork.LeaveRepository.Add(TransRecord); var AdjustRecord = new LeaveAdjust() { NofDays = model.NofDays, EmpId = item, PeriodId = periodId, CreatedUser = UserName, CreatedTime = DateTime.Now, TypeId = model.TypeId, AdjustDate = DateTime.Now, CompanyId = CompanyId, TransType = 3, PayDone = false }; _hrUnitOfWork.LeaveRepository.Add(AdjustRecord); } var Errors = SaveChanges(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; } return(Json(message)); }
public void AddLeaveTrans(LeaveAdjust obj, short Absence, short TransType, short TransFlag) { var TransRecord = new LeaveTrans() { AbsenceType = Absence, CompanyId = CompanyId, CreatedUser = UserName, CreatedTime = DateTime.Now, TransFlag = TransFlag, EmpId = obj.EmpId, PeriodId = obj.PeriodId, TypeId = obj.TypeId, TransDate = DateTime.Now, TransType = TransType, TransQty = obj.NofDays }; _hrUnitOfWork.LeaveRepository.Add(TransRecord); }
public void AddActions(LeaveCreditAdjustFormViewModel model, short transType, short transFlag) { var Absence = _hrUnitOfWork.Repository <LeaveType>().Where(a => a.Id == model.TypeId).Select(s => s.AbsenceType).FirstOrDefault(); var TransRecord = new LeaveTrans() { AbsenceType = Absence, CompanyId = CompanyId, CreatedUser = UserName, CreatedTime = DateTime.Now, TransFlag = transFlag, EmpId = model.EmpId, PeriodId = model.PeriodId, TypeId = model.TypeId, TransDate = DateTime.Now, TransType = transType, TransQty = model.NofDays }; _hrUnitOfWork.LeaveRepository.Add(TransRecord); var AdjustRecord = new LeaveAdjust() { NofDays = model.NofDays, EmpId = model.EmpId, PeriodId = model.PeriodId, CreatedUser = UserName, CreatedTime = DateTime.Now, TypeId = model.TypeId, AdjustDate = DateTime.Now, CompanyId = CompanyId, TransType = transType, PayDone = false }; _hrUnitOfWork.LeaveRepository.Add(AdjustRecord); }
private void AddTrans(IEnumerable <LeaveBalanceGridViewModel> models, ref bool closePeriod) { List <int> EmpIds = models.Select(m => m.EmpId).ToList(); var periodId = models.FirstOrDefault().PeriodId; var leavePostingLst = _hrUnitOfWork.Repository <LeavePosting>().Where(lp => EmpIds.Contains(lp.EmpId) && !lp.Posted && lp.PeriodId == periodId); ////2.Accrual Balance استحقاق الرصيد //var oldOpenTrans = _hrUnitOfWork.Repository<LeaveTrans>().Where(t => t.CompanyId == CompanyId && EmpIds.Contains(t.EmpId) && t.TransType == 2 && t.TransFlag == 1 && t.TypeId == models.FirstOrDefault().TypeId && t.PeriodId == models.FirstOrDefault().NewPeriodId); //Leave posting foreach (LeaveBalanceGridViewModel model in models) { ///post -> repalcementTrans -> openBalance LeaveTrans openTrans = new LeaveTrans() { CompanyId = model.CompanyId, EmpId = model.EmpId, PeriodId = model.NewPeriodId, TypeId = model.TypeId, AbsenceType = model.AbsenceType, TransDate = model.SubStartDate ?? DateTime.Parse(model.NewPeriodDate), CreatedUser = UserName, CreatedTime = DateTime.Now }; //Event: 1-Open Balance 2-Post Balance 12-Balance Replacement //PostAction: 1-Success 2-Add Time compensation trans 3-Fail LeavePosting posting = leavePostingLst.Where(lp => lp.EmpId == model.EmpId).FirstOrDefault(); if (model.PeriodId != model.NewPeriodId) //&& !fail //only if new Period & not fail { LeaveTrans postTrans = new LeaveTrans(); AutoMapper(new Models.AutoMapperParm { Source = openTrans, Destination = postTrans, Transtype = TransType.Insert }); if (model.PostBal != 0) { postTrans.TransType = 1; //Post Balance رصيد سابق مرحل postTrans.TransFlag = 1; postTrans.TransQty = model.PostBal; postTrans.TransDate = DateTime.Parse(model.NewPeriodDate); _hrUnitOfWork.LeaveRepository.Add(postTrans); } if (model.PostAction == 2) //2-Add Time compensation { LeaveTrans repalcementTrans = new LeaveTrans(); AutoMapper(new Models.AutoMapperParm { Source = openTrans, Destination = repalcementTrans, Transtype = TransType.Insert }); repalcementTrans.PeriodId = model.PeriodId; repalcementTrans.TransType = 12; repalcementTrans.TransQty = model.Compensations; repalcementTrans.TransFlag = -1; postTrans.TransDate = DateTime.Parse(model.NewPeriodDate); _hrUnitOfWork.LeaveRepository.Add(repalcementTrans); } } if (model.PeriodId != model.NewPeriodId) //Post only if new Period { if (posting == null) //new { posting = new LeavePosting() { EmpId = model.EmpId, PeriodId = model.PeriodId, Posted = (model.PostAction == 3 && model.PostBal != 0), //PostAction 3-fail -- MinDays Errors Reason = model.Reason, CreatedUser = UserName, CreatedTime = DateTime.Now }; _hrUnitOfWork.LeaveRepository.Add(posting); } else //update { posting.Posted = (model.PostAction == 3 && model.PostBal != 0); //--MinDays Errors posting.Reason = model.Reason; posting.CreatedUser = UserName; posting.CreatedTime = DateTime.Now; _hrUnitOfWork.LeaveRepository.Attach(posting); _hrUnitOfWork.LeaveRepository.Entry(posting).State = EntityState.Modified; } } //for retrive post balanca first if (model.OpenBalance != 0) { openTrans.TransType = 2; //Accrual Balance استحقاق الرصيد openTrans.TransQty = model.OpenBalance; openTrans.TransFlag = 1; //if (posting != null) //{ // var oldTrans = oldOpenTrans.Where(o => o.EmpId == model.EmpId).LastOrDefault(); // if(oldTrans != null) _hrUnitOfWork.LeaveRepository.Remove(oldTrans); //} _hrUnitOfWork.LeaveRepository.Add(openTrans); } } }
// Delete LeaveAdjust where Period Status is Open and Paydone in leave adjust equal false public ActionResult DeleteLeaveAdjust(int id) { DataSource <LeaveActionViewModel> Source = new DataSource <LeaveActionViewModel>(); List <Error> error = new List <Error>(); List <ErrorMessage> errorMessages = new List <ErrorMessage>(); List <Error> errors = new List <Error>(); LeaveAdjust obj = _hrUnitOfWork.LeaveRepository.GetLeaveAction(id); if (obj != null) { var status = _hrUnitOfWork.Repository <Period>().Where(a => a.Id == obj.PeriodId).Select(a => a.Status).FirstOrDefault(); if (obj.PayDone == true) { ErrorMessage errormessa = new ErrorMessage() { message = MsgUtils.Instance.Trls("PayDoneIsTrue") }; errorMessages.Add(errormessa); Error err = new Error() { errors = errorMessages }; error.Add(err); Source.Errors = error; return(Json(Source)); } if (status != 1) { ErrorMessage errormessa = new ErrorMessage() { message = MsgUtils.Instance.Trls("StatusIsClosed") }; errorMessages.Add(errormessa); Error err = new Error() { errors = errorMessages }; error.Add(err); Source.Errors = error; return(Json(Source)); } var Absence = _hrUnitOfWork.Repository <LeaveType>().Where(a => a.Id == obj.TypeId).Select(s => s.AbsenceType).FirstOrDefault(); var TransRecord = new LeaveTrans() { AbsenceType = Absence, CompanyId = CompanyId, CreatedUser = UserName, CreatedTime = DateTime.Now, TransFlag = 1, EmpId = obj.EmpId, PeriodId = obj.PeriodId, TypeId = obj.TypeId, TransDate = DateTime.Now, TransType = 24, TransQty = obj.NofDays }; _hrUnitOfWork.LeaveRepository.Add(TransRecord); AutoMapper(new Models.AutoMapperParm { Source = obj, ObjectName = "LeaveAction", Transtype = TransType.Delete }); _hrUnitOfWork.LeaveRepository.Remove(obj); } string message = "OK"; if (errors.Count() > 0) { message = errors.First().errors.First().message; return(Json(message)); } errors = SaveChanges(Language); if (errors.Count() > 0) { message = errors.First().errors.First().message; } return(Json(message)); }