Exemplo n.º 1
0
        static async Task Main(string[] args)
        {
            LogManager.LogFactory = new ConsoleLogFactory(debugEnabled: true);

            var employees = new List <EmployeePOCO>
            {
                new EmployeePOCO {
                    Name = "Фатина", Surname = "Обломова", MiddleName = "Филипповна", Sex = "Famale", Birthday = DateTime.Today.AddYears(30), Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Раиса", Surname = "Тарасова", MiddleName = "Константиновна", Sex = "Famale", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Севастьян", Surname = "Рзаев", MiddleName = "Матвеевич", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Мирослава", Surname = "Сорокина", MiddleName = "Виталиевна", Sex = "Famale", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Радим", Surname = "Малышев", MiddleName = "Олегович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Егор", Surname = "Шин", MiddleName = "Станиславович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Афанасий", Surname = "Фролов", MiddleName = "Игоревич", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Любомир", Surname = "Астахов", MiddleName = "Валентинович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Матвей", Surname = "Братиславский", MiddleName = "Ермакович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Сильвия", Surname = "Кароль", MiddleName = "Алексеевна", Sex = "Famale", Birthday = DateTime.Today, Post = "Управляющий"
                },
            };

            var components = new List <ComponentPOCO>
            {
                new ComponentPOCO {
                    ComponentType = "Тип компонента 1", ComponentName = "Название компонента 1"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 2", ComponentName = "Название компонента 2"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 3", ComponentName = "Название компонента 3"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 4", ComponentName = "Название компонента 4"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 5", ComponentName = "Название компонента 5"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 6", ComponentName = "Название компонента 6"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 7", ComponentName = "Название компонента 7"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 8", ComponentName = "Название компонента 8"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 9", ComponentName = "Название компонента 9"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 10", ComponentName = "Название компонента 10"
                }
            };

            var rng = new Random();

            List <KeyValuePair <long, int> > GetComponentsForOrder(int count)
            {
                var usedIds = new List <int>();
                var result  = new List <KeyValuePair <long, int> >();

                for (int i = 0; i < count; i++)
                {
                    var id = rng.Next(1, 10);
                    while (usedIds.Contains(id))
                    {
                        id = rng.Next(1, 10);
                    }

                    usedIds.Add(id);
                    result.Add(new KeyValuePair <long, int>(id, rng.Next(1, 10)));
                }

                return(result);
            }

            var componenstOrders = new List <ComponentsOrderPOCO>
            {
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
            };

            IDatabaseController databaseController = await GetMySQLController();

            //IDatabaseController databaseController = await GetLiteDBController();

            foreach (var employee in employees)
            {
                await databaseController.AddEmployee(employee);
            }

            foreach (var component in components)
            {
                await databaseController.AddComponent(component);

                await databaseController.AddComponentToStorage(new StoragePOCO { ComponentId = component.Id, Count = 1000 });

                for (var i = 10; i >= 0; i--)
                {
                    await databaseController.AddStorageHistory(new StorageHistoryPOCO { ComponentId = component.Id, Date = DateTime.Now.AddDays(-i), Delta = rng.Next(1, 100) });
                }
            }
            foreach (var order in componenstOrders)
            {
                await databaseController.AddComponentOrder(order);
            }

            var customers = new List <CustomerPOCO>
            {
                new CustomerPOCO {
                    FullName = "Третьяков Ростислав Валерьевич", ContactInfo = "+7 (980) 979-74-49"
                },
                new CustomerPOCO {
                    FullName = "Филиппов Олег Геннадиевич", ContactInfo = "+7 (940) 893-35-30"
                },
                new CustomerPOCO {
                    FullName = "Фомов Светозар Ермакович", ContactInfo = "+7 (989) 321-14-41"
                },
                new CustomerPOCO {
                    FullName = "Сафарова Тамара Львовна", ContactInfo = "+7 (945) 435-68-56"
                },
                new CustomerPOCO {
                    FullName = "Кудрявцева Элеонора Степановна", ContactInfo = "+7 (996) 339-52-22"
                },
                new CustomerPOCO {
                    FullName = "Маслов Дмитрий Романович", ContactInfo = "+7 (962) 837-78-85"
                },
                new CustomerPOCO {
                    FullName = "Куликовская Зинаида Иосифовна", ContactInfo = "+7 (949) 701-35-87"
                },
                new CustomerPOCO {
                    FullName = "Миллер Матвей Дмитриевич", ContactInfo = "+7 (943) 723-11-26"
                },
                new CustomerPOCO {
                    FullName = "Кольцов Самсон Святославович", ContactInfo = "+7 (950) 131-12-26"
                },
                new CustomerPOCO {
                    FullName = "Бровина Галина Закировна", ContactInfo = "+7 (987) 667-54-44"
                }
            };

            var jobs = new List <JobPOCO>
            {
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
            };

            var customerOrders = new List <CustomerOrderPOCO>
            {
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 1
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 2
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 3
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 4
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 5
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 6
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 7
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 8
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 9
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 10
                }
            };

            foreach (var job in jobs)
            {
                await databaseController.AddJob(job);
            }

            for (int i = 0; i < customers.Count; i++)
            {
                CustomerPOCO customer = customers[i];
                await databaseController.AddCustomer(customer);

                var order = customerOrders[i];
                order.Id         = 0; //prevent update
                order.CustomerId = customer.Id;
                await databaseController.AddCustomerOrder(order);
            }

            $"CustomerOrderFull for id 3: {new CustomerOrderFullPOCO(await databaseController.GetCustomerOrder(3)).Dump()}".Print();
        }