public UpdateKpiTargetItemResponse SaveKpiTargetItem(SaveKpiTargetRequest request) { var response = new UpdateKpiTargetItemResponse(); try { var kpiTarget = request.MapTo <KpiTarget>(); if (request.Id != 0) { var attachedEntity = DataContext.KpiTargets.Find(request.Id); if (attachedEntity != null && DataContext.Entry(attachedEntity).State != EntityState.Detached) { DataContext.Entry(attachedEntity).State = EntityState.Detached; } DataContext.KpiTargets.Attach(kpiTarget); DataContext.Entry(kpiTarget).State = EntityState.Modified; DataContext.SaveChanges(); } else { kpiTarget.Kpi = DataContext.Kpis.FirstOrDefault(x => x.Id == request.KpiId); DataContext.KpiTargets.Add(kpiTarget); DataContext.SaveChanges(); } response.Id = kpiTarget.Id; response.IsSuccess = true; response.Message = "KPI Target item has been updated successfully"; } catch (DbUpdateException dbUpdateException) { response.Message = dbUpdateException.Message; } return(response); }
public UpdateKpiTargetItemResponse UpdateOriginalData(SaveKpiTargetRequest request) { var response = new UpdateKpiTargetItemResponse(); try { var action = request.MapTo <BaseAction>(); var kpiTarget = request.MapTo <KpiTarget>(); var user = DataContext.Users.First(x => x.Id == request.UserId); if (request.Id != 0) { if ((string.IsNullOrEmpty(request.Value) && request.Remark == null) || request.Value == "-" || (!string.IsNullOrEmpty(request.Value) && request.Value.ToLowerInvariant() == "null")) { kpiTarget = DataContext.KpiTargets.Single(x => x.Id == request.Id); DataContext.KpiTargets.Remove(kpiTarget); } else { kpiTarget = DataContext.KpiTargets .Include(x => x.Kpi) .Include(x => x.UpdatedBy) .Single(x => x.Id == request.Id); if (request.Value != null) { kpiTarget.Value = request.RealValue; } if (request.Remark != null) { kpiTarget.Remark = request.Remark; } //request.MapPropertiesToInstance<KpiAchievement>(kpiAchievement); kpiTarget.UpdatedBy = user; kpiTarget.Kpi = DataContext.Kpis.Single(x => x.Id == request.KpiId); } } else { var exist = DataContext.KpiTargets.FirstOrDefault(x => x.Kpi.Id == request.KpiId && x.PeriodeType == request.PeriodeType && x.Periode == request.Periode); if (exist != null) { if (request.Remark != null || !string.IsNullOrEmpty(request.Remark)) { exist.Remark = request.Remark; } if (!string.IsNullOrEmpty(request.Value) && request.Value.ToLowerInvariant() != "null" && request.Value != "-") { exist.Value = double.Parse(request.Value); } exist.UpdatedBy = user; exist.UpdatedDate = DateTime.Now; kpiTarget = exist; } else { kpiTarget.CreatedBy = user; kpiTarget.UpdatedBy = user; kpiTarget.Kpi = DataContext.Kpis.FirstOrDefault(x => x.Id == request.KpiId); DataContext.KpiTargets.Add(kpiTarget); } /* * if (((string.IsNullOrEmpty(request.Value) && request.Remark == null) || request.Value == "-" || * (!string.IsNullOrEmpty(request.Value) && request.Value.ToLowerInvariant() == "null")) && request.Id == 0) * { * response.IsSuccess = false; * response.Message = "You can not update this item because it is not existed"; * return response; * } * else { * kpiTarget.CreatedBy = user; * kpiTarget.UpdatedBy = user; * kpiTarget.Kpi = DataContext.Kpis.FirstOrDefault(x => x.Id == request.KpiId); * DataContext.KpiTargets.Add(kpiTarget); * } */ } DataContext.SaveChanges(action); response.Id = kpiTarget.Id; response.IsSuccess = true; response.Message = "KPI Target item has been updated successfully"; } catch (DbUpdateException dbUpdateException) { response.Message = dbUpdateException.Message; } catch (Exception exception) { response.Message = exception.Message; } return(response); }