using ChatApi.Infra; using ChatApi.Services.Bot.Structs; using ChatApi.Settings; using System.Text; namespace ChatApi.Services.Bot { public class ActionCreateCall : IActionCall { private readonly IHttpClientFactory _httpClientFactory; private readonly ChatRHSettings _configuration; private dynamic _callRH; public ActionCreateCall(IHttpClientFactory httpClientFactory, ChatRHSettings configuration) { _httpClientFactory = httpClientFactory; _configuration = configuration; } public Task> Call() { var httpClient =_httpClientFactory.CreateClient(); var url = new Uri(new Uri(_configuration.Url), _configuration.Create); var request = new HttpRequestMessage(HttpMethod.Post, url); request.Content = new StringContent(System.Text.Json.JsonSerializer.Serialize(_callRH), Encoding.UTF8, "application/json"); var response = httpClient.SendAsync(request).Result; if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().Result; return Task.FromResult(Result.Ok(content)); } var errorContent = ""; try { errorContent = response.Content.ReadAsStringAsync().Result; } catch (Exception ex) { errorContent = "Náo foi possivel criar sua solicitação. Reinicie."; } return Task.FromResult(Result.Fail(errorContent)); } public Task Populate(Dictionary? knowParameters, Dictionary answers) { if (knowParameters == null) return Task.FromResult(Result.Fail("Nome e/ou email não foram informados.")); _callRH = new { Nome = knowParameters["Nome"], Email = answers[2], WhatsApp = answers[1], TipoSolicitacao = answers[3], Descricao = answers[4], }; return Task.FromResult(Result.Ok()); } } }