예제 #1
0
        public void Add(ProductIssue productIssue)
        {
            productIssue.Valid();
            using (var session = NHibernateSessionFactory.OpenSession())
            {
                try
                {
                    var transaction = session.BeginTransaction();

                    session.Save(productIssue);

                    var product = productIssue.Product;
                    foreach (var variation in product.GetVariationUpdatedByProductIssueQuantity(productIssue.ProductIssueItems))
                    {
                        session.Update(variation);
                    }

                    session.Flush();
                    transaction.Commit();
                }
                catch (ConstraintViolationException ex)
                {
                    throw new RepositoryException($"Saida de produto '{productIssue.Code}' já existe.", ex);
                }
                catch (Exception ex)
                {
                    throw new RepositoryException($"Não foi possível adicionar a saida de produto '{productIssue.Code}': {ex.Message}", ex);
                }
            }
        }
예제 #2
0
        public void ValidateProdutIssue_ProductIssueIsNull_ThrowException()
        {
            ProductIssue productIssue = null;

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

            Assert.That(ex.Message, Is.EqualTo("Saida de produto não pode estar nula ou vazia."));
        }
예제 #3
0
        public void ValidateProductIssue_ProductIsNull_ThrowException()
        {
            var outputOrder = new ProductIssue
            {
                Code = "CODE_1",
            };

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

            Assert.That(ex.Message, Is.EqualTo("Saida de produto sem produto."));
        }
예제 #4
0
 public void Delete(ProductIssue productIssue)
 {
     productIssue.Valid();
     using (var session = NHibernateSessionFactory.OpenSession())
     {
         try
         {
             session.Delete(productIssue);
             session.Flush();
         }
         catch (Exception ex)
         {
             throw new RepositoryException($"Não foi possível deletar a saida de produto '{productIssue.Code}': {ex.Message}", ex);
         }
     }
 }
예제 #5
0
 public void Update(ProductIssue productIssue)
 {
     productIssue.Valid();
     using (var session = NHibernateSessionFactory.OpenSession())
     {
         try
         {
             session.Update(productIssue);
             session.Flush();
         }
         catch (ConstraintViolationException ex)
         {
             throw new RepositoryException($"Saida de produto '{productIssue.Code}' já existe.", ex);
         }
         catch (Exception ex)
         {
             throw new RepositoryException($"Não foi possível atualizar a saida de produto '{productIssue.Code}': {ex.Message}", ex);
         }
     }
 }