public ActionResult AddStaffClause(StaffFilterClauseModel m) { if (!m.BuildingInclude & !m.EmployeeTypeInclude & !m.JobTitleInclude & !m.StatusInclude & !m.StaffIdInclude & !m.LastNameInclude) ModelState.AddModelError("", "Please include at least one field in the filter"); MemberFilter f = null; try { f = DbContext.MemberFilters.First(x => x.FilterId.Equals(m.FilterId)); } catch { ModelState.AddModelError("", "Invalid filter id"); } int count = DbContext.StaffFilterClauses.Where(x => x.FilterId.Equals(m.FilterId)).Count(); bool hasErrors = ViewData.ModelState.Values.Any(x => x.Errors.Count > 1); List<ModelState> errors = ViewData.ModelState.Values.Where(x => x.Errors.Count() > 0).ToList(); if (ModelState.IsValid) { try { StaffFilterClause c = new StaffFilterClause(); AnvilEntity e = new AnvilEntity(m); e.CopyTo(c); c.StaffFilterClauseId = Guid.NewGuid(); c.SortIndex = count; DbContext.StaffFilterClauses.Add(c); DbContext.SaveChanges(); } catch (Exception ex) { return View("~/Views/Shared/Error.cshtml", new AnvilExceptionModel(ex, "Create Staff Clause", "My", "Contacts", "EditStaffFilter")); } } else { AnvilExceptionCollector ec = new AnvilExceptionCollector("The staff filter clause could not be validated"); foreach (ModelState ms in errors) { foreach (var x in ms.Errors) { ec.Add(x.ErrorMessage); } } AnvilExceptionModel em = new AnvilExceptionModel(ec.ToException(), "Create Staff Filter Clause", null, null, null); MemberFilterModel fm = new MemberFilterModel(f); fm.Exception = em; return View("EditFilter", fm); } return RedirectToAction("EditFilter", new { id = m.FilterId }); }
public List<StudentRecord> Execute() { DynamicQueryStatement dqs = ToDynamicQueryStatement(); try { StudentsContext context = new StudentsContext(); List<StudentRecord> students = context.StudentRecords.Where(dqs.Query, dqs.Parms) .OrderBy(x => x.LastName + x.FirstName + x.MiddleInitial) .ToList(); return students; } catch (Exception ex) { AnvilExceptionCollector ec = new AnvilExceptionCollector("Could not get students from database"); ec.Add(ex); ec.Add(dqs.Query); throw ec.ToException(); } }
public void ParseItems(StreamReader reader) { this.Record(); int index = 0; ItemType = System.Type.GetType(FullAssemblyTypeName); while (!reader.EndOfStream) { string l = reader.ReadLine(); if (l == null) break; if (index == 0) { try { FieldNames = l.Split(Delimiter.ToCharArray()[0]); index++; } catch (Exception ex) { AnvilExceptionCollector ec = new AnvilExceptionCollector(ex); ec.Insert(0, "Could not parse the columns from the first line"); throw ec.ToException(); } } else { if (l.Contains("CONSULT")) { int x = 0; x++; } object sourceItem = null; try { sourceItem = ParseLine(l); } catch (Exception ex) { ImportItem i = new ImportItem() { ImportItemId = Guid.NewGuid(), SessionId = SessionId, Description = l, EntityStatus = ImportEntityStatus.Error, EntryDate = DateTime.Now, LineIndex = index - 1, Comment = string.Join("\n", (new Anvil.v2015.v001.Domain.Exceptions.AnvilExceptionCollector(ex)).ToArray()) }; try { db.ImportItems.Add(i); db.SaveChanges(); } catch (Exception ex2) { AnvilExceptionCollector iEx = new AnvilExceptionCollector(ex2); throw iEx.ToException(); } } index++; if (sourceItem != null) { IImportStatus iis = sourceItem as IImportStatus; if (iis == null) throw new Exception("Parse import file failed. The items must implement IImportStatus"); IImportEntity iie = sourceItem as IImportEntity; if (iie == null) throw new Exception("Parse import file failed. The items must implement IImportEntity"); try { iis.LineIndex = index - 1; iis.ImportItemId = Guid.NewGuid(); iis.SessionId = this.SessionId; iis.EntryDate = DateTime.Now; Byte[] _bytes = SerializeItem(sourceItem); iis.SerializedData = _bytes; iis.SourceItem = sourceItem; } catch (Exception ex) { AnvilExceptionCollector ec = new AnvilExceptionCollector(ex); ec.Insert(0, string.Format("Could not serialize item at index {0}", index.ToString())); ec.Insert(0, l); throw ec.ToException(); } try { try { iis.Validate(); } catch (Exception ex) { AnvilExceptionCollector ec = new AnvilExceptionCollector(ex); iis.Comment = string.Join("\n", ec.ToArray()); iis.EntityStatus = ImportEntityStatus.Error; } if (iis.EntityStatus == ImportEntityStatus.Error) goto completesync; if (iie.TargetExists()) { if (UpdateIfExists) { if (iie.IsSyncJustified()) iis.EntityStatus = ImportEntityStatus.Update; else iis.EntityStatus = ImportEntityStatus.None; } else iis.EntityStatus = ImportEntityStatus.Ignore; } else { if (AddIfNotExist) iis.EntityStatus = ImportEntityStatus.Create; else iis.EntityStatus = ImportEntityStatus.Ignore; } } catch (Exception ex) { throw new Exception("Could not get sync status of this item", ex); } completesync: iis.SerializedData = SerializeItem(iis); iis.Record(); } } } }
public List<HRStaffRecord> Execute() { DynamicQueryStatement dqs = ToDynamicQueryStatement(); try { HRStaffContext context = new HRStaffContext(); if (Parms.Count() == 0) return new List<HRStaffRecord>(); else return context.HRStaffRecords .Where(dqs.Query, dqs.Parms) .OrderBy(x => x.LastName + x.FirstName + x.MiddleInitial) .ToList(); } catch (Exception ex) { AnvilExceptionCollector ec = new AnvilExceptionCollector("Could not get staff records from the database"); ec.Add(ex); ec.Add(dqs.Query); throw ec.ToException(); } }
public static void ValidateItem(object item) { var context = new ValidationContext(item, serviceProvider: null, items: null); var results = new List<ValidationResult>(); var isValid = Validator.TryValidateObject(item, context, results); if (!isValid) { string[] comments = results.Select(x => x.ErrorMessage).ToArray(); AnvilExceptionCollector ec = new AnvilExceptionCollector("Validation failed"); ec.AddRange(comments); throw ec.ToException(); } }