public async Task <ActionResult <StudentReadDTO> > GetStudent(int id) { var student = await context.Students.FindAsync(id); if (student == null) { return(NotFound()); } StudentReadDTO studentData = MapStudentToDTO(student); return(studentData); }
public async Task <ActionResult <IEnumerable <StudentReadDTO> > > GetStudents() { var students = await context.Students.ToListAsync(); var studentsData = new List <StudentReadDTO>(); foreach (var student in students) { StudentReadDTO studentData = MapStudentToDTO(student); studentsData.Add(studentData); } return(studentsData); }
public async Task <ActionResult <IEnumerable <StudentReadDTO> > > SearchStudents(string query) { var students = await context.Students .Where(s => (s.FirstName + " " + s.LastName).Contains(query)) .ToListAsync(); var studentsData = new List <StudentReadDTO>(); foreach (var student in students) { StudentReadDTO studentData = MapStudentToDTO(student); studentsData.Add(studentData); } return(studentsData); }
private StudentReadDTO MapStudentToDTO(Student student) { StudentReadDTO studentData = new StudentReadDTO { Id = student.Id, FirstName = student.FirstName, LastName = student.LastName, Grade = student.Grade, StudentId = student.StudentId, Gender = student.Gender, BirthDate = student.BirthDate, PhotoImgPath = student.PhotoImgPath }; var matchingCourses = context.Enrollments .Where(e => e.StudentId == student.Id) .Select(e => new CourseBasicDetailDTO { CourseId = e.Course.CourseId, Title = e.Course.Title, StudentGrade = "N/A", Subject = e.Course.Subject.ToString(), Teacher = new TeacherBasicDetailDTO { Id = e.Course.Teacher.Id, FirstName = e.Course.Teacher.FirstName, LastName = e.Course.Teacher.LastName, Gender = e.Course.Teacher.Gender, Salary = e.Course.Teacher.Salary } }) .ToList(); var matchingEmails = context.Emails .Where(e => e.StudentId == student.Id) .Select(e => new EmailBasicDetailDTO { EmailAddress = e.EmailAddress, IsSchoolEmail = e.IsSchoolEmail, Owner = e.Owner }) .ToList(); //var enumType = typeof(PhoneNumberOwner); // alternative way of getting name var matchingPhoneNums = context.PhoneNumbers .Where(p => p.StudentId == student.Id) .Select(p => new PhoneNumBasicDetailDTO { Number = p.Number, Owner = p.Owner, IsEmergency = p.IsEmergency, IsMobile = p.IsMobile }) .ToList(); var matchingAddresses = context.Addresses .Where(a => a.StudentId == student.Id) .Select(a => new AddressBasicDetailDTO { StreetAddress = a.StreetAddress, Suburb = a.Suburb, City = a.City, State = a.State, Postcode = a.Postcode, IsPrimary = a.IsPrimary }) .ToList(); studentData.CoursesEnrolledIn = matchingCourses; studentData.Emails = matchingEmails; studentData.PhoneNumbers = matchingPhoneNums; studentData.Addresses = matchingAddresses; return(studentData); }