Example #1
0
        public async Task <IActionResult> GetStudentGradeAsync(int studentId)
        {
            var userId = UserManager.GetUserId(HttpContext.User); // пока не использую

            var student = await Context.BRStudent.Include(x => x.BRStudentGrade)
                          .FirstOrDefaultAsync(x => x.Id == studentId);

            var grades = Context.BRStudentGrade.Include(x => x.User)
                         //.ThenInclude(x => x.Roles)
                         .Where(x => x.BRStudentId == studentId)
                         .ToList();

            var users = Context.Users.Include(x => x.BRStudentGrades)
                        .ToList();

            var usersss = UserManager.Users.Include(x => x.BRStudentGrades).ToList();

            var roles = Context.Roles.ToList();

            StudentGradeViewModel model = new StudentGradeViewModel
            {
                StudentName  = student.Lname,
                AverageGrade = student.BRStudentGrade.Average(x => x.Value),
                Users        = users,
                Grades       = grades
            };

            return(View(model));
        }
Example #2
0
        public async Task <IActionResult> Create([Bind("Id,Name,GradeName")] StudentGradeViewModel model, IFormFile Image)
        {
            Student student = new Student();

            if (ModelState.IsValid)
            {
                if (Image != null)
                {
                    using (var ms = new MemoryStream())
                    {
                        Image.CopyTo(ms);
                        model.Image = ms.ToArray();
                    }
                }

                student.Image = model.Image;
                student.Name  = model.Name;

                var grade = await _context.Grades.FirstOrDefaultAsync(g => g.GradeName.Equals(model.GradeName));

                student.GradeName = grade.GradeName;
                student.GradeId   = grade.Id;
                _context.Add(student);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(model));
        }
        public void GenerateStudentGrades(List <Student> students, List <StudentGradeViewModel> StudentGradeList, Dictionary <int, List <StudentGradeViewModel> > colStud)
        {
            foreach (var it in students)
            {
                it.StudentGrade = new List <StudentGradeViewModel>();
                decimal testVal = 0;

                College reqCol = null;

                if (it.RequestedColleges.Count() != 0)
                {
                    reqCol = it.RequestedColleges.First();
                }



                if (reqCol != null)
                {
                    foreach (var colCrit in reqCol.CollegeCriterias)
                    {
                        foreach (var mark in it.Grades)
                        {
                            if (mark.CriteriaId == colCrit.CriteriaId)
                            {
                                testVal += (colCrit.GradeWeight * mark.GradeValue) / 100;
                            }
                        }
                    }

                    StudentGradeViewModel studentGradeVM = new StudentGradeViewModel
                    {
                        FinalGrade = testVal,
                        College    = reqCol,
                        Student    = it
                    };

                    StudentGradeList.Add(studentGradeVM);

                    if (colStud.ContainsKey(reqCol.CollegeId))
                    {
                        colStud[reqCol.CollegeId].Add(studentGradeVM);
                    }
                    else
                    {
                        colStud.Add(reqCol.CollegeId, new List <StudentGradeViewModel> {
                            studentGradeVM
                        });
                    }//dictionary having as key the college id and as list the potential candidates

                    it.RequestedColleges.Remove(reqCol);
                }
            }
        }
        public async Task <IActionResult> GetStudentRusSummarizedSheetAsync(int studentId)
        {
            var phdContext = await Context.BRStudentGroup
                             .Include(b => b.BRStudent)
                             .Where(b => b.Id == studentId)
                             .FirstOrDefaultAsync();                 // вытаскиваю все потоки студентов

            // чтобы дальше вытащить шифр специальности

            // НЕ УДАЛЯТЬ!!! синхронная реализация
            //var bMajors = await Context.BMajor.ToListAsync(); // вытаскиваю все специльности
            // чтобы дальше вытащить шифр специальности
            // НЕ УДАЛЯТЬ!!! синхронная реализация
            //var studentMajor = bMajors.Where(x => x.Id == phdContext.Id).FirstOrDefault(); // вытаскиваю специальность,
            //из которой буду вытаскивать шифр

            // оптимизированный асинхронный метод        // не работает в русской и казахской  версиях
            //var studentMajor = await Context.BMajor
            //                                .Where(x => x.Id == phdContext.Id)
            //                                .FirstOrDefaultAsync(); // оптимизированный асинхронный метод

            var student = await Context.BRStudent.Include(x => x.BRStudentGrade)
                          .FirstOrDefaultAsync(x => x.Id == studentId);

            var grades = await Context.BRStudentGrade.Include(x => x.User)
                         .Where(x => x.BRStudentId == studentId)
                         .ToListAsync();

            List <User> usersFromGradesList = new List <User>();

            foreach (var g in grades)
            {
                usersFromGradesList.Add(new User
                {
                    Id                   = g.User.Id,
                    UserName             = g.User.UserName,
                    NormalizedUserName   = g.User.NormalizedUserName,
                    Email                = g.User.Email,
                    EmailConfirmed       = g.User.EmailConfirmed,
                    PasswordHash         = g.User.PasswordHash,
                    SecurityStamp        = g.User.SecurityStamp,
                    ConcurrencyStamp     = g.User.ConcurrencyStamp,
                    PhoneNumber          = g.User.PhoneNumber,
                    PhoneNumberConfirmed = g.User.PhoneNumberConfirmed,
                    TwoFactorEnabled     = g.User.TwoFactorEnabled,
                    LockoutEnd           = g.User.LockoutEnd,
                    LockoutEnabled       = g.User.LockoutEnabled,
                    AccessFailedCount    = g.User.AccessFailedCount,
                    LastName             = g.User.LastName,
                    FirstName            = g.User.FirstName,
                    MiddleName           = g.User.MiddleName,
                    UName                = g.User.UName,
                    BMajorId             = g.User.BMajorId
                });
            }

            //////////// вывод ролей пользователя

            var users = await Context.Users.ToListAsync();         // берем всех имеющихся пользователей

            var roles = await Context.Roles.ToListAsync();         // берем все имеющиеся роли

            var userRoles = await Context.UserRoles.ToListAsync(); // берем все связи пользователей и ролей

            var userWithRolesList = new List <UserWithRoles>(users.Count);

            foreach (var user in usersFromGradesList)
            {
                // НЕ УДАЛЯТЬ !!! синхронная реализация
                //var roleIds = userRoles.Where(x => x.UserId == user.Id).Select(x => x.RoleId).ToList(); // список Id ролей которые прикреплены к определенному пользователю
                // НЕ УДАЛЯТЬ!!! синхронная реализация
                //var currentUserRoles = roles.Where(x => roleIds.Contains(x.Id)).Select(x => x.Name).ToList();

                //оптимизированный асинхронный метод
                var roleIds = await Context.UserRoles
                              .Where(x => x.UserId == user.Id)
                              .Select(x => x.RoleId)
                              .ToListAsync();              //оптимизированный асинхронный метод

                //оптимизированный асинхронный метод
                var currentUserRoles = await Context.Roles
                                       .Where(x => roleIds
                                              .Contains(x.Id)).Select(x => x.Name)
                                       .ToListAsync();              // оптимизированный асинхронный метод

                userWithRolesList.Add(new UserWithRoles(user.UserName, currentUserRoles.ToArray()));
            }

            StudentGradeViewModel model = new StudentGradeViewModel
            {
                StudentLName      = student.Lname,
                StudentFName      = student.Fname,
                StudentMName      = student.Mname,
                StudentThesisName = student.ThesisTopicRus,
                AverageGrade      = student.BRStudentGrade.Average(x => x.Value),
                Users             = users,
                Grades            = grades,
                UserWithRoles     = userWithRolesList,
                //MajorCypher = studentMajor.Cypher.ToString()
            };

            return(View(model));
        }
        public StudentGradeEdition()
        {
            InitializeComponent();

            DataContext = new StudentGradeViewModel(this);
        }
        public async Task <IActionResult> GetStudentGradeAsync(int studentId)
        {
            var userId = UserManager.GetUserId(HttpContext.User); // пока не использую

            var student = await Context.BRStudent.Include(x => x.BRStudentGrade)
                          .FirstOrDefaultAsync(x => x.Id == studentId);

            var grades = Context.BRStudentGrade.Include(x => x.User)
                         //.ThenInclude(x => x.Roles)
                         .Where(x => x.BRStudentId == studentId)
                         .ToList();

            List <User> usersFromGradesList = new List <User>();

            foreach (var g in grades)
            {
                usersFromGradesList.Add(new User
                {
                    Id                   = g.User.Id,
                    UserName             = g.User.UserName,
                    NormalizedUserName   = g.User.NormalizedUserName,
                    Email                = g.User.Email,
                    EmailConfirmed       = g.User.EmailConfirmed,
                    PasswordHash         = g.User.PasswordHash,
                    SecurityStamp        = g.User.SecurityStamp,
                    ConcurrencyStamp     = g.User.ConcurrencyStamp,
                    PhoneNumber          = g.User.PhoneNumber,
                    PhoneNumberConfirmed = g.User.PhoneNumberConfirmed,
                    TwoFactorEnabled     = g.User.TwoFactorEnabled,
                    LockoutEnd           = g.User.LockoutEnd,
                    LockoutEnabled       = g.User.LockoutEnabled,
                    AccessFailedCount    = g.User.AccessFailedCount,
                    LastName             = g.User.LastName,
                    FirstName            = g.User.FirstName,
                    MiddleName           = g.User.MiddleName,
                    UName                = g.User.UName,
                    BMajorId             = g.User.BMajorId
                });
            }



            // var users = Context.Users.Include(x => x.BRStudentGrades).ToList();

            var usersss = UserManager.Users.Include(x => x.BRStudentGrades).ToList();

            // var roles = Context.Roles.ToList();



            //////////// вывод ролей пользователя

            var users = await Context.Users.ToListAsync();         // берем всех имеющихся пользователей

            var roles = await Context.Roles.ToListAsync();         // берем все имеющиеся роли

            var userRoles = await Context.UserRoles.ToListAsync(); // берем все связи пользователей и ролей

            var userWithRolesList = new List <UserWithRoles>(users.Count);

            foreach (var user in usersFromGradesList)
            {
                var roleIds          = userRoles.Where(x => x.UserId == user.Id).Select(x => x.RoleId).ToList(); // список Id ролей которые прикреплены к определенному пользователю
                var currentUserRoles = roles.Where(x => roleIds.Contains(x.Id)).Select(x => x.Name).ToList();

                userWithRolesList.Add(new UserWithRoles(user.UserName, currentUserRoles.ToArray()));
            }

            StudentGradeViewModel model = new StudentGradeViewModel
            {
                StudentLName  = student.Lname,
                AverageGrade  = student.BRStudentGrade.Average(x => x.Value),
                Users         = users,
                Grades        = grades,
                UserWithRoles = userWithRolesList,
            };

            return(View(model));
        }