/// <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 static SaveFileResponse Unmarshall(UnmarshallerContext _ctx) { SaveFileResponse saveFileResponse = new SaveFileResponse(); saveFileResponse.HttpResponse = _ctx.HttpResponse; saveFileResponse.RequestId = _ctx.StringValue("SaveFile.RequestId"); saveFileResponse.Success = _ctx.BooleanValue("SaveFile.Success"); saveFileResponse.ErrMessage = _ctx.StringValue("SaveFile.ErrMessage"); saveFileResponse.Data = _ctx.StringValue("SaveFile.Data"); saveFileResponse.ObjectString = _ctx.StringValue("SaveFile.ObjectString"); return(saveFileResponse); }