public int Calculate(DateTime start, DateTime end, DurationFormatTypes format) { switch (format) { case DurationFormatTypes.Days: default: //TODO: more complicated logic to calculate duration. //do not calculate free days (holidays, weekends etc.); var time = end - start; var duration = time.Hours + (time.Days * _workdayLength); if (time.Minutes > 30) { duration++; } return duration; break; } }
/// <summary> /// Defines how to display duration. /// It can be configure to display hours, days etc. depending on durationFOrmat. /// </summary> public void InitialiseDurationFormat(DurationFormatTypes durationFormat) { _view.DurationColumn.AspectGetter = (obj) => { var workItem = (obj as WorkItem); if (workItem != null) { int duration = 0; foreach (var comment in workItem.Comments) { duration += _durationCalculator.Calculate(comment.StartTime, comment.EndTime, durationFormat); } return duration; } return string.Empty; }; }