Beispiel #1
0
        public void Cant_have_2_carnivores_in_one_trainWagon()
        {
            // Arrange
            TrainWagon w = new TrainWagon();

            // Act
            w.AddAnimal(new Animal(Animal.AnimalType.Meat, Animal.AnimalSize.Medium));

            // Assert
            Assert.AreEqual(false, w.AddAnimalIfSafe(new Animal(Animal.AnimalType.Meat, Animal.AnimalSize.Medium), w));
        }
Beispiel #2
0
        public void Cant_go_over_the_trainWagon_capacity()
        {
            // Arrange
            TrainWagon w = new TrainWagon();

            // Act
            w.AddAnimal(new Animal(Animal.AnimalType.Meat, Animal.AnimalSize.Large));
            w.AddAnimal(new Animal(Animal.AnimalType.Meat, Animal.AnimalSize.Medium));
            w.AddAnimal(new Animal(Animal.AnimalType.Meat, Animal.AnimalSize.Small));

            // Assert
            Assert.AreEqual(false, w.EnoughCapacity(w.getSize(), (int)Animal.AnimalSize.Large, 10));
        }
Beispiel #3
0
        /// <summary>
        /// Добавление вагона к поезду
        /// </summary>
        /// <param name="trainId"></param>
        /// <param name="wagonType"></param>
        public static async Task AddWagonToTrain(int trainId, WagonType wagonType)
        {
            var wagon = new Wagon();
            wagon.WagonType = (byte)wagonType;
            wagon.WagonNum = GetWagonNumber(trainId);
            ContextKeeper.Wagons.Add(wagon);

            var trainWagon = new TrainWagon();
            trainWagon.WagonId = wagon.Id;
            trainWagon.TrainId = trainId;
            ContextKeeper.TrainWagons.Add(trainWagon);
            await Task.Run(() => AddSeatsToWagonAsync(wagon.Id, wagonType));

        }
Beispiel #4
0
        public void Can_add_animal_to_trainWagon()
        {
            // Arrange
            TrainWagon w      = new TrainWagon();
            bool       Filled = false;

            // Act
            w.AddAnimal(new Animal(Animal.AnimalType.Meat, Animal.AnimalSize.Large));

            if (w.getSize() != 0)
            {
                Filled = true;
            }

            // Assert
            Assert.IsTrue(Filled);
        }
Beispiel #5
0
        public async Task<IActionResult> CreateWagonInformation(List<Wagon> wagons, List<int?> numberOfSeats) {
            try {
                await using var transaction = dbContext.Database.BeginTransaction();
                var trainWagons = dbContext.TrainWagon
                    .Where(x => x.IdTrain == int.Parse(Request.Cookies["idTrain"])).ToList();
                var nextTravelCount = 1;

                if (trainWagons.Count > 0) {
                    for (int i = 0; i < trainWagons.Count; i++) {
                        if (nextTravelCount == trainWagons[i].TrainTravelCount) {
                            nextTravelCount++;
                        }
                    }
                }

                var trainWagon = new TrainWagon {
                    IdTrain = int.Parse(Request.Cookies["idTrain"]),
                    TrainTravelCount = nextTravelCount
                };
                await dbContext.TrainWagon.AddAsync(trainWagon);
                await dbContext.SaveChangesAsync();

                var wagonEntities = new List<Wagon>();
                for (int i = 0; i < wagons.Count; i++) {
                    wagonEntities.Add(new Wagon {
                        IdTrainWagon = trainWagon.IdTrainWagon,
                        WagonNumber = int.Parse($"{i + 1}"),
                        IdWagonType = wagons[i].IdWagonType
                    });
                }

                await dbContext.Wagon.AddRangeAsync(wagonEntities);
                await dbContext.SaveChangesAsync();

                var seats = new List<Seat>();
                for (int i = 0; i < wagonEntities.Count; i++) {
                    for (int j = 1; j <= numberOfSeats[i]; j++) {
                        seats.Add(new Seat {
                            IdWagon = wagonEntities[i].IdWagon,
                            Seat1 = j,
                            SeatAvailability = true
                        });
                    }
                }

                await dbContext.Seat.AddRangeAsync(seats);
                await dbContext.SaveChangesAsync();

                var tickets = new List<Ticket>();
                var time = DateTime.Parse(Request.Cookies["ticketDate"]).ToString("G");
                for (int i = 0; i < seats.Count; i++) {
                    tickets.Add(new Ticket {
                        IdSeat = seats[i].IdSeat,
                        IdTrainDepartureTown = int.Parse(Request.Cookies["idDepartureTown"]),
                        IdTrainArrivalTown = int.Parse(Request.Cookies["idArrivalTown"]),
                        TicketDate = DateTime.Parse(time),
                        TicketTravelTime = TimeSpan.Parse(Request.Cookies["ticketTravelDuration"])
                    });
                }

                await dbContext.Ticket.AddRangeAsync(tickets);
                await dbContext.SaveChangesAsync();

                await transaction.CommitAsync();
                return RedirectToAction("Index");
            } catch {
                return NotFound();
            }
        }