public DeleteOutputCategoryResponse DeleteOutputCategory(DeleteOutputCategoryRequest request) { try { var OutputCategory = new KeyOutputCategory { Id = request.Id }; DataContext.KeyOutputCategories.Attach(OutputCategory); DataContext.KeyOutputCategories.Remove(OutputCategory); DataContext.SaveChanges(); return new DeleteOutputCategoryResponse { IsSuccess = true, Message = "The Output Category has been deleted successfully" }; } catch(DbUpdateException exception) { return new DeleteOutputCategoryResponse { IsSuccess = false, Message = exception.Message }; } }
public SaveOutputConfigResponse Save(SaveOutputConfigRequest request) { try { var outputConfig = request.MapTo<KeyOutputConfiguration>(); if (request.Id != 0) { outputConfig = DataContext.KeyOutputConfigs.Include(x => x.Measurement) .Include(x => x.Category) .Include(x => x.Kpis) .Include(x => x.KeyAssumptions) .First(x => x.Id == request.Id); request.MapPropertiesToInstance<KeyOutputConfiguration>(outputConfig); foreach (var kpi in outputConfig.Kpis.ToList()) { outputConfig.Kpis.Remove(kpi); } foreach (var assumption in outputConfig.KeyAssumptions.ToList()) { outputConfig.KeyAssumptions.Remove(assumption); } outputConfig.Measurement = DataContext.Measurements.FirstOrDefault(x => x.Id == request.MeasurementId); if (request.CategoryId != outputConfig.Category.Id) { var category = new KeyOutputCategory { Id = request.CategoryId }; DataContext.KeyOutputCategories.Attach(category); outputConfig.Category = category; } } else { if (request.MeasurementId != 0) { var measurement = new Measurement { Id = request.MeasurementId }; DataContext.Measurements.Attach(measurement); outputConfig.Measurement = measurement; } var category = new KeyOutputCategory { Id = request.CategoryId }; DataContext.KeyOutputCategories.Attach(category); outputConfig.Category = category; DataContext.KeyOutputConfigs.Add(outputConfig); } foreach (var kpiId in request.KpiIds) { var kpi = new Kpi { Id = kpiId }; if (DataContext.Kpis.Local.FirstOrDefault(x => x.Id == kpiId) == null) { DataContext.Kpis.Attach(kpi); } else { kpi = DataContext.Kpis.Local.FirstOrDefault(x => x.Id == kpiId); } outputConfig.Kpis.Add(kpi); } foreach (var assumptionId in request.KeyAssumptionIds) { var assumption = new KeyAssumptionConfig { Id = assumptionId }; if (DataContext.KeyAssumptionConfigs.Local.FirstOrDefault(x => x.Id == assumptionId) == null) { DataContext.KeyAssumptionConfigs.Attach(assumption); } else { assumption = DataContext.KeyAssumptionConfigs.Local.FirstOrDefault(x => x.Id == assumptionId); } outputConfig.KeyAssumptions.Add(assumption); } DataContext.SaveChanges(); return new SaveOutputConfigResponse { IsSuccess = true, Message = "The item has been saved successfully" }; } catch { return new SaveOutputConfigResponse { IsSuccess = false, Message = "An Error Occured please contact the administrator for further information" }; } }