public async Task <bool> Handle(CreateSaleCommand message, CancellationToken cancellationToken) { var sale = Sale.SaleFactory.NewSale(message.CustomerId); var customer = await saleRepository.GetCustomerByIdAsync(sale.CustomerId); if (customer == null) { await mediator.RaiseEvent(new DomainNotification(message.MessageType, $"Não existe Cliente cadastrado como o id: {message.CustomerId}")); return(false); } sale.SetCustomer(customer); sale.SetSaleItems(message.Items); foreach (var item in sale.Items) { var disc = await discRepository.GetById(item.DiscId); if (disc == null) { await mediator.RaiseEvent(new DomainNotification(message.MessageType, $"Não existe nenhum Disco cadastrado como o id: {item.DiscId}")); return(false); } if (!IsValid(item)) { return(false); } item.SetDependencies(sale, disc.Id); item.ComputeCashBack(disc); } if (!IsValid(sale)) { return(false); } await saleRepository.Add(sale); return(await Commit()); }
public async Task <DiscViewModel> GetById(int id) { return(mapper.Map <DiscViewModel>(await discRepository.GetById(id))); }