private List <Error> SaveGrid1(RequestDisplinRepeatGrid grid1, IEnumerable <KeyValuePair <string, ModelState> > state, Discipline Displinobj) { List <Error> errors = new List <Error>(); // Deleted if (grid1.deleted != null) { foreach (DisplinRepeatViewModel model in grid1.deleted) { var RequestDisplinRepeat = new DisplinRepeat { Id = model.Id }; _hrUnitOfWork.DisciplineRepository.Remove(RequestDisplinRepeat); } } // 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 = "DisplinRepeats", Columns = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted"))), Culture = Language }); if (errors.Count() > 0) { return(errors); } } } // updated records if (grid1.updated != null) { foreach (DisplinRepeatViewModel model in grid1.updated) { var requestRe = new DisplinRepeat(); AutoMapper(new Models.AutoMapperParm { Destination = requestRe, Source = model }); requestRe.ModifiedTime = DateTime.Now; requestRe.ModifiedUser = UserName; _hrUnitOfWork.DisciplineRepository.Attach(requestRe); _hrUnitOfWork.DisciplineRepository.Entry(requestRe).State = EntityState.Modified; } } // inserted records if (grid1.inserted != null) { foreach (DisplinRepeatViewModel model in grid1.inserted) { var requestRe = new DisplinRepeat(); AutoMapper(new Models.AutoMapperParm { Destination = requestRe, Source = model }); requestRe.Discipline = Displinobj; requestRe.CreatedTime = DateTime.Now; requestRe.CreatedUser = UserName; _hrUnitOfWork.DisciplineRepository.Add(requestRe); } } return(errors); }
public ActionResult SaveDiscipline(DisciplineViewModel model, OptionsViewModel moreInfo, RequestDisplinRepeatGrid grid1) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "Discipline", TableName = "Disciplines", Columns = Models.Utils.GetColumnViews(ModelState), ParentColumn = "CompanyId", 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))); } } var Sequence = _hrUnitOfWork.Repository <Discipline>().Select(s => s.Code).DefaultIfEmpty(0).Max(); var MaxCode = Sequence == 0 ? 1 : Sequence + 1; var record = _hrUnitOfWork.Repository <Discipline>().FirstOrDefault(j => j.Id == model.Id); if (record == null) //Add { record = new Discipline(); AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "Discipline", Options = moreInfo, Transtype = TransType.Insert }); record.CreatedTime = DateTime.Now; record.CreatedUser = UserName; record.Code = MaxCode; if (record.StartDate > record.EndDate) { ModelState.AddModelError("EndDate", MsgUtils.Instance.Trls("MustGreaterthanStart")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } record.CompanyId = model.IsLocal ? CompanyId : (int?)null; _hrUnitOfWork.DisciplineRepository.Add(record); } else //update { AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "Discipline", Options = moreInfo, Transtype = TransType.Update }); if (record.StartDate > record.EndDate) { ModelState.AddModelError("EndDate", MsgUtils.Instance.Trls("MustGrthanStart")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } record.CompanyId = model.IsLocal ? CompanyId : (int?)null; record.ModifiedTime = DateTime.Now; record.ModifiedUser = UserName; _hrUnitOfWork.DisciplineRepository.Attach(record); _hrUnitOfWork.DisciplineRepository.Entry(record).State = EntityState.Modified; } // Save grid1 errors = SaveGrid1(grid1, ModelState.Where(a => a.Key.Contains("grid1")), record); if (errors.Count > 0) { return(Json(errors.First().errors.First().message)); } var Errors = SaveChanges(Language); string message = "OK," + ((new JavaScriptSerializer()).Serialize(record)); if (Errors.Count > 0) { message = Errors.First().errors.First().message; } return(Json(message)); } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } }