// GET: Admin/User //список всех юзеров сайта public async Task <ActionResult> Index(int?page) { string login = User.Identity.Name; if (login != "") { var pageNumber = page ?? 1; using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UsersListDTO = await profile.Users.ToListAsync() }; var modelVM = new ProfileVM() { UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false).OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList() }; var usersOnPage = modelVM.UsersList.ToPagedList(pageNumber, 20); ViewBag.usersOnPage = usersOnPage; return(View(modelVM)); } } else { return(RedirectToAction("Error")); } }
protected void Application_AuthenticateRequest() { if (User == null) { return; } string login = Context.User.Identity.Name; string[] roles = null; using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = chekitDB.Users.FirstOrDefault(x => x.Login == login); if (usersDTO == null) { return; } roles = chekitDB.UserRoles.Where(x => x.UserId == usersDTO.UserId).Select(x => x.RoleUser.RoleName).ToArray(); } IIdentity userIdentity = new GenericIdentity(login); IPrincipal newUserObject = new GenericPrincipal(userIdentity, roles); Context.User = newUserObject; }
//частисное представление логина админа в углу экрана public ActionResult AdminLoginPartial() { string login = User.Identity.Name; if (login != "") { LoginPartialVM loginPartial; using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = chekitDB.Users.FirstOrDefault(x => x.Login == login); loginPartial = new LoginPartialVM() { Login = usersDTO.Login, Avatar = usersDTO.AvatarName, UserId = usersDTO.UserId }; return(PartialView("_AdminLoginPartial", loginPartial)); } } else { return(RedirectToAction("Error")); } }
//список заблокированных юзеров public async Task <ActionResult> BlackList(int?page) { ProfileVM profileVM = new ProfileVM(); int pageNumber = page ?? 1; using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { ListBlackListUsersDTO = await profile.BlackList.ToListAsync(), UsersListDTO = await profile.Users.ToListAsync() }; var modelVM = new ProfileVM() { ListBlackListUsersVM = modelDTO.ListBlackListUsersDTO.ToArray().OrderBy(x => x.Id).Select(x => new BlackListVM(x)).ToList(), UsersList = modelDTO.UsersListDTO.Where(x => x.BanStatus == true).Select(x => new UserVM(x)).ToList() }; var usersOnPage = modelVM.ListBlackListUsersVM.ToPagedList(pageNumber, 20); ViewBag.usersOnPage = usersOnPage; return(View(modelVM)); } }
//добавление ключевого слова public async Task <ActionResult> AddBlackListSite(string banWord) { ProfileVM profileVM = new ProfileVM(); using (var profile = new ChekitDB()) { BannedSiteDTO bannedSiteDTO = new BannedSiteDTO() { SiteLink = banWord }; profile.BannedSiteDTO.Add(bannedSiteDTO); await profile.SaveChangesAsync(); var modelDTO = new ProfileDTO() { BannedSiteListDTO = await profile.BannedSiteDTO.ToListAsync() }; TempData["OK"] = "Имя ресурса добавлено"; profileVM.BannedSiteVM = modelDTO.BannedSiteListDTO.OrderBy(x => x.SiteId).Select(x => new BannedSiteVM(x)).ToList(); return(RedirectToAction("SiteBlackList")); } }
public async Task <ActionResult> EditPassword(ProfileVM profileVM, string oldPass) { using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UsersProfileDTO = await profile.Users.FirstOrDefaultAsync(x => x.UserId == profileVM.UserInfo.UserId) }; if (oldPass != modelDTO.UsersProfileDTO.Password) { ModelState.AddModelError("oldPassError", "Старый пароль указан не верно"); return(View(profileVM)); } modelDTO.UsersProfileDTO.Password = profileVM.UserInfo.Password; await profile.SaveChangesAsync(); TempData["OK"] = "Пароль успешно изменен"; return(RedirectToAction("Index")); } }
public async Task <ActionResult> EditUserLink(LinkVM linkVM) { using (ChekitDB chekitDB = new ChekitDB()) { LinkDTO linkDTO = await chekitDB.Links.FirstOrDefaultAsync(x => x.LinkID == linkVM.LinkID); linkDTO.LinkName = linkVM.LinkName; if (linkVM.PublicStatus == false) { linkDTO.PublicStatus = false; } else { linkDTO.PublicStatus = linkVM.PublicStatus; } linkDTO.LinkDescription = linkVM.LinkDescription; await chekitDB.SaveChangesAsync(); TempData["OK"] = "Закладка отредактирована"; return(RedirectToAction("LinkInfo", new { id = linkVM.LinkID })); } }
//переименовываем выбранную категорию public async Task <ActionResult> RenameCategory(ProfileVM profileVM, int catId, string catName) { using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UserCategoryDTO = await profile.Categories.FirstOrDefaultAsync(x => x.CategoryId == catId), LinkListUserProfileDTO = await profile.Links.ToListAsync() }; //и вместе с ней переименовываем закладки в этой категории foreach (var item in modelDTO.LinkListUserProfileDTO.Where(x => x.LinkCategoryId == catId).ToList()) { item.LinkCategory = catName; } modelDTO.UserCategoryDTO.CategoryName = catName; await profile.SaveChangesAsync(); } TempData["OK"] = "Имя категории успешно изменено"; return(RedirectToAction("EditUserCategory", new { id = profileVM.UserInfo.UserId })); }
//поиск закладок public async Task <ActionResult> LinksSearch(string filter, int?page) { ProfileVM profileVM = new ProfileVM(); int pageNumber = page ?? 1; using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { AllLinks = await profile.Links.ToListAsync() }; var modelVM = new ProfileVM() { AllUserLinks = modelDTO.AllLinks.OrderBy(x => x.LinkName).Select(x => new LinkVM(x)).ToList() }; profileVM.AllUserLinks = modelVM.AllUserLinks.Where(x => x.SearchLink().ToLower().Contains(filter.ToLower())).ToList(); var linksOnPage = modelVM.AllUserLinks.ToPagedList(pageNumber, 50); ViewBag.linksOnPage = linksOnPage; return(PartialView("_AllLinksPartial", profileVM)); } }
public ActionResult BanUser(int id) { ProfileVM profileVM = new ProfileVM(); using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = chekitDB.Users.FirstOrDefault(x => x.UserId == id); profileVM.UserVM = new UserProfileVM(usersDTO); } return(PartialView("_AddBlackList", profileVM)); }
//админ может удалить любую закладку public async Task <ActionResult> DeleteLink(int id) { using (ChekitDB chekitDB = new ChekitDB()) { LinkDTO linkDTO = await chekitDB.Links.FindAsync(id); chekitDB.Links.Remove(linkDTO); await chekitDB.SaveChangesAsync(); } TempData["OK"] = "Закладка удалена"; return(RedirectToAction("Index")); }
//инфо про админа public async Task <ActionResult> AdminDetails() { UserVM userVM; string login = User.Identity.Name; using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = await chekitDB.Users.FirstOrDefaultAsync(x => x.Login == login); userVM = new UserVM(usersDTO); } return(View(userVM)); }
public async Task <ActionResult> EditPassword(int id) { ProfileVM profileVM = new ProfileVM(); using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UsersProfileDTO = await profile.Users.FirstOrDefaultAsync(x => x.UserId == id) }; profileVM.UserInfo = new UserVM(modelDTO.UsersProfileDTO); } return(View(profileVM)); }
//список ресурсов запрещенных для публикации в общем доступе public async Task <ActionResult> SiteBlackList() { ProfileVM profileVM = new ProfileVM(); using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { BannedSiteListDTO = await profile.BannedSiteDTO.ToListAsync() }; profileVM.BannedSiteVM = modelDTO.BannedSiteListDTO.OrderBy(x => x.SiteId).Select(x => new BannedSiteVM(x)).ToList(); return(View(profileVM)); } }
//разблокировка юзера public ActionResult Unblock(int id, int userId) { using (ChekitDB chekitDB = new ChekitDB()) { BlackListDTO blackList = chekitDB.BlackList.Find(id); UsersDTO usersDTO = chekitDB.Users.Find(userId); usersDTO.BanStatus = false; chekitDB.BlackList.Remove(blackList); chekitDB.SaveChanges(); } TempData["OK"] = "Пользователь восстановлен!"; return(RedirectToAction("Index")); }
//удаление категории public async Task <ActionResult> DeleteCategory(ProfileVM profileVM, int deleteCatId) { using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UsersProfileDTO = await profile.Users.FirstOrDefaultAsync(x => x.UserId == profileVM.UserInfo.UserId), UserCategoryDTO = await profile.Categories.FirstOrDefaultAsync(x => x.CategoryId == deleteCatId), LinkListUserProfileDTO = await profile.Links.ToListAsync() }; if (modelDTO.LinkListUserProfileDTO.Where(x => x.LinkCategoryId == deleteCatId).Any()) { foreach (var item in modelDTO.LinkListUserProfileDTO.Where(x => x.LinkCategoryId == deleteCatId).ToList()) { profile.Links.Remove(item); //уменьшаем кол-во ссылок юзера modelDTO.UsersProfileDTO.LinksCount -= 1; string linkAvatar = Request.MapPath("~/Screenshots/Uploads/LinkAvatars/" + $"{item.LinkID.ToString()}/" + item.LinkPicture); string linkDirectory = Request.MapPath("~/Screenshots/Uploads/LinkAvatars/" + item.LinkID.ToString()); if (System.IO.File.Exists(linkAvatar)) { System.IO.File.Delete(linkAvatar); //удаляем скриншот Directory.Delete(linkDirectory); //удаляем папку } else//если скриншота нет, то удаляем только директорию { Directory.Delete(linkDirectory); } } } profile.Categories.Remove(modelDTO.UserCategoryDTO); await profile.SaveChangesAsync(); } TempData["OK"] = "Категория и её ссылки удалены"; return(RedirectToAction("EditUserCategory", new { id = profileVM.UserInfo.UserId })); }
//информация о закладке public async Task <ActionResult> LinkInfo(int id) { LinkVM linkVM; using (ChekitDB chekitDB = new ChekitDB()) { LinkDTO linkDTO = await chekitDB.Links.FindAsync(id); if (linkDTO == null) { return(View("Error")); } linkVM = new LinkVM(linkDTO); } return(View(linkVM)); }
public async Task <ActionResult> EditUser(int id) { UserProfileVM userVM; using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = await chekitDB.Users.FindAsync(id); if (usersDTO == null) { return(View("Error")); } userVM = new UserProfileVM(usersDTO); } return(View(userVM)); }
//получаем профиль юзера со списком категорий public async Task <ActionResult> EditUserCategory(int id) { ProfileVM profileVM = new ProfileVM(); using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UsersProfileDTO = await profile.Users.FirstOrDefaultAsync(x => x.UserId == id), CategoryProfileListDTO = await profile.Categories.ToListAsync() }; profileVM.UserInfo = new UserVM(modelDTO.UsersProfileDTO); profileVM.CategoryProfileList = modelDTO.CategoryProfileListDTO.Where(x => x.UserCategory == id).OrderBy(x => x.CategoryName).Select(x => new CategoryVM(x)).ToList(); return(View(profileVM)); } }
//список пользователей для назначение админа public async Task <ActionResult> AssignAdminUser(int?page) { List <UserVM> users = new List <UserVM>(); List <UsersDTO> usersDTO; int pageNumber = page ?? 1; using (ChekitDB chekitDB = new ChekitDB()) { usersDTO = await chekitDB.Users.ToListAsync(); users = usersDTO.ToArray().Where(x => x.BanStatus == false).OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList(); } var usersOnPage = users.ToPagedList(pageNumber, 20); ViewBag.usersOnPage = usersOnPage; return(View(usersOnPage)); }
// GET: Admin/Link //список юзеров на странице админа public async Task <ActionResult> Index(int?page) { var pageNumber = page ?? 1; using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { AllLinks = await profile.Links.ToListAsync() }; var modelVM = new ProfileVM() { AllLinks = modelDTO.AllLinks.OrderByDescending(x => x.CreatedAt).Select(x => new LinkVM(x)).ToPagedList(pageNumber, 30) }; var linksOnPage = modelVM.AllLinks; ViewBag.linksOnPage = linksOnPage; return(View(modelVM)); } }
public ActionResult BanUser(ProfileVM profileVM) { if (!ModelState.IsValid) { return(RedirectToAction("Index")); } using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = chekitDB.Users.FirstOrDefault(x => x.Login == profileVM.UserVM.Login); if (usersDTO.Role == "Админ") { TempData["Error"] = "Администратора нельзя заблокировать"; return(RedirectToAction("Index")); } usersDTO.BanStatus = true; chekitDB.SaveChanges(); BlackListDTO blackListDTO = new BlackListDTO(); blackListDTO.Email = profileVM.UserVM.Email; blackListDTO.Login = profileVM.UserVM.Login; blackListDTO.UserId = profileVM.UserVM.UserId; blackListDTO.Reason = profileVM.BlackListUserVM.Reason; chekitDB.BlackList.Add(blackListDTO); chekitDB.SaveChanges(); } TempData["OK"] = "Пользователь занесен в черный список"; return(RedirectToAction("Index")); }
public async Task <ActionResult> InfoUser(int id) { ProfileVM profileVM = new ProfileVM(); using (var profile = new ChekitDB()) { var modelDTO = new ProfileDTO() { UsersProfileDTO = await profile.Users.FirstOrDefaultAsync(x => x.UserId == id), AllLinks = await profile.Links.ToListAsync() }; var modelVM = new ProfileVM() { AllUserLinks = modelDTO.AllLinks.Where(x => x.UserAuthorId == modelDTO.UsersProfileDTO.UserId).OrderByDescending(x => x.CreatedAt).Select(x => new LinkVM(x)).ToList() }; profileVM.AllUserLinks = modelVM.AllUserLinks; profileVM.UserInfo = new UserVM(modelDTO.UsersProfileDTO); return(View(profileVM)); } }
//удаление юзера public async Task <ActionResult> DeleteUser(int id) { using (ChekitDB chekitDB = new ChekitDB()) { //находим юзера UsersDTO usersDTO = await chekitDB.Users.FirstOrDefaultAsync(x => x.UserId == id); //готовим список закладок List <LinkDTO> linkDTO = await chekitDB.Links.ToListAsync(); //кнопка удалить у админа имеет статус disabled. Если вручную в браузере убрать этот статус, то программа удалит админа //а это дополнительная защита, так сказать, от дурака if (usersDTO.Role == "Админ") { TempData["Error"] = "Администратора нельзя удалить"; return(RedirectToAction("Index")); } //удаляю папку и аватар юзера string avatarUserDirectory = Request.MapPath("~/Avatars/Uploads/UserAvatars/" + $"{ id.ToString()}"); string avatarUserImg = Request.MapPath("~/Avatars/Uploads/UserAvatars/" + $"{id.ToString()}/" + usersDTO.AvatarName); if (System.IO.File.Exists(avatarUserImg)) { System.IO.File.Delete(avatarUserImg); Directory.Delete(avatarUserDirectory); } else//если аватар не был загружен, удаляем директорию { Directory.Delete(avatarUserDirectory); } //подготавливаем список закладок юзера для удаления List <LinkVM> userLinks = linkDTO.Where(x => x.UserAuthorId == usersDTO.UserId).Select(x => new LinkVM(x)).ToList(); foreach (var item in userLinks) { //находим директорию скриншота закладки string directoryImg = Request.MapPath("~/Screenshots/Uploads/LinkAvatars/" + $"{item.LinkPicture.Substring(0, item.LinkPicture.IndexOf('.'))}"); //аналогично с самим скриншотом string pathImg = Request.MapPath("~/Screenshots/Uploads/LinkAvatars/" + $"{item.LinkPicture.Substring(0, item.LinkPicture.IndexOf('.'))}/" + item.LinkPicture); if (System.IO.File.Exists(pathImg)) //проверяем есть ли скриншот { System.IO.File.Delete(pathImg); //удаляем скриншот Directory.Delete(directoryImg); //удаляем папку } //удаляем закладки chekitDB.Links.Remove(linkDTO.FirstOrDefault(x => x.LinkID == item.LinkID)); } //удаляем юзера chekitDB.Users.Remove(usersDTO); //сохраняем изменения await chekitDB.SaveChangesAsync(); } TempData["OK"] = "Пользователь удален"; return(RedirectToAction("Index")); }
//выбор админа public ActionResult ChoiceAdmin(int id) { using (ChekitDB chekitDB = new ChekitDB()) { string login = User.Identity.Name; UsersDTO userNow = chekitDB.Users.FirstOrDefault(x => x.Login == login); if (userNow.UserId == id) { TempData["Error"] = "С себя снять роль админа нельзя"; return(RedirectToAction("AssignAdminUser")); } List <UserRoleDTO> userRoles = chekitDB.UserRoles.ToList(); UserRoleDTO checkAdmin = chekitDB.UserRoles.FirstOrDefault(x => x.UserId == id); List <UserRoleDTO> adminUsers = userRoles.Where(x => x.RoleId == 1).ToList(); foreach (var item in adminUsers) { if (checkAdmin.UserId == item.UserId) { chekitDB.UserRoles.Remove(checkAdmin); chekitDB.SaveChanges(); UserRoleDTO user = new UserRoleDTO() { UserId = id, RoleId = 2 }; UsersDTO commonUser = chekitDB.Users.FirstOrDefault(x => x.UserId == id); commonUser.Role = "Пользователь"; TempData["OK"] = "Роль админа снята"; chekitDB.UserRoles.Add(user); chekitDB.SaveChanges(); return(RedirectToAction("AssignAdminUser")); } } chekitDB.UserRoles.Remove(checkAdmin); chekitDB.SaveChanges(); UserRoleDTO newAdmin = new UserRoleDTO() { UserId = id, RoleId = 1 }; chekitDB.UserRoles.Add(newAdmin); UsersDTO usersDTO = chekitDB.Users.FirstOrDefault(x => x.UserId == id); usersDTO.Role = "Админ"; chekitDB.SaveChanges(); } TempData["OK"] = "Админ назначен"; return(RedirectToAction("AssignAdminUser")); }
public async Task <ActionResult> CreateAdminUser(UserVM userVM, HttpPostedFileBase file) { if (!ModelState.IsValid) { return(View(userVM)); } int idForAvatar = 0; using (ChekitDB chekitDB = new ChekitDB()) { if (await chekitDB.Users.AnyAsync(x => x.Login == userVM.Login)) { ModelState.AddModelError("loginmatch", $"Логин {userVM.Login} занят"); return(View(userVM)); } else if (await chekitDB.Users.AnyAsync(x => x.Email == userVM.Email)) { ModelState.AddModelError("emailmatch", $"Email {userVM.Email} занят"); return(View(userVM)); } UsersDTO usersDTO = new UsersDTO(); usersDTO.Login = userVM.Login; usersDTO.Email = userVM.Email; usersDTO.Password = userVM.Password; usersDTO.BanStatus = false; usersDTO.LinksCount = 0; usersDTO.Role = "Админ"; chekitDB.Users.Add(usersDTO); await chekitDB.SaveChangesAsync(); int id = usersDTO.UserId; int roleId = 1; UserRoleDTO userRole = new UserRoleDTO() { UserId = id, RoleId = roleId }; chekitDB.UserRoles.Add(userRole); await chekitDB.SaveChangesAsync(); idForAvatar = usersDTO.UserId; } TempData["OK"] = "Админ создан"; #region UploadAvatar var originalDirectory = new DirectoryInfo(string.Format($"{Server.MapPath(@"\")}Avatars\\Uploads")); var pathString1 = Path.Combine(originalDirectory.ToString(), "UserAvatars"); var pathString2 = Path.Combine(originalDirectory.ToString(), "UserAvatars\\" + idForAvatar.ToString()); var pathString3 = Path.Combine(originalDirectory.ToString(), "UserAvatars\\" + idForAvatar.ToString() + "\\Thumbs"); var pathString4 = Path.Combine(originalDirectory.ToString(), "UserAvatars\\" + idForAvatar.ToString() + "\\Gallery"); var pathString5 = Path.Combine(originalDirectory.ToString(), "UserAvatars\\" + idForAvatar.ToString() + "\\Gallery\\Thumbs"); if (!Directory.Exists(pathString1)) { Directory.CreateDirectory(pathString1); } if (!Directory.Exists(pathString2)) { Directory.CreateDirectory(pathString2); } if (!Directory.Exists(pathString3)) { Directory.CreateDirectory(pathString3); } if (!Directory.Exists(pathString4)) { Directory.CreateDirectory(pathString4); } if (!Directory.Exists(pathString5)) { Directory.CreateDirectory(pathString5); } string[] extensions = { "image/jpg", "image/jpeg", "image/gif", "image/png" }; if (file != null && file.ContentLength > 0) { string extension = file.ContentType.ToLower(); int counter = 0; foreach (var item in extensions) { if (extension != item) { counter++; if (counter == extensions.Length) { ModelState.AddModelError("errorFormat", "Неправильный формат файла"); return(View(userVM)); } } } string avatarName = file.FileName; using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = await chekitDB.Users.FindAsync(idForAvatar); usersDTO.AvatarName = avatarName; await chekitDB.SaveChangesAsync(); } var pathOriginalAvatar = string.Format($"{pathString2}\\{avatarName}"); var pathLittleAvatar = string.Format($"{pathString3}\\{avatarName}"); file.SaveAs(pathOriginalAvatar); WebImage littleAvatar = new WebImage(file.InputStream); littleAvatar.Resize(150, 150); littleAvatar.Save(pathLittleAvatar); } #endregion return(RedirectToAction("Index")); }
public async Task <ActionResult> EditUser(UserProfileVM userVM, HttpPostedFileBase file) { int userId = userVM.UserId; if (!ModelState.IsValid) { return(View("Error")); } using (ChekitDB chekitDB = new ChekitDB()) { if (await chekitDB.Users.Where(x => x.UserId != userVM.UserId).AnyAsync(x => x.Login == userVM.Login)) { ModelState.AddModelError("loginmatch", $"Логин {userVM.Login} занят"); return(View(userVM)); } else if (await chekitDB.Users.Where(x => x.UserId != userVM.UserId).AnyAsync(x => x.Email == userVM.Email)) { ModelState.AddModelError("emailmatch", $"Email {userVM.Email} занят"); return(View(userVM)); } } using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = await chekitDB.Users.FindAsync(userId); usersDTO.Login = userVM.Login; usersDTO.Email = userVM.Email; usersDTO.Password = usersDTO.Password; usersDTO.AvatarName = userVM.AvatarName; await chekitDB.SaveChangesAsync(); } TempData["OK"] = "Профиль отредактирован"; #region Image Upload if (file != null && file.ContentLength > 0) { string extension = file.ContentType.ToLower(); string[] extensions = { "image/jpg", "image/jpeg", "image/gif", "image/png" }; int counter = 0; //Проверяем расширение файла foreach (var item in extensions) { if (extension != item) { counter++; if (counter == extensions.Length) { using (ChekitDB chekitDB = new ChekitDB()) { ModelState.AddModelError("", "Изображение не было загружено - неправильный формат изображения"); return(View(userVM)); } } } } var originalDirectory = new DirectoryInfo(string.Format($"{Server.MapPath(@"\")}Avatars\\Uploads")); var pathString1 = Path.Combine(originalDirectory.ToString(), "UserAvatars\\" + userId.ToString()); var pathString2 = Path.Combine(originalDirectory.ToString(), "UserAvatars\\" + userId.ToString() + "\\Thumbs"); DirectoryInfo directoryInfo1 = new DirectoryInfo(pathString1); DirectoryInfo directoryInfo2 = new DirectoryInfo(pathString2); foreach (var item in directoryInfo1.GetFiles()) { item.Delete(); } foreach (var item in directoryInfo2.GetFiles()) { item.Delete(); } string avatarName = file.FileName; using (ChekitDB chekitDB = new ChekitDB()) { UsersDTO usersDTO = await chekitDB.Users.FindAsync(userId); usersDTO.AvatarName = avatarName; await chekitDB.SaveChangesAsync(); } var pathOriginalAvatar = string.Format($"{pathString1}\\{avatarName}"); var pathLittleAvatar = string.Format($"{pathString2}\\{avatarName}"); file.SaveAs(pathOriginalAvatar); WebImage littleAvatar = new WebImage(file.InputStream); littleAvatar.Resize(150, 150); littleAvatar.Save(pathLittleAvatar); } #endregion return(RedirectToAction("Index")); }
//сортировка и поиск public async Task <ProfileVM> UsersQueryPartial(string sort, string filter, string title, int?page) { ProfileVM profileVM = new ProfileVM(); var pageNumber = page ?? 1; using (var profile = new ChekitDB()) { string SortQuery = string.IsNullOrEmpty(sort) ? "login_asc" : sort; var modelDTO = new ProfileDTO() { UsersListDTO = await profile.Users.ToListAsync(), ListBlackListUsersDTO = await profile.BlackList.ToListAsync() }; //сортировка по роли/кол-ву закладок switch (SortQuery) { case "login_asc": profileVM.UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false).OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList(); break; case "user_admin": profileVM.UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false && x.Role == "Админ").OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList(); break; case "user_user": profileVM.UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false && x.Role == "Пользователь").OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList(); break; case "linksCount_asc": profileVM.UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false).OrderBy(x => x.LinksCount).Select(x => new UserVM(x)).ToList(); break; case "linksCount_desc": profileVM.UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false).OrderByDescending(x => x.LinksCount).Select(x => new UserVM(x)).ToList(); break; default: profileVM.UsersList = modelDTO.UsersListDTO.ToArray().Where(x => x.BanStatus == false).OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList(); break; } if (filter != null) { if (title != "Черный список")//поиск по активным юзерам { profileVM.UsersList = profileVM.UsersList.Where(x => x.SearchInfo().ToLower().Contains(filter.ToLower())).ToList(); } else//по заблокированным { List <UserVM> usersBlackList = modelDTO.UsersListDTO.Where(x => x.BanStatus == true).OrderBy(x => x.Login).Select(x => new UserVM(x)).ToList(); profileVM.UsersList = usersBlackList.Where(x => x.SearchInfo().ToLower().Contains(filter.ToLower())).ToList(); profileVM.ListBlackListUsersVM = modelDTO.ListBlackListUsersDTO.OrderBy(x => x.Login).Select(x => new BlackListVM(x)).ToList(); } } var usersOnPage = profileVM.UsersList.ToPagedList(pageNumber, 20); ViewBag.usersOnPage = usersOnPage; return(profileVM); } }