Esempio n. 1
0
 public static async Task <TimeEntry> CopyTimeEntry(HarvestApi.HarvestClient client, TimeEntry entryToCopy, decimal?hour, string notes = null)
 {
     return(await client.CreateTimeEntry(
                entryToCopy.Project.Id,
                entryToCopy.Task.Id,
                hour.HasValue?hour.Value : entryToCopy.Hours,
                notes != null?notes : entryToCopy.Notes));
 }
Esempio n. 2
0
        public static async Task <InteractiveProjectAndTaskSelectionResult> SelectProjectAndTask(
            HarvestApi.HarvestClient client,
            HarvestApi.Model.User me)
        {
            var myProjects = await client.GetAllProjectsAssignment(me.Id);

            var allClients = myProjects.ProjectAssignments
                             .Select(pa => pa.Client)
                             .Distinct()
                             .OrderBy(c => c.Name)
                             .ToArray();

            var selectedClient = SelectionHelper.Select(allClients, c => {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write(c.Name);
                Console.ResetColor();
                Console.WriteLine();
            });

            if (selectedClient == null)
            {
                Console.WriteLine("Aborting.");
                return(null);
            }

            var projects = myProjects.ProjectAssignments
                           .Where(pa => pa.Client.Id == selectedClient.Id)
                           .Select(pa => pa.Project)
                           .Distinct()
                           .OrderBy(p => p.Name)
                           .ToArray();
            var selectedProject = SelectionHelper.Select(projects, p => {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write(p.Name);
                Console.ResetColor();
                Console.WriteLine();
            });

            if (selectedProject == null)
            {
                return(null);
            }

            var tasks = myProjects.ProjectAssignments
                        .Where(pa => pa.Project.Id == selectedProject.Id)
                        .SelectMany(pa => pa.TaskAssignments)
                        .Distinct()
                        .OrderBy(ta => ta.Task.Name)
                        .ToArray();

            var selectedTask = SelectionHelper.Select(tasks, t => {
                Console.ForegroundColor = ConsoleColor.Magenta;
                Console.Write(t.Task.Name);
                Console.ResetColor();
                Console.WriteLine();
            })?.Task;

            if (selectedTask == null)
            {
                Console.WriteLine("Aborting.");
                return(null);
            }

            return(new InteractiveProjectAndTaskSelectionResult(selectedProject.Id, selectedTask.Id));
        }