public ActionResult AddToSalaryVarGrid(SalaryVarFormViewModel Model) { string wel = "CompanyId == " + CompanyId.ToString(); var assign = _hrUnitOfWork.EmployeeRepository.GetAssignments(Language).Where(wel); List <int> EmpIds = new List <int>(); //1-Add EmpId belongs to specified Jobs if (Model.IJobs != null) { EmpIds.AddRange(assign.Where(a => Model.IJobs.Contains(a.JobId != null ? a.JobId.Value : 0)).Select(c => c.EmpId).ToList()); } //2-Add EmpId belongs to specified Postions if (Model.IPositions != null) { EmpIds.AddRange(assign.Where(a => Model.IPositions.Contains(a.PositionId != null ? a.PositionId.Value : 0)).Select(c => c.EmpId).ToList()); } //3-Add EmpId belongs to specified Company if (Model.ICompanyStuctures != null) { EmpIds.AddRange(assign.Where(a => Model.ICompanyStuctures.Contains(a.CompanyId != null ? a.CompanyId.Value : 0)).Select(c => c.EmpId).ToList()); } //4-Add EmpId belongs to specified Employment if (Model.IEmployments != null) { EmpIds.AddRange(assign.Where(a => Model.IEmployments.Contains(a.PersonType != null ? a.PersonType.Value : 0)).Select(c => c.EmpId).ToList()); } //5-Add EmpId belongs to specified if (Model.IBranches != null) { EmpIds.AddRange(assign.Where(a => Model.IBranches.Contains(a.BranchId)).Select(c => c.EmpId).ToList()); } //6-Add EmpId belongs to specified PayrollGrades if (Model.IPayrollGrades != null) { EmpIds.AddRange(assign.Where(a => Model.IPayrollGrades.Contains(a.PayGradeId != null ? a.PayGradeId.Value : 0)).Select(c => c.EmpId).ToList()); } //7-Add EmpId belongs to specified PeopleGroups if (Model.IPeopleGroups != null) { EmpIds.AddRange(assign.Where(a => Model.IPeopleGroups.Contains(a.GroupId != null ? a.GroupId.Value : 0)).Select(c => c.EmpId).ToList()); } //8-Add EmpId belongs to specified Payrolls if (Model.IPayrolls != null) { EmpIds.AddRange(assign.Where(a => Model.IPayrolls.Contains(a.PayrollId != null ? a.PayrollId.Value : 0)).Select(c => c.EmpId).ToList()); } List <SalaryEmpVarViewModel> records = new List <SalaryEmpVarViewModel>(); for (int i = 0; i < EmpIds.Count; i++) { records.Add(new SalaryEmpVarViewModel { EmpId = EmpIds[i] }); } return(Json(records, JsonRequestBehavior.AllowGet)); }
public ActionResult SaveSalaryVar(SalaryVarFormViewModel model, OptionsViewModel moreInfo, SalaryEmpVarGridViewModel grid1) { List <Error> errors = new List <Error>(); var SalaryVarRecord = _hrUnitOfWork.PayrollRepository.GetSalVar(model.Reference); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.PositionRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "SalaryVar", TableName = "SalaryVars", Columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))), ParentColumn = "PayPeriodId", Culture = Language }); if (errors.Count() > 0) { foreach (var e in errors) { foreach (var errorMsg in e.errors) { ModelState.AddModelError(errorMsg.field, errorMsg.message); } } return(Json(Models.Utils.ParseFormErrors(ModelState))); } } } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } var multi = _hrUnitOfWork.Repository <SalaryItem>().Where(a => a.Id == model.SalItemId).Select(a => a.Multiple).FirstOrDefault(); List <SalaryVar> ListOfSalaryVar = new List <SalaryVar>(); if (SalaryVarRecord == null) // New { if (grid1.inserted != null) { Guid newGUID = Guid.NewGuid(); foreach (var item in grid1.inserted) { SalaryVarRecord = new SalaryVar(); SalaryVarRecord.Approvedby = UserName; SalaryVarRecord.Curr = model.Curr; SalaryVarRecord.PayPeriodId = model.PayPeriodId; SalaryVarRecord.PayrollId = model.PayrollId; SalaryVarRecord.SalItemId = model.SalItemId; SalaryVarRecord.CreatedTime = DateTime.Now; SalaryVarRecord.CreatedUser = UserName; SalaryVarRecord.Reference = newGUID; SalaryVarRecord.EmpId = item.EmpId; SalaryVarRecord.Amount = item.Amount; SalaryVarRecord.Status = item.Status; ListOfSalaryVar.Add(SalaryVarRecord); } _hrUnitOfWork.PayrollRepository.AddRange(ListOfSalaryVar); if (multi == false) { var empIds = ListOfSalaryVar.Select(a => a.EmpId).ToList(); if (empIds.Count != empIds.Distinct().Count()) { ModelState.AddModelError("", MsgUtils.Instance.Trls("CantAcceptMultiInPeriod")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } } } else { SalaryVarRecord = new SalaryVar(); AutoMapper(new Models.AutoMapperParm { Destination = SalaryVarRecord, Source = model, ObjectName = "SalaryVar", Options = moreInfo }); _hrUnitOfWork.PayrollRepository.Add(SalaryVarRecord); } } else // Edit { //if form is updated only if (grid1.inserted == null && grid1.updated == null) { var listOfSalaryVar = _hrUnitOfWork.Repository <SalaryVar>().Where(a => a.Reference == model.Reference).ToList(); foreach (var salary in listOfSalaryVar) { AutoMapper(new Models.AutoMapperParm { Destination = salary, Source = model, ObjectName = "SalaryVar", Options = moreInfo, Transtype = TransType.Update }); SalaryVarRecord.ModifiedTime = DateTime.Now; SalaryVarRecord.ModifiedUser = UserName; _hrUnitOfWork.PayrollRepository.Attach(SalaryVarRecord); _hrUnitOfWork.PayrollRepository.Entry(SalaryVarRecord).State = EntityState.Modified; } } // if insert in grid if (grid1.inserted != null) { foreach (var item in grid1.inserted) { SalaryVarRecord = new SalaryVar(); SalaryVarRecord.Approvedby = UserName; SalaryVarRecord.Curr = model.Curr; SalaryVarRecord.PayPeriodId = model.PayPeriodId; SalaryVarRecord.PayrollId = model.PayrollId; SalaryVarRecord.SalItemId = model.SalItemId; SalaryVarRecord.CreatedTime = DateTime.Now; SalaryVarRecord.CreatedUser = UserName; SalaryVarRecord.Reference = model.Reference; SalaryVarRecord.EmpId = item.EmpId; SalaryVarRecord.Amount = item.Amount; SalaryVarRecord.Status = item.Status; ListOfSalaryVar.Add(SalaryVarRecord); } _hrUnitOfWork.PayrollRepository.AddRange(ListOfSalaryVar); if (multi == false) { var dbEmpIds = _hrUnitOfWork.Repository <SalaryVar>().Where(a => a.Reference == model.Reference).Select(s => s.EmpId).ToList(); var empIds = ListOfSalaryVar.Select(a => a.EmpId).ToList(); List <int> chkList = new List <int>(); chkList.AddRange(dbEmpIds); chkList.AddRange(empIds); if (chkList.Count != chkList.Distinct().Count()) { ModelState.AddModelError("", MsgUtils.Instance.Trls("CantAcceptMultiInPeriod")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } } } //if update in grid and form if (grid1.updated != null) { foreach (var item in grid1.updated) { SalaryVarRecord = _hrUnitOfWork.Repository <SalaryVar>().Where(a => a.Id == item.Id).FirstOrDefault(); SalaryVarRecord.Approvedby = UserName; SalaryVarRecord.Curr = model.Curr; SalaryVarRecord.PayPeriodId = model.PayPeriodId; SalaryVarRecord.PayrollId = model.PayrollId; SalaryVarRecord.SalItemId = model.SalItemId; SalaryVarRecord.ModifiedTime = DateTime.Now; SalaryVarRecord.ModifiedUser = UserName; SalaryVarRecord.Reference = model.Reference; SalaryVarRecord.EmpId = item.EmpId; SalaryVarRecord.Amount = item.Amount; SalaryVarRecord.Status = item.Status; _hrUnitOfWork.PayrollRepository.Attach(SalaryVarRecord); _hrUnitOfWork.PayrollRepository.Entry(SalaryVarRecord).State = EntityState.Modified; } } if (grid1.deleted != null) { foreach (var item in grid1.deleted) { SalaryVarRecord = _hrUnitOfWork.Repository <SalaryVar>().Where(a => a.Id == item.Id).FirstOrDefault(); SalaryVarRecord.Status = 2; _hrUnitOfWork.PayrollRepository.Attach(SalaryVarRecord); _hrUnitOfWork.PayrollRepository.Entry(SalaryVarRecord).State = EntityState.Modified; } } if (model.submit == true) { var listOfSalary = _hrUnitOfWork.Repository <SalaryVar>().Where(a => a.Reference == model.Reference && a.Status == 0).ToList(); if (listOfSalary.Count() > 0) { for (int i = 0; i < listOfSalary.Count; i++) { listOfSalary[i].Status = 1; _hrUnitOfWork.PayrollRepository.Attach(listOfSalary[i]); _hrUnitOfWork.PayrollRepository.Entry(listOfSalary[i]).State = EntityState.Modified; } } } } if (errors.Count > 0) { return(Json(errors.First().errors.First().message)); } try { _hrUnitOfWork.Save(); } catch (Exception ex) { var msg = _hrUnitOfWork.HandleDbExceptions(ex, Language); if (msg.Length > 0) { return(Json(msg)); } } return(Json("OK," + ((new JavaScriptSerializer()).Serialize(SalaryVarRecord)))); }