Example #1
0
        public void dbReadWriteTest()
        {
            bool actual_result = false;
            using (AOSDB aos_db = new AOSDB())
            {
                // Формируем объект класса AOS_KL_PRODUCT_CLASS
                AOS_KL_PRODUCT_CLASS product_class = new AOS_KL_PRODUCT_CLASS();
                product_class.PK_AOS_ID_PRODUCT_CLASS = 4;
                product_class.PRODUCT_CLASS_NAME_RU = "Напитки";
                product_class.PRODUCT_CLASS_NAME_EN = "Drinks";

                // Добавляем объект и сохраняем его в БД
                aos_db.AOS_KL_PRODUCT_CLASS.Add(product_class);
                aos_db.SaveChanges();

                // Проверяем добавилась ли строка в таблицу 
                // AOS_KL_PRODUCT_CLASS            
                foreach (var item in aos_db.AOS_KL_PRODUCT_CLASS)
                    if (item == product_class)
                        actual_result = true;
                Assert.AreEqual(true, actual_result);

                // Удаляем строку из БД
                aos_db.AOS_KL_PRODUCT_CLASS.Remove(product_class);
                aos_db.SaveChanges();

                // Проверяем удалилась ли строка из таблицы
                // AOS_KL_PRODUCT_CLASS
                actual_result = false;
                foreach (var item in aos_db.AOS_KL_PRODUCT_CLASS)
                    if (item == product_class)
                        actual_result = true;
                Assert.AreNotEqual(true, actual_result);
            }
        }
Example #2
0
        // Конструктор
        public Order(string menu_client_id, int client_id,
                     string present_order_consist, string history_order_consist,
                     decimal order_worth)
        {
            // Формируем данные заказа для сохранения в БД
            AOS_BD_ORDER order = new AOS_BD_ORDER();
            order.ORDER_EMENU_CLIENT_ID = menu_client_id;
            order.FK_AOS_ID_CLIENT = client_id;
            order.ORDER_DATE_TIME_BEGIN = DateTime.Now;
            order.ORDER_DATE_TIME_END = DateTime.Now;
            order.ORDER_PRESENT_CONSIST = present_order_consist;
            order.ORDER_HISTORY_CONSIST = history_order_consist;
            order.ORDER_STATE = "opened";
            order.ORDER_WORTH = order_worth;

            // Добавляем заказ в БД
            using (AOSDB aos_db = new AOSDB())
            {
                aos_db.AOS_BD_ORDER.Add(order);
                aos_db.SaveChanges();
                _Order_ID = order.PK_AOS_ID_ORDER;
            }
        }
Example #3
0
        // Метод для расчета скидки клиента,
        // исходя из общей суммы заказов клиента
        public void setClientDiscount()
        {
            // Если клиент не аноним
            if (_Client_ID != 0)
            {
                using (AOSDB aos_db = new AOSDB())
                {
                    // Список сумм всех заказов клиента в БД
                    List<string> client_order_worth =
                        (from item in
                             aos_db.AOS_BD_ORDER.ToList<AOS_BD_ORDER>().
                             AsParallel<AOS_BD_ORDER>()
                         where item.FK_AOS_ID_CLIENT == _Client_ID
                         select item.ORDER_WORTH.ToString()).ToList<string>();

                    // Сумма всех сумм заказов клиента
                    double client_order_sum = 0;
                    foreach (string item in client_order_worth)
                        client_order_sum += Convert.ToDouble(item);

                    // За каждые 10.000 рублей плюс 1% к скидке
                    byte discount_modifier = (byte)Math.Floor(client_order_sum / 10000);

                    // Находим элемент в таблице с клиентами в БД с ID = _Client_ID
                    AOS_KL_CLIENT client =
                        (from item in
                             aos_db.AOS_KL_CLIENT.ToList<AOS_KL_CLIENT>()
                             .AsParallel<AOS_KL_CLIENT>()
                         where (item.PK_AOS_ID_CLIENT == _Client_ID)
                         select item).Single();

                    // Устанавливаем новую скидку
                    client.CLIENT_DISCOUNT += discount_modifier;                    
                    aos_db.SaveChanges();
                }
            }
        }
