Beispiel #1
0
        public static async Task <dynamic> GetAllLists(HttpClient client, Queue <string> folderIDs)
        {
            Queue <List> allLists = new Queue <List>();

            while (folderIDs.Count > 0)
            {
                string uri = $"{ConfigDictionary.Config()["ClickUpAPIURLRoot"]}/folder/{folderIDs.Dequeue()}/list?archived=false";

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

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

                    ListsRoot listsRoot = JsonConvert.DeserializeObject <ListsRoot>(responseData);

                    for (int i = 0; i < listsRoot.Lists.Count; i++)
                    {
                        allLists.Enqueue(listsRoot.Lists[i]);
                    }
                }
                catch (HttpRequestException ex)
                {
                    return(ex);
                }
            }

            return(allLists);
        }
Beispiel #2
0
        public static async Task <dynamic> GetAllFolders(HttpClient client)
        {
            Queue <string> uris = new Queue <string>(2);

            List <Folder> allFolders = new List <Folder>();

            string clickUpAPIURLRoot = ConfigDictionary.Config()["ClickUpAPIURLRoot"];

            uris.Enqueue($"{clickUpAPIURLRoot}/space/{ConfigDictionary.Config()["ClickUpProjectsSpaceID"]}/folder?archived=false");

            uris.Enqueue($"{clickUpAPIURLRoot}/space/{ConfigDictionary.Config()["ClickUpRetainersSpaceID"]}/folder?archived=false");

            try
            {
                while (uris.Count > 0)
                {
                    HttpResponseMessage response = await client.GetAsync(uris.Dequeue());

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

                    FoldersRoot folders = JsonConvert.DeserializeObject <FoldersRoot>(responseData);

                    for (int i = 0; i < folders.Folders.Count; i++)
                    {
                        allFolders.Add(folders.Folders[i]);
                    }
                }

                return(allFolders);
            }
            catch (HttpRequestException ex)
            {
                return(ex);
            }
        }
        public async Task <dynamic> Get(string companyName)
        {
            if (CheckClientSecret())
            {
                using (HttpClient client = new HttpClient())
                    using (Entities db = new Entities())
                    {
                        client.DefaultRequestHeaders.Add("Authorization", ConfigDictionary.Config()["ClickUpAPIKey"]);

                        Queue <string> folderIDs = await Folders.ReturnFolderID(client, companyName, db);

                        if (folderIDs.Any())
                        {
                            Queue <string> listIDs = await Lists.ReturnListIDs(client, folderIDs);

                            if (listIDs.Any())
                            {
                                return(await Tasks.GetAllTasks(client, listIDs));
                            }
                            else
                            {
                                return(new ArgumentException("No lists found"));
                            }
                        }
                        else
                        {
                            return(new ArgumentException($"No folders found for the company: {companyName}"));
                        }
                    }
            }
            else
            {
                return(new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden));
            }
        }
