Beispiel #1
0
        public static void Initialize(HotelContext db)
        {
            db.Database.EnsureCreated();

            // check only by this dbset
            if (db.Clients.Any())
            {
                return;
            }

            int roomsCnt     = 100;
            int clientsCnt   = 70; // must be less than rooms cnt
            int employeesCnt = 100;
            int servicesCnt  = 100;

            Random rand = new Random(DateTime.Now.Millisecond);

            string[] roomTypes    = { "Люкс", "Стандарт", "Эконом" };
            string[] serviceTypes = { "Уборка", "Еда в номер", "Пополнение мини-бара" };
            double[] sTypesCosts  = { 70, 50, 30 };                                           // same size as for serviceTypes
            string[] passSeries   = { "AB", "BM", "HB", "KH", "MP", "MC", "KB", "PP", "ВМ" }; // + 7 digits

            // firstly, fill constants
            // fill room types
            foreach (var rt in roomTypes)
            {
                db.RoomTypes.Add(new RoomType {
                    Name = rt
                });
            }
            db.SaveChanges();

            // fill serv types
            for (int i = 0; i < roomTypes.Length; i++)
            {
                db.ServiceTypes.Add(new ServiceType {
                    Name = serviceTypes[i],
                    Cost = sTypesCosts[i], Description = rand.Next() % 2 == 1 ? "SomeDescription" : null
                });
            }
            db.SaveChanges();

            // fill rooms
            var rTypes = db.RoomTypes.ToList();

            for (int i = 0; i < roomsCnt; i++)
            {
                var value = new Room
                {
                    RoomType    = rTypes[rand.Next(roomTypes.Length)],
                    Capacity    = 2 + rand.Next(3), // 2, 3, 4
                    Cost        = 75 + rand.NextDouble() % 75,
                    RoomNo      = $"{(i + 1)}",
                    CostDate    = DateTime.Now - new TimeSpan(rand.Next() % 20, 0, 0, 0),
                    Description = rand.Next() % 2 == 1 ? "Room Description" : null
                };
                db.Rooms.Add(value);
            }
            db.SaveChanges();

            // fill clients
            var rooms = db.Rooms.ToList();

            for (int i = 0; i < clientsCnt && i < rooms.Count; i++)
            {
                db.Clients.Add(new Client
                {
                    Name = $"{lastnameusual[rand.Next(lastnameusual.Length)]} " +
                           $"{malenameusual[rand.Next(malenameusual.Length)]} " +
                           $"{patronimusual[rand.Next(patronimusual.Length)]}",
                    Passport      = $"{passSeries[rand.Next() % passSeries.Length]}{rand.Next(10000000)}",
                    Room          = rooms[i],
                    DepartureDate = DateTime.Now + new TimeSpan(2, 0, 0, 0),
                    OccupancyDate = DateTime.Now - new TimeSpan(7 * rand.Next(3), 0, 0, 0)
                });
            }
            db.SaveChanges();

            // fill employees
            for (int i = 0; i < employeesCnt; i++)
            {
                db.Employees.Add(new Employee
                {
                    Name = $"{lastnameusual[rand.Next(lastnameusual.Length)]} " +
                           $"{malenameusual[rand.Next(malenameusual.Length)]} " +
                           $"{patronimusual[rand.Next(patronimusual.Length)]}"
                });
            }
            db.SaveChanges();

            // fill services
            var sTypes    = db.ServiceTypes.ToList();
            var employees = db.Employees.ToList();
            var clients   = db.Clients.ToList();

            for (int i = 0; i < servicesCnt; i++)
            {
                db.Services.Add(new Service
                {
                    ServiceType = sTypes[rand.Next(db.ServiceTypes.Count())],
                    Employee    = employees[rand.Next(db.Employees.Count())],
                    Client      = clients[rand.Next(db.Clients.Count())]
                });
            }
            db.SaveChanges();
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            HotelContext db = new HotelContext();

            Initializer.Initialize(db);
            bool stay = true;

            while (stay)
            {
                Console.Clear();
                Console.WriteLine("======================================");
                Console.WriteLine("1 > Получить все виды услуг");
                Console.WriteLine("2 > Получить все виды услуг + фильтр");
                Console.WriteLine("3 > Получить комнаты + группировка по полю + вывод результата");
                Console.WriteLine("4 > Выборка данных из двух полей двух таблиц, связанных отношением «один-ко-многим»{0}" +
                                  "5 > Выборка данных из двух таблиц, связанных отношением «один-ко-многим» + фильтр{0}" +
                                  "6 > Вставка данных в таблицы на стороне отношения «Один»{0}" +
                                  "7 > Вставка данных в таблицы на стороне отношения «Многие»{0}" +
                                  "8 > Удаление данных из таблицы на стороне отношения «Один»{0}" +
                                  "9 > Удаление данных из таблицы на стороне отношения «Многие»{0}" +
                                  "0 > Обновление удовлетворяющих условию записей в любой из таблиц базы данных{0}", Environment.NewLine);
                Console.WriteLine("{0}ESCAPE > Выход", Environment.NewLine);

                switch (Console.ReadKey(true).Key)
                {
                case ConsoleKey.D1:
                    Console.Clear();
                    OutputServiceTypes(db.ServiceTypes.ToList());
                    break;

                case ConsoleKey.D2:
                    Console.Clear();
                    OutputServiceTypes(FilterServices(db.ServiceTypes).ToList());
                    break;

                case ConsoleKey.D3:
                    Console.Clear();
                    OutputRooms(GroupRoomsByCapacity(db.Rooms));
                    break;

                case ConsoleKey.D4:
                    Console.Clear();
                    JoinTwoTables(db.Services.ToList(), db.ServiceTypes.ToList());
                    break;

                case ConsoleKey.D5:
                    Console.Clear();
                    Console.WriteLine("COST < 60 {0}", Environment.NewLine);
                    JoinFilterTwoTables(db.Services.ToList(), db.ServiceTypes.ToList());
                    break;

                case ConsoleKey.D6:
                    Console.Clear();
                    OutputServiceTypes(db.ServiceTypes.ToList());
                    Console.WriteLine("{0}{0}", Environment.NewLine);
                    AddServiceType(db, new ServiceType {
                        Name = $"TestType {DateTime.Now}", Cost = 500
                    });
                    Console.WriteLine("{0}{0}", Environment.NewLine);
                    OutputServiceTypes(db.ServiceTypes.ToList());
                    break;

                case ConsoleKey.D7:
                    Console.Clear();
                    JoinTwoTables(db.Services.ToList(), db.ServiceTypes.ToList());
                    Console.WriteLine("{0}{0}", Environment.NewLine);
                    AddService(db, new Service {
                        ServiceType = db.ServiceTypes.FirstOrDefault
                                          (st => st.Name.Contains("TestType"))
                    });
                    Console.WriteLine("{0}{0}", Environment.NewLine);
                    JoinTwoTables(db.Services.ToList(), db.ServiceTypes.ToList());
                    break;

                case ConsoleKey.D8:
                {
                    var value = db.ServiceTypes.FirstOrDefault(st => st.Name.Contains("TestType"));
                    if (value != null)
                    {
                        Console.Clear();
                        Console.WriteLine("{0}{0}", Environment.NewLine);
                        OutputServiceTypes(db.ServiceTypes.ToList());
                        DeleteServiceType(db, value);
                        Console.WriteLine("{0}{0}", Environment.NewLine);
                        OutputServiceTypes(db.ServiceTypes.ToList());
                    }
                    else
                    {
                        Console.WriteLine("Нет данных для удаления");
                    }
                }
                break;

                case ConsoleKey.D9:
                {
                    var value = db.Services.FirstOrDefault(st => st.ServiceType.Name.Contains("TestType"));
                    if (value != null)
                    {
                        Console.Clear();
                        Console.WriteLine("{0}{0}", Environment.NewLine);
                        JoinTwoTables(db.Services.ToList(), db.ServiceTypes.ToList());
                        DeleteService(db, value);
                        Console.WriteLine("{0}{0}", Environment.NewLine);
                        JoinTwoTables(db.Services.ToList(), db.ServiceTypes.ToList());
                    }
                    else
                    {
                        Console.WriteLine("Нет данных для удаления");
                    }
                }
                break;

                case ConsoleKey.D0:
                    Console.Clear();
                    var client = new Client {
                        Name = "TESTCLIENT", Passport = "AAA"
                    };
                    Console.WriteLine($"{client.Name} ({client.Passport})");
                    AddClient(db, client);
                    EditClient(db, client);
                    Console.WriteLine($"{client.Name} ({client.Passport})");
                    break;

                case ConsoleKey.Escape:
                    stay = false;
                    break;

                default:
                    continue;
                }
                Console.ReadKey();
            }
        }