public async Task <TrocaPerfilDto> TrocaPerfil(string authenticationToken, Guid perfil)
        {
            ResetarCabecalhoAutenticado(authenticationToken);

            var resposta = await httpClient.GetAsync(EndpointsNovoSGP.TrocarPerfilEndpoint(perfil.ToString()));

            return(await TrataRetorno <TrocaPerfilDto>(resposta));
        }
        public async Task <AutenticacaoRevalidarRetornoDto> RevalidarAutenticacao(string token)
        {
            ResetarCabecalhoAutenticado(token);

            var resposta = await httpClient.PostAsync(EndpointsNovoSGP.RevalidarAutenticacao(), null);

            return(await TrataRetorno <AutenticacaoRevalidarRetornoDto>(resposta));
        }
        public async Task <IEnumerable <PrioridadePerfilDto> > ListarPefis(string authenticationToken, string login)
        {
            ResetarCabecalhoAutenticado(authenticationToken);

            var resposta = await httpClient.GetAsync(EndpointsNovoSGP.ListarPerfisEndpoint(login));

            return(await TrataRetorno <IEnumerable <PrioridadePerfilDto> >(resposta));
        }
        public async Task <MeusDadosDto> MeusDados(string authenticationToken)
        {
            ResetarCabecalhoAutenticado(authenticationToken);

            var resposta = await httpClient.GetAsync(EndpointsNovoSGP.MeusDadosEndpoint());

            return(await TrataRetorno <MeusDadosDto>(resposta));
        }
        public async Task <IEnumerable <MenuRetornoDto> > ObterMenus(string token)
        {
            ResetarCabecalhoAutenticado(token);

            var resposta = await httpClient.GetAsync(EndpointsNovoSGP.Menus());

            return(await TrataRetorno <IEnumerable <MenuRetornoDto> >(resposta));
        }
        public NovoSGPAPI()
        {
            httpClient = new HttpClient
            {
                BaseAddress = new Uri(EndpointsNovoSGP.BaseSGPEndpoint("v1"))
            };

            httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
        }
        public async Task <IList <AbrangenciaDreRetornoDto> > AbrangenciaDres(string userName, int?anoLetivo)
        {
            var loggedUser = await Authentication.GetLoggedUser(userName);

            ResetarCabecalhoAutenticado(loggedUser.RefreshToken);

            var consideraHistorico = anoLetivo.HasValue && !DateTime.Now.Year.Equals(anoLetivo.Value);

            var resposta = await httpClient.GetAsync(EndpointsNovoSGP.AbrangenciaDres(consideraHistorico, anoLetivo));

            return(await TrataRetorno <IList <AbrangenciaDreRetornoDto> >(resposta));
        }
        public async Task <UsuarioAutenticacaoRetornoDto> Autenticar(string login, string senha)
        {
            try
            {
                ResetarCabecalho();

                var valoresParaEnvio = new Dictionary <string, string>
                {
                    { "Login", login },
                    { "Senha", senha }
                };

                var resposta = await httpClient.PostAsync(EndpointsNovoSGP.AutenticacaoEndpoint(), new StringContent(JsonConvert.SerializeObject(valoresParaEnvio), Encoding.UTF8, "application/json-patch+json"));

                return(await TrataRetorno <UsuarioAutenticacaoRetornoDto>(resposta));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw;
            }
        }