public HttpResponseMessage Update([FromBody] TagToUpdate tag) { try { repository.Save(tag.OldTag, tag.NewTag); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (UnauthorizedAccessException) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } catch (Exception) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public async void Tags_UpdateAsync_PositiveAndNegative_Test() { var options = new DbContextOptionsBuilder <DreamFoodDeliveryContext>() .UseInMemoryDatabase(databaseName: "Tags_UpdateAsync_PositiveAndNegative_Test") .Options; using (var context = new DreamFoodDeliveryContext(options)) { context.AddRange(_tags); await context.SaveChangesAsync(); } using (var context = new DreamFoodDeliveryContext(options)) { var tag = await context.Tags.AsNoTracking().FirstOrDefaultAsync(); var service = new TagService(_mapper, context); string testName = "TestName"; TagToUpdate updateTag = new TagToUpdate() { Id = tag.Id.ToString(), TagName = testName, }; TagToUpdate failTag = new TagToUpdate() { Id = new Guid().ToString(), TagName = testName, }; var resultPositive = await service.UpdateAsync(updateTag); var resultNegative = await service.UpdateAsync(failTag); resultPositive.IsSuccess.Should().BeTrue(); resultPositive.Data.TagName.Should().BeEquivalentTo(updateTag.TagName); resultPositive.Data.TagName.Should().NotBeEquivalentTo(tag.TagName); resultNegative.IsSuccess.Should().BeFalse(); } }
public async Task <IActionResult> Update([FromBody, CustomizeValidator] TagToUpdate tag, CancellationToken cancellationToken = default) { if (tag is null || !ModelState.IsValid) { return(BadRequest(ModelState)); } try { var result = await _tagService.UpdateAsync(tag, cancellationToken); return(result.IsError ? StatusCode(StatusCodes.Status206PartialContent, result.Message.CollectProblemDetailsPartialContent(HttpContext)) : (IActionResult)Ok(result.Data)); } catch (InvalidOperationException ex) { Log.Error(ex, ex.Message); return(StatusCode(StatusCodes.Status500InternalServerError, new CustumResult() { Status = StatusCodes.Status500InternalServerError, Message = ex.Message })); } }
public async Task <Result <TagToUpdate> > UpdateAsync(TagToUpdate tag, CancellationToken cancellationToken = default) { TagDB tagForUpdate = _mapper.Map <TagDB>(tag); tagForUpdate.Id = Guid.Parse(tag.Id); _context.Entry(tagForUpdate).Property(c => c.TagName).IsModified = true; try { await _context.SaveChangesAsync(cancellationToken); return(Result <TagToUpdate> .Ok(tag)); } catch (DbUpdateConcurrencyException ex) { return(Result <TagToUpdate> .Fail <TagToUpdate>(ExceptionConstants.CANNOT_UPDATE_MODEL + ex.Message)); } catch (DbUpdateException ex) { return(Result <TagToUpdate> .Fail <TagToUpdate>(ExceptionConstants.CANNOT_UPDATE_MODEL + ex.Message)); } }
public HttpResponseMessage Update([FromBody] TagToUpdate tag) { repository.Save(tag.OldTag, tag.NewTag); return(Request.CreateResponse(HttpStatusCode.OK)); }