public async Task <List <Coleta> > GetListColetaMotorista(int idMotorista, int idStatus) // Retorna coletas com o id selecionado { #region Controlers e variáveis ColetaVisualizaController visualizaControl = new ColetaVisualizaController(); HttpClient client = new HttpClient(); List <Coleta> _listaFiltrada; List <ColetaVisualiza> _listaVisualiza; #endregion try { // Seleciona todas as coletas var lista = await GetListColeta_Geral(idMotorista, idStatus); // Filtro 01 - Filtra as coletas pelo status 02 (disponível para envio de orçamentos) _listaFiltrada = lista.Where(i => i.IdStatus == 2).ToList(); if (idStatus == 0) // Coletas disponíveis ainda não visualizadas { #region Filtra coletas ainda não visualizadas // Filtro 02 - Filtra as coletas relacionadas ao motorista _listaVisualiza = await visualizaControl.GetListVisualiza(idMotorista); // Filtro 03 - Filtra as coletas não visualizadas #region Seleciona as coletas que não forem visualizadas // Seleciona os IDs das coletas visualizadas var listaVisualizaFiltrada = _listaVisualiza .Select(i => new { Valor = i.IdColeta }).ToList(); // Transforma a lista anonima de status acima, em uma lista de inteiros (para a comparação) // List<int> listStatus = new List<int>(listaVisualizaFiltrada); // Filtro 04 - Filtra as coletas que foram visualizadas // var _listaFiltra = _listaFiltrada.Where(i => !listStatus.Contains(i.IdColeta)); //var teste = _listaFiltra.Where(i => listStatus.Contains(i.IdColeta)).ToList(); return(_listaFiltrada); #endregion #endregion } return(_listaFiltrada); } catch (Exception ex) { throw ex; } }
public async Task <List <Coleta> > GetListColeta_Geral(int idMotorista, int idStatus) { // Retorna todas as coletas #region Variáveis e controllers List <Coleta> _lista = new List <Coleta>(); List <Coleta> _listaFiltrada; List <int> lista = new List <int>(); List <int> teste = new List <int>(); List <int> orca = new List <int>(); List <ColetaVisualiza> _listaVisualizada = new List <ColetaVisualiza>(); List <Orcamento> _listaOrcamento = new List <Orcamento>(); ColetaVisualizaController visualizaController = new ColetaVisualizaController(); OrcamentoController orcamentoController = new OrcamentoController(); #endregion try { var coleta = await GetList(); #region Verifica as coletas visualizadas pelo motorista var listaVisualizada = await visualizaController.GetListVisualiza(idMotorista); // Captura as coletas visualizadas // Captura os IDs das coletas visualizadas pelo motorista teste = listaVisualizada.Select(i => i.IdColeta).ToList(); #endregion #region Verifica as coletas que já foram orçadas var orcadas = await orcamentoController.GetListOrcamento(); // todos os orçamentos orcadas = orcadas.Where(l => l.IdMotorista == idMotorista).ToList(); // todas as coletas orçadas pelo motorista var idOrcadas = orcadas.Select(l => l.IdColeta).ToList(); // IDs das coletas orçadas #endregion if (idStatus == 0) // Coletas Não Visualizadas { #region Verifica as coletas visualizadas pelo motorista // Filtra as coletas não visualizadas e com status 2 (Disponíveis para envio de orçamento) _listaFiltrada = coleta.Where(l => !teste.Contains(l.IdColeta)) .Where(l => l.IdStatus == 2) .ToList(); #endregion return(_listaFiltrada); } else if (idStatus == 1) // Coletas Visualizadas { #region Verifica as coletas visualizadas pelo motorista e que ainda não enviou orçamento // Filtra as coletas não visualizadas e com status 2 (Disponíveis para envio de orçamento) _listaFiltrada = coleta.Where(l => teste.Contains(l.IdColeta)) // coletas visualizdas .Where(l => l.IdStatus == 2) // que ainda recebm orçamento .Where(l => !idOrcadas.Contains(l.IdColeta)) // que não tenha recebido orçamento ainda .ToList(); #endregion return(_listaFiltrada); } else if (idStatus == 2) { #region Busca os orçamentos idStatus = 13; // IdStatus: 13 - Aguardando aprovação // Captura os orçamentos enviados pelo Motorista var listaOrca = await orcamentoController.GetListOrcamento(idStatus, idMotorista); orca = listaOrca.Select(i => i.IdColeta).ToList(); #endregion // Seleciona os IDs das coletas que tem orçamento e posteriormente a coleta _lista = coleta.Where(l => orca.Contains(l.IdColeta)).ToList(); return(_lista); } return(_lista); } catch (Exception ex) { throw ex; } }