/// <summary> /// Obtém as notas de compra por usuário /// </summary> /// <param name="idUsuario">Id do usuário</param> /// <param name="datainicial">data inicial de pesquisa</param> /// <param name="dataFinal">data final da pesquisa</param> /// <param name="tokenCancelamento">O token de cancelamento para a operação assíncrona/param> /// <returns>Uma lista de notas de compras acrescida da ação do usuário</returns> public async Task <NotaDeCompraPaginaModel> ObterDadosAsync(long idUsuario, DateTime datainicial, DateTime dataFinal, CancellationToken tokenCancelamento = default) { UsuarioModel usuario = await usuarioServices.ObterAsync(idUsuario); AcaoUsuario acaoUsuario = usuario.Papel == "V" ? AcaoUsuario.Vistar : AcaoUsuario.Aprovar; List <NotaDeCompra> notaDeComprasTemp = await unitOfWork.NotaDeCompraRepositorio .Todos(predicado : x => x.DataEmissao.Date >= datainicial && x.DataEmissao.Date <= dataFinal && x.ValorTotal >= usuario.ValorMinimo && x.ValorTotal <= usuario.ValorMaximo && x.Status == false, carregamentoAntecipado : x => x.Include(v => v.HistoricoAprovacoes) .ThenInclude(u => u.Usuario)) .ToListAsync(tokenCancelamento); List <NotaDeCompraModel> notaDeCompras = new List <NotaDeCompraModel>(); notaDeComprasTemp.ForEach(x => { if (!x.HistoricoAprovacoes.Any(h => h.Usuario.Id == idUsuario)) { StatusNotaDeCompra statusNotaDeCompra = ValidarStatusNotaDeCompra(x); if (usuario.Papel == "V" && statusNotaDeCompra == StatusNotaDeCompra.Pendente) { notaDeCompras.Add(mapper.Map <NotaDeCompraModel>(x)); } else if (usuario.Papel == "A" && statusNotaDeCompra == StatusNotaDeCompra.AguardandoAprovacao) { notaDeCompras.Add(mapper.Map <NotaDeCompraModel>(x)); } } }); NotaDeCompraPaginaModel notaDeCompraPaginaModel = new NotaDeCompraPaginaModel { AcaoUsuario = acaoUsuario, NotaDeCompraModels = notaDeCompras }; return(notaDeCompraPaginaModel); }
/// <summary> /// Obtém as notas de compra por usuário /// </summary> /// <param name="idUsuario">Id do usuário</param> /// <param name="datainicial">data inicial de pesquisa</param> /// <param name="dataFinal">data final da pesquisa</param> /// <param name="tokenCancelamento">O token de cancelamento para a operação assíncrona/param> /// <returns>Uma lista de notas de compras acrescida da ação do usuário</returns> //public async Task<(AcaoUsuario acaoUsuario, List<NotaDeCompraModel> notaDeCompras)> ObterDadosAsync(long idUsuario, DateTime datainicial, DateTime dataFinal, CancellationToken tokenCancelamento = default) public async Task <NotaDeCompraPaginaModel> ObterDadosAsync(long idUsuario, DateTime datainicial, DateTime dataFinal, CancellationToken tokenCancelamento = default) { string url = $"https://localhost:44376/api/NotaDeCompra/obter-notas?idusuario={idUsuario}&datainicial={datainicial.ToString("yyyy-MM-dd")}&dataFinal={dataFinal.ToString("yyyy-MM-dd")}"; HttpResponseMessage response = await HttpClient.GetAsync(url); if (response.IsSuccessStatusCode) { string responseBodyAsText = await response.Content.ReadAsStringAsync(); NotaDeCompraPaginaModel notaDeCompraPaginaModel = JsonConvert.DeserializeObject <NotaDeCompraPaginaModel>(responseBodyAsText); return(notaDeCompraPaginaModel); } else { return(new NotaDeCompraPaginaModel { AcaoUsuario = AcaoUsuario.Vistar, NotaDeCompraModels = null }); } }