Exemplo n.º 1
0
        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);
        }