Пример #1
0
        /// <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));
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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));
            }
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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));
        }
Пример #7
0
        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());
        }