예제 #1
0
        private ApplicationDbContext db = new ApplicationDbContext(); // Связь с модулем взаимодействия с базой данных

        // Основная страница поиска. Происходит заполнение фильтров информацией из базы данных
        public async Task<ActionResult> Index()
        {
            var cities = await db.Cities.ToListAsync();
            var districts = await db.Districts.ToListAsync();
            var disciplines = await db.Disciplines.ToListAsync();
            var exams = await db.Exams.ToListAsync();
            var model = new SearchViewModel
            {
                CitiesSelectList = new List<SelectListItem>(),
                FindedCourses = new List<SearchCourseViewModel>(),
                DisciplinesSelectList = new List<SelectListItem>(),
                DistinctsSelectList = new List<SelectListItem>(),
                ExamsSelectList = new List<SelectListItem>()
            };
            foreach (var city in cities)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = city.Name;
                selectItem.Value = city.Id.ToString();
                model.CitiesSelectList.Add(selectItem);
            }

            foreach (var discipline in disciplines)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = discipline.Name;
                selectItem.Value = discipline.Id.ToString();
                model.DisciplinesSelectList.Add(selectItem);
            }

            foreach (var district in districts)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = district.Name;
                selectItem.Value = district.Id.ToString();
                model.DistinctsSelectList.Add(selectItem);
            }

            foreach (var exam in exams)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = exam.Name;
                selectItem.Value = exam.ExamId.ToString();
                model.ExamsSelectList.Add(selectItem);
            }


            return View(model);
        }
예제 #2
0
        public async Task<ActionResult> Index([ModelBinder(typeof(SearchBinder))] SearchViewModel searchView)
        {
            var ratios = await db.CriterionRatios.Include(c=>c.CriterionSource).Include(c=>c.CriterionDestination).ToListAsync();
            var courses = await db.Courses.Include(c=>c.Exams).Include(c=>c.Institute).Include(c=>c.Discipline).Include(c=>c.Institute.District).ToListAsync();
            var calc = new Calculation(ratios);

            var filter = new CourseFilterProreties();
            filter.Budget = searchView.Budget;
            filter.Disciplines = searchView.Disciplines;
            filter.Districts = searchView.Districts;
            filter.Extrabudget = searchView.ExtraBudget;
            filter.PreparatoryCourses = searchView.PreparationCourses;
            filter.Exams = searchView.Exams;
            filter.Cost = searchView.Cost;
            filter.Hostel = searchView.Hostel;
            filter.LearningTypes=new List<LearningType>();
            if (searchView.FullTime)
            {
                filter.LearningTypes.Add(LearningType.FullTime);
            }
            if (searchView.DistanceLearning)
            {
                filter.LearningTypes.Add(LearningType.DistanceLearning);
            }

            var model = new SearchViewModel
            {
                CitiesSelectList = new List<SelectListItem>(),
                FindedCourses = new List<SearchCourseViewModel>(),
                DisciplinesSelectList = new List<SelectListItem>(),
                DistinctsSelectList = new List<SelectListItem>(),
                ExamsSelectList = new List<SelectListItem>()
            };

            foreach (var course in courses)
            {
                if(!filter.Disciplines.Any(d=>d.Id==course.Discipline.Id))
                    continue;
                var doubles=calc.GetCoefOfCourse(filter, course, courses); // ЗДЕСЬ ПРОИСХОДИТ РАСЧЕТ КОЭФФИЦИЕНТА ПО ДАННЫМ ФИЛЬТРА
                var searchCourseViewModel = new SearchCourseViewModel();
                searchCourseViewModel.Course = course;
                searchCourseViewModel.SearchCoef = doubles;
                model.FindedCourses.Add(searchCourseViewModel);
            }

            model.FindedCourses=model.FindedCourses.OrderBy(o => o.SearchCoef).Reverse().ToList();


            var cities = await db.Cities.ToListAsync();
            var districts = await db.Districts.ToListAsync();
            var disciplines = await db.Disciplines.ToListAsync();
            var exams = await db.Exams.ToListAsync();

            foreach (var city in cities)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = city.Name;
                selectItem.Value = city.Id.ToString();
                model.CitiesSelectList.Add(selectItem);
            }

            foreach (var discipline in disciplines)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = discipline.Name;
                selectItem.Value = discipline.Id.ToString();
                model.DisciplinesSelectList.Add(selectItem);
            }

            foreach (var district in districts)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = district.Name;
                selectItem.Value = district.Id.ToString();
                model.DistinctsSelectList.Add(selectItem);
            }

            foreach (var exam in exams)
            {
                var selectItem = new SelectListItem();
                selectItem.Text = exam.Name;
                selectItem.Value = exam.ExamId.ToString();
                model.ExamsSelectList.Add(selectItem);
            }


            return View(model);
        }
