コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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));
            }
        }
コード例 #7
0
        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));
            }
        }
コード例 #8
0
        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));
            }
        }
コード例 #9
0
        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));
            }
        }
コード例 #10
0
        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));
            }
        }
コード例 #11
0
        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));
            }
        }
コード例 #12
0
        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));
            }
        }
コード例 #13
0
        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));
            }
        }
コード例 #14
0
        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));
            }
        }
コード例 #15
0
        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));
            }
        }
コード例 #16
0
        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));
            }
        }
コード例 #17
0
        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));
            }
        }
コード例 #18
0
        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));
            }
        }
コード例 #19
0
        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));
            }
        }
コード例 #20
0
        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));
            }
        }
コード例 #21
0
        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));
            }
        }
コード例 #22
0
        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));
            }
        }
コード例 #23
0
        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));
            }
        }
コード例 #24
0
        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));
            }
        }
コード例 #25
0
        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));
            }
        }
コード例 #26
0
        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));
            }
        }
コード例 #27
0
        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));
            }
        }
コード例 #28
0
        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));
            }
        }
コード例 #29
0
        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));
            }
        }
コード例 #30
0
        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));
            }
        }