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); }