Example #4
0
        // Метод для обновления содержания заказа
        public bool updateOrderContent(int client_id,
                                       string present_order_consist,
                                       string history_order_consist,
                                       decimal order_worth)
        {
            try
            {
                using (AOSDB aos_db = new AOSDB())
                {
                    // Ищем заказ в таблице заказов в БД с ID = _Order_ID 
                    AOS_BD_ORDER order_info =
                        (from item in
                             aos_db.AOS_BD_ORDER.ToList<AOS_BD_ORDER>()
                             .AsParallel<AOS_BD_ORDER>()
                         where item.PK_AOS_ID_ORDER == _Order_ID
                         select item).ToList<AOS_BD_ORDER>().Single();

                    order_info.FK_AOS_ID_CLIENT = client_id;
                    order_info.ORDER_PRESENT_CONSIST = present_order_consist;
                    order_info.ORDER_HISTORY_CONSIST = history_order_consist;
                    order_info.ORDER_WORTH = order_worth;

                    // Сохраняем данные
                    aos_db.SaveChanges();
                }
            }
            // Если обновление заказа не удалось
            catch (Exception)
            {
                return false;                     
            }

            return true;
        }
Example #5
0
        // Метод для закрытия заказа
        public void closeOrder()
        {
            using (AOSDB aos_db = new AOSDB())
            {
                // Ищем заказ в таблице заказов в БД с ID = _Order_ID 
                AOS_BD_ORDER order_info =
                    (from item in
                         aos_db.AOS_BD_ORDER.ToList<AOS_BD_ORDER>()
                         .AsParallel<AOS_BD_ORDER>()
                     where item.PK_AOS_ID_ORDER == _Order_ID
                     select item).ToList<AOS_BD_ORDER>().Single();

                order_info.ORDER_DATE_TIME_END = DateTime.Now;
                order_info.ORDER_STATE = "ended";
                order_info.ORDER_PRESENT_CONSIST = "";

                // Сохраняем данные
                aos_db.SaveChanges();
            }
        }                                      
Example #6
0
        public void OrderTest()
        {
            // Тест конструктора
            // Ожидаемые данные
            string expected_menu_client_id = "1";
            int expected_client_id = 23456;
            string expected_present_order_consist = "[{" + '"' + "id" + '"' + ":"
                                                     + '"' + '5' + '"' + ',' + '"'
                                                     + "count" + '"' + ':' + '"' +
                                                     '1' + '"' + "}]";
            string expected_history_order_consist = "[{" + '"' + "id" + '"' + ":"
                                                     + '"' + '5' + '"' + ',' + '"'
                                                     + "count" + '"' + ':' + '"' +
                                                     '6' + '"' + "}]";
            string expected_order_state = "opened";
            decimal expected_order_worth = 2100.00M;

            // Создаем объект заказа
            Order order = new Order(expected_menu_client_id, expected_client_id,
                                    expected_present_order_consist, expected_history_order_consist,
                                    expected_order_worth);
            // Полученные данные
            using (AOSDB aos_db = new AOSDB())
            {
                // Ищем заказ в таблице заказов в БД с ID
                // равным ID заказа
                AOS_BD_ORDER order_info =
                    (from item in
                         aos_db.AOS_BD_ORDER.ToList<AOS_BD_ORDER>()
                         .AsParallel<AOS_BD_ORDER>()
                     where item.PK_AOS_ID_ORDER == order.Order_ID
                     select item).ToList<AOS_BD_ORDER>().Single();

                // Утверждения
                Assert.AreEqual(expected_menu_client_id, order_info.ORDER_EMENU_CLIENT_ID);
                Assert.AreEqual(expected_client_id, order_info.FK_AOS_ID_CLIENT);
                Assert.AreEqual(expected_present_order_consist,
                    order_info.ORDER_PRESENT_CONSIST);
                Assert.AreEqual(expected_history_order_consist,
                    order_info.ORDER_HISTORY_CONSIST);
                Assert.AreEqual(expected_order_state, order.getOrderState());
                Assert.AreEqual(expected_order_worth, order_info.ORDER_WORTH);
            }

            // Тест обновления данных заказа
            // Ожидаемые данные
            expected_client_id = 34567;
            expected_present_order_consist = "[{" + '"' + "id" + '"' + ":"
                                                + '"' + '5' + '"' + ',' + '"'
                                                + "count" + '"' + ':' + '"' +
                                                '6' + '"' + "}]";
            expected_history_order_consist = "[{" + '"' + "id" + '"' + ":"
                                                + '"' + '5' + '"' + ',' + '"'
                                                + "count" + '"' + ':' + '"' +
                                                "12" + '"' + "}]";                
            expected_order_worth = 4200.00M;

            // Обновляем данные о заказе
            order.updateOrderContent(expected_client_id,
                                     expected_present_order_consist,
                                     expected_history_order_consist,
                                     expected_order_worth);
            // Полученные данные
            using (AOSDB aos_db = new AOSDB())
            {
                // Ищем заказ в таблице заказов в БД с ID
                // равным ID заказа
                AOS_BD_ORDER order_info =
                    (from item in
                         aos_db.AOS_BD_ORDER.ToList<AOS_BD_ORDER>()
                         .AsParallel<AOS_BD_ORDER>()
                     where item.PK_AOS_ID_ORDER == order.Order_ID
                     select item).ToList<AOS_BD_ORDER>().Single();

                // Утверждения                
                Assert.AreEqual(expected_present_order_consist,
                    order_info.ORDER_PRESENT_CONSIST);
                Assert.AreEqual(expected_history_order_consist,
                    order_info.ORDER_HISTORY_CONSIST);                
                Assert.AreEqual(expected_order_worth, order_info.ORDER_WORTH);
            }

            // Тест закрытия заказа
            // Ожидаемые данные
            expected_order_state = "ended";

            // Закрываем заказ
            order.closeOrder();
            // Полученные данные
            using (AOSDB aos_db = new AOSDB())
            {
                // Ищем заказ в таблице заказов в БД с ID
                // равным ID заказа
                AOS_BD_ORDER order_info =
                    (from item in
                         aos_db.AOS_BD_ORDER.ToList<AOS_BD_ORDER>()
                         .AsParallel<AOS_BD_ORDER>()
                     where item.PK_AOS_ID_ORDER == order.Order_ID
                     select item).ToList<AOS_BD_ORDER>().Single();

                // Утверждения                
                Assert.AreEqual(expected_order_state, order.getOrderState());                

                // Очищаем БД от добавленного тестового значения
                aos_db.AOS_BD_ORDER.Remove(order_info);
                aos_db.SaveChanges();
            }
        }
