public IActionResult Create(TicketDTO ticketDTO, string to, string from, Guid trainId) { Train train = _context.Trains.Include("RouteNodes") .FirstOrDefault(m => m.Id == trainId); var source = new TicketDTO() { OriginStationName = from, DestinationStationName = to, DepartureTime = train.RouteNodes.FirstOrDefault(o => o.OriginStationName == from).DepartureTime, ArrivalTime = train.RouteNodes.FirstOrDefault(o => o.OriginStationName == to).ArrivalTime, TrainCategory = train.Category, TrainNumber = train.OfficialNumber, TrainId = train.Id, DepartureDate = DateTime.Now }; source.Adults = ticketDTO.Adults; source.Students = ticketDTO.Students; source.Children = ticketDTO.Children; source.Pet = ticketDTO.Pet; source.Class = ticketDTO.Class; var config = new MapperConfiguration(cfg => { cfg.CreateMap <TicketDTO, Ticket>(); }); IMapper mapper = config.CreateMapper(); var ticket = mapper.Map <TicketDTO, Ticket>(source); PriceComputer priceComputer = new PriceComputer(); int from_id = train.RouteNodes.FirstOrDefault(o => o.OriginStationName == from).OfficialCode; int to_id = train.RouteNodes.FirstOrDefault(o => o.OriginStationName == to).OfficialCode; List <RouteNode> nodes = train.RouteNodes.Where(o => o.OfficialCode >= from_id && o.OfficialCode <= to_id).ToList(); int distance = 0; foreach (var node in nodes) { distance += node.Km / 1000; } ticket.Km = distance; ticket.Price = (int)priceComputer.GetPrice(ticket); ticket.Email = this.User.Identity.Name; //ticket.Email = "*****@*****.**"; Shuffler shuffler = new Shuffler(); List <int> list = new List <int>(); for (int i = 1; i <= 100; i++) { list.Add(i); } shuffler.Shuffle(list); for (int i = 0; i < source.Adults + source.Children + source.Students; i++) { ticket.Seats += list[i] + "; "; } ticket.Car = new Random().Next(1, 2); _context.Add(ticket); //Wagon wagon = _context.Trains.Include("Wagons").FirstOrDefault(m => m.Id == trainId).Wagons.FirstOrDefault(o => o.Class == source.Class); //_context.Update(wagon); _context.SaveChanges(); return(RedirectToAction(nameof(Index))); }
public void Given_Ticket_ResultPrice_ShouldBe_TheSame() { var ticket = new Ticket(); var result = new PriceComputer(); ticket.Adults = 2; ticket.Km = 400; ticket.Children = 1; ticket.Pet = 1; ticket.TrainCategory = "IR"; ticket.Class = 1; var price = 323.4f; var resultprice = result.GetPrice(ticket); resultprice.ShouldBeEquivalentTo(price); }