Ejemplo n.º 1
0
        /// <summary>
        /// Обновляет объявление
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <bool> Update(UpdateAdvertisementRequest request)
        {
            using (var transaction = await _dataContext.Database.BeginTransactionAsync(System.Data.IsolationLevel.RepeatableRead))
            {
                try
                {
                    var advertisement = await _dataContext.Advertisements.FirstOrDefaultAsync(a => a.Id == request.Id);

                    if (advertisement == null)
                    {
                        throw new Exception("Объявление не найдено.");
                    }
                    if (_user.Role != UserRoles.Admin && _user.Id != advertisement.UserId)
                    {
                        throw new Exception("У вас нет прав редактировать данное объявление.");
                    }

                    var filesInfo = new SaveFileResponse {
                        Url = "", Extension = ""
                    };
                    if (request.Image != null)
                    {
                        if (Directory.Exists(advertisement.ImagePath))
                        {
                            Directory.Delete(advertisement.ImagePath, true);
                        }

                        var saveFileReq = new SaveFileRequest
                        {
                            FileName      = $"{advertisement.Id}",
                            DirectoryName = FileDirectories.Advertisements,
                            UploadedFile  = request.Image
                        };
                        filesInfo = await _fileService.Save(saveFileReq);
                    }

                    advertisement.ImageUrl       = filesInfo.Url;
                    advertisement.ImageExtension = filesInfo.Extension;
                    advertisement.ImagePath      = filesInfo.Path;
                    advertisement.Text           = request.Text;

                    await _dataContext.SaveChangesAsync();

                    await transaction.CommitAsync();

                    return(true);
                }
                catch (Exception exception)
                {
                    await transaction.RollbackAsync();

                    _logger.LogError(exception.Message);
                    throw exception;
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> UpdateAdvertisement([FromRoute] int id, [FromBody] UpdateAdvertisementRequest request)
        {
            var advertisement = await AdvertisementService.UpdateAdvertisement(UserName, id, request);

            if (advertisement == null)
            {
                return(NotFound());
            }

            return(Ok(advertisement));
        }
        public async Task <ActionResult <bool> > Update([FromForm] UpdateAdvertisementRequest request)
        {
            try
            {
                var res = await _advService.Update(request);

                return(new OkObjectResult(res));
            }
            catch (Exception exception)
            {
                _logger.LogError(exception.Message);
                throw exception;
            }
        }
Ejemplo n.º 4
0
        // Hirdetés módosítása
        public async Task <AdvertisementDetailedDTO> UpdateAdvertisement(string userName, int id, UpdateAdvertisementRequest request)
        {
            var advertisement = await AdvertisementRepository.FindByIdAsync(id);

            // Ha helytelen a felhasználónév
            if (advertisement.UserName != userName)
            {
                return(null);
            }

            advertisement      = request.FromDTO();
            advertisement.Id   = id;
            advertisement.User = await UserRepository.GetByName(userName);

            advertisement.UserName = userName;

            //Képek frissítése
            if (request.ImagesChanged)
            {
                await AdvertisementRepository.RemoveImages(advertisement);

                foreach (string image in request.ImageList)
                {
                    advertisement.Images.Add(new Image {
                        File = image
                    });
                }
            }

            //Validáció
            bool valid = await ValidateAsync(advertisement, request.ImagesChanged);

            //Előfizetés ellenőrzése
            bool success = SubscriptionService.CheckSubscription(advertisement.User, advertisement);

            if (valid && success)
            {
                advertisement.Status = advertisement.Priority.ToStatus();
                var result = await AdvertisementRepository.UpdateAsync(advertisement);

                return(result.ToDetailedDTO());
            }
            return(null);
        }
        public static Advertisement FromDTO(this UpdateAdvertisementRequest dto)
        {
            var advertisement = Mapper.Map <Advertisement>(dto);

            return(advertisement);
        }