Пример #1
0
        public async Task <IHttpActionResult> CalculateFamiliesPerSection(TeacherStudentsRequestModel groupMessageSectionModel)
        {
            var sender = SecurityPrincipal.Current;
            var model  = await _communicationsService.GetFamilyMemberCountBySection(sender.PersonUSI, groupMessageSectionModel);

            return(Ok(model));
        }
Пример #2
0
        public async Task <IHttpActionResult> GetTeachersStudents(TeacherStudentsRequestModel request)
        {
            // Get the teacherUSI from the security principal.
            var teacher = SecurityPrincipal.Current;

            if (request.StaffUsi == 0)
            {
                request.StaffUsi = teacher.PersonUSI;
            }

            var model = await _teachersService.GetStudentsInSection(request.StaffUsi, request, teacher.PersonUniqueId, teacher.PersonTypeId);

            if (model == null)
            {
                return(NotFound());
            }

            return(Ok(model));
        }
        public async Task <List <StudentBriefModel> > GetTeacherStudents(int staffUsi, TeacherStudentsRequestModel model, string recipientUniqueId, int recipientTypeId)
        {
            var upperStudentName   = model.StudentName?.ToUpper();
            var sectionIsNotNull   = model.Section.SessionName != null;
            var studentNameNotNull = model.StudentName != null;

            var studentsAssociatedWithStaff = await(from s in _edFiDb.Students
                                                    join ssa in _edFiDb.StudentSchoolAssociations on s.StudentUsi equals ssa.StudentUsi
                                                    join eo in _edFiDb.EducationOrganizations on ssa.EducationOrganizationId equals eo.EducationOrganizationId
                                                    join studSec in _edFiDb.StudentSectionAssociations
                                                    on new { ssa.StudentUsi, ssa.SchoolId } equals new { studSec.StudentUsi, studSec.SchoolId }
                                                    join staffSec in _edFiDb.StaffSectionAssociations
                                                    on new { studSec.SchoolId, studSec.ClassPeriodName, studSec.ClassroomIdentificationCode, studSec.LocalCourseCode, studSec.TermDescriptorId, studSec.SchoolYear, studSec.UniqueSectionCode, studSec.SequenceOfCourse }
                                                    equals new { staffSec.SchoolId, staffSec.ClassPeriodName, staffSec.ClassroomIdentificationCode, staffSec.LocalCourseCode, staffSec.TermDescriptorId, staffSec.SchoolYear, staffSec.UniqueSectionCode, staffSec.SequenceOfCourse }
                                                    where staffSec.StaffUsi == staffUsi &&
                                                    (sectionIsNotNull ? (studSec.SchoolId == model.Section.SchoolId &&
                                                                         studSec.LocalCourseCode == model.Section.LocalCourseCode &&
                                                                         studSec.SchoolYear == model.Section.SchoolYear &&
                                                                         studSec.ClassPeriodName == model.Section.ClassPeriodName &&
                                                                         studSec.ClassroomIdentificationCode == model.Section.ClassroomIdentificationCode &&
                                                                         studSec.TermDescriptorId == model.Section.TermDescriptorId &&
                                                                         studSec.UniqueSectionCode == model.Section.UniqueSectionCode &&
                                                                         studSec.SequenceOfCourse == model.Section.SequenceOfCourse) : true) &&
                                                    (studentNameNotNull && model.StudentName.Length > 0 ?
                                                     (s.FirstName.ToUpper().Contains(upperStudentName) ||
                                                      s.MiddleName.ToUpper().Contains(upperStudentName) ||
                                                      s.LastSurname.ToUpper().Contains(upperStudentName))
                                                           : true)
                                                    orderby s.LastSurname
                                                    group new { s, eo } by new { s.StudentUniqueId } into g
                                                    select new StudentBriefModel
            {
                StudentUsi      = g.FirstOrDefault().s.StudentUsi,
                StudentUniqueId = g.FirstOrDefault().s.StudentUniqueId,
                ExternalLinks   = _edFiDb.SpotlightIntegrations.Where(x => x.StudentUniqueId == g.Key.StudentUniqueId)
                                  .Select(x => new StudentExternalLink {
                    Url = x.Url, UrlType = x.UrlType.Description
                }),
                UnreadMessageCount = _edFiDb.ChatLogs
                                     .Count(x => x.StudentUniqueId == g.Key.StudentUniqueId &&
                                            x.RecipientUniqueId == recipientUniqueId &&
                                            x.RecipientTypeId == recipientTypeId && !x.RecipientHasRead),
                CurrentSchool = g.FirstOrDefault().eo.NameOfInstitution,
            }).ToListAsync();

            return(studentsAssociatedWithStaff);
        }
        public async Task <ParentStudentCountModel> GetFamilyMemberCountBySection(int staffUsi, TeacherStudentsRequestModel sectionModel)
        {
            var validParentDescriptors = _customParametersProvider.GetParameters().descriptors.validParentDescriptors;

            return(await _studentRepository.GetFamilyMembersBySection(staffUsi, sectionModel.Section, validParentDescriptors, _dateProvider.Today()));
        }
Пример #5
0
        public async Task <List <StudentBriefModel> > GetStudentsInSection(int staffUsi, TeacherStudentsRequestModel model, string recipientUniqueId, int recipientTypeId)
        {
            var studentsAssociatedWithParent = await _teacherRepository.GetTeacherStudents(staffUsi, model, recipientUniqueId, recipientTypeId);

            var studentSummaries = await _studentsService.GetStudentsSummary(studentsAssociatedWithParent.Select(x => x.StudentUsi).ToList());

            // Get other calculated fields.
            foreach (var student in studentsAssociatedWithParent)
            {
                var summary = studentSummaries.Find(x => x.StudentUsi == student.StudentUsi);
                student.StudentUniqueId             = summary.StudentUniqueId;
                student.FirstName                   = summary.FirstName;
                student.MiddleName                  = summary.MiddleName;
                student.LastSurname                 = summary.LastSurname;
                student.GradeLevel                  = summary.GradeLevel;
                student.SexType                     = summary.SexType;
                student.YTDGPA                      = summary.Gpa;
                student.GPAInterpretation           = summary.GpaInterpretation;
                student.AbsenceThresholdDays        = _customParametersProvider.GetParameters().attendance.ADA.maxAbsencesCountThreshold;
                student.AdaAbsences                 = summary.AbsenceCount;
                student.AdaAbsentInterpretation     = summary.AbsenceInterpretation;
                student.YTDDisciplineIncidentCount  = summary.DisciplineIncidentCount;
                student.YTDDisciplineInterpretation = summary.DisciplineIncidentInterpretation;
                //student.UnexcusedInterpretation = attendance.UnexcusedInterpretation;
                //student.ExcusedInterpretation = attendance.ExcusedInterpretation;
                //student.TardyInterpretation = attendance.TardyInterpretation;
                student.MissingAssignments = summary.MissingassignmentCount;
                student.MissingAssignmentsInterpretation = summary.MissingAssigmentInterpretation;

                student.CourseAverage = new StudentCurrentGradeAverage {
                    Evaluation = summary.CourseAverageInterpretation, GradeAverage = summary.CourseAverage
                };
                student.ImageUrl = await _imageProvider.GetStudentImageUrlAsync(student.StudentUniqueId);
            }

            return(studentsAssociatedWithParent);
        }