Beispiel #4
0
        private bool CheckClientSecret()
        {
            IEnumerable <string> headerValuesClientSecret;
            IEnumerable <string> headerValuesClientID;

            if (Request
                .Headers
                .TryGetValues("client-secret", out headerValuesClientSecret) &&
                Request
                .Headers
                .TryGetValues("client-id", out headerValuesClientID))
            {
                if (string.Equals(headerValuesClientSecret.FirstOrDefault(), ConfigDictionary.Config()["ClientSecret"]) &&
                    string.Equals(headerValuesClientID.FirstOrDefault(), ConfigDictionary.Config()["ClientID"]))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
        public static async Task <dynamic> GetContacts(HttpClient client, CompanyRoot.Result company)
        {
            List <Filter> filters = new List <Filter>();

            Filter nameFilter = new Filter("associatedcompanyid", "EQ", company.Id);

            filters.Add(nameFilter);

            string[] searchProps = new string[] { "firstname", "lastname", "email", "phone" };

            RequestBody search = new RequestBody(filters, searchProps.ToList());

            string searchJson = JsonConvert.SerializeObject(search);

            StringContent searchData = new StringContent(searchJson, Encoding.UTF8, "application/json");

            string uri = $"{ConfigDictionary.Config()["HubSpotAPIURLRoot"]}/contacts/search?hapikey={ConfigDictionary.Config()["HubSpotAPIKey"]}";

            try
            {
                HttpResponseMessage response = await client.PostAsync(uri, searchData);

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

                ContactRoot.Contact contactsData = JsonConvert.DeserializeObject <ContactRoot.Contact>(responseData);

                return(contactsData);
            }
            catch (HttpRequestException ex)
            {
                return(ex);
            }
        }
Beispiel #6
0
        public static async Task <dynamic> GetAllCampaigns(string companyName, Entities db, HttpClient client)
        {
            string alias;

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

            string url = $"{ConfigDictionary.Config()["FacebookAPIURLRoot"]}/{ConfigDictionary.Config()["FacebookAPIVersion"]}/act_{alias}/campaigns?access_token={ConfigDictionary.Config()["FacebookAccessToken"]}";

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

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

                AllCampaignsRoot allCampaignsRoot = JsonConvert.DeserializeObject <AllCampaignsRoot>(responseData);

                return(allCampaignsRoot);
            }
            catch (HttpRequestException ex)
            {
                return(ex);
            }
        }
        public async Task <dynamic> Get(string companyName)
        {
            if (CheckClientSecret())
            {
                using (HttpClient client = new HttpClient())
                    using (Entities db = new Entities())
                    {
                        if (db.StoreCustomDatas.Any(x => x.StoreName == companyName) &&
                            db.StoreCustomDatas.FirstOrDefault(x => x.StoreName == companyName).ShopifyID != null)
                        {
                            StoreCustomData store = db.StoreCustomDatas.FirstOrDefault(x => x.StoreName == companyName);

                            ShopifyCredential credentials = db
                                                            .ShopifyCredentials
                                                            .Where(x => x.ID == store.ShopifyID)
                                                            .FirstOrDefault();

                            client.DefaultRequestHeaders.Add("X-Shopify-Access-Token", credentials.Password);

                            string shopifyAPIVersion = ConfigDictionary.Config()["ShopifyAdminAPIVersion"];

                            DateTimeOffset thisMonth = new DateTimeOffset(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0, TimeSpan.Zero);

                            DateTimeOffset lastMonth = thisMonth.AddMonths(-1);

                            DateTimeOffset monthBeforeLast = thisMonth.AddMonths(-2);

                            try
                            {
                                int?ordersThisMonth = await OrdersMethods.OrdersCount(client, credentials.HostName, shopifyAPIVersion, thisMonth.ToString("yyyy-MM-ddTHH:mm:ss zzz"));

                                int?ordersLastMonth = await OrdersMethods.OrdersCount(client, credentials.HostName, shopifyAPIVersion, lastMonth.ToString("yyyy-MM-ddTHH:mm:ss zzz"));

                                int?ordersMonthBeforeLast = await OrdersMethods.OrdersCount(client, credentials.HostName, shopifyAPIVersion, monthBeforeLast.ToString("yyyy-MM-ddTHH:mm:ss zzz"));

                                return(new OrdersCountDTO(ordersThisMonth, ordersLastMonth, ordersMonthBeforeLast));
                            }
                            catch (Exception ex)
                            {
                                return(ex);
                            }
                        }
                        else
                        {
                            return(new ArgumentException($"No store was found with the name {companyName}"));
                        }
                    }
            }
            else
            {
                return(new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden));
            }
        }
Beispiel #8
0
        public async Task <dynamic> Get(string companyName)
        {
            if (CheckClientSecret())
            {
                using (HttpClient client = new HttpClient())
                    using (Entities db = new Entities())
                    {
                        client.DefaultRequestHeaders.Add("X-Api-Key", ConfigDictionary.Config()["EverHourAPIKey"]);

                        return(await Projects.GetProject(companyName, client, db));
                    }
            }
            else
            {
                return(new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden));
            }
        }
Beispiel #9
0
        public async Task <dynamic> GetAllTasks(HttpClient client, string projectID)
        {
            string url = ConfigDictionary.Config()["BugHerdURLRoot"] + $"/projects/{projectID}/tasks.json";

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

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

                return(JsonConvert.DeserializeObject <TasksRoot>(responseData));
            }
            catch
            {
                return(null);
            }
        }
Beispiel #10
0
        public static async Task <dynamic> GetCampaignInsights(string campaignID, HttpClient client)
        {
            string url = $"{ConfigDictionary.Config()["FacebookAPIURLRoot"]}/{ConfigDictionary.Config()["FacebookAPIVersion"]}/{campaignID}/insights?date_preset=this_month&access_token={ConfigDictionary.Config()["FacebookAccessToken"]}";

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

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

                InsightsRoot insightsRoot = JsonConvert.DeserializeObject <InsightsRoot>(responseData);

                return(insightsRoot);
            }
            catch (Exception ex)
            {
                return(ex);
            }
        }
Beispiel #11
0
        public static async Task <dynamic> GetHubSpotInfo(HttpClient client, Entities db, string companyName, string[] searchProps)
        {
            string alias;

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

            List <Filter> filters = new List <Filter>();

            Filter nameFilter = new Filter("name", "EQ", alias);

            filters.Add(nameFilter);

            RequestBody search = new RequestBody(filters, searchProps.ToList());

            string searchJson = JsonConvert.SerializeObject(search);

            StringContent searchData = new StringContent(searchJson, Encoding.UTF8, "application/json");

            string uri = $"{ConfigDictionary.Config()["HubSpotAPIURLRoot"]}/companies/search?hapikey={ConfigDictionary.Config()["HubSpotAPIKey"]}";

            try
            {
                HttpResponseMessage response = await client.PostAsync(uri, searchData);

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

                CompanyRoot.Company companyData = JsonConvert.DeserializeObject <CompanyRoot.Company>(responseData);

                return(companyData);
            }
            catch (HttpRequestException ex)
            {
                return(ex);
            }
        }
