/// <summary> /// Persists the custom fields. /// </summary> /// <param name="customFieldSection">The custom field section.</param> /// <param name="sectionDb">The section database.</param> /// <param name="db">The database.</param> private void PersistCustomFields(CustomFieldSection customFieldSection, CustomFieldSectionDb sectionDb, CRMDb db) { IList <int> customFieldIds = customFieldSection.CustomFields.Where(c => c.Id > 0).Select(c => c.Id).ToList(); var unMapCustomFields = db.Fields.Where(cc => !customFieldIds.Contains(cc.FieldID) && cc.CustomFieldSectionID == customFieldSection.Id && cc.StatusID != (short?)FieldStatus.Deleted) .Select(cc => cc).Distinct().ToList(); foreach (FieldsDb customFieldMapDb in unMapCustomFields) { customFieldMapDb.StatusID = (short?)FieldStatus.Deleted; } }
/// <summary> /// Persists the custom field sections. /// </summary> /// <param name="customFieldTab">The custom field tab.</param> /// <param name="customFieldTabDb">The custom field tab database.</param> /// <param name="db">The database.</param> private void PersistCustomFieldSections(CustomFieldTab customFieldTab, CustomFieldTabDb customFieldTabDb, CRMDb db) { IEnumerable <CustomFieldSectionDb> customFieldSectionsDb = customFieldTabDb.CustomFieldSections.Where(c => c.TabID == customFieldTab.Id).ToList(); foreach (CustomFieldSection customFieldSection in customFieldTab.Sections) { CustomFieldSectionDb customFieldSectionDb = customFieldSection.Id == 0 ? Mapper.Map <CustomFieldSection, CustomFieldSectionDb>(customFieldSection) : customFieldSectionsDb.Where(c => c.CustomFieldSectionID == customFieldSection.Id).FirstOrDefault(); PersistCustomFields(customFieldSection, customFieldSectionDb, db); } IList <int> customFieldSectionIds = customFieldTab.Sections.Where(c => c.Id > 0).Select(c => c.Id).ToList(); var unMapCustomFieldSections = db.CustomFieldSections.Where(a => !customFieldSectionIds.Contains(a.CustomFieldSectionID) && a.StatusID != (short)CustomFieldSectionStatus.Deleted && a.TabID == customFieldTab.Id); foreach (CustomFieldSectionDb customFieldSectionMapDb in unMapCustomFieldSections) { db.CustomFieldSections.Remove(customFieldSectionMapDb); } }