예제 #1
0
 public static bool IsBillable(this DetailedReportDatum entry)
 {
     if (string.IsNullOrEmpty(entry.Project))
     {
         return(false);
     }
     return(!NonBillableProjects.Any(x => (entry.Project ?? "").Contains(x, StringComparison.OrdinalIgnoreCase)));
 }
예제 #2
0
        public List <DetailedReportDatum> LoadEntriesLocallyAndFix()
        {
            var entries      = JsonConvert.DeserializeObject <List <DetailedReportDatum> >(File.ReadAllText("entries.json")) ?? new List <DetailedReportDatum>();
            var fixedEntries = new List <DetailedReportDatum>();

            foreach (var entry in entries)
            {
                var fixedEntry = entry;

                var startDate = new DateTime(fixedEntry.Start.Year, fixedEntry.Start.Month, fixedEntry.Start.Day, fixedEntry.Start.Hour, fixedEntry.Start.Minute, 0);
                var endDate   = new DateTime(fixedEntry.End.Year, fixedEntry.End.Month, fixedEntry.End.Day, fixedEntry.End.Hour, fixedEntry.End.Minute, 0);

                // dirty hack to work around time zones and time entries that start at 00:00 (usually holiday/vacation)
                while (startDate.Date != endDate.Date)
                {
                    startDate = startDate.AddHours(1);
                    endDate   = endDate.AddHours(1);
                }

                fixedEntry = new DetailedReportDatum(
                    fixedEntry.Id,
                    fixedEntry.ProjectId,
                    fixedEntry.TaskId,
                    fixedEntry.UserId,
                    fixedEntry.Description,
                    startDate,
                    endDate,
                    fixedEntry.Updated,
                    fixedEntry.DurationMs,
                    fixedEntry.User,
                    fixedEntry.UseStop,
                    fixedEntry.Client,
                    fixedEntry.Project,
                    fixedEntry.ProjectColor,
                    fixedEntry.ProjectHexColor,
                    fixedEntry.Task,
                    entry.BillableTimeMs,
                    fixedEntry.IsBillable,
                    fixedEntry.Currency,
                    fixedEntry.Tags
                    );

                fixedEntries.Add(fixedEntry);
            }

            return(fixedEntries);
        }
예제 #3
0
 public static bool IsLegacyVacationHolidaySick(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Feiertag, Krankenstand, Urlaub", StringComparison.OrdinalIgnoreCase));
 }
예제 #4
0
 public static bool IsSpecialVacation(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Sonderurlaub", StringComparison.OrdinalIgnoreCase));
 }
예제 #5
0
 public static bool IsPersonalHoliday(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Persönlicher Feiertag", StringComparison.OrdinalIgnoreCase));
 }
예제 #6
0
 public static bool IsSick(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Krankenstand", StringComparison.OrdinalIgnoreCase));
 }
예제 #7
0
 public static bool IsDoctor(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Arztbesuch", StringComparison.OrdinalIgnoreCase));
 }
예제 #8
0
 public static bool IsVacation(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Urlaub", StringComparison.InvariantCultureIgnoreCase));
 }
예제 #9
0
 public static bool IsHoliday(this DetailedReportDatum entry)
 {
     return((entry.Project ?? "").Equals("Feiertag", StringComparison.InvariantCultureIgnoreCase));
 }