Example #1
0
        public async Task <ActionResult> Update(string advertisementId, [FromBody] UpdateAdvertisementRequestModel model)
        {
            var userId = this.User.GetId();

            var updateRequest = await this.advertisementsService
                                .UpdateAsync(userId, advertisementId, model);

            if (!updateRequest.Success)
            {
                return(this.BadRequest(new ErrorsResponseModel
                {
                    Errors = updateRequest.Errors,
                }));
            }

            return(this.Ok());
        }
Example #2
0
        public async Task <ResultModel <bool> > UpdateAsync(string userId, string advertisementId, UpdateAdvertisementRequestModel model)
        {
            var advertisement = await this.GetByIdAsync(advertisementId);

            if (advertisement == null)
            {
                return(new ResultModel <bool>
                {
                    Errors = new string[] { Errors.InvalidAdvertisementId },
                });
            }

            if (advertisement.AuthorId == userId || await this.usersService.IsAdminAsync(userId))
            {
                advertisement.Title       = model.Title;
                advertisement.Description = model.Description;
                advertisement.ModifiedOn  = DateTime.UtcNow;

                foreach (var imageUrl in model.ImageURLs)
                {
                    await this.imagesService.CreateAsync(imageUrl, advertisementId);
                }

                var editCarRequest = await this.carsService.UpdateAsync(userId, advertisement.CarId, model.Car);

                if (!editCarRequest.Success)
                {
                    return(new ResultModel <bool>
                    {
                        Errors = editCarRequest.Errors,
                    });
                }

                this.dbContext.Advertisements.Update(advertisement);
                await this.dbContext.SaveChangesAsync();

                return(new ResultModel <bool>
                {
                    Success = true,
                });
            }

            return(new ResultModel <bool>
            {
                Errors = new string[] { Errors.NoPermissionToEditAdvertisement },
            });
        }