Beispiel #12
0
        public async Task <dynamic> GetProjectID(string companyName, HttpClient client, Entities db)
        {
            try
            {
                string alias = AliasMethods.GetAlias(companyName, db, "BugHerd");

                string uri = $"{ConfigDictionary.Config()["BugHerdURLRoot"]}/projects/active.json";

                HttpResponseMessage response = await client.GetAsync(uri);

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

                ProjectsRoot allProjects = JsonConvert.DeserializeObject <ProjectsRoot>(responseData);

                return(allProjects.Projects.FirstOrDefault(x => x.Name == alias).ID);
            }
            catch
            {
                return(null);
            }
        }
Beispiel #13
0
        public static async Task <dynamic> GetProject(string companyName, HttpClient client, Entities db)
        {
            try
            {
                string alias = AliasMethods.GetAlias(companyName, db, "Everhour");

                string uri = ConfigDictionary.Config()["EverHourURLRoot"] + $"/projects?query={alias}";

                HttpResponseMessage response = await client.GetAsync(uri);

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

                ProjectRoot projectRoot = JsonConvert.DeserializeObject <List <ProjectRoot> >(responseData).FirstOrDefault();

                return(new ProjectDTO(projectRoot));
            }
            catch (Exception ex)
            {
                return(ex);
            }
        }
        public async Task <dynamic> Get(string companyName)
        {
            if (CheckClientSecret())
            {
                using (HttpClient client = new HttpClient())
                {
                    string username = ConfigDictionary.Config()["BugHerdAPIKey"];

                    string password = ConfigDictionary.Config()["BugHerdAPIPassword"];

                    byte[] authToken = Encoding.ASCII.GetBytes($"{username}:{password}");

                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(authToken));

                    string projectID = await projectsMethods.GetProjectID(companyName, client, db);

                    if (!string.IsNullOrEmpty(projectID))
                    {
                        try
                        {
                            return(await tasksMethods.GetAllTasks(client, projectID));
                        }
                        catch (Exception ex)
                        {
                            return(ex);
                        }
                    }
                    else
                    {
                        return(new ArgumentException($"No projects found for the company: {companyName}"));
                    }
                }
            }
            else
            {
                return(new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden));
            }
        }
Beispiel #15
0
        public static async Task <dynamic> GetAllTasks(HttpClient client, Queue <string> listIDs)
        {
            List <TaskDTO> allTasks = new List <TaskDTO>();

            try
            {
                while (listIDs.Count > 0)
                {
                    string uri = $"{ConfigDictionary.Config()["ClickUpAPIURLRoot"]}/list/{listIDs.Dequeue()}/task?archived=false";

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

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

                        TasksRoot tasks = JsonConvert.DeserializeObject <TasksRoot>(responseData);

                        for (int i = 0; i < tasks.Tasks.Count; i++)
                        {
                            allTasks.Add(new TaskDTO(tasks.Tasks[i]));
                        }
                    }
                    catch
                    {
                        throw;
                    }
                }

                return(allTasks);
            }
            catch (Exception ex)
            {
                return(ex);
            }
        }
Beispiel #16
0
        public async Task <dynamic> Get(string companyName)
        {
            DateTime operationStarted = DateTime.Now;

            using (HttpClient client = new HttpClient())
                using (Entities db = new Entities())
                {
                    var result = await BulkAction.PerformBulkAction(client, companyName, db, ConfigDictionary.Config()["ShopifyAdminAPIVersion"]);

                    if (Equals(result.GetType(), typeof(string)))
                    {
                        return(BulkAction.WriteSalesData(result,
                                                         db
                                                         .StoreCustomDatas
                                                         .Where(x => x.StoreName == companyName)
                                                         .FirstOrDefault()
                                                         .StoreID,
                                                         db,
                                                         operationStarted));
                    }
                    else
                    {
                        return(result);
                    }
                }
        }
Beispiel #17
0
        public async Task <dynamic> Get(string companyName)
        {
            if (CheckClientSecret())
            {
                DateTime operationStarted = DateTime.Now;

                Entities db = new Entities();

                using (HttpClient client = new HttpClient())
                {
                    var result = await BulkAction.PerformBulkAction(client, companyName, db, ConfigDictionary.Config()["ShopifyAdminAPIVersion"]);

                    if (Equals(result.GetType(), typeof(string)))
                    {
                        StoreCustomData store = db.StoreCustomDatas.FirstOrDefault(x => x.StoreName == companyName);

                        var dbResult = BulkAction.WriteSalesData(result,
                                                                 store.StoreID,
                                                                 db,
                                                                 operationStarted);

                        if (!Equals(dbResult.GetType(), typeof(Exception)))
                        {
                            return(db.SalesDatas.Where(x => x.StoreID == store.StoreID).OrderBy(x => x.Date));
                        }
                        else
                        {
                            return(new ArgumentException("An error occurred while writing to the database."));
                        }
                    }
                    else
                    {
                        return(result);
                    }
                }
            }
            else
            {
                return(new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden));
            }
        }
        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);
        }
        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);
            }
        }