/// <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; } } }
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; } }
// 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); }