Пример #1
0
        public async Task <bool> UpdateAsync(FileUpdateViewModel model, CancellationToken cancellationToken = default)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var sql = @"UPDATE [dbo].[File] 
                        SET [Title] = @title, 
                            [Description] = @description,
                            [ModifiedBy] = @modifiedBy,
                            [ModifiedAtUtc] = GETUTCDATE()
                        WHERE [Id] = @fileId";

            var commandDefinition = new CommandDefinition(sql, new
            {
                fileId      = model.FileId,
                title       = model.Name,
                description = model.Description,
                modifiedBy  = model.ModifiedBy
            }, cancellationToken: cancellationToken);

            using (var conn = _connectionFactory.CreateWriteOnlyConnection())
            {
                if (await conn.ExecuteAsync(commandDefinition) == 1)
                {
                    return(true);
                }

                return(false);
            }
        }
Пример #2
0
        public void Setup()
        {
            _fileCommand    = new Mock <IFileCommand>();
            _fileRepository = new Mock <IFileRepository>();

            _fileUploadValidationService = new Mock <IFileUploadValidationService>();
            _configurationProvider       = new Mock <IConfigurationProvider>();
            _memoryCache = new Mock <IMemoryCache>();

            _postedFile = new Mock <HttpPostedFileBase>();

            _fileService = new FileService(_fileCommand.Object, _fileRepository.Object,
                                           _fileUploadValidationService.Object, _configurationProvider.Object, _memoryCache.Object);

            _fileWriteViewModel  = new Mock <FileWriteViewModel>();
            _fileUpdateViewModel = new FileUpdateViewModel();

            _fileCommand.Setup(x => x.Create(_fileWriteViewModel.Object)).Returns(_fileId);
            _fileCommand.Setup(x => x.Update(_fileWriteViewModel.Object)).Returns(_fileId);

            _fileReadViewModel = new FileReadViewModel()
            {
                Id = _fileId
            };

            _validateBlobResult = new ValidateBlobResult();

            _fileUploadValidationService.Setup(x => x.ValidateUploadedFile(It.IsAny <HttpPostedFileBase>())).Returns(_validateBlobResult);
        }
Пример #3
0
        public async Task <ActionResult> UpdateAsync(Guid id, string slug, CancellationToken cancellationToken)
        {
            if (id == Guid.Empty)
            {
                throw new ArgumentOutOfRangeException(nameof(id));
            }

            var file = await _fileService.GetFileAsync(id, cancellationToken);

            if (file is null)
            {
                throw new ApplicationException("No file found for update for supplied Id");
            }

            if (!(await UserHasFileUpdateAccessAsync(file.Id, cancellationToken)))
            {
                return(RedirectToAction("Index", "Home"));
            }

            var viewModel = new FileUpdateViewModel
            {
                FileId      = file.Id,
                Name        = file.Title,
                Description = file.Description,
                FolderId    = file.ParentFolder,
                GroupSlug   = slug,
                Breadcrumbs = GetBreadcrumbs(file.ParentFolder, slug, "Edit file"),
            };

            return(View(viewModel));
        }
Пример #4
0
        /// <summary>
        /// Method to update a <see cref="FileReadViewModel"/> in the database.
        /// </summary>
        /// <param name="file">The file to create.</param>
        /// <returns>Bool - success/fail.</returns>
        public async Task <bool> UpdateAsync(FileUpdateViewModel file, CancellationToken cancellationToken = default)
        {
            if (file is null)
            {
                throw new ArgumentNullException(nameof(file));
            }

            return(await _fileCommand.UpdateAsync(file, cancellationToken));
        }
Пример #5
0
        public async Task <ActionResult> UpdateAsync(Guid id, string slug, FileUpdateViewModel file, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (Guid.Empty == id)
            {
                throw new ArgumentOutOfRangeException(nameof(id));
            }
            if (string.IsNullOrWhiteSpace(slug))
            {
                throw new ArgumentNullException(nameof(slug));
            }
            if (file is null)
            {
                throw new ArgumentNullException(nameof(file));
            }

            var fileFromDb = await _fileService.GetFileAsync(id, cancellationToken);

            if (fileFromDb is null)
            {
                throw new ApplicationException("No file found for update for supplied Id");
            }

            if (ModelState.IsValid)
            {
                if (!(await UserHasFileUpdateAccessAsync(id, cancellationToken)))
                {
                    return(RedirectToAction("Index", "Home"));
                }

                file.FileId     = id;
                file.ModifiedBy = _membershipService.GetUser(System.Web.HttpContext.Current.User.Identity.Name, true).Id;

                if (await _fileService.UpdateAsync(file, cancellationToken))
                {
                    return(RedirectToRoute("GroupFileUrls", new { slug = slug, tab = Constants.GroupFilesTab, id = id }));
                }
            }

            file.GroupSlug   = slug;
            file.Breadcrumbs = GetBreadcrumbs(fileFromDb.ParentFolder, slug, "Edit file");
            return(View(file));
        }
Пример #6
0
        public async Task <IActionResult> UpdateFile([FromRoute] string sub, [FromRoute] int fileId, FileUpdateViewModel model)
        {
            if (sub != User.FindFirst("sub").Value)
            {
                return(Forbid());
            }

            var fileEntity = await _context.Files.Include(x => x.OwnerProfile)
                             .Where(f => f.OwnerSub == sub && f.Id == fileId).SingleOrDefaultAsync();

            fileEntity.Name     = model.Name;
            fileEntity.MimeType = model.MimeType;

            await _context.SaveChangesAsync();

            return(Ok(fileEntity.ToFileViewModel()));
        }