public void OnUpdateСтрокаЗаказа_НоваяСНедостаткомНаСкладе_ГенерируетсяИсключение()
        {
            // Arrange
            var товар  = new Товар();
            var строка = new СтрокаЗаказа
            {
                Количество = 10,
                Товар      = товар,
                Заказ      = new Заказ
                {
                    егион = new  егион
                    {
                        Код = "59"
                    }
                }
            };

            бс.DiscountService  = Mock.Of <IDiscountService>();
            бс.WarehouseService = Mock.Of <IWarehouseService>(ws => ws.CanReserveProduct(товар, 10) == false);

            // Act
            var exception = Assert.Throws <Exception>(() => бс.OnUpdateСтрокаЗаказа(строка));

            // Assert
            Assert.Equal("Недостаточно товара на складах.", exception.Message);
        }
        public void OnUpdateСтрокаЗаказа_НоваяСНаличиемНаСкладе_ТоварыРезервируются()
        {
            // Arrange
            var товар  = new Товар();
            var строка = new СтрокаЗаказа
            {
                Количество = 4,
                Товар      = товар,
                Заказ      = new Заказ
                {
                    егион = new  егион
                    {
                        Код = "59"
                    }
                }
            };

            бс.DiscountService = Mock.Of <IDiscountService>();

            var whMock = new Mock <IWarehouseService>();

            whMock.Setup(x => x.CanReserveProduct(товар, 4)).Returns(true);
            бс.WarehouseService = whMock.Object;

            // Act
            бс.OnUpdateСтрокаЗаказа(строка);

            // Assert
            whMock.Verify(x => x.ReserveProduct(товар, 4));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Пример явного включения операций работы с данными в заданные "извне" соединение и транзакцию.
        /// </summary>
        /// <remarks>
        /// Данный подход позволяет в ручном режиме контролировать те операции, которые попадают в соответствующую транзакцию,
        /// а также явно управлять транзакциями.
        /// </remarks>
        static void UsingExternalConnectionAndTransaction()
        {
            var ds = (SQLDataService)DataServiceProvider.DataService;

            var connection = new SqlConnection(ds.CustomizationString);

            using (connection)
            {
                if (connection.State != ConnectionState.Open)
                {
                    connection.Open();
                }

                using (SqlTransaction transaction = connection.BeginTransaction())
                {
                    var t = new Товар();
                    t.SetExistObjectPrimaryKey("27486786-648C-419B-B0BF-F8BA739ABF58");
                    ds.LoadObjectByExtConn(Товар.Views.ТоварL, t, true, false, new DataObjectCache(), connection, transaction);

                    t.Цена = 999;

                    var t2 = new Товар()
                    {
                        Название = "Стул", ЕдиницаИзмерения = "шт", Описание = "Опять мебель", Цена = 1345, КодТовара = 224
                    };
                    var p = new DataObject[] { t, t2 };

                    ds.UpdateObjectsByExtConn(ref p, new DataObjectCache(), true, connection, transaction);

                    transaction.Commit();
                    Console.WriteLine("ОК");
                }
            }
        }
Exemplo n.º 4
0
 private void list_of_productsSelect(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count > 0)
     {
         prod                 = e.AddedItems[0] as Товар;
         value.Text           = prod.стоимость.Value.ToString();
         amount_of_goods.Text = prod.количесвто.Value.ToString();
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Создание нескольких объектов данных в базе данных за одну операцию.
        /// </summary>
        /// <remarks>
        /// Порядок добавления и изменения объектов данных сервис данных как правило контролирует сам, но есть ряд случаев, когда необходимо
        /// соблюдать оперделенный порядок передачи объектов данных в соответствующий массив:
        ///   - Наличие циклов в графе типов
        ///   - Удаление объекта и его мастера в одной транзакции
        ///   - Ситуация, когда агрегатор и детейл имеют мастера одного типа
        ///   - Другие варианты при наличии связанных объектов с разными статусами, т.е. когда часть объектов добавляется, часть - обновляется, часть - удаляется
        /// </remarks>
        static void CreateObjects()
        {
            var t = new Товар()
            {
                Название = "Батон", ЕдиницаИзмерения = "шт", Описание = "Вкусняшка", Цена = 22, КодТовара = 123
            };
            var t2 = new Товар()
            {
                Название = "Гвозди", ЕдиницаИзмерения = "кг", Описание = "Железные гвозди", Цена = 150, КодТовара = 33
            };
            var s = new Сотрудник()
            {
                Фамилия = "Сидоров", Имя = "Сидор", ТабельныйНомер = 345
            };
            var s2 = new Сотрудник()
            {
                Фамилия = "Петров", Имя = "Петр", ТабельныйНомер = 777
            };
            var skl = new Склад()
            {
                Номер = 15, Адрес = "ул. Ленина, 49", Менеджер = s
            };
            var skl2 = new Склад()
            {
                Номер = 28, Адрес = "ул. Промышленная, 88", Менеджер = s
            };
            var tovarSkl = new ТоварНаСкладе()
            {
                Товар = t, Количество = 10
            };
            var tovarSkl2 = new ТоварНаСкладе()
            {
                Товар = t2, Количество = 5
            };
            var tovarSkl3 = new ТоварНаСкладе()
            {
                Товар = t2, Количество = 4
            };

            skl.ТоварНаСкладе.Add(tovarSkl);
            skl.ТоварНаСкладе.Add(tovarSkl2);
            skl2.ТоварНаСкладе.Add(tovarSkl3);
            try
            {
                var p  = new DataObject[] { t, t2, s, s2, skl, skl2 };
                var ds = (SQLDataService)DataServiceProvider.DataService;
                ds.UpdateObjects(ref p);
                Console.WriteLine("ОК\n");
            }
            catch (Exception e)
            {
                Console.WriteLine(string.Format("Ошибка: {0}\n", e.Message));
            }
        }
Exemplo n.º 6
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            var prod = new Товар()
            {
                название_товара = name.Text,
                количесвто      = int.Parse(amount.Text),
                стоимость       = decimal.Parse(value.Text)
            };
            var prodServ = ServiceLocator.GetService <Товар>();

            using (prodServ.Uow.Db = new АвтозаправкиEntities())
            {
                prodServ.Save(prod);
            }
        }
Exemplo n.º 7
0
    static void Main()
    {
        Техника    Сканер1      = new Сканер();
        IВключение Комп1        = new Компьютер();
        Товар      перемещаемый = Сканер1 as Сканер;
        Техника    Планш1       = new Планшет();
        Техника    Принтер1     = new Печатающее_устройство();

        Комп1.TurnOn();
        Сканер1.TurnOn();
        Printer B = new Printer(Сканер1);

        B.IAmPrinting(перемещаемый);
        B.IAmPrinting(Сканер1);
        B.IAmPrinting(Принтер1);
        B.IAmPrinting(Планш1);
        B.IAmPrinting(Комп1);
    }
Exemplo n.º 8
0
        /// <summary>
        /// Создание одного объекта данных в базе данных.
        /// </summary>
        static void CreateObject()
        {
            var t = new Товар()
            {
                Название = "Гвозди", ЕдиницаИзмерения = "кг", Описание = "Железные гвозди", Цена = 150, КодТовара = 33
            };
            var ds = (SQLDataService)DataServiceProvider.DataService;

            try
            {
                ds.UpdateObject(t);
                Console.WriteLine("ОК\n");
            }
            catch (Exception e)
            {
                Console.WriteLine(string.Format("Ошибка: {0}\n", e.Message));
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Чтение объекта данных по первичному ключу и последующее удаление данного объекта данных из базы данных.
        /// </summary>
        /// <remarks>
        /// 1. Нужно исправить значение первичного ключа в коде на актуальное, чтобы вычитать реально существующий объект из базы данных
        /// 2. Если на соответствующий объект ссылаются объекты в базе данных, то объект может не удалиться, так как сработают ограничения целостности в базе данных.
        ///    Такой случай подразумевает реализовацию каскадного удаления данных в бизнес-серверах.
        /// </remarks>
        static void DeleteObject()
        {
            try
            {
                var ds = (SQLDataService)DataServiceProvider.DataService;
                var t  = new Товар();

                //Требуется заменить значение первичного ключа на актуальное из базы данных.
                t.SetExistObjectPrimaryKey("27486786-648C-419B-B0BF-F8BA739ABF58");
                ds.LoadObject(t);

                Console.WriteLine($"Название: {t.Название}\n");

                t.SetStatus(ObjectStatus.Deleted);
                ds.UpdateObject(t);
                Console.WriteLine("Удален\n");
            }
            catch (Exception e)
            {
                Console.WriteLine(string.Format("Ошибка: {0}\n", e.Message));
            }
        }
        public void OnUpdateСтрокаЗаказа_НоваяСНаличиемНаСкладе_УспешноВыполняется()
        {
            // Arrange
            var товар  = new Товар();
            var строка = new СтрокаЗаказа
            {
                Количество = 4,
                Товар      = товар,
                Заказ      = new Заказ
                {
                    егион = new  егион
                    {
                        Код = "59"
                    }
                }
            };

            бс.DiscountService  = Mock.Of <IDiscountService>();
            бс.WarehouseService = Mock.Of <IWarehouseService>(ws => ws.CanReserveProduct(товар, 4) == true);

            // Act
            бс.OnUpdateСтрокаЗаказа(строка);
        }
Exemplo n.º 11
0
 public Printer(Товар А)
 {
 }
Exemplo n.º 12
0
 virtual public void IAmPrinting(Товар А)
 {
     Console.WriteLine(А.GetType());
     А.ToString();
 }