Exemplo n.º 1
0
        public void Add(ProductEntry productEntry)
        {
            productEntry.Valid();

            using (var session = NHibernateSessionFactory.OpenSession())
            {
                try
                {
                    var transaction = session.BeginTransaction();

                    session.Save(productEntry);

                    var product = productEntry.Product;
                    foreach (var variation in product.GetVariationUpdatedByProductEntryQuantity(productEntry.ProductEntryItems))
                    {
                        session.Update(variation);
                    }

                    session.Flush();
                    transaction.Commit();
                }
                catch (ConstraintViolationException ex)
                {
                    throw new RepositoryException($"Entrada de produto '{productEntry.Code}' já existe.", ex);
                }
                catch (Exception ex)
                {
                    throw new RepositoryException($"Não foi possível adicionar a entrada de produto '{productEntry.Code}': {ex.Message}", ex);
                }
            }
        }
Exemplo n.º 2
0
        public void ValidateProdutEntry_ProductEntryIsNull_ThrowException()
        {
            ProductEntry productEntry = null;

            var ex = Assert.Throws <ArgumentException>(() => productEntry.Valid());

            Assert.That(ex.Message, Is.EqualTo("Entrada de produto não pode estar nula ou vazia."));
        }
Exemplo n.º 3
0
        public void ValidateProductEntry_SupplierIsNull_ThrowException()
        {
            var productEntry = new ProductEntry
            {
                Code = "CODE_1",
            };

            var ex = Assert.Throws <ArgumentException>(() => productEntry.Valid());

            Assert.That(ex.Message, Is.EqualTo("Entrada de produto sem fornecedor."));
        }
Exemplo n.º 4
0
        public void ValidateProductEntry_ProductIsNull_ThrowException()
        {
            var productEntry = new ProductEntry
            {
                Code     = "CODE_1",
                Supplier = new Supplier {
                    Name = "SUPPLIER_1"
                }
            };

            var ex = Assert.Throws <ArgumentException>(() => productEntry.Valid());

            Assert.That(ex.Message, Is.EqualTo("Entrada de produto sem produto."));
        }
Exemplo n.º 5
0
        public void Delete(ProductEntry productEntry)
        {
            productEntry.Valid();

            using (var session = NHibernateSessionFactory.OpenSession())
            {
                try
                {
                    session.Delete(productEntry);
                    session.Flush();
                }
                catch (Exception ex)
                {
                    throw new RepositoryException($"Não foi possível deletar a entrada de produto '{productEntry.Code}': {ex.Message}", ex);
                }
            }
        }
Exemplo n.º 6
0
        public void Update(ProductEntry productEntry)
        {
            productEntry.Valid();

            using (var session = NHibernateSessionFactory.OpenSession())
            {
                try
                {
                    session.Update(productEntry);
                    session.Flush();
                }
                catch (ConstraintViolationException ex)
                {
                    throw new RepositoryException($"Entrada de produto '{productEntry.Code}' já existe.", ex);
                }
                catch (Exception ex)
                {
                    throw new RepositoryException($"Não foi possível adicionar a entrada de produto '{productEntry.Code}': {ex.Message}", ex);
                }
            }
        }