Пример #1
0
            public async Task <List <ResponseModel> > Handle(Query query)
            {
                var registroCollection  = _database.GetCollection <Registro>();
                var motoristaCollection = _database.GetCollection <Motorista>();

                var result = await registroCollection
                             .AsQueryable()
                             .Where(r => !r.EstaCarregado && r.Data >= query.DataInicial && r.Data <= query.DataFinal)
                             .Join(motoristaCollection,
                                   registro => registro.MotoristaId,
                                   motorista => motorista.Id,
                                   (registro, motorista) => new { Registro = registro, Motorista = motorista })
                             .ToListAsync();

                var response = result.GroupBy(x => x.Motorista.Cpf,
                                              (key, values) => new ResponseModel {
                    Motorista = values.First().Motorista, Registros = values.Select(r => r.Registro)
                })
                               .ToList();

                return(response);
            }
Пример #2
0
            public Task <List <Registro> > Handle(Query query)
            {
                var registroCollection = _database.GetCollection <Registro>();

                int page     = query.Page ?? 1;
                int pageSize = query.PageSize ?? 10;

                return(registroCollection.AsQueryable()
                       .Where(r => r.MotoristaId == query.MotoristaId)
                       .Skip((page - 1) * pageSize)
                       .Take(pageSize)
                       .ToListAsync());
            }
Пример #3
0
        private async Task FetchPastHashes()
        {
            var col    = _mongo.GetCollection <BsonDocument>("pastebin", "pastes");
            var hashes = await col.Find(Builders <BsonDocument> .Filter.Empty)
                         .Project("{pb_key : 1}")
                         .Sort(new BsonDocument("pb_key", 1))
                         .ToListAsync();

            hashes.ForEach(x =>
            {
                _hashCache.Add((string)x["pb_key"]);
            });
        }
Пример #4
0
            public Task Handle(Command command)
            {
                var registroCollection = _database.GetCollection <Registro>();

                return(registroCollection.InsertOneAsync(new Registro
                {
                    MotoristaId = command.MotoristaId,
                    Origem = command.Origem,
                    Destino = command.Destino,
                    EstaCarregado = command.EstaCarregado,
                    TipoCaminhao = command.TipoCaminhao,
                    Data = DateTime.Now
                }));
            }
Пример #5
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));
                    }
                }
            }
Пример #6
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());
            }
Пример #7
0
            public Task <Motorista> Handle(Query query)
            {
                var collection = _database.GetCollection <Motorista>();

                return(collection.AsQueryable().SingleOrDefaultAsync(m => m.Cpf == query.Cpf));
            }