Exemplo n.º 1
0
        public ActionResult Index(string sortOrder, DoctorFilter filter = null, string query = null)
        {
            IEnumerable <Doctor> doctors = doctors = _doctorRepository.GetAllDoctors();

            ViewBag.NameSortParm   = sortOrder == "Name" ? "name_desc" : "Name";
            ViewBag.DegreeSortParm = sortOrder == "Degree" ? "degree_desc" : "Degree";
            ViewBag.IdSortParm     = sortOrder == "Id" ? "id_desc" : "Id";


            if (!String.IsNullOrWhiteSpace(query))
            {
                doctors = doctors.Where(g => g.FullName.Contains(query));
            }

            if (filter.Speciality.HasValue)
            {
                doctors = _doctorRepository.FilterDoctorsBySpeciality(filter.Speciality);
            }

            if (filter.Degree != null)
            {
                doctors = doctors.Where(d => d.Degree == filter.Degree);
            }
            switch (sortOrder)
            {
            case "name_desc":
                doctors = doctors.OrderByDescending(d => d.FullName);
                break;

            case "Name":
                doctors = doctors.OrderBy(d => d.FullName);
                break;

            case "degree_desc":
                doctors = doctors.OrderByDescending(d => d.Degree);
                break;

            case "Degree":
                doctors = doctors.OrderBy(d => d.Degree);;
                break;

            case "id_desc":
                doctors = doctors.OrderByDescending(d => d.DoctorId);
                break;

            case "Id":
                doctors = doctors.OrderBy(d => d.DoctorId);
                break;

            default:
                break;
            }

            var viewModel = new DoctorListViewModel
            {
                Doctors      = doctors,
                Specialities = _specialityRepository.GetSpecialities(),
                Degree       = _doctorRepository.SelectDegrees(),
                SearchTerm   = query
            };

            return(View(viewModel));
        }