public IActionResult Activate([SwaggerParameter("Guid", Required = true)] Guid ticketId)
        {
            log.Info(nameof(Activate));

            try
            {
                ticketService.Activate(ticketId);

                return(NoContent());
            }
            catch (Exception e)
            {
                log.Error(e);

                return(BadRequest());
            }
        }
        public VerifyTicketResponceDto VerifyTicket(Guid ticketId, int transportId, float longitude, float latitude)
        {
            var ticket = unitOfWork
                         .Tickets
                         .GetAll()
                         .Include(t => t.TicketArea)
                         .FirstOrDefault(t => t.Id == ticketId);

            if (ticket == null)
            {
                return(new VerifyTicketResponceDto {
                    IsValid = false, ErrorMessage = "Ticket was not found"
                });
            }
            if (ticket.ActivatedUTCDate == null)
            {
                ticketService.Activate(ticket.Id);
            }

            var transport = unitOfWork.Transports.Get(transportId);

            if (transport == null)
            {
                return(new VerifyTicketResponceDto {
                    IsValid = false, ErrorMessage = "Transport was not found"
                });
            }

            var station = GetNearestStationOnRoute(transport.RouteId, latitude, longitude);

            if (station == null)
            {
                return(new VerifyTicketResponceDto {
                    IsValid = false, ErrorMessage = "Station was not found"
                });
            }

            VerifyTicketResponceDto result = new VerifyTicketResponceDto {
                IsValid = true
            };

            //Check for expired ticket
            if (ticket.ExpirationUTCDate < DateTime.UtcNow)
            {
                result = new VerifyTicketResponceDto {
                    IsValid = false, ErrorMessage = "Ticket expired"
                };
            }
            //Compare ticket areas with train station
            else if (!ticket.TicketArea.Any(t => t.AreaId == station.Area.Id))
            {
                result = new VerifyTicketResponceDto {
                    IsValid = false, ErrorMessage = "Ticket does not contain the zone"
                };
            }

            var ticketVerificationDto = new TicketVerificationDto
            {
                Id = Guid.NewGuid(),
                VerificationUTCDate = DateTime.UtcNow,
                TicketId            = ticketId,
                TransportId         = transport.Id,
                StationId           = station.Id,
                IsVerified          = result.IsValid
            };

            Create(ticketVerificationDto);

            return(result);
        }