Beispiel #1
0
        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)));
 }