/// <summary> /// GET: /Home/GetDeseaseBySpeciality /// </summary> /// <param name="specialityId">SpecialityId ID</param> /// <returns>Task[ActionResult] with JSON contains list of Deseases</returns> public async Task <ActionResult> GetDeseaseBySpeciality(string specialityId) { try { int tempSpecialityId = 0; // Check if city ID is null or not if (!String.IsNullOrEmpty(specialityId) && Int32.TryParse(specialityId, out tempSpecialityId)) { diseaseList = await SpecialityUtil.LoadDiseaseInSpecialityAsync(tempSpecialityId); var result = (from d in diseaseList select new { name = d.Disease_Name }); return(Json(result, JsonRequestBehavior.AllowGet)); } else { // Return default value diseaseList = new List <Disease>(); return(Json(districtList, JsonRequestBehavior.AllowGet)); } } catch (Exception exception) { LoggingUtil.LogException(exception); return(RedirectToAction(Constants.SystemFailureHomeAction, Constants.ErrorController)); } }
public async Task <ActionResult> AddDisease() { try { //Load list of specialities specialityList = await SpecialityUtil.LoadSpecialityAsync(); ViewBag.SpecialityList = new SelectList(specialityList, Constants.SpecialityID, Constants.SpecialityName); return(PartialView(Constants.AddDiseaseAction)); } catch (Exception exception) { LoggingUtil.LogException(exception); return(RedirectToAction(Constants.SystemFailureHomeAction, Constants.ErrorController)); } }
public async Task <ActionResult> UpdateDisease(int diseaseId) { try { // Load service information DataModel model = new DataModel(); model = await model.LoadDiseaseByIdAsync(diseaseId); //Load list of specialities model.SpecialityList = await SpecialityUtil.LoadSpecialityAsync(); return(PartialView(Constants.UpdateDiseaseAction, model)); } catch (Exception exception) { LoggingUtil.LogException(exception); return(RedirectToAction(Constants.SystemFailureHomeAction, Constants.ErrorController)); } }
public async Task <ActionResult> UpdateDoctor() { int doctorID = 1; int hospitalID = 68; Doctor doctor = new Doctor(); DoctorModel = new DoctorModel(); using (LinqDBDataContext data = new LinqDBDataContext()) { doctor = await Task.Run(() => ( from d in data.Doctors where d.Doctor_ID == doctorID select d).FirstOrDefault()); } DoctorModel.DoctorID = doctor.Doctor_ID; DoctorModel.Fullname = doctor.Last_Name + " " + doctor.First_Name; DoctorModel.Experience = doctor.Experience; DoctorModel.Degree = doctor.Degree; //DoctorModel.WorkingDay = doctor.Working_Day; //specialiy of doctor List <Speciality> SpecialityList = null; SpecialityList = await SpecialityUtil.LoadSpecialityInDoctorSpeciality(doctorID); List <String> specialityList = new List <string>(); foreach (Speciality sp in SpecialityList) { specialityList.Add(sp.Speciality_ID.ToString()); } SpecialityList = await SpecialityUtil.LoadSpecialityByHospitalIDAsync(hospitalID); ViewBag.SpecialityList = new SelectList(SpecialityList, Constants.SpecialityID, Constants.SpecialityName); //DoctorModel.SelectedSpecialities = specialityList; return(View(DoctorModel)); }
public async Task <ActionResult> DiseaseList(DataModel model, int?page) { IPagedList <SP_TAKE_DISEASE_AND_TYPEResult> pagedDiseaseList = null; try { // Load list of specialities specialityList = await SpecialityUtil.LoadSpecialityAsync(); ViewBag.SpecialityList = new SelectList(specialityList, Constants.SpecialityID, Constants.SpecialityName); // Check if page parameter is null if (page == null) { page = 1; } #region Load data // Load list of service List <SP_TAKE_DISEASE_AND_TYPEResult> diseaseList = new List <SP_TAKE_DISEASE_AND_TYPEResult>(); if (model.IsPostBack == false) { diseaseList = await model.LoadListOfDisease(null, true, 1, 0); ViewBag.CurrentStatus = true; ViewBag.CurrentMode = 1; ViewBag.CurrentOption = true; } else { if (model.Option == false) { diseaseList = await model.LoadListOfDisease( model.DiseaseName, model.IsActive, 0, 0); } else { if (model.Mode == 1) { if (model.SpecialityID == 0) { diseaseList = await model.LoadListOfDisease( model.DiseaseName, model.IsActive, 1, 0); } else { diseaseList = await model.LoadListOfDisease( model.DiseaseName, model.IsActive, 2, model.SpecialityID); } } else { diseaseList = await model.LoadListOfDisease( model.DiseaseName, model.IsActive, 3, 0); } } ViewBag.CurrentStatus = model.IsActive; ViewBag.CurrentMode = model.Mode; ViewBag.CurrentOption = model.Option; } #endregion #region Display notification // Pass value of previous adding service to view (if any) if (TempData[Constants.ProcessInsertData] != null) { ViewBag.AddStatus = (int)TempData[Constants.ProcessInsertData]; } // Pass value of previous updating service to view (if any) if (TempData[Constants.ProcessUpdateData] != null) { ViewBag.UpdateStatus = (int)TempData[Constants.ProcessUpdateData]; } // Pass value of previous updating service status to view (if any) if (TempData[Constants.ProcessStatusData] != null) { ViewBag.ChangeStatus = (int)TempData[Constants.ProcessStatusData]; } #endregion // Handle query string NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(Request.Url.Query); queryString.Remove(Constants.PageUrlRewriting); ViewBag.Query = queryString.ToString(); // Return value to view pagedDiseaseList = diseaseList.ToPagedList(page.Value, Constants.PageSize); return(View(pagedDiseaseList)); } catch (Exception exception) { LoggingUtil.LogException(exception); return(RedirectToAction(Constants.SystemFailureHomeAction, Constants.ErrorController)); } }
public async Task <ActionResult> SearchResult(HomeModel model, int page = 1) { List <HospitalEntity> hospitalList = null; IPagedList <HospitalEntity> pagedHospitalList = null; try { // Indicate which button is clicked string button = Request[Constants.Button]; #region Normal Search // Normal search form if ((string.IsNullOrEmpty(button)) || Constants.NormalSearchForm.Equals(button)) { ViewBag.SearchValue = model.SearchValue; // Check if input search query is null or empty if (!string.IsNullOrEmpty(model.SearchValue)) { // Check if input search value is understandable string[] suggestSentence = StringUtil.CheckVocabulary(model.SearchValue); if (Constants.False.Equals(suggestSentence[0])) { ViewBag.SuggestionSentence = suggestSentence[1]; } // Analyze to GIR query await model.GIRQueryAnalyzerAsync(model.SearchValue); // Search hospitals hospitalList = await model.NormalSearchHospital(); pagedHospitalList = hospitalList.ToPagedList(page, Constants.PageSize); // Search Query Statistic DataModel.StoreSearchQuery(model.SearchValue, hospitalList.Count); } } #endregion #region Advanced Search // Load list of cities cityList = await LocationUtil.LoadCityAsync(); ViewBag.CityList = new SelectList(cityList, Constants.CityID, Constants.CityName); // Load list of districts districtList = await LocationUtil.LoadDistrictInCityAsync(model.CityID); ViewBag.DistrictList = new SelectList(districtList, Constants.DistrictID, Constants.DistrictName); // Load list of specialities specialityList = await SpecialityUtil.LoadSpecialityAsync(); ViewBag.SpecialityList = new SelectList(specialityList, Constants.SpecialityID, Constants.SpecialityName); // Load list of disease diseaseList = new List <Disease>(); ViewBag.DiseaseList = new SelectList(diseaseList, Constants.DiseaseID, Constants.DiseaseName); // Advanced search form if (Constants.AdvancedSearchForm.Equals(button)) { ViewBag.DiseaseName = model.DiseaseName; hospitalList = await model.AdvancedSearchHospital(model.CityID, model.DistrictID, model.SpecialityID, model.DiseaseName); pagedHospitalList = hospitalList.ToPagedList(page, Constants.PageSize); ViewBag.SearchType = Constants.AdvancedSearchForm; } #endregion #region Location Search List <SelectListItem> locationTypeListItem = new List <SelectListItem>() { new SelectListItem { Value = "2", Text = "Nhập vị trí" }, new SelectListItem { Value = "1", Text = "Vị trí hiện tại" } }; ViewBag.LocationTypeList = new SelectList(locationTypeListItem, "Value", "Text", 2); List <SelectListItem> radiusListItem = new List <SelectListItem>() { new SelectListItem { Value = "0.3", Text = "300 mét" }, new SelectListItem { Value = "0.5", Text = "500 mét" }, new SelectListItem { Value = "1", Text = "1 km" }, new SelectListItem { Value = "3", Text = "3 km" }, new SelectListItem { Value = "5", Text = "5 km" }, new SelectListItem { Value = "10", Text = "10 km" }, new SelectListItem { Value = "15", Text = "15 km" }, new SelectListItem { Value = "20", Text = "20 km" } }; ViewBag.RadiusList = new SelectList(radiusListItem, "Value", "Text", 0.3); // Location search form if (Constants.LocationSearchForm.Equals(button)) { ViewBag.SearchType = Constants.LocationSearchForm; // Search hospitals double lat = 0; double lng = 0; WebClient client = new WebClient(); string coordinate = model.Coordinate; string position = model.Position; if (!(0 < model.Radius && model.Radius <= 20)) { model.Radius = 10; } double radius = model.Radius; if (model.LocationType == 1) { if (coordinate != null) { if (coordinate.Split(',').Length > 1) { double.TryParse(coordinate.Split(',')[0], out lat); double.TryParse(coordinate.Split(',')[1], out lng); } } } else if (model.LocationType == 2) { if (!string.IsNullOrEmpty(position)) { string geoJsonResult = client.DownloadString(string.Concat(Constants.GeoCodeJsonQuery, position)); // Json.Net is really helpful if you have to deal // with Json from .Net http://json.codeplex.com/ JObject geoJsonObject = JObject.Parse(geoJsonResult); if (geoJsonObject.Value <string>("status").Equals("OK")) { lat = geoJsonObject["results"].First["geometry"]["location"].Value <double>("lat"); lng = geoJsonObject["results"].First["geometry"]["location"].Value <double>("lng"); } } } hospitalList = await HomeModel.LocationSearchHospital(lat, lng, radius * 1000); pagedHospitalList = hospitalList.ToPagedList(page, Constants.PageSize); string distanceMatrixUrl = string.Concat("http://maps.googleapis.com/maps/api/distancematrix/json?origins=", lat, ",", lng, "&destinations="); int index = 0; foreach (HospitalEntity hospital in pagedHospitalList) { distanceMatrixUrl += (index == 0 ? string.Empty : "|") + hospital.Coordinate.Split(',')[0].Trim() + "," + hospital.Coordinate.Split(',')[1].Trim(); index = -1; } string dMatrixJsonResult = client.DownloadString(distanceMatrixUrl); JObject dMatrixJsonObject = JObject.Parse(dMatrixJsonResult); if (dMatrixJsonObject.Value <string>("status").Equals("OK")) { index = 0; foreach (HospitalEntity hospital in pagedHospitalList) { hospital.Distance = dMatrixJsonObject["rows"].First["elements"].ElementAt(index++)["distance"].Value <double>("value"); } model.Coordinate = lat + ", " + lng; } } #endregion // Transfer list of hospitals to Search Result page ViewBag.HospitalList = pagedHospitalList; ViewBag.JsonHospitalList = JsonConvert.SerializeObject(pagedHospitalList).Replace("\r\n", string.Empty); NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(Request.Url.Query); queryString.Remove("page"); ViewBag.Query = queryString.ToString(); if (hospitalList.Count == 0) { ViewBag.SearchValue = model.SearchValue; } ViewBag.FeedbackStatus = TempData["FeedbackStatus"]; ViewBag.FeedbackMessage = TempData["FeedbackMessage"]; } catch (Exception exception) { LoggingUtil.LogException(exception); return(RedirectToAction(Constants.SystemFailureHomeAction, Constants.ErrorController)); } // Move to result page return(View(model)); }
public async Task <ActionResult> Index() { try { // Load list of cities cityList = await LocationUtil.LoadCityAsync(); ViewBag.CityList = new SelectList(cityList, Constants.CityID, Constants.CityName); // Load list of districts districtList = new List <District>(); ViewBag.DistrictList = new SelectList(districtList, Constants.DistrictID, Constants.DistrictName); // Load list of specialities specialityList = await SpecialityUtil.LoadSpecialityAsync(); ViewBag.SpecialityList = new SelectList(specialityList, Constants.SpecialityID, Constants.SpecialityName); // Load list of disease diseaseList = new List <Disease>(); ViewBag.DiseaseList = new SelectList(diseaseList, Constants.DiseaseID, Constants.DiseaseName); List <SelectListItem> locationTypeListItem = new List <SelectListItem>() { new SelectListItem { Value = "2", Text = "Nhập vị trí" }, new SelectListItem { Value = "1", Text = "Vị trí hiện tại", } }; ViewBag.LocationTypeList = new SelectList(locationTypeListItem, "Value", "Text", 2); List <SelectListItem> radiusListItem = new List <SelectListItem>() { new SelectListItem { Value = "0.3", Text = "300 mét" }, new SelectListItem { Value = "0.5", Text = "500 mét" }, new SelectListItem { Value = "1", Text = "1 km" }, new SelectListItem { Value = "3", Text = "3 km" }, new SelectListItem { Value = "5", Text = "5 km" }, new SelectListItem { Value = "10", Text = "10 km" }, new SelectListItem { Value = "15", Text = "15 km" }, new SelectListItem { Value = "20", Text = "20 km" } }; ViewBag.RadiusList = new SelectList(radiusListItem, "Value", "Text", 0.3); ViewBag.FeedbackStatus = TempData["FeedbackStatus"]; ViewBag.FeedbackMessage = TempData["FeedbackMessage"]; } catch (Exception exception) { LoggingUtil.LogException(exception); return(RedirectToAction(Constants.SystemFailureHomeAction, Constants.ErrorController)); } return(View()); }