public ActionResult FindContractor(ContractorRequestModel model) { DbGeography userLoc = null; List <string> latlng = new List <string>(); if (!string.IsNullOrEmpty(model.LocationCords) && model.LocationCords != "") { latlng = model.LocationCords.Split('_').ToList(); if (latlng.Count == 2) { userLoc = Commons.Commons.ConvertLatLonToDbGeography(latlng[1], latlng[0]); // lat _ lng } } string baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/'); var contractors = AdminService.GetUsersByType("Contractor"); if (model.CategoryId != 0) { contractors = contractors.Where(con => con.CategoryId == model.CategoryId).ToList(); } var filteredCons = new List <AdminModels.LocalUser>(); foreach (var con in contractors) { var dist = Commons.GeodesicDistance.GetDistance((double)userLoc.Latitude, (double)userLoc.Longitude, Convert.ToDouble(con.lat), Convert.ToDouble(con.lng)); if ((int)dist < Convert.ToInt16(model.Distance)) { var disst = Math.Round((double)dist, 2); con.DistanceFromOrigin = disst; filteredCons.Add(con); } } filteredCons = filteredCons.OrderBy(fil => fil.DistanceFromOrigin).ToList(); var userLocMarker = Commons.Commons.FormatMapDataForResercher(new AdminModels.LocalUser { lat = latlng[0], lng = latlng[1] }, baseUrl); List <MapPlaceModel> places = new List <MapPlaceModel>(); places.Add(userLocMarker); places.AddRange(Commons.Commons.FormatMapData(filteredCons, baseUrl)); var list = new MapPlaceWrapper { status = "found", listing = places, }; return(PartialView("~/Views/Contractor/FindContractorPartial.cshtml", list)); }
public ActionResult FindContractor(long?categoryId) { //string baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority + // Request.ApplicationPath.TrimEnd('/'); //var contractors = AdminService.GetUsersByType("Contractor"); //if (categoryId != null && categoryId!=0) //{ // contractors = contractors.Where(con => con.CategoryId == categoryId).ToList(); //} //var places= Commons.Commons.FormatMapData(contractors, baseUrl); var cats = CategoryService.GetAllCategories(); var list = new MapPlaceWrapper { status = "", listing = null, CatsList = cats }; return(View(list)); }
public HttpResponseMessage FindContractors(ContractorRequestModel model) { try { //if (model == null) //{ // var response = new ApiResponseModel // { // Data = null, // Message = "Mandatory are null.", // Success = false // }; // return Request.CreateResponse(HttpStatusCode.InternalServerError, response); //} var contractors = AdminService.GetUsersByType("Contractor"); if (model.CategoryId != 0) { contractors = contractors.Where(con => con.CategoryId == model.CategoryId).ToList(); } var filteredCons = new List <AdminModels.LocalUser>(contractors); if (!string.IsNullOrEmpty(model.LocationCords) && model.LocationCords != "" && !string.IsNullOrEmpty(model.Distance)) { var latlng = model.LocationCords.Split('_'); if (latlng.Length == 2) { var userLoc = Commons.Commons.ConvertLatLonToDbGeography(latlng[1], latlng[0]); if (userLoc != null && userLoc.Latitude != null && userLoc.Longitude != null) { filteredCons = new List <LocalUser>(); foreach (var con in contractors) { var dist = Commons.GeodesicDistance.GetDistance((double)userLoc.Latitude, (double)userLoc.Longitude, Convert.ToDouble(con.lat), Convert.ToDouble(con.lng)); if (dist != null && (int)dist < Convert.ToInt16(model.Distance)) { con.DistanceFromOrigin = (double)dist; filteredCons.Add(con); } } } } } string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath.TrimEnd('/'); filteredCons = filteredCons.OrderBy(fil => fil.DistanceFromOrigin).ToList(); var places = Commons.Commons.FormatMapData(filteredCons, baseUrl); var allJobs = new MapPlaceWrapper { status = "found", listing = places, }; return(Request.CreateResponse(HttpStatusCode.OK, new ApiResponseModel { Success = true, Message = "Successfully fetched Contractors", Data = allJobs })); } catch (Exception excep) { var response = new ApiResponseModel { Data = null, Message = excep.InnerException.Message, Success = false }; return(Request.CreateResponse(HttpStatusCode.InternalServerError, response)); } }