示例#1
0
        public static void Seed(BusTicketsContext context)
        {
            Town[] towns = TownGenerator.GenerateTowns();
            context.Towns.AddRange(towns);

            BusCompany[] companies = BusCompanyGenerator.GenerateBusCompanies();
            context.BusCompanies.AddRange(companies);

            BusStation[] stations = BusStationGenerator.GenerateBusStations(towns);
            context.BusStations.AddRange(stations);

            Customer[] customers = CustomerGenerator.GenerateCustomers(towns);
            context.Customers.AddRange(customers);

            BankAccount[] accounts = BankAccountGenerator.GenerateBankAccounts(customers);
            context.BankAccounts.AddRange(accounts);

            //BusCompany[] companiesFromDb = context.BusCompanies.ToArray();
            Review[] reviews = ReviewGenerator.GenerateReviews(companies, customers);
            context.Reviews.AddRange(reviews);

            Trip[] trips = TripGenerator.GenerateTrips(stations, companies);
            context.Trips.AddRange(trips);

            Ticket[] tickets = TicketGenerator.GenerateTicket(customers, trips);
            context.Tickets.AddRange(tickets);

            context.SaveChanges();

            Console.WriteLine("Sample data inserted successfully.");
        }
示例#2
0
 public void UpdateOrder(int id, string status)
 {
     using (var DB = new BusTicketsContext())
     {
         var order = DB.Orders.Find(id);
         order.Status = status;
         DB.SaveChanges();
     }
 }
示例#3
0
 public void AddStop(StopViewModel stop)
 {
     using (var DB = new BusTicketsContext())
     {
         var addStop = DB.Stops.Add(new Stop {
             Name = stop.Name, Description = stop.Description, Status = stop.Status
         });
         DB.SaveChanges();
     }
 }
示例#4
0
 public void Buy(int id)
 {
     using (var DB = new BusTicketsContext())
     {
         var order = DB.Orders.Find(id);
         order.Status = "bought Out";
         var ticket = DB.Tickets.First(x => x.OrderId == id);
         ticket.Status = "bought Out";
         DB.SaveChanges();
     }
 }
示例#5
0
        public void AddTicket(Customer customer, Trip trip, decimal price, int seat)
        {
            Ticket ticket = new Ticket
            {
                Customer = customer,
                Trip     = trip,
                Price    = price,
                Seat     = seat
            };

            context.Tickets.Add(ticket);

            context.SaveChanges();
        }
示例#6
0
        public void AddArrivalTrip(DateTime actualTime, BusStation originStation, BusStation destinationStation, int passengers)
        {
            ArrivedTrip arrivedTrip = new ArrivedTrip
            {
                ArriveTime            = actualTime,
                OriginBusStation      = originStation,
                DestinationBusStation = destinationStation,
                Passengers            = passengers
            };

            context.ArrivedTrips.Add(arrivedTrip);

            context.SaveChanges();
        }
示例#7
0
        public void AddReview(string content, float grade, BusCompany busCompany, Customer customer)
        {
            Review review = new Review
            {
                Content        = content,
                Grade          = grade,
                BusCompany     = busCompany,
                Customer       = customer,
                PublishingDate = DateTime.Now
            };

            context.Reviews.Add(review);

            context.SaveChanges();
        }
示例#8
0
        public int NewOrder(int voyageId, string userName)
        {
            int id;

            using (var DB = new BusTicketsContext())
            {
                Order order = new Order {
                    VoyageId = voyageId, Status = "open", UserName = userName
                };
                var newOrder = DB.Orders.Add(order);
                DB.SaveChanges();
                id = newOrder.Id;
            }

            return(id);
        }
示例#9
0
        // {Customer ID} {Grade} {Bus Company Name} {Content}
        public string Execute(IList <string> data)
        {
            var customerId     = int.Parse(data[0]);
            var grade          = double.Parse(data[1]);
            var busCompanyName = data[2];
            var content        = data[3];

            using (var db = new BusTicketsContext())
            {
                var customer = db.Customers
                               .Select(c => new
                {
                    Id   = c.Id,
                    Name = c.FirstName + " " + c.LastName
                })
                               .FirstOrDefault(c => c.Id == customerId);

                if (customer == null)
                {
                    throw new ArgumentException("No such customer");
                }

                var company = db.Companies
                              .Select(c => new
                {
                    Id   = c.Id,
                    Name = c.Name
                })
                              .FirstOrDefault(c => c.Name == busCompanyName);

                if (company == null)
                {
                    throw new ArgumentException("No such company");
                }

                db.Reviews.Add(new Review
                {
                    CompanyId  = company.Id,
                    CustomerId = customer.Id,
                    Content    = content,
                    Grade      = grade
                });
                db.SaveChanges();

                return($"Customer {customer.Name} published review for company {company.Name}");
            }
        }
