Exemple #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));
        }
        public HttpResponseMessage ViewProfile(ContractorRequestModel model)
        {
            try
            {
                if (model == null || model.ContractorId == null || model.VisitedBy == null)
                {
                    var responseError = new ApiResponseModel
                    {
                        Data    = model,
                        Message = "Data is not mapped",
                        Success = false
                    };
                    return(Request.CreateResponse(HttpStatusCode.InternalServerError, responseError));
                }
                //if (!string.IsNullOrEmpty(model.VisitedBy))
                //{
                //    var dbVisit = ProfileVisitorService.AddLocalVisit(new LocalProfileVisit
                //    {
                //        VistedOf = model.ContractorId,
                //        VistedBy = model.VisitedBy
                //    });
                //}
                var contractor = UserServices.GetUserById(model.ContractorId);

                var isContractorInvoledInAnyJobOfCurrenUser =
                    contractor.JobHistories.Any(jh => jh.PostedById == model.VisitedBy);

                var isProfileHitByUser = contractor.ProfileVisits.Any(pv => pv.VistedBy == model.VisitedBy || pv.VistedOf == model.VisitedBy);

                bool canRate = isContractorInvoledInAnyJobOfCurrenUser || isProfileHitByUser;

                contractor.CanRate = canRate;
                var response = new ApiResponseModel
                {
                    Data    = contractor,
                    Message = "Profile successfully sent",
                    Success = true
                };
                return(Request.CreateResponse(HttpStatusCode.OK, response));
            }
            catch (Exception excep)
            {
                var response = new ApiResponseModel
                {
                    Data    = null,
                    Message = excep.InnerException.Message,
                    Success = false
                };
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
        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));
            }
        }