/** * Gets all inspectionitems from DB if they already exists, and creates them if they don't already */ private static Inspection GetOrCreateInspectionItems( ApplicationDbContext ctx, Checklist checklist, Inspection inspection) { foreach (var ci in checklist.ChecklistChecklistItems.Select(joinItem => joinItem.ChecklistItem)) { var inspectionItem = inspection.InspectionItems.SingleOrDefault(item => item.ChecklistItem.Id == ci.Id); if (inspectionItem == null) { inspectionItem = new InspectionItem { ChecklistItem = ci, Inspection = inspection }; inspection.InspectionItems.Add(inspectionItem); ctx.InspectionItems.Add(inspectionItem); } } TrySave(ctx); return inspection; }
public static bool UpdateInspectionItemCannedResponses( ApplicationDbContext ctx, InspectionItem inspectionItem, IList<Guid> selectedCannedResponseIds) { foreach (var inspectionItemCannedResponse in inspectionItem.InspectionItemCannedResponses) { var cannedResponse = inspectionItemCannedResponse.CannedResponse; ctx.CannedResponses.Attach(cannedResponse); } inspectionItem.InspectionItemCannedResponses = selectedCannedResponseIds .Select(crId => ctx.CannedResponses.Single(cr => cr.Id == crId)) // FIXME DJC EF Many2Many - Had to widen from just adjusting canned responses, so this may impact property tracking .Select(cr => new InspectionItemCannedResponse { InspectionItem = inspectionItem, CannedResponse = cr, InspectionItemId = inspectionItem.Id, CannedResponseId = cr.Id }) .ToList(); return TrySave(ctx); }
// Return value indicates success of operation public static bool UpdateInspectionItemCondition( ApplicationDbContext ctx, InspectionItem inspectionItem, InspectionItemCondition inspectionItemCondition) { // Only change condition and canned response if different from previous condition if (inspectionItem.Condition == inspectionItemCondition) { return true; } inspectionItem.Condition = inspectionItemCondition; // Clear canned response IDs when switching conditions. // This is because otherwise, the inspection table's select box and the DB (and thus the report) can get out of sync foreach (var inspectionItemCannedResponse in inspectionItem.InspectionItemCannedResponses) { var cannedResponse = inspectionItemCannedResponse.CannedResponse; ctx.CannedResponses.Attach(cannedResponse); } // FIXME DJC EF Many2Many - Determine if this still works. Its possible EF won't see this as clearing with the new many-many join style inspectionItem.InspectionItemCannedResponses = new List<InspectionItemCannedResponse>(); return TrySave(ctx); }
public static bool UpdateInspectionItemNote( ApplicationDbContext ctx, InspectionItem inspectionItem, string note) { inspectionItem.Note = note; return TrySave(ctx); }
public static bool UpdateIsCustomerConcern( ApplicationDbContext ctx, InspectionItem inspectionItem, bool isCustomerConcern) { inspectionItem.IsCustomerConcern = isCustomerConcern; return TrySave(ctx); }
public static bool AddInspectionItemImage( ApplicationDbContext ctx, InspectionItem inspectionItem, Image image) { var inspectionImage = new InspectionImage { Id = image.Id, Title = image.Title, CreatedDate = image.CreatedDate, ImageUrl = image.ImageUrl, InspectionItem = inspectionItem }; inspectionItem.InspectionImages.Add(inspectionImage); ctx.InspectionImages.Add(inspectionImage); return TrySave(ctx); }