public async Task <dynamic> Get(string companyName)
        {
            if (CheckClientSecret())
            {
                try
                {
                    using (HttpClient client = new HttpClient())
                        using (Entities db = new Entities())
                        {
                            CompanyRoot.Company company = await CompanySearch.GetCompany(client, companyName, db);

                            EngagementsRoot engagementsRoot = await EngagementsSearch.GetEngagements(client, companyName, db, company.Results.FirstOrDefault().Id);

                            List <EngagementsDTO> allEngagementsDTO = new List <EngagementsDTO>();

                            for (int i = 0; i < engagementsRoot.Results.Count; i++)
                            {
                                allEngagementsDTO.Add(new EngagementsDTO(engagementsRoot.Results[i]));
                            }

                            return(allEngagementsDTO);
                        }
                }
                catch (Exception ex)
                {
                    return(ex);
                }
            }
            else
            {
                return(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
        }
        public static async Task <dynamic> GetEngagements(HttpClient client, string companyName, Entities db, string companyID)
        {
            string alias;

            try
            {
                alias = AliasMethods.GetAlias(companyName, db, "HubSpot");
            }
            catch
            {
                return(new ArgumentException($"No HubSpot alias found for the company name {companyName}"));
            }

            string uri = $"https://api.hubapi.com/engagements/v1/engagements/associated/COMPANY/{companyID}/paged?limit=100&hapikey=" + ConfigDictionary.Config()["HubSpotAPIKey"];

            try
            {
                HttpResponseMessage response = await client.GetAsync(uri);

                string responseData = await response.Content.ReadAsStringAsync();

                EngagementsRoot engagementsData = JsonConvert.DeserializeObject <EngagementsRoot>(responseData);

                while (engagementsData.HasMore)
                {
                    engagementsData = await ChainedEngagementsRequest(engagementsData, companyID, client);
                }

                return(engagementsData);
            }
            catch (HttpRequestException ex)
            {
                return(ex);
            }
        }
        public static async Task <EngagementsRoot> ChainedEngagementsRequest(EngagementsRoot engagementsData, string companyID, HttpClient client)
        {
            string uri = $"https://api.hubapi.com/engagements/v1/engagements/associated/COMPANY/{companyID}/paged?limit=100&offset={engagementsData.Offset}&hapikey=" + ConfigDictionary.Config()["HubSpotAPIKey"];

            HttpResponseMessage response = await client.GetAsync(uri);

            string responseData = await response.Content.ReadAsStringAsync();

            engagementsData = JsonConvert.DeserializeObject <EngagementsRoot>(responseData);

            return(engagementsData);
        }