public static Safe_Citations NewCitation(string theBadgeNumber) { Safe_Citations result; using (var context = new SafeEntities()) { result = new Safe_Citations(); result.CitationNumber = ""; // clean up badge number string[] separators = { " " }; string[] badgeParts = theBadgeNumber.Split(separators, StringSplitOptions.RemoveEmptyEntries); theBadgeNumber = badgeParts[0]; var badge = context.Person_Badges.Where(b => b.BadgeNumber == theBadgeNumber).Single(); var perXref = badge.PersonDivisionXrefID; var divXref = context.Person_PersonDivisionXref .Include("Person_FullName") .Include("Division_Divisions") .Include("Division_Divisions.Company_Companies") .Where(d => d.PersonDivisionXrefID == perXref).Single(); result.Person_PersonDivisionXref = divXref; result.BadgeID = badge.BadgeID; result.PersonDivisionXrefID = divXref.PersonDivisionXrefID; //result.WhenCreated = DateTime.Now; //result.WhenDue = DateTime.Now.AddDays(15); result.Cancelled = "z"; result.FollowUp = "z"; result.Documents = new List <Documents>(); } return(result); }
public static bool UpdateOrInsert(int safeCitationID, int violationID, Safe_CitationViolations data) { bool result; try { using (var context = new SafeEntities()) { var dbRecord = (from r in context.Safe_CitationViolations where r.SafeCitationID == safeCitationID && r.ViolationID == violationID select r).Single() ?? new Safe_CitationViolations(); PropertyInfo[] props = data.GetType().GetProperties(); Array.ForEach(props, prop => { var val = prop.GetType().GetProperty(prop.Name).GetValue(data, null); prop.SetValue(dbRecord, val, null); }); context.SaveChanges(); } result = true; } catch (Exception) { result = false; } return(result); }
public static Safe_Citations GetCitation(int citationID) { var context = new SafeEntities(); var citations = context.Safe_Citations .Include("Safe_Hearings") .Include("Safe_Hearings.Safe_HearingPoliceOfficers") .Include("Safe_Hearings.Safe_HearingPoliceOfficers.LEO_OfficerBadges") .Include("Safe_Hearings.Safe_HearingPoliceOfficers.LEO_OfficerBadges.Person_FullName") .Include("Safe_Hearings.Safe_Officers") .Include("Safe_VehicleMakes") .Include("Safe_VehicleBodyTypes") .Include("Safe_CitationViolations") .Include("Safe_CitationViolations.Safe_Violations") .Include("Safe_CitationViolations.Safe_ViolationTypes") .Include("Safe_CitationPoliceOfficers") .Include("Safe_CitationPoliceOfficers.LEO_OfficerBadges") .Include("Safe_CitationPoliceOfficers.LEO_OfficerBadges.Person_FullName") .Include("Person_PersonDivisionXref") .Include("Person_PersonDivisionXref.Person_FullName") .Include("Person_PersonDivisionXref.Division_Divisions") .Include("Person_PersonDivisionXref.Division_Divisions.Company_Companies") //.Include("Documents") .Where(c => c.SafeCitationID == citationID); string identificationNumber = "CITATION:" + citationID.ToString(); var documents = context.Documents.Where(d => d.IdentificationNumber == identificationNumber).ToList(); var citation = citations.FirstOrDefault(); citation.Documents = documents.ToList(); return(citation); }
public static bool Save(ICollection <Safe_HearingPoliceOfficers> safeHearingPoliceOfficers, int safeHearingId) { bool result; try { using (var context = new SafeEntities()) { #region Remove if (safeHearingPoliceOfficers.Count() < 1) // no change or all deleted { var delOfficers = from delOfficer in context.Safe_HearingPoliceOfficers where delOfficer.SafeHearingID == safeHearingId select delOfficer; foreach (var item in delOfficers) { context.Safe_HearingPoliceOfficers.Remove(item); } } else // posable delete { var officerBadgeIds = (from officerBadgeId in safeHearingPoliceOfficers where officerBadgeId.SafeHearingID == safeHearingId select officerBadgeId.OfficerBadgeID).ToList(); var delOfficers = from delOfficer in context.Safe_HearingPoliceOfficers where officerBadgeIds.Contains(delOfficer.OfficerBadgeID) == false && delOfficer.SafeHearingID == safeHearingId select delOfficer; foreach (var item in delOfficers) { context.Safe_HearingPoliceOfficers.Remove(item); } } #endregion Remove #region Add var newOfficerBadgeIds = (from newOfficerBadgeId in context.Safe_HearingPoliceOfficers where newOfficerBadgeId.SafeHearingID == safeHearingId select newOfficerBadgeId.OfficerBadgeID).ToList(); var addOfficers = from addOfficer in safeHearingPoliceOfficers where newOfficerBadgeIds.Contains(addOfficer.OfficerBadgeID) == false select addOfficer; foreach (var item in addOfficers) { Safe_HearingPoliceOfficers newOfficer = new Safe_HearingPoliceOfficers(); PropertyInfo[] props = item.GetType().GetProperties(); Array.ForEach(props, prop => { if (!prop.GetGetMethod().IsVirtual) { var source = prop.GetValue(item, null); prop.SetValue(newOfficer, source, null); } }); context.Safe_HearingPoliceOfficers.Add(newOfficer); } #endregion Add #region Save context.SaveChanges(); #endregion Save } result = true; } catch (Exception) { result = false; } return(result); }
public static bool Save(ICollection <Safe_CitationViolations> citationViolations, int safeCitationID) { bool result = false; try { using (var context = new SafeEntities()) { #region Get SafeCitationID var tmp = from c in citationViolations select c; var citationId = safeCitationID; #endregion #region Get List of items to delete var ids = from id in citationViolations select new { id.ViolationID }; var idList = ids.Select(item => item.ViolationID).ToList(); var deleteList = from d in context.Safe_CitationViolations where d.SafeCitationID == citationId && !idList.Contains(d.ViolationID) select d; #endregion #region Remove deleted items foreach (var item in deleteList) { context.Safe_CitationViolations.Remove(item); } #endregion #region Update changes var updateList = from d in context.Safe_CitationViolations where d.SafeCitationID == citationId && idList.Contains(d.ViolationID) select d; foreach (var item in updateList) { var theItem = item; // find matching record from param var records = from record in citationViolations where record.ViolationID == theItem.ViolationID select record; Safe_CitationViolations sourceRecord = records.FirstOrDefault(); PropertyInfo[] props = theItem.GetType().GetProperties(); Array.ForEach(props, prop => { if (!prop.GetGetMethod().IsVirtual) { var value = prop.GetValue(sourceRecord, null); prop.SetValue(theItem, value, null); } }); theItem.SafeCitationID = citationId; } #endregion #region Add new items var adds = from d in context.Safe_CitationViolations where d.SafeCitationID == citationId select d; var addIds = adds.Select(item => item.ViolationID).ToList(); var addRecords = from addRecord in citationViolations where !addIds.Contains(addRecord.ViolationID) select addRecord; foreach (var item in addRecords) { var theItem = item; var newRecord = new Safe_CitationViolations(); PropertyInfo[] props = theItem.GetType().GetProperties(); Array.ForEach(props, prop => { if (!prop.GetGetMethod().IsVirtual) { var value = prop.GetValue(theItem, null); prop.SetValue(newRecord, value, null); } }); newRecord.SafeCitationID = citationId; newRecord.Conditions = string.Empty; context.Safe_CitationViolations.Add(newRecord); } #endregion #region Save changes try { context.SaveChanges(); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { string message = string.Format("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); Trace.TraceInformation(message); } } } #endregion } result = true; } catch (Exception ex) { Exception theException = ex; while (theException.InnerException != null) { theException = theException.InnerException; } throw theException; } return(result); }
public string Save() { string result = "true"; try { var safeCitationID = this.SafeCitationID; using (var context = new SafeEntities()) { Safe_Citations safeCitation; if (this.SafeCitationID == 0) { safeCitation = new Safe_Citations(); } else { safeCitation = (from c in context.Safe_Citations where c.SafeCitationID == safeCitationID select c).Single(); } PropertyInfo[] props = safeCitation.GetType().GetProperties(); foreach (PropertyInfo prop in props) { if (prop.GetGetMethod().IsVirtual) { //if (prop.PropertyType.Name.Contains("ICollection")) //{ // // get static save method // MethodInfo saveMethod = prop.GetType().GetMethod("Save", BindingFlags.Static | BindingFlags.Public); // // call save method and pass it the collection // saveMethod.Invoke(null, new object[] {(object) prop.GetValue(this, null)}); //} //else //{ // continue; //} continue; } var val = this.GetType().GetProperty(prop.Name).GetValue(this, null); prop.SetValue(safeCitation, val, null); } if (SafeCitationID == 0) { context.Safe_Citations.Add(safeCitation); } try { var saveFlag = true; #region Validate string errorMessage = string.Empty; var validationErrors = context.GetValidationErrors() .Where(vr => !vr.IsValid) .SelectMany(vr => vr.ValidationErrors).ToList(); // Check for duplicate citation number. if (SafeCitationID == 0) { var citationNumberAlreadyExists = (from c in context.Safe_Citations where c.CitationNumber == safeCitation.CitationNumber select c).Any(); if (citationNumberAlreadyExists) { validationErrors.Add(new DbValidationError("CitationNumber", "You entered a duplicate citation number. Either modify the citation number or edit the existing citation.")); } } if (Safe_CitationViolations.Count() < 1) { validationErrors.Add(new DbValidationError("Safe_CitationViolations", "At least one violation is required.")); } if (Safe_CitationPoliceOfficers.Count() < 1 && safeCitation.Superintendent == "") { validationErrors.Add(new DbValidationError("Safe_CitationPoliceOfficers", "At least one officer or a superintendent is required.")); } foreach (var error in validationErrors) { saveFlag = false; errorMessage += error.ErrorMessage + "</br>"; } #endregion // Save Collections if (saveFlag) { context.SaveChanges(); if (this.WhenDue != null) { foreach (Safe_CitationViolations violation in Safe_CitationViolations) { if (violation.Safe_ViolationTypes.ViolationTypeDescription == "Equipment") { violation.ViolationPoints = 0; violation.Safe_Violations.ViolationPoints = 0; } } } SAFE.Safe_CitationViolations.Save(Safe_CitationViolations, safeCitation.SafeCitationID); SAFE.Safe_CitationPoliceOfficers.Save(Safe_CitationPoliceOfficers, safeCitation.SafeCitationID); SAFE.Documents.Save(this.Documents, safeCitation.SafeCitationID); SAFE.Safe_Hearings.Save(Safe_Hearings, safeCitation.SafeCitationID); context.SaveChanges(); if (this.SafeCitationID == 0) { this.SafeCitationID = safeCitation.SafeCitationID; } return("true"); } else { return(errorMessage); } } catch (Exception ex) { result = ((ex.InnerException).InnerException).Message; } } } catch (Exception ex) { result = "ERROR:\n\r\n\r" + ex.Message + " INNER EXCEPTION: " + ((ex.InnerException).InnerException).Message; } return(result); }
public static bool Save(ICollection <Safe_Hearings> safeHearings, int safeCitationID) { bool result; try { using (var context = new SafeEntities()) { #region Deletes // get citationID int theCitationID = safeCitationID; // get list of ids from param: safeHearings IEnumerable <int> ids = safeHearings.Select(x => x.SafeHearingID).Distinct(); // get list of hearings to delete var toDeletes = from toDelete in context.Safe_Hearings where ids.Contains(toDelete.SafeHearingID) == false && toDelete.SafeCitationID == theCitationID select toDelete; // delete hearings foreach (var item in toDeletes) { context.Safe_Hearings.Remove(item); } context.SaveChanges(); #endregion Safe_Hearings theSafeHearing; foreach (var hearing in safeHearings) { if (hearing.SafeHearingID < 1) { // new record hearing.SafeCitationID = theCitationID; theSafeHearing = new Safe_Hearings(); } else { // get record var theSafeHearings = from safeHearing in context.Safe_Hearings where safeHearing.SafeHearingID == hearing.SafeHearingID select safeHearing; if (!theSafeHearings.Any()) { continue; } theSafeHearing = theSafeHearings.FirstOrDefault(); } PropertyInfo[] props = theSafeHearing.GetType().GetProperties(); Array.ForEach(props, prop => { if (!prop.GetGetMethod().IsVirtual) { var source = prop.GetValue(hearing, null); prop.SetValue(theSafeHearing, source, null); } }); var leoOfficer = (from officer in context.LEO_OfficerBadges.Include("Person_FullName") where officer.SerialNumber == hearing.OfficerSerialNumber select officer).FirstOrDefault(); if (leoOfficer != null) { var safeOfficer = (from officer in context.Safe_Officers where officer.OfficerBadgeNumber == leoOfficer.SerialNumber select officer).FirstOrDefault(); if (safeOfficer == null) { var newSafeOfficer = new Safe_Officers { SafeDivisionID = -1, OfficerName = leoOfficer.Person_FullName.FullName, OfficerBadgeNumber = leoOfficer.SerialNumber, IsActive = true }; context.Safe_Officers.Add(newSafeOfficer); context.SaveChanges(); theSafeHearing.SafeOfficerID_Hearing = newSafeOfficer.SafeOfficerID; } else { theSafeHearing.SafeOfficerID_Hearing = safeOfficer.SafeOfficerID; } } if (theSafeHearing.SafeHearingID == 0) { context.Safe_Hearings.Add(theSafeHearing); } context.SaveChanges(); //SAFE.Safe_HearingPoliceOfficers.Save(hearing.Safe_HearingPoliceOfficers, theSafeHearing.SafeHearingID); theCitationID = hearing.SafeCitationID; } result = true; } } catch (Exception ex) { result = false; } return(result); }
public static bool Save(ICollection <Documents> documents, int citationId) { bool result = false; try { using (var context = new SafeEntities()) { //var tmp = from c in citationPoliceOfficers // select c; #region Deletes var ids = from id in documents select new { id.DocumentID }; var idList = ids.Select(item => item.DocumentID).ToList(); var identificationNumber = "CITATION:" + citationId; var deleteList = from d in context.Documents where d.DocumentTypeNumber == (short)133 && d.IdentificationNumber == identificationNumber && !idList.Contains(d.DocumentID) select d; foreach (var item in deleteList) { context.Documents.Remove(item); } #endregion #region Updates var updateList = from d in context.Documents where d.DocumentTypeNumber == (short)133 && d.IdentificationNumber == "CITATION:0" && idList.Contains(d.DocumentID) select d; foreach (var item in updateList) { var theItem = item; theItem.IdentificationNumber = "CITATION:" + citationId; } #endregion #region Adds //var adds = from d in context.Documents // where d.DocumentTypeNumber == (short)133 // && d.IdentificationNumber == "CITATION:0" // select d; //var addIds = adds.Select(item => item.DocumentID).ToList(); //var addRecords = from addRecord in documents // where !addIds.Contains(addRecord.DocumentID) // select addRecord; //foreach (var item in addRecords) //{ // var theItem = item; // var newRecord = new Documents(); // PropertyInfo[] props = theItem.GetType().GetProperties(); // Array.ForEach(props, prop => // { // if (!prop.GetGetMethod().IsVirtual) // { // var value = prop.GetValue(theItem, null); // prop.SetValue(newRecord, value, null); // } // }); // context.Documents.Add(newRecord); //} #endregion try { context.SaveChanges(); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { string message = string.Format("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); Trace.TraceInformation(message); } } } } result = true; } catch (Exception ex) { Exception theException = ex; while (theException.InnerException != null) { theException = theException.InnerException; } throw theException; } return(result); }