示例#1
0
        public IHttpActionResult GetAll(int page = 1, int itemsPerPage = 0)
        {
            var filter = new CourseFilterViewModel()
            {
                Page         = page,
                ItemsPerPage = itemsPerPage < 1 ? ApplicationConstants.DefaultItemsPerPage : itemsPerPage
            };
            var execution = Service.GetAllFiltered(filter);

            if (execution.Succeded)
            {
                return(Ok(execution.Result));
            }

            return(BadRequest(execution.Message));
        }
示例#2
0
        public ActionResult _CoursesListPartial(CourseFilterViewModel filter)
        {
            var execution = Service.GetAllFiltered(filter);

            if (!execution.Succeded)
            {
                return(HttpNotFound());
            }

            var model        = execution.Result.Item1;
            var itemsPerPage = filter.ItemsPerPage ?? ApplicationConstants.DefaultItemsPerPage;

            TempData["Pages"]       = Math.Ceiling((double)execution.Result.Item2 / itemsPerPage);
            TempData["CurrentPage"] = filter.Page == 0 ? 1 : filter.Page;

            return(PartialView("_CoursesListPartial", model));
        }
        // GET: Courses
        public async Task <IActionResult> Index(int courseSemester, string courseProgramme, string searchString /*, string teacherString*/)
        {
            IQueryable <Course> courses        = _context.Course.AsQueryable();                                                                                 //lista od queries za sekoj course
            IQueryable <int>    semesterQuery  = _context.Course.OrderBy(m => m.Semester).Select(m => m.Semester).Distinct();                                   //lista od queries za site mozni semestri
            IQueryable <string> programmeQuery = _context.Course.Where(m => m.Programme != null).OrderBy(m => m.Programme).Select(m => m.Programme).Distinct(); //lista od queries za site mozni programi

            if (!string.IsNullOrEmpty(searchString))
            {
                courses = courses.Where(s => s.Title.ToLower().Contains(searchString.ToLower()));
            }

            //eager loading
            courses = courses.Include(m => m.FirstTeacher)
                      .Include(m => m.SecondTeacher);

            /* IEnumerable<Course> dataList = courses as IEnumerable<Course>;
             *
             * if (!string.IsNullOrEmpty(teacherString))
             * {
             *   dataList = dataList.Where(s => s.FirstTeacher.FullName.ToLower().Contains(teacherString.ToLower()) || s.SecondTeacher.FullName.ToLower().Contains(teacherString.ToLower()));
             * }*/

            if (courseSemester != 0)
            {
                /*dataList = dataList.Where(x => x.Semester == courseSemester);*/
                courses = courses.Where(x => x.Semester == courseSemester);
            }
            if (!string.IsNullOrEmpty(courseProgramme))
            {
                /*dataList = dataList.Where(x => x.Programme == courseProgramme);*/
                courses = courses.Where(x => x.Programme == courseProgramme);
            }


            var courseViewModel = new CourseFilterViewModel
            {
                Semesters  = new SelectList(await semesterQuery.ToListAsync()), //dobivanje lista od semesters
                Programmes = new SelectList(await programmeQuery.ToListAsync()),
                /*Courses = dataList.ToList() //dobivanje lista*/
                Courses = await courses.ToListAsync()
            };

            return(View(courseViewModel));
        }
示例#4
0
        // GET: Courses
        public async Task <IActionResult> Index(string courseTitle, int courseSemester, string courseProgramme)
        {
            IQueryable <Course> courses    = _context.Courses.AsQueryable();
            IQueryable <string> titleQuery = _context.Courses
                                             .OrderBy(m => m.Title).Select(m => m.Title).Distinct();

            IQueryable <int> semesterQuery = _context.Courses
                                             .OrderBy(m => m.Semester).Select(m => m.Semester).Distinct();

            IQueryable <string> programmeQuery = _context.Courses
                                                 .OrderBy(m => m.Programme).Select(m => m.Programme).Distinct();

            if (!string.IsNullOrEmpty(courseTitle))
            {
                courses = courses.Where(x => x.Title == courseTitle);
            }
            if (courseSemester != 0)
            {
                courses = courses.Where(x => x.Semester == courseSemester);
            }
            if (!string.IsNullOrEmpty(courseProgramme))
            {
                courses = courses.Where(x => x.Programme == courseProgramme);
            }

            courses = courses.Include(m => m.FirstProfessor).ThenInclude(m => m.FirstProfCourses);
            courses = courses.Include(m => m.SecondProfessor).ThenInclude(m => m.SecondProfCourses);
            courses = courses.Include(m => m.Students).ThenInclude(m => m.Student);

            var courseFilterVM = new CourseFilterViewModel
            {
                Titles     = new SelectList(await titleQuery.ToListAsync()),
                Semesters  = new SelectList(await semesterQuery.ToListAsync()),
                Programmes = new SelectList(await programmeQuery.ToListAsync()),
                Courses    = await courses.ToListAsync()
            };

            return(View(courseFilterVM));


            //var universityAppContext = _context.Courses.Include(c => c.FirstProfessor).Include(c => c.SecondProfessor);
            //return View(await universityAppContext.ToListAsync());
        }
