public async Task <IActionResult> UpdateCollection(int id, [FromBody] JsonPatchDocument <UpdateCollectionModel> model) { CustomValidation(); var userId = User.GetSubjectId(); var user = await _context.UserData.FirstOrDefaultAsync(UserIdPredicate(userId)); if (user == null) { throw new HttpResponseException(null, HttpStatusCode.Unauthorized); } var collection = await _context.Collection.FirstOrDefaultAsync(c => c.Id == id && c.OwnerId == user.Id); if (collection == null) { throw new HttpResponseException(null, HttpStatusCode.NotFound); } var newCollection = new UpdateCollectionModel { Name = collection.Name, Description = collection.Description, ImageId = collection.ImageId }; model.ApplyTo(newCollection, ModelState); CustomValidation(newCollection); if (newCollection.ImageId != null) { var image = await _context.Image.FirstOrDefaultAsync(u => u.CreatorId == user.Id && u.Id == newCollection.ImageId); if (image == null) { throw new HttpResponseException(null, HttpStatusCode.Forbidden); } } collection.Name = newCollection.Name; collection.Description = newCollection.Description; collection.ImageId = newCollection.ImageId; await _context.SaveChangesAsync(); await _userActivityService.CreateActivityAsync(UserActivityActionName.CollectionUpdate, user.Id, collection); return(Ok()); }
public async Task <UpdateCollectionResult> UpdateAsync(UpdateCollectionModel updateCollectionModel) { var authResult = await authenticatorsStore.UpdateCollectionModelAuthenticator.AuthenticateAsync(updateCollectionModel); if (!authResult.Succeed) { return(new UpdateCollectionResult(authResult)); } var validResult = await validatorsStore.UpdateCollectionModelValidator.ValidateAsync(updateCollectionModel); if (!validResult.Succeed) { return(new UpdateCollectionResult(validResult)); } var result = new UpdateCollectionResult(); var collectionModel = mapper.Map <CollectionModel>(updateCollectionModel); await collectionsCrudService.UpdateAsync(collectionModel); return(result); }