/// <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); }
public async Task <ActionResult> Remove(RemoveMediaRequestVM vm) { await _media.RemoveAsync(vm, User); await _db.SaveChangesAsync(); return(RedirectToSuccess("Медиа-файл удален")); }