Exemple #1
0
        /// <summary>
        /// Removes the media file.
        /// </summary>
        public async Task RemoveAsync(RemoveMediaRequestVM vm, ClaimsPrincipal principal)
        {
            var media = await _db.Media
                        .Include(x => x.Tags)
                        .GetAsync(x => x.Id == vm.Id && x.IsDeleted == false, "Медиа-файл не найден");

            var prevState = await RequestUpdateAsync(vm.Id);

            var changeset = await GetChangesetAsync(prevState, null, vm.Id, principal, null);

            _db.Changes.Add(changeset);

            if (vm.RemoveFile)
            {
                var user = await _userMgr.GetUserAsync(principal, "Пользователь не найден");

                var canRemove = await _userMgr.IsInRoleAsync(user, nameof(UserRole.Admin));

                if (canRemove)
                {
                    foreach (var size in new [] { MediaSize.Original, MediaSize.Large, MediaSize.Medium }) // sic! leaving the .sm thumb
                    {
                        File.Delete(_env.GetMediaPath(media, size));
                    }
                }
            }

            media.IsDeleted = true;

            await ClearCacheAsync(media);
        }
Exemple #2
0
        public async Task <ActionResult> Remove(RemoveMediaRequestVM vm)
        {
            await _media.RemoveAsync(vm, User);

            await _db.SaveChangesAsync();

            return(RedirectToSuccess("Медиа-файл удален"));
        }