public async Task <IHttpActionResult> CalculateFamiliesPerSection(TeacherStudentsRequestModel groupMessageSectionModel) { var sender = SecurityPrincipal.Current; var model = await _communicationsService.GetFamilyMemberCountBySection(sender.PersonUSI, groupMessageSectionModel); return(Ok(model)); }
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())); }
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); }