Пример #1
0
        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));
        }
Пример #2
0
        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));
            }
        }