Exemplo n.º 1
0
        public ActionResult BuyTicket(Search search)
        {
            var response = Request["g-recaptcha-response"];

            ServiceReference1.Ticket ticket = new ServiceReference1.Ticket();

            ticket = client.FindTicketById(search.Id);
            if (ticket.Name == null)
            {
                response      = "";
                ViewBag.Error = $"No ticket with ID: {search.Id}";
            }

            if (ModelState.IsValid && response != "")
            {
                ViewBag.Id        = ticket.TicketId;
                ViewBag.Section   = ticket.Section;
                ViewBag.Row       = ticket.Row;
                ViewBag.Seat      = ticket.Seat;
                ViewBag.Admission = ticket.Admission;
                ViewBag.Name      = ticket.Name;
                ViewBag.Date      = ticket.Date;
                ViewBag.Price     = ticket.Price;



                //secret that was generated in key value pair
                const string secret = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe";

                var webClient = new WebClient();
                var reply     =
                    webClient.DownloadString(
                        string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}",
                                      secret, response));

                var captchaResponse = JsonConvert.DeserializeObject <CaptchaResponse>(reply);

                //when response is false check for the error message
                if (!captchaResponse.Success)
                {
                    if (captchaResponse.ErrorCodes.Count <= 0)
                    {
                        return(View());
                    }

                    var error = captchaResponse.ErrorCodes[0].ToLower();
                    switch (error)
                    {
                    case ("missing-input-secret"):
                        ViewBag.Message = "The secret parameter is missing.";
                        break;

                    case ("invalid-input-secret"):
                        ViewBag.Message = "The secret parameter is invalid or malformed.";
                        break;

                    case ("missing-input-response"):
                        ViewBag.Message = "The response parameter is missing.";
                        break;

                    case ("invalid-input-response"):
                        ViewBag.Message = "The response parameter is invalid or malformed.";
                        break;

                    default:
                        ViewBag.Message = "Error occured. Please try again";
                        break;
                    }
                }
                else
                {
                    ViewBag.Message = "Valid";

                    if (ticket.TicketId == search.Id)
                    {
                        client.DeleteTicket(ticket);
                    }

                    return(View("Confirm"));
                }
            }
            else
            {
                ModelState.AddModelError("", "Are you a robot?");
            }



            //ViewBag.ListTickets = client.DisplayAllTickets();
            return(View());
        }