Ejemplo n.º 1
0
        public async Task <StatusChangesTimeDto> GetStatusChangesTime(int forDocumentId = -1, DateTime?fromDate = null, DateTime?toDate = null)
        {
            var result = new StatusChangesTimeDto
            {
                FromDate = fromDate,
                ToDate   = toDate
            };

            Document document = null;

            if (forDocumentId != -1)
            {
                document = await docRepo.GetById(forDocumentId);

                if (document == null)
                {
                    return(result);
                }
                result.TargetDocument = mapper.Map <DocumentSummaryDto>(document);
            }

            if (document != null)
            {
                result.StatusChangesTime = reportingService.TimeBetweenStatusChanges(document.History);
            }
            else
            {
                var documents = filteringService.Filter(docRepo.GetAll(), fromDate: fromDate, toDate: toDate);
                result.StatusChangesTime = reportingService.AverageTimeBetweenStatusChanges(documents);
            }

            result.TotalTime = new TimeSpan(result.StatusChangesTime.Values.Sum(t => t.Ticks));
            return(result);
        }