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)); }
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)); }