示例#10
0
        public int NewTicket(TicketViewModel ticket)
        {
            int id;

            using (var DB = new BusTicketsContext())
            {
                var newTicket = DB.Tickets.Add(new Ticket
                {
                    OrderId = ticket.OrderId,
                    PassengerDocumentNumber = ticket.DocumentNumber,
                    PassengerName           = ticket.PassengerName,
                    SeetNumber = ticket.NumberSeet,
                    Status     = "reserved"
                });
                DB.SaveChanges();
                id = newTicket.Id;
            }
            return(id);
        }
示例#11
0
        private void SeedDb(BusTicketsContext context)
        {
            var generator = new DataGenerator();

            var countries    = GetCountries(generator, SeedCount);
            var busCompanies = GetBusCompanies(generator, countries, SeedCount);
            var towns        = GetTowns(generator, countries, SeedCount);
            var busStations  = GetStations(generator, towns, SeedCount);
            var customers    = GetCustomers(generator, towns, SeedCount);
            var bankAccounts = GetBankAccounts(generator, customers, SeedCount);
            var trips        = GetTrips(generator, busStations, busCompanies, SeedCount);
            var tickets      = GetTickets(generator, customers, trips, SeedCount);
            var reviews      = GetReviews(generator, busCompanies, customers, SeedCount / 2);

            context.Trips.AddRange(trips);
            context.Tickets.AddRange(tickets);
            context.Reviews.AddRange(reviews);
            context.BankAccounts.AddRange(bankAccounts);
            context.SaveChanges();
        }
示例#12
0
        public void InitDB()
        {
            using (var DB = new BusTicketsContext())
            {
                var    stop1 = DB.Stops.First(x => x.Id == 1);
                var    stop2 = DB.Stops.First(x => x.Id == 2);
                var    stop3 = DB.Stops.First(x => x.Id == 10);
                Voyage v1    = new Voyage
                {
                    VoyageName        = "Minsk - Gomel",
                    VoyageNumber      = "15",
                    DepartureDateTime = new DateTime(2016, 11, 20, 10, 30, 00),
                    ArrivalDateTime   = new DateTime(2016, 11, 20, 15, 30, 00),
                    DepartureStop     = stop1,
                    ArriveStop        = stop3,
                    DepartureStopId   = stop1.Id,
                    ArivalStopId      = stop3.Id,
                    TravelTime        = new TimeSpan(5, 0, 0),
                    NumberOfSeets     = 100,
                    TicketCost        = 200
                };
                Voyage v2 = new Voyage
                {
                    VoyageName        = "Brest - Minsk",
                    VoyageNumber      = "21",
                    DepartureDateTime = new DateTime(2016, 11, 20, 14, 00, 00),
                    ArrivalDateTime   = new DateTime(2016, 11, 20, 18, 30, 00),
                    DepartureStop     = stop2,
                    ArriveStop        = stop1,
                    DepartureStopId   = stop2.Id,
                    ArivalStopId      = stop1.Id,
                    TravelTime        = new TimeSpan(4, 30, 0),
                    NumberOfSeets     = 100,
                    TicketCost        = 150
                };

                DB.Voyages.Add(v1);
                DB.Voyages.Add(v2);
                DB.SaveChanges();
            }
        }
示例#13
0
        //{customer ID} {Trip ID} {Price} {Seat}
        public string Execute(IList <string> data)
        {
            var customerId = int.Parse(data[0]);
            var tripId     = int.Parse(data[1]);
            var price      = decimal.Parse(data[2]);
            var seat       = data[3];

            using (var db = new BusTicketsContext())
            {
                var customer = db.Customers
                               .AsNoTracking()
                               .FirstOrDefault(c => c.Id == customerId);

                if (customer == null)
                {
                    throw new ArgumentException("No such customer");
                }

                if (!db.Trips.Any(t => t.Id == tripId))
                {
                    throw new ArgumentException("No such trip");
                }

                db.Tickets.Add(new Ticket
                {
                    CustomerId = customerId,
                    TripId     = tripId,
                    Price      = price,
                    Seat       = seat
                });
                db.SaveChanges();

                return
                    ($"Customer {customer.FirstName} {customer.LastName} bought ticket " +
                     $"for trip {tripId} for {price} on seat {seat}");
            }
        }
