private List <Error> EmpTasksSaveGrid(EmpTaskVM grid1, IEnumerable <KeyValuePair <string, ModelState> > state, EmpChkList checkList) { List <Error> errors = new List <Error>(); DataSource <EmpTaskViewModel> Err = new DataSource <EmpTaskViewModel>(); Err.Total = 0; // Exclude delete models from sever side validations if (ServerValidationEnabled) { var modified = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted"))); if (modified.Count > 0) { errors = _hrUnitOfWork.CompanyRepository.Check(new CheckParm { CompanyId = CompanyId, ObjectName = "EmplistTasks", Columns = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted"))), Culture = Language }); if (errors.Count() > 0) { return(errors); } } } // Deleted if (grid1.deleted != null) { foreach (EmpTaskViewModel model in grid1.deleted) { var chlistTask = new EmpTask { Id = model.Id }; _hrUnitOfWork.CheckListRepository.Remove(chlistTask); } } // updated records if (grid1.updated != null) { short count = 0; foreach (EmpTaskViewModel model in grid1.updated) { if (model.AssignedTime != null) { Err = _hrUnitOfWork.CheckListRepository.AddSubperiods(CompanyId, model.AssignedTime, model.Id, count, Language); } if (Err.Errors == null || Err.Errors.Count == 0) { model.SubPeriodId = Err.Total == 0 ? (int?)null : Err.Total; var chlistTask = _hrUnitOfWork.Repository <EmpTask>().Where(a => a.Id == model.Id).FirstOrDefault(); AutoMapper(new Models.AutoMapperParm { Destination = chlistTask, Source = model }); chlistTask.ModifiedTime = DateTime.Now; chlistTask.ExpectDur = model.ExpectDur; chlistTask.ModifiedUser = UserName; _hrUnitOfWork.CheckListRepository.Attach(chlistTask); _hrUnitOfWork.CheckListRepository.Entry(chlistTask).State = EntityState.Modified; } else { errors.Add(Err.Errors.FirstOrDefault()); } count++; } } // inserted records if (grid1.inserted != null) { short count = 0; foreach (EmpTaskViewModel model in grid1.inserted) { if (model.AssignedTime != null) { if (model.AssignedTime != null) { Err = _hrUnitOfWork.CheckListRepository.AddSubperiods(CompanyId, model.AssignedTime, model.Id, count, Language); } } if (Err.Errors == null || Err.Errors.Count == 0) { model.SubPeriodId = Err.Total == 0 ? (int?)null : Err.Total; var chlistTask = new EmpTask(); AutoMapper(new Models.AutoMapperParm { Destination = chlistTask, Source = model, Transtype = TransType.Insert }); if (model.EmpId == 0) { chlistTask.EmpId = null; } if (model.ManagerId == 0) { chlistTask.ManagerId = null; } chlistTask.EmpChklist = checkList; chlistTask.CreatedTime = DateTime.Now; chlistTask.CreatedUser = UserName; chlistTask.ExpectDur = model.ExpectDur; _hrUnitOfWork.CheckListRepository.Add(chlistTask); } else { errors.Add(Err.Errors.FirstOrDefault()); } count++; } } return(errors); }
public ActionResult EmplistDetails(EmpChkListViewModel model, OptionsViewModel moreInfo, EmpTaskVM grid1) { List <Error> errors = new List <Error>(); if (model.ManagerId == model.EmpId) { ModelState.AddModelError("EmpId", MsgUtils.Instance.Trls("ManagerCan'tbeequalEmp")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.SiteRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "EmpListForm", TableName = "EmpChkLists", ParentColumn = "ListId", Columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))), 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))); } } EmpChkList record; //insert if (model.Id == 0) { record = new EmpChkList(); AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "EmpListForm", Options = moreInfo, Transtype = TransType.Insert }); record.CreatedUser = UserName; record.CreatedTime = DateTime.Now; record.CompanyId = CompanyId; if (record.ListStartDate > record.ListEndDate) { ModelState.AddModelError("ListStartDate", MsgUtils.Instance.Trls("End must greater than start")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } _hrUnitOfWork.CheckListRepository.Add(record); } //update else { record = _hrUnitOfWork.Repository <EmpChkList>().FirstOrDefault(a => a.Id == model.Id); AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "EmpListForm", Options = moreInfo, Transtype = TransType.Update }); record.ModifiedTime = DateTime.Now; record.ModifiedUser = UserName; record.CompanyId = CompanyId; if (record.ListStartDate > record.ListEndDate) { ModelState.AddModelError("ListEndDate", MsgUtils.Instance.Trls("End must greater than start")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } if (model.Status == 2) { var EmpTasks = _hrUnitOfWork.Repository <EmpTask>().Where(a => a.EmpListId == model.Id).ToList(); if (EmpTasks.Count > 0) { foreach (var item in EmpTasks) { if (item.Status != 2) { item.Status = 3; _hrUnitOfWork.CheckListRepository.Attach(item); _hrUnitOfWork.CheckListRepository.Entry(item).State = EntityState.Modified; } } } } _hrUnitOfWork.CheckListRepository.Attach(record); _hrUnitOfWork.CheckListRepository.Entry(record).State = EntityState.Modified; } // Save grid1 errors = EmpTasksSaveGrid(grid1, ModelState.Where(a => a.Key.Contains("grid")), record); if (errors.Count > 0) { return(Json(errors.First().errors.First().message)); } errors = SaveChanges(Language); var message = "OK"; if (errors.Count > 0) { message = errors.First().errors.First().message; } return(Json(message)); } return(Json(Models.Utils.ParseFormErrors(ModelState))); }