public async Task <IIdentifierResult> HandleAsync(ICreateSale command, ICorrelationContext context) { await Task.WhenAll( _agVerifier.AssertExists(command.AccountingGroupId), _userVerifier.AssertExists(command.UserId), _posVerifier.AssertExists(command.PointOfSaleId), _amVerifier.AssertExists(command.AuthenticationMeansId), _productVerifier.AssertExists(command.ProductId), _offerVerifier.AssertExists(command.OfferId) ); var sale = new Domain.Sale(command.Id, command.Cost, command.Quantity, command.AccountingGroupId, command.UserId, command.AuthenticationMeansId, command.PointOfSaleId, command.ProductId, command.OfferId); var initialSaleStateChange = new Domain.SaleStateChange(Guid.NewGuid(), "Created", default(SaleState), command.PointOfSaleId, null); sale.AddStateChange(initialSaleStateChange); await _salesRepository.AddAsync(sale); try { await _salesRepository.SaveChanges(); } catch (EntityAlreadyExistsException) { throw new BaristaException("sale_already_exists", $"A sale with the ID '{command.Id}' already exists."); } await _busPublisher.Publish(new SaleCreated(sale)); await _busPublisher.Publish(new SaleStateChangeCreated(initialSaleStateChange.Id, sale.Id, initialSaleStateChange.Created, initialSaleStateChange.Reason, initialSaleStateChange.State.ToString(), initialSaleStateChange.CausedByPointOfSaleId, initialSaleStateChange.CausedByUserId)); return(new IdentifierResult(sale.Id)); }
public void TesteComissaoComVendaMenorDe10000() { // arrange decimal saleValue = 1000; Domain.Sale sale = new Domain.Sale(saleValue); decimal expectedComission = 50; // act decimal comission = sale.GetComission(); // assert Assert.AreEqual(expectedComission, comission); }
public void TesteComissaoComVendaIguala10000() { // arrange decimal saleValue = 10000; Domain.Sale sale = new Domain.Sale(saleValue); decimal expectedComission = 500; // act decimal comission = sale.GetComission(); // assert Assert.AreEqual(expectedComission, comission); }
public SaleUpdated(Domain.Sale sale) : this(sale.Id, sale.Cost, sale.Quantity, sale.AccountingGroupId, sale.UserId, sale.AuthenticationMeansId, sale.PointOfSaleId, sale.OfferId, sale.ProductId) { }
public SaleDeleted(Domain.Sale sale) : this(sale.Id) { }