示例#14
0
        private static void SeedDb(BusTicketsContext db)
        {
            db.Towns.AddRange(new List <Town>
            {
                new Town {
                    Country = "Bulgaria", Name = "Sofia"
                },
                new Town {
                    Country = "Bulgaria", Name = "Varna"
                },
                new Town {
                    Country = "Bulgaria", Name = "Plovdiv"
                },
                new Town {
                    Country = "Bulgaria", Name = "Ruse"
                }
            });
            db.SaveChanges();

            db.BusStations.AddRange(new List <BusStation>
            {
                new BusStation {
                    Name = "Central Station", TownId = 1
                },
                new BusStation {
                    Name = "Union Station", TownId = 2
                },
                new BusStation {
                    Name = "Northern Station", TownId = 1
                },
                new BusStation {
                    Name = "Eastern Station", TownId = 3
                },
            });
            db.SaveChanges();

            db.Companies.AddRange(new List <Company>
            {
                new Company {
                    Name = "SomeCompany", Nationality = "bg", Rating = 6
                },
                new Company {
                    Name = "SomeCompany2", Nationality = "bg", Rating = 7
                },
                new Company {
                    Name = "SomeCompany3", Nationality = "bg", Rating = 4
                }
            });
            db.SaveChanges();

            db.Trips.AddRange(new List <Trip>
            {
                new Trip
                {
                    CompanyId               = 1,
                    ArrivalTime             = DateTime.Now,
                    DepartureTime           = DateTime.Now,
                    OriginBusStationId      = 1,
                    DestinationBusStationId = 2,
                    Status = TripStatus.Arrived
                },
                new Trip
                {
                    CompanyId               = 2,
                    ArrivalTime             = DateTime.Now,
                    DepartureTime           = DateTime.Now,
                    OriginBusStationId      = 1,
                    DestinationBusStationId = 3,
                    Status = TripStatus.Cancelled
                },
                new Trip
                {
                    CompanyId               = 1,
                    ArrivalTime             = DateTime.Now,
                    DepartureTime           = DateTime.Now,
                    OriginBusStationId      = 4,
                    DestinationBusStationId = 1,
                    Status = TripStatus.Departed
                }
            });
            db.SaveChanges();

            db.Customers.AddRange(new List <Customer>
            {
                new Customer
                {
                    FirstName   = "Mickey",
                    LastName    = "Mouse",
                    HomeTownId  = 1,
                    DateOfBirth = DateTime.MinValue,
                    Gender      = Gender.Male
                },
                new Customer
                {
                    FirstName   = "Minnie",
                    LastName    = "Mouse",
                    HomeTownId  = 2,
                    DateOfBirth = DateTime.MinValue,
                    Gender      = Gender.Female
                },
                new Customer
                {
                    FirstName   = "Donald",
                    LastName    = "Duck",
                    HomeTownId  = 3,
                    DateOfBirth = DateTime.MinValue,
                    Gender      = Gender.Male
                }
            });
            db.SaveChanges();

            db.Tickets.AddRange(new List <Ticket>
            {
                new Ticket {
                    Price = 20, Seat = "32B", CustomerId = 1, TripId = 2
                },
                new Ticket {
                    Price = 50, Seat = "16C", CustomerId = 2, TripId = 1
                },
                new Ticket {
                    Price = 32.99m, Seat = "1A", CustomerId = 1, TripId = 3
                }
            });
            db.SaveChanges();

            db.Reviews.AddRange(new List <Review>
            {
                new Review {
                    CustomerId = 1, CompanyId = 2, Grade = 8, Content = "Satisfactory", PublishedOn = DateTime.Now
                },
                new Review {
                    CustomerId = 2, CompanyId = 1, Grade = 1, Content = "Disgusting", PublishedOn = DateTime.Now
                },
                new Review {
                    CustomerId = 1, CompanyId = 3, Grade = 9, Content = "Awesome!", PublishedOn = DateTime.Now
                },
            });
            db.SaveChanges();

            Console.WriteLine("Database Initialized!");
        }