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); }
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); }
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; }