コード例 #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;
                }
            }
        }
コード例 #2
0
        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);
        }