Example #7
0
        public void ClientTest()
        {
            // Тест конструктора
            // Ожидаемые данные, взяты из тестовой БД AOS.DB.test
            int expected_client_id_1 = 23456;
            string expected_client_fio_1 =
                "Новиков Павел Николаевич";
            string expected_client_phone_1 =
                "+79084682576";
            string expected_client_discount_1 = "0,05";
            int expected_client_id_2 = 0;
            string expected_client_fio_2 =
                "anonymous";
            string expected_client_phone_2 =
                "none";
            string expected_client_discount_2 = "1";

            // Полученные данные
            Client client_1 = new Client(23456);
            int actual_client_id_1 =
                client_1.Client_ID;
            string actual_client_fio_1 =
                client_1.Client_FIO;
            string actual_client_phone_1 =
                client_1.Client_Phone;
            string actual_client_discount_1 =
                client_1.getClientDiscount();
            Client client_2 = new Client(2345689);
            int actual_client_id_2 =
                client_2.Client_ID;
            string actual_client_fio_2 =
                client_2.Client_FIO;
            string actual_client_phone_2 =
                client_2.Client_Phone;
            string actual_client_discount_2 =
                client_2.getClientDiscount();

            // Утверждения
            Assert.AreEqual(expected_client_id_1, actual_client_id_1);
            Assert.AreEqual(expected_client_fio_1, actual_client_fio_1);
            Assert.AreEqual(expected_client_phone_1, actual_client_phone_1);
            Assert.AreEqual(expected_client_discount_1, actual_client_discount_1);
            Assert.AreEqual(expected_client_id_2, actual_client_id_2);
            Assert.AreEqual(expected_client_fio_2, actual_client_fio_2);
            Assert.AreEqual(expected_client_phone_2, actual_client_phone_2);
            Assert.AreEqual(expected_client_discount_2, actual_client_discount_2);

            // Тест установки размера скидки
            // Ожидаемые данные
            expected_client_discount_1 = "0,08";
            // Полученные данные
            client_1.setClientDiscount();
            actual_client_discount_1 =
                client_1.getClientDiscount();

            // Утверждения
            Assert.AreEqual(expected_client_discount_1, actual_client_discount_1);

            // Возвращаем значения в БД к прежним
            using (AOSDB aos_db = new AOSDB())
            {
                // Находим элемент в таблице с клиентами в БД с ID = 23456
                AOS_KL_CLIENT client =
                    (from item in
                         aos_db.AOS_KL_CLIENT.ToList<AOS_KL_CLIENT>()
                         .AsParallel<AOS_KL_CLIENT>()
                     where (item.PK_AOS_ID_CLIENT == 23456)
                     select item).Single();

                // Возвращаем значение на старте теста
                client.CLIENT_DISCOUNT = 5;
                aos_db.SaveChanges();
            }
        }
