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); } } }
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.")); }
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.")); }
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.")); }
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); } } }
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); } } }