public ActionResult Errors(AddValStatus addValStatus, ServiceRequest serviceRequest)
        {
            addValStatus   = (AddValStatus)TempData["addValStatus"];
            serviceRequest = (ServiceRequest)TempData["serviceRequest"];
            if (addValStatus == null || serviceRequest == null)
            {
                return(HttpNotFound());
            }
            ServiceRequestViewModel model = new ServiceRequestViewModel();

            model.errorList = new List <string>();
            model.Address   = serviceRequest.Address;
            model.City      = serviceRequest.City;
            model.State     = serviceRequest.State;
            model.Zip       = serviceRequest.Zip;
            foreach (var error in addValStatus.errorList)
            {
                model.errorList.Add(error);
            }
            TempData["addValStatus"]   = addValStatus;
            TempData["serviceRequest"] = serviceRequest;

            return(View(model));
        }
        public ActionResult Create([Bind(Include = "ID,Username,FirstName,LastName,Address,City,State,Zip,email,PostedDate,Bid,CompletionDeadline,Description,posted,Contractor,vacant,validated")] ServiceRequest serviceRequest, IEnumerable <HttpPostedFileBase> files, string street, string number)
        {
            //serviceRequest.Address = number + " " + street;

            string identity = System.Web.HttpContext.Current.User.Identity.GetUserId();

            if (identity == null)
            {
                return(RedirectToAction("Must_be_logged_in", "ServiceRequests"));
            }

            if (!this.User.IsInRole("Admin") && (!this.User.IsInRole("Homeowner")))
            {
                return(RedirectToAction("Must_be_logged_in", "ServiceRequests"));
            }

            foreach (var user in db.Users)
            {
                if (user.Id == identity)
                {
                    serviceRequest.email      = user.Email;
                    serviceRequest.Username   = user.Screen_Name;
                    serviceRequest.FirstName  = user.First_Name;
                    serviceRequest.LastName   = user.Last_Name;
                    serviceRequest.PostedDate = DateTime.Now;
                }
            }


            if (serviceRequest.PostedDate > serviceRequest.CompletionDeadline)
            {
                return(RedirectToAction("DateIssue", "ServiceRequests"));
            }

            serviceRequest.ServiceRequestPaths = new List <ServiceRequestPath>();
            if (ModelState.IsValid)
            {
                foreach (var file in files)
                {
                    if (file != null && file.ContentLength > 0)
                    {
                        var photo = new ServiceRequestPath()
                        {
                            FileName = Guid.NewGuid().ToString() + System.IO.Path.GetExtension(file.FileName)
                        };
                        file.SaveAs(Path.Combine(Server.MapPath("~/images"), photo.FileName));
                        //movie.FilePaths = new List<FilePath>();
                        serviceRequest.ServiceRequestPaths.Add(photo);
                    }
                }
                AddValStatus addValStatus = getAddValStauts(serviceRequest);
                if (addValStatus == null)
                {
                    return(HttpNotFound());
                }
                if (addValStatus.status == "false")
                {
                    return(RedirectToAction("NoAddress", "ServiceRequests"));
                }
                if (addValStatus.status == "errors")
                {
                    TempData["addValStatus"]   = addValStatus;
                    TempData["serviceRequest"] = serviceRequest;
                    return(RedirectToAction("Errors", "ServiceRequests", new { addValStatus = TempData["addValStatus"], serviceRequest = TempData["serviceRequest"] }));
                }
                db.ServiceRequests.Add(serviceRequest);
                db.SaveChanges();
                return(RedirectToAction("Post", new { id = serviceRequest.ID }));
            }

            return(View(serviceRequest));
        }
        public AddValStatus getAddValStauts(ServiceRequest serviceRequest)
        {
            AddValStatus addValStatus = new AddValStatus();

            if (serviceRequest.vacant == true)
            {
                string UPS = RunStreetLevelValidation(serviceRequest);
                if (UPS == "false")
                {
                    addValStatus.status = "false";
                    return(addValStatus);
                }
                addValStatus.status = "true";
                return(addValStatus);
            }

            EasyPost.ClientManager.SetCurrent("wGW1bI8SYpamubvkDKNkFw");
            EasyPost.Address address = new EasyPost.Address()
            {
                company = "",
                street1 = serviceRequest.Address,
                street2 = "",
                city    = serviceRequest.City,
                state   = serviceRequest.State,
                country = "US",
                zip     = serviceRequest.Zip,
                verify  = new List <string>()
                {
                    "delivery"
                }
            };

            address.Create();

            if (address.verifications.delivery.success)
            {
                addValStatus.status = "true";
                return(addValStatus);
            }

            else if (address.verifications.delivery.errors.Count == 1 && address.verifications.delivery.errors[0].message == "Address not found")
            {
                string UPS = RunStreetLevelValidation(serviceRequest);
                if (UPS == "false")
                {
                    addValStatus.status = "false";
                    return(addValStatus);
                }
                addValStatus.status = "true";
                return(addValStatus);
            }

            else if (address.verifications.delivery.errors.Count > 0)
            {
                List <string> errorsList = new List <string>();
                for (int i = 0; i < address.verifications.delivery.errors.Count; i++)
                {
                    errorsList.Add(address.verifications.delivery.errors[i].message);
                }
                addValStatus.status    = "errors";
                addValStatus.errorList = errorsList;
                return(addValStatus);
            }

            else
            {
                addValStatus = null;
                return(addValStatus);
            }
        }
        public ActionResult getAddValStauts(string street, string city, string state, string zip)
        {
            AddValStatus addValStatus = new AddValStatus();
            //if (serviceRequest.vacant == true)
            //{
            //    string UPS = RunStreetLevelValidation(serviceRequest);
            //    if (UPS == "false")
            //    {
            //        addValStatus.status = "false";
            //        return addValStatus;
            //    }
            //    addValStatus.status = "true";
            //    return addValStatus;
            //}
            string identity = System.Web.HttpContext.Current.User.Identity.GetUserId();

            EasyPost.ClientManager.SetCurrent("wGW1bI8SYpamubvkDKNkFw");
            EasyPost.Address address = new EasyPost.Address()
            {
                company = "",
                street1 = street,
                street2 = "",
                city    = city,
                state   = state,
                country = "US",
                zip     = zip,
                verify  = new List <string>()
                {
                    "delivery"
                }
            };
            if (address == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            address.Create();

            if (address.verifications.delivery.success)
            {
                addValStatus.status = "true";
                return(Json(new { success = true, street = street, validated = address.verifications.delivery.success },
                            JsonRequestBehavior.AllowGet));
            }

            else //else if (address.verifications.delivery.errors.Count == 1 && address.verifications.delivery.errors[0].message == "Address not found")
            {
                return(Json(new { success = true, street = street, validated = address.verifications.delivery.success, errors = address.verifications.delivery.errors },
                            JsonRequestBehavior.AllowGet));
            }

            //else if (address.verifications.delivery.errors.Count == 1 && address.verifications.delivery.errors[0].message == "Address not found")
            //{
            //    string UPS = RunStreetLevelValidation(street, city, state, zip );
            //    if (UPS == "false")
            //    {
            //        addValStatus.status = "false";
            //        return null;
            //    }
            //    addValStatus.status = "true";
            //    return null;
            //}

            //else if (address.verifications.delivery.errors.Count > 0)
            //{
            //    List<string> errorsList = new List<string>();
            //    for (int i = 0; i < address.verifications.delivery.errors.Count; i++)
            //    {
            //        errorsList.Add(address.verifications.delivery.errors[i].message);
            //    }
            //    addValStatus.status = "errors";
            //    addValStatus.errorList = errorsList;
            //    return null;

            //}

            //else
            //{
            //    addValStatus = null;
            //    return null;
            //}
        }