// PUT api/Limits/5 public async Task<IHttpActionResult> PutSummaryModel(int id, SummaryModel summaryModel) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != summaryModel.Id) { return BadRequest(); } var summary = _db.Summaries.Find(id); await _db.Entry(summary).Collection(i => i.Tags).LoadAsync(); if (summary.UserId != User.Identity.GetUserId()) { return BadRequest(); } var tagIds = summaryModel.Tags.Select(i => i.Id); var currentTagIds = summary.Tags.Select(i => i.Id); var toAdd = tagIds.Where(i => !currentTagIds.Contains(i)); summary.Tags.RemoveAll(i => !tagIds.Contains(i.Id)); summary.Tags.AddRange(_db.Tags.Where(i => toAdd.Contains(i.Id)).ToList()); summary.Name = summaryModel.Name; summary.Scope = summaryModel.Scope; summary.Type = summaryModel.Type; summary.To = summaryModel.To; summary.From = summaryModel.From; try { await _db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SummaryModelExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public async Task<IHttpActionResult> PostSummaryModel(SummaryModel summaryModel) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var tagIds = summaryModel.Tags.Select(i => i.Id); summaryModel.UserId = User.Identity.GetUserId(); summaryModel.Tags = await _db.Tags.Where(i => tagIds.Contains(i.Id)).ToListAsync(); _db.Summaries.Add(summaryModel); await _db.SaveChangesAsync(); return CreatedAtRoute("DefaultApi", new { id = summaryModel.Id }, summaryModel); }