public CreateKpiResponse Create(CreateKpiRequest request) { var response = new CreateKpiResponse(); try { var action = request.MapTo <BaseAction>(); var kpi = request.MapTo <Kpi>(); if (request.PillarId.HasValue) { kpi.Pillar = DataContext.Pillars.FirstOrDefault(x => x.Id == request.PillarId); } if (request.GroupId.HasValue) { kpi.Group = DataContext.Groups.FirstOrDefault(x => x.Id == request.GroupId); } if (request.RoleGroupId.HasValue) { kpi.RoleGroup = DataContext.RoleGroups.FirstOrDefault(x => x.Id == request.RoleGroupId.Value); } if (request.MeasurementId.HasValue) { kpi.Measurement = DataContext.Measurements.FirstOrDefault(x => x.Id == request.MeasurementId); } kpi.Level = DataContext.Levels.FirstOrDefault(x => x.Id == request.LevelId); kpi.Type = DataContext.Types.FirstOrDefault(x => x.Id == request.TypeId); kpi.Method = DataContext.Methods.FirstOrDefault(x => x.Id == request.MethodId); kpi.CreatedBy = DataContext.Users.FirstOrDefault(x => x.Id == request.UserId); if (request.RelationModels.Count > 0) { var relation = new List <KpiRelationModel>(); foreach (var item in request.RelationModels) { if (item.KpiId != 0) { var kpiRelation = DataContext.Kpis.FirstOrDefault(x => x.Id == item.KpiId); relation.Add(new KpiRelationModel { Kpi = kpiRelation, Method = item.Method }); } } kpi.RelationModels = relation; } DataContext.Kpis.Add(kpi); DataContext.SaveChanges(action); response.IsSuccess = true; response.Message = "KPI item has been added successfully"; } catch (DbUpdateException dbUpdateException) { response.Message = dbUpdateException.Message; } return(response); }
public CreateKpiResponse Create(CreateKpiRequest request) { var response = new CreateKpiResponse(); try { var kpi = request.MapTo<Kpi>(); if (request.PillarId.HasValue) { kpi.Pillar = DataContext.Pillars.FirstOrDefault(x => x.Id == request.PillarId); } if (request.GroupId.HasValue) { kpi.Group = DataContext.Groups.FirstOrDefault(x => x.Id == request.GroupId); } if (request.RoleGroupId.HasValue) { kpi.RoleGroup = DataContext.RoleGroups.FirstOrDefault(x => x.Id == request.RoleGroupId.Value); } if (request.MeasurementId.HasValue) { kpi.Measurement = DataContext.Measurements.FirstOrDefault(x => x.Id == request.MeasurementId); } kpi.Level = DataContext.Levels.FirstOrDefault(x => x.Id == request.LevelId); kpi.Type = DataContext.Types.FirstOrDefault(x => x.Id == request.TypeId); kpi.Method = DataContext.Methods.FirstOrDefault(x => x.Id == request.MethodId); if (request.RelationModels.Count > 0) { var relation = new List<KpiRelationModel>(); foreach (var item in request.RelationModels) { if (item.KpiId != 0) { var kpiRelation = DataContext.Kpis.FirstOrDefault(x => x.Id == item.KpiId); relation.Add(new KpiRelationModel { Kpi = kpiRelation, Method = item.Method }); } } kpi.RelationModels = relation; } DataContext.Kpis.Add(kpi); DataContext.SaveChanges(); response.IsSuccess = true; response.Message = "KPI item has been added successfully"; } catch (DbUpdateException dbUpdateException) { response.Message = dbUpdateException.Message; } return response; }