Example #1
0
        /// <summary>
        /// New API format
        /// </summary>
        /// <returns></returns>
        private static async Task ExecuteAsync()
        {
            // CONFIGURE YOUR ASANA API TOKEN IN APPSETTINGS.CONFIG FILE
            var startTime = DateTime.Now;

            Console.WriteLine("# Asana - Async Method #");
            var apiToken = GetApiToken();
            var asana    = new Asana(apiToken, AuthenticationType.Basic, errorCallback);

            var me = await asana.GetMeAsync();

            Console.WriteLine("Hello, " + me.Name);

            var workspaces = await asana.GetWorkspacesAsync();

            foreach (var workspace in workspaces)
            {
                Console.WriteLine("Workspace: " + workspace.Name);

                var teams = await asana.GetTeamsInWorkspaceAsync(workspace);

                foreach (var team in teams)
                {
//                    if (team.Name != "Projetos Especiais")
//                        continue;

                    Console.WriteLine("  Team: " + team.Name);

                    // Projects
                    var projects = await asana.GetProjectsInTeamAsync(team);

                    foreach (AsanaProject project in projects)
                    {
                        Console.WriteLine("    Project: " + project.Name);

                        var tasks = await asana.GetTasksInAProjectAsync(project);

                        foreach (AsanaTask task in tasks)
                        {
                            Console.WriteLine("      Task: " + task.Name);
                        }
                    }
                }
            }


            Console.WriteLine();
            Console.WriteLine("Execution time " + (DateTime.Now - startTime));
            Console.ReadLine();
        }
Example #2
0
        /// <summary>
        /// New API format - Parallel execution
        /// </summary>
        /// <returns></returns>
        private static async Task ExecuteParallelAsync()
        {
            // CONFIGURE YOUR ASANA API TOKEN IN APPSETTINGS.CONFIG FILE
            var startTime = DateTime.Now;

            Console.WriteLine("# Asana - Async Method #");
            var apiToken = GetApiToken();
            var asana    = new Asana(apiToken, AuthenticationType.Basic, errorCallback);

            // Parallel tasks
            var meTask = asana.GetMeAsync();

            var workspaces = await asana.GetWorkspacesAsync();

//            var workspacesConcurrentList = new ConcurrentQueue<AsanaWorkspace>(workspaces);
            var workspaceTasks = workspaces.Select(async workspace =>
            {
                var workSpaceInfo = new HierarchicalParallelExecutionData
                {
                    Info   = "Workspace: " + workspace.Name,
                    Object = workspace
                };

                // Teams
                var teams = await asana.GetTeamsInWorkspaceAsync(workspace);
//                var teamsConcurrentList = new ConcurrentQueue<AsanaTeam>(teams);
                var teamTasks = teams.Select(async team =>
                {
//                    if (team.Name != "Projetos Especiais")
//                        return;

                    var teamInfo = new HierarchicalParallelExecutionData
                    {
                        Info   = "  Team: " + team.Name,
                        Object = team
                    };
                    workSpaceInfo.Items.Add(teamInfo);

                    // Projects
                    var projects = await asana.GetProjectsInTeamAsync(team);
//                    var projectsConcurrentList = new ConcurrentQueue<AsanaProject>(projects);
                    var projectTasks = projects.Select(async project =>
                    {
                        var projectInfo = new HierarchicalParallelExecutionData
                        {
                            Info   = "    Project: " + project.Name,
                            Object = team
                        };
                        teamInfo.Items.Add(projectInfo);

                        // Taks
                        var tasks = await asana.GetTasksInAProjectAsync(project);
                        foreach (var task in tasks)
                        {
                            var taskInfo = new HierarchicalParallelExecutionData
                            {
                                Info   = "      Task: " + task.Name,
                                Object = team
                            };
                            projectInfo.Items.Add(taskInfo);
                        }
                    });
                    await Task.WhenAll(projectTasks);
                });
                await Task.WhenAll(teamTasks);

                return(workSpaceInfo);
            });
            var hierarchicalCall = await Task.WhenAll(workspaceTasks);

            var me = meTask.Result;

            Console.WriteLine("Hello, " + me.Name);

            foreach (var item in hierarchicalCall)
            {
                item.WriteToConsole();
            }

            Console.WriteLine();
            Console.WriteLine("Execution time " + (DateTime.Now - startTime));
            Console.ReadLine();
        }