示例#1
0
            public async Task <int> Handle(Query query)
            {
                var registroCollection = _database.GetCollectionAsQueryable <Registro>();

                var result = await registroCollection
                             .Where(r => r.EstaCarregado && query.DataInicial <= r.Data && r.Data <= query.DataFinal)
                             .CountAsync();

                return(result);
            }
示例#2
0
            public async Task <Resolved> Handle(Command command)
            {
                using (var session = _database.Instance.Client.StartSession())
                {
                    try
                    {
                        var motoristaCollection = _database.GetCollection <Motorista>();

                        if (_database.GetCollectionAsQueryable <Motorista>().Any(m => m.Cpf == command.Cpf))
                        {
                            return(Resolved.ErrAsIEnumerable(new InvalidOperationException("Já existe um motorista cadastrado com esse CPF")));
                        }

                        session.StartTransaction();

                        var motorista = new Motorista
                        {
                            Cpf     = command.Cpf,
                            Idade   = command.Idade,
                            Nome    = command.Nome,
                            Sexo    = command.Sexo,
                            TipoCnh = command.TipoCnh,
                            PossuiVeiculoProprio = command.PossuiVeiculoProprio
                        };

                        await motoristaCollection.InsertOneAsync(motorista);

                        var registrarPassagemPeloTerminalCommand = new RegistrarPassagemPeloTerminal.Command
                        {
                            MotoristaId   = motorista.Id,
                            EstaCarregado = command.EstaCarregado,
                            TipoCaminhao  = command.TipoCaminhao,
                            Origem        = command.Origem,
                            Destino       = command.Destino
                        };

                        await _registrarPassagemPeloTerminalHandler.Handle(registrarPassagemPeloTerminalCommand);

                        session.CommitTransaction();

                        return(Resolved.Ok());
                    }
                    catch (Exception ex)
                    {
                        session.AbortTransaction();
                        return(Resolved.ErrAsIEnumerable(ex));
                    }
                }
            }
示例#3
0
            public async Task <Resolved> Handle(Command command)
            {
                var collection = _database.GetCollection <Motorista>();
                var motorista  = await _database.GetCollectionAsQueryable <Motorista>().SingleOrDefaultAsync(m => m.Id == command.MotoristaId);

                if (motorista == null)
                {
                    return(Resolved.ErrAsIEnumerable(new Exception("Não foi possível encontrar o cadastro do motorista solicitado")));
                }

                motorista.Nome    = command.Nome;
                motorista.Sexo    = command.Sexo;
                motorista.Idade   = command.Idade;
                motorista.TipoCnh = command.TipoCnh;
                motorista.PossuiVeiculoProprio = command.PossuiVeiculoProprio;

                await collection.ReplaceOneAsync(m => m.Id == command.MotoristaId, motorista);

                return(Resolved.Ok());
            }
示例#4
0
            public async Task<ResponseModel> Handle(Query query)
            {
                var collection = _database.GetCollectionAsQueryable<Registro>();

                var taskOrigens = collection
                    .GroupBy(r => r.Origem.Nome)
                    .Select(r => r.Key)
                    .ToListAsync();

                var taskDestinos = collection
                    .GroupBy(r => r.Destino.Nome)
                    .Select(r => r.Key)
                    .ToListAsync();

                await Task.WhenAll(taskOrigens, taskDestinos);

                return new ResponseModel
                {
                    Origens = taskOrigens.Result,
                    Destinos = taskDestinos.Result
                };
            }
示例#5
0
            public async Task <int> Handle(Query query)
            {
                var collection = _database.GetCollectionAsQueryable <Motorista>();

                return(await collection.Where(x => x.PossuiVeiculoProprio).CountAsync());
            }