Example #8
0
        public void MenuSessionTest_1()
        {
            // Тест конструктора
            MenuSession menu_session =
                new MenuSession();
            // Переключаем язык
            menu_session.switchMenuLang();
            // Ожидаемые данные
            string expected_lang_menu_flag = "EN";
            // Полученные данные
            string actual_lang_menu_flag =
                menu_session.lang_menu_flag;
            // Утверждения
            Assert.AreEqual(expected_lang_menu_flag,
                            actual_lang_menu_flag);
            // Переключаем язык
            menu_session.switchMenuLang();
            // Ожидаемые данные
           expected_lang_menu_flag = "RU";
            // Полученные данные
            actual_lang_menu_flag =
                menu_session.lang_menu_flag;
            // Утверждения
            Assert.AreEqual(expected_lang_menu_flag,
                            actual_lang_menu_flag);

            // Тест авторизации клиента 
            // Ожидаемые данные
            Client expected_client = new Client(0);
            bool expected_auth_flag = false;
            // Попытка авторизации в меню существующего клиента
            bool actual_auth_flag = menu_session.tryUserAuth(12);            
            // Утверждения
            Assert.AreEqual(expected_client.Client_FIO,
                menu_session.Current_Client.Client_FIO);
            Assert.AreEqual(expected_auth_flag, actual_auth_flag);
            // Ожидаемые данные
            expected_client = new Client(34567);
            expected_auth_flag = true;
            // Попытка авторизации в меню существующего клиента
            actual_auth_flag = menu_session.tryUserAuth(34567);
            // Утверждения
            Assert.AreEqual(expected_client.Client_FIO,
                menu_session.Current_Client.Client_FIO);
            Assert.AreEqual(expected_auth_flag, actual_auth_flag);

            // Тест создания заказа
            // Ожидаемые данные
            string expected_menu_client_id = "1";
            int expected_client_id = menu_session.Current_Client.Client_ID;
            string expected_present_order_consist = "[{" + '"' + "id" + '"' + ":"
                                                     + '"' + '5' + '"' + ',' + '"'
                                                     + "count" + '"' + ':' + '"' +
                                                     '1' + '"' + "}]";
            string expected_history_order_consist = "[{" + '"' + "id" + '"' + ":"
                                                     + '"' + '5' + '"' + ',' + '"'
                                                     + "count" + '"' + ':' + '"' +
                                                     '6' + '"' + "}]";
            string expected_order_state = "opened";
            decimal expected_order_worth = 2100.00M;
            // Создаем заказ
            menu_session.createOrder(expected_menu_client_id, expected_client_id,
                                     expected_present_order_consist,
                                     expected_history_order_consist,
                                     expected_order_worth);
            // Утверждения
            Assert.AreEqual(expected_order_state,
                menu_session.Current_Order.getOrderState());

            // Тест отправки сообщения
            // Ожидаемые данные
            int expected_msg_client_id = 34567;
            int expected_msg_order_id = menu_session.Current_Order.Order_ID;
            string expected_msg_reciever = "cook";
            string expected_msg_body = "Сообщене для повара";
            // Посылаем сообщение
            menu_session.sendMessage(expected_msg_reciever, expected_msg_body);
            using (AOSDB aos_db = new AOSDB())
            {
                AOS_BD_MESSAGE message =
                    (from item in aos_db.AOS_BD_MESSAGE
                     select item).Single();

                // Утверждения
                Assert.AreEqual(expected_msg_client_id, 
                                message.FK_AOS_ID_CLIENT);
                Assert.AreEqual(expected_msg_order_id,
                                message.FK_AOS_ID_ORDER);
                Assert.AreEqual(expected_msg_reciever,
                                message.MESSAGE_RECIVIER_ID);
                Assert.AreEqual(expected_msg_body,
                                message.MESSAGE_BODY);

                // Очищаем таблицу от тестовых данных
                aos_db.AOS_BD_MESSAGE.Remove(message);
                aos_db.SaveChanges();
            }

            // Тест запроса на вызов сотрудника
            // Ожидаемые данные
            string expected_emenu_client_id = "0.1apb5njklfp";
            int expected_call_client_id = 34567;
            int expected_call_order_id = menu_session.Current_Order.Order_ID;
            string expected_employee_id = "admin";
            // Посылаем запрос на вызов сотрудника
            menu_session.callStaff(expected_emenu_client_id,
                                   expected_employee_id);
            using (AOSDB aos_db = new AOSDB())
            {
                AOS_BD_CALL_QUEUE call =
                    (from item in aos_db.AOS_BD_CALL_QUEUE
                     select item).Single();

                // Утверждения
                Assert.AreEqual(expected_emenu_client_id,
                                call.CALL_QUEUE_EMENU_CLIENT_ID);
                Assert.AreEqual(expected_call_client_id,
                                call.FK_AOS_ID_CLIENT);
                Assert.AreEqual(expected_call_order_id,
                                call.FK_AOS_ID_ORDER);
                Assert.AreEqual(expected_employee_id,
                                call.CALL_QUEUE_EMPLOYEE_ID);      

                // Очищаем таблицу от тестовых данных
                aos_db.AOS_BD_CALL_QUEUE.Remove(call);
                aos_db.SaveChanges();
            }

            // Просим счет
            menu_session.getBill();
        }
