예제 #1
0
        public CursoGetDto Get(int id)
        {
            var query = _repository.Get(id);

            var dto = query.Select(c => new CursoGetDto()
            {
                Id           = c.IdCurso,
                DataInicio   = c.DataInicio,
                DataTermino  = c.DataTermino,
                Descricao    = c.Descricao,
                NumeroAlunos = c.NumeroAlunos
            }).FirstOrDefault();

            return(dto);
        }
예제 #2
0
        public ICommandResult Handle(CreatePedidoCommand command)
        {
            // Fail Fast Validation
            command.validate();
            if (command.Invalid)
            {
                return(new GenericCommandResult(false, "Pedido inválido", null));
            }

            // 1. Recupera o cliente
            var aluno = _alunoRepository.Get(command.Aluno);

            // 2. Calcula a taxa de entrega
            var delivery = _deliveryRepository.Get(command.ZipCode);

            // 3. Obtém o cupom de desconto
            var desconto = _descontoRepository.Get(command.PromoCode);

            // 4. Gera o pedido
            var cursos = _cursoRepository.Get(ExtractGuids.Extract(command.Items)).ToList();
            var pedido = new Pedido(aluno, delivery, desconto);

            foreach (var item in command.Items)
            {
                var curso = cursos.Where(x => x.Id == item.Curso).FirstOrDefault();
                pedido.AddItem(curso, item.Quantidade);
            }

            // 5. Agrupa as notificações
            AddNotifications(pedido.Notifications);

            // 6. Verifica se deu tudo certo
            if (Invalid)
            {
                return(new GenericCommandResult(false, "Falha ao gerar o pedido", Notifications));
            }

            // 7. Retorna o resultado
            _pedidoRepository.Save(pedido);
            return(new GenericCommandResult(true, $"Pedido {pedido.Numero} gerado com sucesso", pedido));
        }
예제 #3
0
        public async Task <IActionResult> Get()
        {
            var curso = await _cursoRepository.Get();

            return(Ok(curso));
        }