private HttpResponseMessage SavePercentage(PercentageGraphData percentage) { if (!ModelState.IsValid) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } PercentageService.SavePercentage(WebSecurity.CurrentUserId, percentage); return new HttpResponseMessage(HttpStatusCode.OK); }
public void SavePercentage(int userId, PercentageGraphData percentageData) { AuthorizationHelper.ValidateLecturerAccess(Context, userId); if (Context.DiplomPercentagesGraphs.Any(x => x.Name == percentageData.Name)) { throw new ApplicationException("Этап с таким названием уже есть!"); } DiplomPercentagesGraph percentage; if (percentageData.Id.HasValue) { percentage = Context.DiplomPercentagesGraphs .Include(x => x.DiplomPercentagesGraphToGroups) .Single(x => x.Id == percentageData.Id); } else { percentage = new DiplomPercentagesGraph(); Context.DiplomPercentagesGraphs.Add(percentage); } // percentage.DiplomPercentagesGraphToGroups = percentage.DiplomPercentagesGraphToGroups ?? // new Collection<DiplomPercentagesGraphToGroup>(); // var currentGroups = percentage.DiplomPercentagesGraphToGroups.ToList(); // var newGroups = percentageData.SelectedGroupsIds.Select(x => new DiplomPercentagesGraphToGroup // { // GroupId = x, // DiplomPercentagesGraphId = percentage.Id // }).ToList(); // // var groupsToAdd = newGroups.Except(currentGroups, grp => grp.GroupId).ToList(); // var groupsToDelete = currentGroups.Except(newGroups, grp => grp.GroupId).ToList(); // // groupsToAdd.ForEach(grp => percentage.DiplomPercentagesGraphToGroups.Add(grp)); // groupsToDelete.ForEach(grp => Context.DiplomPercentagesGraphToGroup.Remove(grp)); percentage.LecturerId = userId; percentage.Name = percentageData.Name; percentage.Percentage = percentageData.Percentage; percentage.Date = percentageData.Date; Context.SaveChanges(); }