Пример #1
0
        public IRestResponse VerifyBarcode(TurnstileScan scan)
        {
            var request = CreateVerifyRequest(scan);

            request.AddHeader("Authorization", "Bearer pkR9vfZ9QdER53mf");
            return(Client.Execute(request));
        }
Пример #2
0
        private RestRequest CreateVerifyRequest(TurnstileScan scan)
        {
            var request = new RestRequest("api/verify", Method.POST);

            request.AddHeader("Content-Type", "application/json");
            request.AddJsonBody(scan);
            return(request);
        }
Пример #3
0
        public IActionResult Post([FromBody] TurnstileScan barcode)
        {
            _log.LogInformation("Search the following barcode: {@barcode}", barcode);
            if (!ModelState.IsValid)
            {
                using (var input = HttpContext.Request.Body)
                {
                    using (var output = new StreamReader(input))
                    {
                        _log.LogWarning("Invalid request data. Request was: {0}", output.ReadToEnd());
                    }
                }
                return(new BadRequestObjectResult(new BadRequestAnswer()));
            }

            Ticket ticket;

            try
            {
                ticket = _finder.Find(barcode);
            }
            catch (Exception ex)
            {
                _log.LogInformation(ex.Message);
                return(new BadRequestObjectResult(new InvalidCodeAnswer()));
            }

            var concert = _db.Events.FirstOrDefault(e => e.Id == ticket.EventId);

            if (concert == null)
            {
                _log.LogInformation("Ticket doesn't match any concert");
                return(new BadRequestObjectResult(new NoConcertFoundAnswer()));
            }

            var labelCalc = new LabelCalculator(_log, concert);

            if (ticket.Expired == true)
            {
                _log.LogInformation("Ticket has already expired");
                return(new OkObjectResult(
                           new UsedTicketAnswer(labelCalc.Value())
                           ));
            }

            _log.LogDebug("Prepare to updating ticket to expired");
            ticket.Expired = true;
            _db.Tickets.Update(ticket);
            _db.SaveChanges();
            _log.LogDebug("Update ticket to expired");
            _log.LogInformation("Ticket is valid");
            return(new OkObjectResult(
                       new ValidTicketAnswer(labelCalc.Value())
                       ));
        }
Пример #4
0
        public IRestResponse VerifyBarcodeWithoutAuth(TurnstileScan scan)
        {
            var request = CreateVerifyRequest(scan);

            return(Client.Execute(request));
        }