예제 #3
0
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var db = new ApplicationDbContext();
            var disciplinesIdsStr = bindingContext.ValueProvider.GetValue("DiscIDS");
            var districtsIdsStr = bindingContext.ValueProvider.GetValue("DstrIDS");
            var citiesIdsStr = bindingContext.ValueProvider.GetValue("CityIDS");
            var examsIdsStr = bindingContext.ValueProvider.GetValue("ExamIDS");

            var hostel = bindingContext.ValueProvider.GetValue("hostelCHECK");
            var preparation = bindingContext.ValueProvider.GetValue("preparationCHECK");
            var budget = bindingContext.ValueProvider.GetValue("budgetCHECK");
            var extraBudget = bindingContext.ValueProvider.GetValue("extraBudgetCHECK");
            var full = bindingContext.ValueProvider.GetValue("fullCHECK");
            var distance = bindingContext.ValueProvider.GetValue("distanceCHECK");
            var cost = bindingContext.ValueProvider.GetValue("costTEXT");

            var result= new SearchViewModel();
            if (citiesIdsStr != null)
            {
                var cities = citiesIdsStr.AttemptedValue.Split(',');
                var citiesObjects = db.Cities.Where(d => cities.Contains(d.Id.ToString())).ToList();
                result.Cities = citiesObjects;
            }
            else
            {
                result.Cities=new List<City>();
            }

            if (districtsIdsStr != null)
            {
                var disctricts = districtsIdsStr.AttemptedValue.Split(',');
                var districtsObjects = db.Districts.Where(d => disctricts.Contains(d.Id.ToString())).ToList();
                result.Districts = districtsObjects;
            }
            else
            {
                result.Districts=new List<District>();
            }

            if (disciplinesIdsStr != null)
            {
                var disciplines = disciplinesIdsStr.AttemptedValue.Split(',');
                var disciplinesObjects = db.Disciplines.Where(d => disciplines.Contains(d.Id.ToString())).ToList();
                result.Disciplines = disciplinesObjects;
            }
            else
            {
                result.Disciplines=new List<Discipline>();
            }

            if (examsIdsStr != null)
            {
                var exams = examsIdsStr.AttemptedValue.Split(',');
                var examsObject = db.Exams.Where(d => exams.Contains(d.ExamId.ToString())).ToList();
                result.Exams = examsObject;
            }
            else
            {
                result.Exams=new List<Exam>();
            }

            if (hostel != null)
            {
                result.Hostel = true;
            }
            if (budget != null)
            {
                result.Budget = true;
            }
            if (extraBudget != null)
            {
                result.ExtraBudget = true;
            }
            if (preparation != null)
            {
                result.PreparationCourses = true;
            }
            if (full != null)
            {
                result.FullTime = true;
            }
            if (distance != null)
            {
                result.DistanceLearning = true;
            }
            if (cost != null)
            {
                decimal costResult;
                if (Decimal.TryParse(cost.AttemptedValue, out costResult))
                {
                    result.Cost = costResult;
                }
                else
                {
                    result.Cost = 0;
                }
            }
            return result;
        }