public async Task <IActionResult> Add([FromBody] NoveltyToAddDto dto, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(dto.Name) || string.IsNullOrEmpty(dto.Description)) { return(BadRequest("Cannot create novelty without name or description!")); } var noveltyToAdd = new NoveltyToAdd(dto.Name, dto.Description); var result = await _repository.TryAdd(noveltyToAdd, cancellationToken); if (!result.Succeeded) { _logger.LogError($"Failed to create novelty. Reason: {result.FailureReason}."); return(BadRequest("Novelty creation was unsuccessful.")); } return(Created($"novelty/{result.AddedItem.ID}", new object())); }
public async Task <AddOrUpdateResult <INovelty> > TryUpdate(NoveltyToAdd novelty, CancellationToken cancellationToken) { var now = DateTime.UtcNow; var noveltyToUpdate = await _context.Novelties.SingleOrDefaultAsync(x => x.ID == novelty.ID, cancellationToken); if (noveltyToUpdate == null) { return(AddOrUpdateResult <INovelty> .Failure(FailureReason.EntityNotFound)); } noveltyToUpdate.LastChanged = now; noveltyToUpdate.Version++; noveltyToUpdate.Name = novelty.Name; noveltyToUpdate.Description = novelty.Description; var changes = await _context.SaveChangesAsync(cancellationToken); return(changes > 0 ? AddOrUpdateResult <INovelty> .Success(noveltyToUpdate) : AddOrUpdateResult <INovelty> .Failure()); }