예제 #1
0
        private static async Task Execute(string timerange, bool summary, bool includeIds, bool outputJson, string search)
        {
            var client = Program.GetHarvestClient();

            var me = await client.GetCurrentUser();

            DateTime from  = DateTime.Today;
            DateTime until = DateTime.Today;

            if (timerange != null)
            {
                TimeRangeHelper.GetTimerangeFromString(timerange, out from, out until);
            }

            var entries = await client.GetTimeEntriesForUser(me.Id, from, until);

            var filtered =
                entries.TimeEntries;

            if (string.IsNullOrEmpty(search) == false)
            {
                filtered = filtered
                           .Where(e => e.Project.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
                                  e.Client.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
                                  e.Task.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
                                  (e.Notes != null && e.Notes.Contains(search, StringComparison.OrdinalIgnoreCase)))
                           .ToArray();
            }

            if (outputJson)
            {
                Console.WriteLine(JsonConvert.SerializeObject(filtered, Formatting.Indented));
            }
            else
            {
                decimal hours = 0.0m;
                foreach (var e in filtered)
                {
                    TimeEntry_Show.ShowTimeEntry(e, includeIds);
                    hours += e.Hours;
                }

                if (summary)
                {
                    Console.WriteLine();
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write("Total: ");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.Write(hours.ToString());
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write(" hours");
                    Console.ResetColor();
                    Console.WriteLine();
                }
            }
        }
예제 #2
0
        private static async Task Execute(long?id, decimal?hours, string timerange, string search, string notes)
        {
            var client = Program.GetHarvestClient();

            DateTime from  = DateTime.Today;
            DateTime until = DateTime.Today;

            if (timerange != null)
            {
                TimeRangeHelper.GetTimerangeFromString(timerange, out from, out until);
            }
            else
            {
                TimeRangeHelper.GetTimerangeFromString("last30days", out from, out until);
            }

            TimeEntry entryToCopy = null;

            if (id.HasValue)
            {
                entryToCopy = await client.GetTimeEntry(id.Value);
            }
            else
            {
                var me = await client.GetCurrentUser();

                var entries = await client.GetTimeEntriesForUser(me.Id, from, until);

                var filtered =
                    entries.TimeEntries;

                if (string.IsNullOrEmpty(search) == false)
                {
                    filtered = filtered
                               .Where(e => e.Project.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
                                      e.Client.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
                                      e.Task.Name.Contains(search, StringComparison.OrdinalIgnoreCase) ||
                                      (e.Notes != null && e.Notes.Contains(search, StringComparison.OrdinalIgnoreCase)))
                               .ToArray();
                }

                filtered = filtered.ToArray();
                if (filtered.Length > 1)
                {
                    entryToCopy = SelectionHelper.Select(filtered, TimeEntry_Show.ShowTimeEntry);
                    if (entryToCopy == null)
                    {
                        Console.WriteLine("Aborting.");
                        return;
                    }
                }
                else
                {
                    entryToCopy = filtered[0];
                }
            }

            TimeEntry newEntry = await CopyTimeEntry(client, entryToCopy, hours);

            TimeEntry_Show.ShowTimeEntry(newEntry);
        }
 public void TimeRangeString_LongTerm_AreEqual()
 {
     // assert
     Assert.AreEqual("long_term", TimeRangeHelper.TimeRangeString(TimeRange.LongTerm));
 }
 public void TimeRangeString_MediumTerm_AreEqual()
 {
     // assert
     Assert.AreEqual("medium_term", TimeRangeHelper.TimeRangeString(TimeRange.MediumTerm));
 }
 public void TimeRangeString_ShortTerm_AreEqual()
 {
     // assert
     Assert.AreEqual("short_term", TimeRangeHelper.TimeRangeString(TimeRange.ShortTerm));
 }