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);
        }
Ejemplo n.º 2
0
        public async Task <IEnumerable <DocumentSummaryDto> > FindDocuments(int authorId        = -1, DocumentStatus?status  = null,
                                                                            string searchString = null, int requestingUserId = -1, bool canBeReviewed = false,
                                                                            DateTime?fromDate   = null, DateTime?toDate      = null)
        {
            AppUser author         = null;
            AppUser requestingUser = null;

            if (authorId != -1)
            {
                author = await userRepo.GetById(authorId);

                if (author == null)
                {
                    return(Array.Empty <DocumentSummaryDto>());
                }
            }

            if (requestingUserId != -1)
            {
                requestingUser = await userRepo.GetById(requestingUserId);

                if (requestingUser == null)
                {
                    return(Array.Empty <DocumentSummaryDto>());
                }
            }

            var documents = filteringService.Filter(docRepo.GetAll(),
                                                    author, status, searchString, canBeReviewed ? requestingUser : null, fromDate, toDate);

            if (requestingUser != null)
            {
                var dtos = new List <DocumentSummaryDto>(documents.Count());
                foreach (var d in documents)
                {
                    var summary = mapper.Map <DocumentSummaryDto>(d);
                    summary.CanEdit = d.CanEdit(requestingUser);
                    dtos.Add(summary);
                }
                return(dtos);
            }

            return(mapper.Map <IEnumerable <DocumentSummaryDto> >(documents));
        }