Example #9
0
        // Метод для отправки сообщения
        public bool sendMessage(string msg_destination, string message_body)
        {            
            try
            {
                using (AOSDB aos_db = new AOSDB())
                {
                    // Формируем данные для отправки сообщения
                    AOS_BD_MESSAGE message = new AOS_BD_MESSAGE();
                    message.FK_AOS_ID_CLIENT =
                        _Current_Client == null ? 0 : _Current_Client.Client_ID;
                    if (_Current_Order != null)
                        message.FK_AOS_ID_ORDER = _Current_Order.Order_ID;
                    message.MESSAGE_RECIVIER_ID = msg_destination;
                    message.MESSAGE_DATE_TIME = DateTime.Now;
                    message.MESSAGE_BODY = message_body;

                    // Добавляем сообщение
                    aos_db.AOS_BD_MESSAGE.Add(message);
                    aos_db.SaveChanges();
                }
            }
            // Если отправка не удалась
            catch (Exception)
            {
                return false;
            }

            return true;
        }
Example #10
0
        // Метод для вызова сотрудника
        public bool callStaff(string emenu_client_id, string employee_id)
        {
            try
            {
                using (AOSDB aos_db = new AOSDB())
                {
                    // Формируем данные для для запроса на вызов сотрудника
                    AOS_BD_CALL_QUEUE call = new AOS_BD_CALL_QUEUE();
                    call.CALL_QUEUE_EMENU_CLIENT_ID = emenu_client_id;
                    call.FK_AOS_ID_CLIENT =
                        _Current_Client == null ? 0 : _Current_Client.Client_ID;
                    if (_Current_Order != null)
                        call.FK_AOS_ID_ORDER = _Current_Order.Order_ID;
                    call.CALL_QUEUE_DATE_TIME = DateTime.Now;
                    call.CALL_QUEUE_EMPLOYEE_ID = employee_id;

                    // Добавляем сообщение
                    aos_db.AOS_BD_CALL_QUEUE.Add(call);
                    aos_db.SaveChanges();
                }
            }
            // Если вызов не удался
            catch (Exception)
            {
                return false;
            }

            return true;
        }
Example #11
0
        // Метод для сохранения рейта в БД
        public bool setProductRate(byte product_rate)
        {
            try
            {
                using (AOSDB aos_db = new AOSDB())
                {
                    // Находим элемент в таблице с рейтами БД с ID = _Product_ID
                    AOS_BD_PRODUCT_RATE product_rate_list =
                        (from item in
                             aos_db.AOS_BD_PRODUCT_RATE.ToList<AOS_BD_PRODUCT_RATE>()
                             .AsParallel<AOS_BD_PRODUCT_RATE>()
                         where (item.PK_AOS_ID_PRODUCT == _Product_ID)
                         select item).Single();

                    // В зависимости от product_rate сохраняем значение в БД
                    // в таблицу с рейтами
                    switch (product_rate)
                    {
                        case 0:
                            ++product_rate_list.PRODUCT_RATE_0;
                            break;
                        case 1:
                            ++product_rate_list.PRODUCT_RATE_1;
                            break;
                        case 2:
                            ++product_rate_list.PRODUCT_RATE_2;
                            break;
                        case 3:
                            ++product_rate_list.PRODUCT_RATE_3;
                            break;
                        case 4:
                            ++product_rate_list.PRODUCT_RATE_4;
                            break;
                        case 5:
                            ++product_rate_list.PRODUCT_RATE_5;
                            break;
                        default:
                            break;
                    }

                    aos_db.SaveChanges();
                }
            }
            // Если не удалось сохранить рейт
            catch (Exception)
            {
                return false;
            }

            return true;
        }