// PUT: /ExerciseItemAnswers/5 /// <summary> /// Support for updating exercise item answer /// </summary> public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] ExerciseItemAnswer update) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (key != update.ID) { return(BadRequest()); } _context.Entry(update).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!_context.ExerciseItemAnswers.Any(p => p.ID == key)) { return(NotFound()); } else { throw; } } return(Updated(update)); }
// PUT: /KnowledgeItems(5) /// <summary> /// Support for updating Knowledge items /// </summary> public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] KnowledgeItem update) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (key != update.ID) { return(NotFound()); } String usrId = ControllerUtil.GetUserID(this); if (String.IsNullOrEmpty(usrId)) { return(new UnauthorizedResult()); } var isexist = await _context.KnowledgeItems.Where(p => p.ID == key).CountAsync(); if (isexist <= 0) { return(NotFound()); } update.ModifiedAt = DateTime.Now; _context.Entry(update).State = EntityState.Modified; //knowitem.UpdateData(update); var tagsindb = _context.KnowledgeTags.Where(p => p.RefID == update.ID).AsNoTracking().ToList(); foreach (var ditem in update.Tags) { var itemindb = tagsindb.Find(p => p.TagTerm == ditem.TagTerm); if (itemindb == null) { _context.KnowledgeTags.Add(ditem); } } foreach (var ditem in tagsindb) { var nitem = update.Tags.FirstOrDefault(p => p.TagTerm == ditem.TagTerm); if (nitem == null) { _context.KnowledgeTags.Remove(ditem); } } try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } return(Updated(update)); }
// PUT: /UserCollections(5) /// <summary> /// Support for updating user collection /// </summary> public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] UserCollection update) { if (!ModelState.IsValid) { foreach (var value in ModelState.Values) { foreach (var err in value.Errors) { System.Diagnostics.Debug.WriteLine(err.Exception?.Message); } } return(BadRequest(ModelState)); } if (key != update.ID) { return(BadRequest("Invalid key")); } String usrId = ControllerUtil.GetUserID(this); if (String.IsNullOrEmpty(usrId) || update.User != usrId) { return(new UnauthorizedResult()); } // Check existes var isexist = await _context.UserCollections.AsNoTracking().Where(p => p.ID == key).CountAsync(); if (isexist <= 0) { return(NotFound()); } update.ModifiedAt = DateTime.Now; _context.Entry(update).State = EntityState.Modified; // Items var itemsindb = _context.UserCollectionItems.AsNoTracking().Where(p => p.ID == update.ID).ToList(); foreach (var ditem in update.Items) { var itemindb = itemsindb.Find(p => p.RefType == ditem.RefType && p.RefID == ditem.RefID); if (itemindb == null) { _context.UserCollectionItems.Add(ditem); } } foreach (var ditem2 in itemsindb) { var nitem = update.Items.FirstOrDefault(p => p.RefType == ditem2.RefType && p.RefID == ditem2.RefID); if (nitem == null) { _context.UserCollectionItems.Remove(ditem2); } } try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } return(Ok(update)); }
// PUT: /ExerciseItems/5 /// <summary> /// Support for updating exercise items /// </summary> public async Task <IActionResult> Put([FromODataUri] int key, [FromBody] ExerciseItem update) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (key != update.ID) { return(BadRequest("Key is not matched")); } String usrId = ControllerUtil.GetUserID(this); if (String.IsNullOrEmpty(usrId)) { return(new UnauthorizedResult()); } var isexist = await _context.ExerciseItems.Where(p => p.ID == key).CountAsync(); if (isexist <= 0) { return(NotFound()); } // Update itself update.ModifiedAt = DateTime.Now; _context.Entry(update).State = EntityState.Modified; // Tags var tagsindb = _context.ExerciseTags.Where(p => p.RefID == update.ID).AsNoTracking().ToList(); foreach (var ditem in update.Tags) { var itemindb = tagsindb.Find(p => p.TagTerm == ditem.TagTerm); if (itemindb == null) { _context.ExerciseTags.Add(ditem); } } foreach (var ditem in tagsindb) { var nitem = update.Tags.FirstOrDefault(p => p.TagTerm == ditem.TagTerm); if (nitem == null) { _context.ExerciseTags.Remove(ditem); } } // Answer var answerindb = _context.ExerciseItemAnswers.Where(p => p.ID == update.ID).AsNoTracking().FirstOrDefault(); if (answerindb == null) { // Not exist if (update.Answer != null) { // Insert _context.ExerciseItemAnswers.Add(update.Answer); } } else { // Already in DB if (update.Answer != null) { // Insert _context.Entry(update.Answer).State = EntityState.Modified; } else { _context.ExerciseItemAnswers.Remove(answerindb); } } try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } return(Updated(update)); }