示例#5
0
        public IHttpActionResult Get(string search = null, int page = 1, bool searchInDescription = false, bool searchInName = true, int itemsPerPage = 0)
        {
            var filter = new CourseFilterViewModel()
            {
                Page   = page,
                Search = search,
                SearchInDescription = searchInDescription,
                SearchInName        = searchInName,
                ItemsPerPage        = itemsPerPage < 1 ? ApplicationConstants.DefaultItemsPerPage : itemsPerPage
            };
            var execution = Service.GetAllFiltered(filter);

            if (execution.Succeded)
            {
                return(Ok(execution.Result));
            }

            return(BadRequest(execution.Message));
        }
示例#6
0
        // GET: Courses
        public async Task <IActionResult> Index(int courseSemester, string courseProgramme, string searchString, string teacherString)
        {
            IQueryable <int>    semesterQuery  = _context.Course.OrderBy(m => m.Semester).Select(m => m.Semester).Distinct();
            IQueryable <string> programmeQuery = _context.Course.OrderBy(m => m.Programme).Select(m => m.Programme).Distinct();
            var courses = from m in _context.Course
                          .Include(m => m.FirstTeacher)
                          .Include(m => m.SecondTeacher)
                          select m;

            if (courseSemester != 0)
            {
                courses = courses.Where(x => x.Semester == courseSemester);
            }

            if (!string.IsNullOrEmpty(courseProgramme))
            {
                courses = courses.Where(x => x.Programme == courseProgramme);
            }

            if (!string.IsNullOrEmpty(searchString))
            {
                courses = courses.Where(s => s.Title.Contains(searchString));
            }

            IEnumerable <Course> dataList = courses as IEnumerable <Course>;

            if (!string.IsNullOrEmpty(teacherString))
            {
                dataList = dataList.Where(s => s.FirstTeacher.FullName.ToLower().Contains(teacherString.ToLower()) || s.SecondTeacher.FullName.Contains(teacherString));
            }

            var courseViewModel = new CourseFilterViewModel
            {
                Semesters  = new SelectList(await semesterQuery.ToListAsync()),
                Programmes = new SelectList(await programmeQuery.ToListAsync()),
                Courses    = dataList.ToList()
            };

            return(View(courseViewModel));
        }
示例#7
0
 public ActionResult _PaginationPartial(CourseFilterViewModel model)
 {
     return(PartialView("_PaginationPartial", model ?? new CourseFilterViewModel()));
 }
示例#8
0
 public override IExecutionResult <Tuple <List <CourseIndexViewModel>, int> > GetAllFiltered(CourseFilterViewModel courseFilter)
 {
     Expression <Func <Course, bool> > where = course => true;
     if (!string.IsNullOrEmpty(courseFilter.Search))
     {
         if ((courseFilter.SearchInDescription ?? false) && (courseFilter.SearchInName ?? false))
         {
             where = c => c.Name.Contains(courseFilter.Search) || c.Description.Contains(courseFilter.Search);
         }
         else if (courseFilter.SearchInDescription ?? false)
         {
             where = c => c.Description.Contains(courseFilter.Search);
         }
         else if (courseFilter.SearchInName ?? false)
         {
             where = c => c.Name.Contains(courseFilter.Search);
         }
     }
     return(base.getAllFiltered(where : where, filter: courseFilter, order: c => c.Id));
 }