Пример #1
0
        public IActionResult Index()
        {
            var referenceId = User.Claims.FirstOrDefault(x => x.Type.Equals(Constants.Claims.ReferenceId));
            var model       = new GroupStatisticViewModel();

            if (User.IsInRole(AccountType.Deanery))
            {
                var deanery = DeaneryManager.GetById(referenceId.Value);
                var sheets  = ExamSheetManager.FindClosedForFaculty(deanery.FacultyId);
                model = CreateGroupStatisticViewModel(sheets);
            }
            else if (User.IsInRole(AccountType.Teacher))
            {
                var sheets = ExamSheetManager.FindClosedForTeacher(referenceId.Value);
                model           = CreateGroupStatisticViewModel(sheets);
                model.TeacherId = referenceId.Value;
            }

            return(View(model));
        }
Пример #2
0
        public async Task <IActionResult> PostGroupStatistic([FromBody] GroupStatisticViewModel groupStatistics)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                foreach (var model in groupStatistics.listModel)
                {
                    _context.GroupStatistic.Add(model);
                }

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                return(NoContent());
            }
            return(Ok());
        }
Пример #3
0
        protected virtual GroupStatisticViewModel CreateGroupStatisticViewModel(IEnumerable <ExamSheetModel> sheets)
        {
            var model       = new GroupStatisticViewModel();
            var groupsIds   = sheets.Select(x => x.GroupId).Distinct().ToList();
            var subjectsIds = sheets.Select(x => x.SubjectId).Distinct().ToList();
            var teachersIds = sheets.Select(x => x.TeacherId).Distinct().ToList();
            var teachers    = TeacherManager.GetByIdList(teachersIds);
            var groups      = GroupManager.GetByIdList(groupsIds);
            var subjects    = SubjectManager.GetByIdList(subjectsIds);

            model.GroupList    = groups.OrderBy(x => x.Name).Select(x => new SelectListItem(x.Name, x.Id)).ToList();
            model.SemesterList = new List <SelectListItem>();
            model.SubjectList  = new List <SelectListItem>();
            model.TeacherList  = new List <SelectListItem>();
            model.YearList     = new List <SelectListItem>();

            foreach (var group in groups)
            {
                var groupSheets = sheets.Where(x => x.GroupId == group.Id).ToList();
                if (!groupSheets?.Any() ?? true)
                {
                    continue;
                }

                var listGroup = new SelectListGroup()
                {
                    Name = group.Name
                };
                foreach (var sheet in groupSheets)
                {
                    var subject          = subjects.FirstOrDefault(x => x.Id == sheet.SubjectId);
                    var subjectValidName = subject.Name.Replace('\'', ' ').Replace('-', ' ').Replace(':', ' ').Replace('.', ' ').Replace('(', ' ').Replace(')', ' ');
                    if (subject != null && !model.SubjectList.Any(x => x.Value == subject.Id && x.Group.Name == group.Name))
                    {
                        model.SubjectList.Add(new SelectListItem()
                        {
                            Text = subjectValidName, Value = subject.Id, Group = listGroup
                        });
                    }

                    var subjectGroupName = string.Format("{0} {1}", group.Name, subjectValidName);
                    var listGroupSubject = new SelectListGroup()
                    {
                        Name = subjectGroupName
                    };
                    if (!model.SemesterList.Any(x => x.Value == sheet.Semester.ToString() && x.Group.Name == subjectGroupName))
                    {
                        model.SemesterList.Add(new SelectListItem()
                        {
                            Text = sheet.Semester.ToString(), Value = sheet.Semester.ToString(), Group = listGroupSubject
                        });
                    }
                    if (!model.YearList.Any(x => x.Value == sheet.Year.ToString() && x.Group.Name == subjectGroupName))
                    {
                        model.YearList.Add(new SelectListItem()
                        {
                            Text = sheet.Year.ToString(), Value = sheet.Year.ToString(), Group = listGroupSubject
                        });
                    }
                    var teacher = teachers.FirstOrDefault(x => x.Id == sheet.TeacherId);
                    if (teacher != null && !model.TeacherList.Any(x => x.Value == teacher.Id && x.Group.Name == subjectGroupName))
                    {
                        model.TeacherList.Add(new SelectListItem()
                        {
                            Text = string.Format("{0} {1}", teacher.Surname, teacher.Name), Value = teacher.Id, Group = listGroupSubject
                        });
                    }
                }
            }
            return(model);
        }