public static IViewModel GetEntitiesWithJoin <TSource1, TSource2, TKey, TViewModel>(Func <TSource1, bool> searchFunc, Func <TSource1, TKey> innerKeySelector, Func <TSource2, TKey> outerKeySelector, Func <TSource2, TSource1, TViewModel> joinSelector) where TSource1 : class where TSource2 : class { try { using (DBContext context = new DBContext()) { EntitiesViewModel <TViewModel> result = new EntitiesViewModel <TViewModel> { Result = Result.Ok }; IEnumerable <TSource1> tempCollection = context.Set <TSource1>() .AsNoTracking() .Where(searchFunc); result.Entities = context.Set <TSource2>() .Join(tempCollection, outerKeySelector, innerKeySelector, joinSelector) .ToList(); return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetWorkingCirriculum(Guid id) { try { using (DBContext context = new DBContext()) { EntityViewModel <WorkingCirriculumViewModel> data = new EntityViewModel <WorkingCirriculumViewModel> { Result = Result.Ok }; data.Entity = context.WorkingCirriculums.Where(o => o.Id == id).AsNoTracking().Select(o => new WorkingCirriculumViewModel { Id = o.Id, AreaOfTrainingId = o.AreaOfTrainingId, DepartmentId = o.DepartmentId, EducationalStandart = o.EducationalStandart, StartTraining = o.StartTraining, TrainingPeriod = o.TrainingPeriod, TypeOfEducationName = o.TypeOfEducationName, DepartmentName = context.Departments.Where(d => !d.IsFaculty && d.Id == o.DepartmentId).Select(d => d.Name).FirstOrDefault(), AreaOfTrainingName = context.AreasOfTraining.Where(a => a.Id == o.AreaOfTrainingId).Select(a => a.Name).FirstOrDefault() }).FirstOrDefault(); return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetNotRoleRights(Guid?roleId, string search) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <RightViewModel> data = new EntitiesViewModel <RightViewModel> { Result = Result.Ok }; var tempEntities = context.RightRoles.Where(o => o.RoleId != roleId).AsNoTracking(); data.Entities = context.Rights.Join(tempEntities, r => r.Id, rr => rr.RightId, (r, rr) => new RightViewModel { Id = r.Id, Name = r.Name }) .Where(o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower())) .ToList(); return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetEntities <TSource, TViewModel>(Func <TSource, bool> searchFunc, Func <TSource, TViewModel> selectFunc) where TSource : class { try { using (DBContext context = new DBContext()) { EntitiesViewModel <TViewModel> result = new EntitiesViewModel <TViewModel> { Result = Result.Ok }; result.Entities = context.Set <TSource>() .AsNoTracking() .Where(searchFunc) .Select(selectFunc) .ToList(); return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel DeleteFaculties(List <Department> entities) { try { using (DBContext context = DBContext.Create()) { context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; var entitiesIds = entities.Select(d => d.Id).ToList(); var facultyDepartments = context.Departments.Where(o => entitiesIds.Contains(o.FacultyId ?? Guid.Empty)); foreach (Department entity in facultyDepartments) { entity.FacultyId = null; context.Entry(entity).State = EntityState.Modified; } foreach (Department entity in entities) { context.Entry(entity).State = EntityState.Deleted; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; } return(new ResultViewModel { Result = Result.Ok }); } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetUserAvailableRoles(string search, Guid?userId) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <RoleViewModel> data = new EntitiesViewModel <RoleViewModel> { Result = Result.Ok }; List <Guid> userRoleIds = new List <Guid>(); if (userId.HasValue) { userRoleIds = context.UserRoles.Where(o => o.UserId == userId).Select(o => o.RoleId).ToList(); } data.Entities = context.Roles.Where(o => !userRoleIds.Contains(o.Id)) .Where(o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower())) .Select(o => new RoleViewModel { Id = o.Id, Name = o.Name, TiedToDepartment = context.RoleDepartments.Where(rd => rd.RoleId == o.Id).Count() > 0 }) .ToList(); return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetUserAcademicDegrees(Guid?userId) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <AcademicDegreeViewModel> data = new EntitiesViewModel <AcademicDegreeViewModel> { Result = Result.Ok }; var tempEntities = context.AcademicDegreeUsers.Where(o => o.UserId == userId).AsNoTracking(); data.Entities = context.AcademicDegrees.Join(tempEntities, a => a.Id, ua => ua.AcademicDegreeId, (a, ua) => new AcademicDegreeViewModel { Id = a.Id, Name = a.Name + " " + context.BranchesOfScience .Where(b => b.Id == a.BranchOfScienceId) .Select(b => b.Name).FirstOrDefault(), ShortName = a.ShortName + " " + context.BranchesOfScience .Where(b => b.Id == a.BranchOfScienceId).Select(b => b.ShortName) .FirstOrDefault() }) .AsNoTracking().ToList(); return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetRoleAvailableDepartments(string search, Guid?userId, Guid?roleId) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <DepartmentViewModel> data = new EntitiesViewModel <DepartmentViewModel> { Result = Result.Ok }; var tempRoleDepartments = context.RoleDepartments.Where(o => o.RoleId == roleId).AsNoTracking(); var tempDepartmemts = context.Departments.Join(tempRoleDepartments, d => d.Id, rd => rd.DepartmentId, (d, rd) => new DepartmentViewModel { Id = d.Id, Name = d.Name, ShortName = d.ShortName }) .Where(o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower()) || o.ShortName.ToLower().Contains((search ?? string.Empty).ToLower()) ).ToList(); data.Entities = tempDepartmemts; return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetUser(Guid id) { try { using (DBContext context = DBContext.Create()) { EntityViewModel <UserViewModel> data = new EntityViewModel <UserViewModel> { Result = Result.Ok }; User user = context.Users.Find(id); data.Entity = new UserViewModel { Id = user.Id, LastName = user.LastName, Login = user.Login, Name = user.UserName, Patronimyc = user.Patronimyc, Password = Encryption.Decrypt(user.Password), AcademicTitleId = user.AcademicTitleId }; return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel Login(string login, string password, bool remember) { try { using (DBContext context = new DBContext()) { byte[] passwordHash = Encryption.Encrypt(password); byte[] userPasswordHash = GetEntityValue <User, byte[]>(context, o => o.Login == login, o => o.Password); if (userPasswordHash.SequenceEqual(passwordHash)) { FormsAuthentication.SetAuthCookie(login, remember); return(new ResultViewModel { Result = Result.Ok }); } return(new ResultViewModel { Message = "Неверное имя пользователя или пароль", Result = Result.Error }); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetDepartment(Guid id) { try { using (DBContext context = DBContext.Create()) { EntityViewModel <DepartmentViewModel> result = new EntityViewModel <DepartmentViewModel> { Result = Result.Ok }; result.Entity = context.Departments .Where(o => o.Id == id) .AsNoTracking() .Select(o => new DepartmentViewModel { Id = o.Id, Name = o.Name, ShortName = o.ShortName, FacultyId = context.Departments.Where(d => d.Id == o.FacultyId).Select(d => d.Id).FirstOrDefault(), FacultyName = context.Departments.Where(d => d.Id == o.FacultyId).Select(d => d.Name).FirstOrDefault(), }) .FirstOrDefault(); return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel SaveFacultyDepartments(Guid?facultyId, List <Guid> ids) { try { using (DBContext context = DBContext.Create()) { ResultViewModel result = new ResultViewModel { Result = Result.Ok }; context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; var departments = context.Departments.Where(o => ids.Contains(o.Id)).AsNoTracking().ToList(); foreach (var department in departments) { department.FacultyId = facultyId; context.Entry(department).State = EntityState.Modified; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel DeleteEntities <TEntity>(IEnumerable <TEntity> entities) where TEntity : class { try { using (DBContext context = DBContext.Create()) { context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; foreach (TEntity entity in entities) { context.Entry(entity).State = EntityState.Deleted; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; } return(new ResultViewModel { Result = Result.Ok }); } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetAreaOfTraining(Guid id) { try { using (DBContext context = DBContext.Create()) { EntityViewModel <AreaOfTrainingViewModel> data = new EntityViewModel <AreaOfTrainingViewModel> { Result = Result.Ok }; data.Entity = context.AreasOfTraining .Where(o => o.Id == id) .AsNoTracking() .Select(o => new AreaOfTrainingViewModel { Id = o.Id, Name = o.Name, Code = o.Code, ShortName = o.ShortName, Directionaly = o.Directionaly, LevelOfHigherEducationName = o.LevelOfHigherEducationName, DepartmentId = context.Departments.Where(d => d.Id == o.DepartmentId).Select(d => d.Id).FirstOrDefault(), DepartmentName = context.Departments.Where(d => d.Id == o.DepartmentId).Select(d => d.Name).FirstOrDefault(), }) .FirstOrDefault(); return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetDepartments(int page, int limit, string order, bool isAscending, string search) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <DepartmentViewModel> result = new EntitiesViewModel <DepartmentViewModel> { Result = Result.Ok }; var tempEntities = context.Departments.Where(o => o.IsFaculty).Join(context.Departments.Where(o => !o.IsFaculty).AsNoTracking(), fo => fo.Id, so => so.FacultyId, (fo, so) => new DepartmentViewModel { FacultyId = fo.Id, FacultyName = fo.Name ?? string.Empty, FacultyShortName = fo.ShortName ?? string.Empty, Id = so.Id, Name = so.Name, ShortName = so.ShortName, Code = so.Code ?? 0 }).ToList(); tempEntities.AddRange(context.Departments.Where(o => !o.IsFaculty && o.FacultyId == null).Select(o => new DepartmentViewModel { Code = o.Code ?? 0, Id = o.Id, Name = o.Name, ShortName = o.ShortName })); var tempCollection = tempEntities.Where( o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower()) || o.ShortName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.FacultyName.ToLower().Contains((search ?? string.Empty).ToLower())) .ToList(); result.Total = tempCollection.Count; result.Entities = isAscending ? tempCollection .OrderBy(order) .Skip((page - 1) * limit) .Take(limit) .ToList() : tempCollection .OrderByDescending(order) .Skip((page - 1) * limit) .Take(limit) .ToList(); result.Page = page; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetAreasOfTraining(int page, int limit, string order, bool isAscending, string search) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <AreaOfTrainingViewModel> data = new EntitiesViewModel <AreaOfTrainingViewModel> { Result = Result.Ok }; var tempEntities = context.AreasOfTraining.AsNoTracking().Join(context.Departments.Where(o => !o.IsFaculty).AsNoTracking(), fo => fo.DepartmentId, so => so.Id, (a, d) => new AreaOfTrainingViewModel { Id = a.Id, Name = a.Name, ShortName = a.ShortName, Code = a.Code, Directionaly = a.Directionaly, LevelOfHigherEducationName = a.LevelOfHigherEducationName, DepartmentId = d.Id, DepartmentName = d.Name, FacultyId = d.FacultyId, FacultyName = context.Departments.Where(o => o.IsFaculty && o.Id == d.FacultyId).Select(o => o.Name).FirstOrDefault() }).ToList(); var tempCollection = tempEntities.Where( o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower()) || o.ShortName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.Directionaly.ToLower().Contains((search ?? string.Empty).ToLower()) || o.LevelOfHigherEducationName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.DepartmentName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.FacultyName.ToLower().Contains((search ?? string.Empty).ToLower()) ).ToList(); data.Total = tempCollection.Count; data.Entities = isAscending ? tempCollection .OrderBy(order) .Skip((page - 1) * limit) .Take(limit) .ToList() : tempCollection .OrderByDescending(order) .Skip((page - 1) * limit) .Take(limit) .ToList(); data.Page = page; return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetWorkingCirriculums(int page, int limit, string order, bool isAscending, string search) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <WorkingCirriculumViewModel> data = new EntitiesViewModel <WorkingCirriculumViewModel> { Result = Result.Ok }; var tempEntities = context.Departments.Where(o => !o.IsFaculty).Join(context.WorkingCirriculums.AsNoTracking(), d => d.Id, w => w.DepartmentId, (d, w) => new WorkingCirriculumViewModel { Id = w.Id, AreaOfTrainingId = w.AreaOfTrainingId, StartTraining = w.StartTraining, TrainingPeriod = w.TrainingPeriod, TypeOfEducationName = w.TypeOfEducationName, AreaOfTrainingName = context.AreasOfTraining.Where(a => a.Id == w.AreaOfTrainingId).Select(a => a.Name).FirstOrDefault(), DepartmentId = d.Id, DepartmentName = d.Name, EducationalStandart = w.EducationalStandart, FacultyId = context.Departments.Where(f => f.IsFaculty && f.Id == d.FacultyId).Select(f => f.Id).FirstOrDefault(), FacultyName = context.Departments.Where(f => f.IsFaculty && f.Id == d.FacultyId).Select(f => f.Name).FirstOrDefault() }).ToList(); tempEntities = tempEntities.Where(o => o.AreaOfTrainingName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.DepartmentName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.EducationalStandart.ToLower().Contains((search ?? string.Empty).ToLower()) || o.FacultyName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.StartTraining.ToString().ToLower().Contains((search ?? string.Empty).ToLower()) || o.TrainingPeriod.ToString().ToLower().Contains((search ?? string.Empty).ToLower()) || o.TypeOfEducationName.ToLower().Contains((search ?? string.Empty).ToLower())).ToList(); data.Total = tempEntities.Count; data.Entities = isAscending ? tempEntities .OrderBy(order) .Skip((page - 1) * limit) .Take(limit) .ToList() : tempEntities .OrderByDescending(order) .Skip((page - 1) * limit) .Take(limit) .ToList(); data.Page = page; return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel SaveUser(UserViewModel viewModel) { try { using (DBContext context = DBContext.Create()) { AddOrEditViewModel data = new AddOrEditViewModel { Result = Result.Ok }; context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; if (viewModel.Id == Guid.Empty) { User user = new User { Id = Guid.NewGuid(), AcademicTitleId = viewModel.AcademicTitleId, LastName = viewModel.LastName, Login = viewModel.Login, Password = Encryption.Encrypt(viewModel.Password), Patronimyc = viewModel.Patronimyc, UserName = viewModel.Name }; context.Entry(user).State = EntityState.Added; data.Id = user.Id; } else { User user = new User { Id = viewModel.Id, AcademicTitleId = viewModel.AcademicTitleId, LastName = viewModel.LastName, Login = viewModel.Login, Password = Encryption.Encrypt(viewModel.Password), Patronimyc = viewModel.Patronimyc, UserName = viewModel.Name }; context.Entry(user).State = EntityState.Modified; data.Id = user.Id; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel UploadWorkingCirriculumFile() { try { using (DBContext context = DBContext.Create()) { EntityViewModel <WorkingCirriculumViewModel> data = new EntityViewModel <WorkingCirriculumViewModel> { Result = Result.Ok }; HttpFileCollection files = HttpContext.Current.Request.Files; foreach (string fileName in files) { HttpPostedFile file = HttpContext.Current.Request.Files[fileName]; if (file.ContentLength > 0) { string workingCirriculumFileName = file.FileName.Substring(0, file.FileName.LastIndexOf('.') - 1); string workingCirriculumFileExtension = file.FileName.Substring(file.FileName.LastIndexOf('.')); int fileSize = file.ContentLength; byte[] fileData = new byte[fileSize]; file.InputStream.Read(fileData, 0, fileSize); MemoryStream stream = new MemoryStream(fileData); data.Entity = AnalizeWorkingCirriculumFile(context, stream); WorkingCirriculumFile workingCirriculumFile = new WorkingCirriculumFile { Id = Guid.NewGuid(), FileName = workingCirriculumFileName, FileExtension = workingCirriculumFileExtension, FileSize = fileSize, FileData = fileData }; } } return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetCourseTitles(int page, int limit, string order, bool isAscending, string search) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <CourseTitleViewModel> result = new EntitiesViewModel <CourseTitleViewModel> { Result = Result.Ok }; var tempEntities = context.Departments.Join(context.CourseTitles.AsNoTracking(), fo => fo.Id, so => so.DepartmentId, (fo, so) => new CourseTitleViewModel { DepartmentId = fo.Id, DepartmentName = fo.Name, Id = so.Id, Name = so.Name, ShortName = so.ShortName }).ToList(); var entities = isAscending ? tempEntities.Where( o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower()) || o.ShortName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.DepartmentName.ToLower().Contains((search ?? string.Empty).ToLower())) .OrderBy(order) .Skip((page - 1) * limit) .Take(limit) .ToList() : tempEntities.Where( o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower()) || o.ShortName.ToLower().Contains((search ?? string.Empty).ToLower()) || o.DepartmentName.ToLower().Contains((search ?? string.Empty).ToLower())) .OrderByDescending(order) .Skip((page - 1) * limit) .Take(limit) .ToList(); result.Total = context.CourseTitles.AsNoTracking().Count(); result.Entities = entities; result.Page = page; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel IsUserSystemAdmin() { try { using (DBContext context = DBContext.Create()) { ResultViewModel result = new ResultViewModel { Result = Result.Ok }; string login = HttpContext.Current.User.Identity.Name; Guid userId = GetEntityValue <User, Guid>(context, o => o.Login == login, o => o.Id); if (userId == Guid.Empty) { result.Result = Result.Error; result.Message = "Ошибка входа пользователя!"; return(result); } List <Guid> roleIds = GetEntitiesWithJoin <User, UserRole, Guid, Guid>(context, o => o.Login == login, o => o.Id, o => o.UserId, (fo, so) => fo.RoleId ); if (roleIds.Contains(RoleManager.GetSystemAdminId())) { result.Result = Result.Ok; } else { result.Result = Result.NotEnoughRights; } return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel ModifyEntity <T>(T entity) where T : class, IKeyEntity <Guid> { try { using (DBContext context = DBContext.Create()) { context.Entry(entity).State = EntityState.Modified; context.SaveChanges(); } return(new AddOrEditViewModel { Result = Result.Ok, Id = entity.Id }); } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel DeleteEntity <T>(T entity) where T : class { try { using (DBContext context = DBContext.Create()) { context.Entry(entity).State = EntityState.Deleted; context.SaveChanges(); } return(new ResultViewModel { Result = Result.Ok }); } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetNotUserAcademicDegrees(Guid?userId, string search) { try { using (DBContext context = DBContext.Create()) { EntitiesViewModel <AcademicDegreeViewModel> data = new EntitiesViewModel <AcademicDegreeViewModel> { Result = Result.Ok }; data.Entities = context.AcademicDegrees.Join(context.BranchesOfScience.AsNoTracking(), a => a.BranchOfScienceId, b => b.Id, (a, b) => new AcademicDegreeViewModel { Id = a.Id, Name = a.Name + " " + b.Name.ToLower(), ShortName = a.ShortName + " " + b.ShortName.ToLower() }) .AsNoTracking().ToList(); var userAdIds = context.AcademicDegreeUsers.Where(o => o.UserId == userId).Select(o => o.AcademicDegreeId).ToList(); if (userAdIds.Count > 0) { data.Entities = data.Entities.Where(o => !userAdIds.Contains(o.Id)).ToList(); } data.Entities = data.Entities.Where(o => o.Name.ToLower().Contains((search ?? string.Empty).ToLower()) || o.ShortName.ToLower().Contains((search ?? string.Empty).ToLower())) .ToList(); return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel SaveRoleRights(Guid roleId, List <Guid> ids) { try { using (DBContext context = DBContext.Create()) { ResultViewModel result = new ResultViewModel { Result = Result.Ok }; context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; var roleRights = context.RightRoles.Where(o => o.RoleId == roleId).AsNoTracking(); foreach (var role in roleRights.Where(o => !ids.Contains(o.RightId))) { context.Entry(role).State = EntityState.Deleted; } foreach (var id in ids.Where(o => !roleRights.Select(r => r.RightId).Contains(o))) { RightRole rightRole = new RightRole { RightId = id, RoleId = roleId }; context.Entry(rightRole).State = EntityState.Added; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetEntitiesWithJoin <TSource1, TSource2, TKey, TViewModel>(int page, int limit, string order, bool isAscending, Func <TSource1, bool> searchFunc, Func <TSource1, TKey> innerKeySelector, Func <TSource2, TKey> outerKeySelector, Func <TSource2, TSource1, TViewModel> joinSelector) where TSource1 : class where TSource2 : class { try { using (DBContext context = new DBContext()) { EntitiesViewModel <TViewModel> result = new EntitiesViewModel <TViewModel> { Result = Result.Ok }; var tempEntities = context.Set <TSource1>() .AsNoTracking() .Where(searchFunc); result.Total = tempEntities.Count(); IEnumerable <TSource1> tempCollection = isAscending ? tempEntities .OrderBy(order) .Skip((page - 1) * limit) .Take(limit) : tempEntities .OrderByDescending(order) .Skip((page - 1) * limit) .Take(limit); result.Entities = context.Set <TSource2>() .Join(tempCollection, outerKeySelector, innerKeySelector, joinSelector) .ToList(); result.Page = page; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel LoadUserAccessiblePages() { try { using (DBContext context = DBContext.Create()) { PagesViewModel result = new PagesViewModel { Result = Result.Ok }; string login = HttpContext.Current.User.Identity.Name; Guid userId = GetEntityValue <User, Guid>(context, o => o.Login == login, o => o.Id); if (userId == Guid.Empty) { result.Result = Result.Error; result.Message = "Ошибка входа пользователя!"; return(result); } List <Guid> roleIds = GetEntitiesWithJoin <User, UserRole, Guid, Guid>(context, o => o.Login == login, o => o.Id, o => o.UserId, (fo, so) => fo.RoleId ); List <Guid> rightIds = GetEntitiesWithJoin <Role, RightRole, Guid, Guid>(context, o => roleIds.Contains(o.Id), fo => fo.Id, so => so.RoleId, (fo, so) => fo.RightId); result.AccesibleReferences = GetUserAccesibleReferences(context, rightIds); result.AccesiblePages = GetUserAccesiblePages(context, rightIds); result.AccesibleAdministration = GetUserAccesibleAdministration(context, rightIds); return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel SaveUserAcademicDegrees(Guid userId, List <Guid> ids) { try { using (DBContext context = DBContext.Create()) { ResultViewModel result = new ResultViewModel { Result = Result.Ok }; context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; var entities = context.AcademicDegreeUsers.Where(o => o.UserId == userId).AsNoTracking(); foreach (var entity in entities.Where(o => !ids.Contains(o.UserId))) { context.Entry(entity).State = EntityState.Deleted; } foreach (var id in ids.Where(o => !entities.Select(r => r.AcademicDegreeId).Contains(o))) { AcademicDegreeUser rightRole = new AcademicDegreeUser { AcademicDegreeId = id, UserId = userId }; context.Entry(rightRole).State = EntityState.Added; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel GetEntities <TSource, TViewModel>(int page, int limit, string order, bool isAscending, Func <TSource, bool> searchFunc, Func <TSource, TViewModel> selectFunc) where TSource : class { try { using (DBContext context = new DBContext()) { EntitiesViewModel <TViewModel> result = new EntitiesViewModel <TViewModel> { Result = Result.Ok }; var tempEntities = context.Set <TSource>() .AsNoTracking() .Where(searchFunc); result.Total = tempEntities.Count(); result.Entities = isAscending ? tempEntities .OrderBy(order) .Select(selectFunc) .Skip((page - 1) * limit) .Take(limit) .ToList() : tempEntities .OrderByDescending(order) .Select(selectFunc) .Skip((page - 1) * limit) .Take(limit) .ToList(); result.Page = page; return(result); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }
public static IViewModel SaveUserRolesSate(List <UserRoleViewModel> viewModels) { try { using (DBContext context = DBContext.Create()) { ResultViewModel data = new ResultViewModel { Result = Result.Ok }; context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; foreach (UserRoleViewModel viewModel in viewModels) { UserRole userRole = new UserRole { Id = viewModel.Id == Guid.Empty ? Guid.NewGuid() : viewModel.Id, DepartmentId = viewModel.DepartmentId, RoleId = viewModel.RoleId, UserId = viewModel.UserId }; context.Entry(userRole).State = viewModel.EntityState; } context.SaveChanges(); context.Configuration.AutoDetectChangesEnabled = true; context.Configuration.ValidateOnSaveEnabled = true; return(data); } } catch (Exception exc) { return(LogErrorManager.Add(exc)); } }