Exemplo n.º 1
0
        public FileResult ExportGroupByClients(string userName, RequestReportsGrid reportsGridData, HttpContext httpContext)
        {
            var groupByClient = _reportService.GroupByClients(userName, reportsGridData);
            var result        = GetExportFileWithGrouping(reportsGridData, httpContext, groupByClient);

            return(result);
        }
Exemplo n.º 2
0
        public ReportsGrandGridTimeEntryView GroupByNone(string userName, RequestReportsGrid reportsGridData)
        {
            var reportsGridTimeEntry = new ReportsGrandGridTimeEntryView
            {
                ReportsGridView = new List <ReportGridTimeEntryView>
                {
                    new ReportGridTimeEntryView
                    {
                        Items = new List <ReportsGridItemsView>()
                    }
                }
            };

            var timeEntriesForGrouping = GetTimeEntriesForGrouping(userName, reportsGridData);

            if (!timeEntriesForGrouping.Any())
            {
                return(reportsGridTimeEntry);
            }

            var timeEntriesGroupByNone = timeEntriesForGrouping
                                         .GroupBy(x => x.Id)
                                         .ToDictionary(key => key.Key, key => key.Select(value => value));

            var result = reportsGridTimeEntry.GetViewReportsGrandGridTimeEntries(timeEntriesGroupByNone, Mapper);

            return(result);
        }
Exemplo n.º 3
0
        public ReportsGrandGridMembersView GroupByUsers(string userName, RequestReportsGrid reportsGridData)
        {
            var reportsGridUsers = new ReportsGrandGridMembersView
            {
                ReportsGridView = new List <ReportGridMemberView>
                {
                    new ReportGridMemberView
                    {
                        Items = new List <ReportsGridItemsView>()
                    }
                }
            };

            var timeEntriesForGrouping = GetTimeEntriesForGrouping(userName, reportsGridData);

            if (!timeEntriesForGrouping.Any())
            {
                return(reportsGridUsers);
            }

            var timeEntriesGroupByUsers = timeEntriesForGrouping
                                          .GroupBy(i => i.Member)
                                          .OrderBy(x => x.Key.FullName)
                                          .ToDictionary(key => key.Key, key => key.Select(value => value));

            var result = reportsGridUsers.GetViewReportsGrandGridClients(timeEntriesGroupByUsers, Mapper);

            return(result);
        }
Exemplo n.º 4
0
        public ReportsGrandGridClients GroupByClients(string userName, RequestReportsGrid reportsGridData)
        {
            var reportsGridClients = new ReportsGrandGridClients
            {
                ReportsGridView = new List <ReportGridClientView>
                {
                    new ReportGridClientView
                    {
                        Items = new List <ReportsGridItemsView>()
                    }
                }
            };

            var timeEntriesForGrouping = GetTimeEntriesForGrouping(userName, reportsGridData);

            if (!timeEntriesForGrouping.Any())
            {
                return(reportsGridClients);
            }

            var timeEntriesGroupByClients = timeEntriesForGrouping
                                            .GroupBy(i => i.Project.Client)
                                            .OrderBy(x => x.Key.Name)
                                            .ToDictionary(key => key.Key ?? CreateWithOutClientInstance(), key => key.Select(value => value));

            var result = reportsGridClients.GetViewReportsGrandGridClients(timeEntriesGroupByClients, Mapper);

            return(result);
        }
Exemplo n.º 5
0
        private void SetCommonValuesForExport <T>(RequestReportsGrid reportsGridData)
        {
            RunSetCommonValuesForExport = true;

            #region Set Global Properties.

            GroupById = reportsGridData.GroupById ?? 0;

            ShowColumnIds = reportsGridData.ShowColumnIds;

            DateFormatId = reportsGridData.DateFormatId;

            DateFrom = _reportService.DateFrom;
            DateTo   = _reportService.DateTo;

            #endregion

            #region Get excluded props by Grand, Entity, NestedEntity headers in arrays.

            PropsGroupByAndTotalTimes = ExcludeProps(typeof(T));
            PropsEntityHeadersAndRows = ExcludeProps(typeof(IReportsGridItemsView));
            PropsEntitiesTotalHeaders = ExcludeProps(typeof(IReportsGrandGridView <T>));

            #endregion
        }
Exemplo n.º 6
0
        public IActionResult PostReportsGrid([FromBody] RequestReportsGrid reportsGridData)
        {
            try
            {
                var userName = this.GetUserNameWithImpersonation();

                // 0 - Default(none), 1 - Projects, 2 - Users, 3 - Dates, 4 - Clients.
                switch (reportsGridData.GroupById)
                {
                case (int)ReportsGroupBy.Project:
                    return(new JsonResult(_service.GroupByProjects(userName, reportsGridData)));

                case (int)ReportsGroupBy.User:
                    return(new JsonResult(_service.GroupByUsers(userName, reportsGridData)));

                case (int)ReportsGroupBy.Date:
                    return(new JsonResult(_service.GroupByDates(userName, reportsGridData)));

                case (int)ReportsGroupBy.Client:
                    return(new JsonResult(_service.GroupByClients(userName, reportsGridData)));

                default:
                    return(new JsonResult(_service.GroupByNone(userName, reportsGridData)));
                }
            }
            catch (Exception e)
            {
                _logger.LogWarning($"PostReportsGrid method with parameters ({reportsGridData});\n {e}");
                var errors = ExceptionsChecker.CheckProjectsException(e);
                return(BadRequest(errors));
            }
        }
Exemplo n.º 7
0
        private FileStreamResult GetExportFileWithGrouping <T>(RequestReportsGrid reportsGridData, HttpContext httpContext, IReportsGrandGridView <T> groupingList)
        {
            var fileByte = CreateReportFileByteUpdateFileNameContentType(reportsGridData, groupingList, out var contentType);

            var fileStreamResult = SaveFileToFileStreamResult(httpContext, contentType, fileByte);

            return(fileStreamResult);
        }
        public IActionResult PostReportsGrid([FromBody] RequestReportsGrid reportsGridData)
        {
            try
            {
                var userName = this.GetUserNameWithImpersonation();

                switch (reportsGridData.GroupById)
                {
                case (int)ReportsGroupBy.Project:
                {
                    return(_service.ExportGroupByProjects(userName, reportsGridData, HttpContext));
                }

                case (int)ReportsGroupBy.User:
                {
                    return(_service.ExportGroupByUsers(userName, reportsGridData, HttpContext));
                }

                case (int)ReportsGroupBy.Date:
                {
                    return(_service.ExportGroupByDates(userName, reportsGridData, HttpContext));
                }

                case (int)ReportsGroupBy.Client:
                {
                    return(_service.ExportGroupByClients(userName, reportsGridData, HttpContext));
                }

                default:
                {
                    return(_service.ExportGroupByNone(userName, reportsGridData, HttpContext));
                }
                }
            }
            catch (InvalidOperationException invalidOperationException)
            {
                _logger.LogWarning(invalidOperationException.Message + $"\n {invalidOperationException}");
                var errors = ExceptionsChecker.CheckRunMethodSetCommonValuesForExportException(invalidOperationException);
                return(BadRequest(errors));
            }
            catch (Exception e)
            {
                _logger.LogWarning($"PostReportsGrid method with parameters ({reportsGridData});\n {e}");
                var errors = ExceptionsChecker.CheckProjectsException(e);
                return(BadRequest(errors));
            }
        }
Exemplo n.º 9
0
        private byte[] CreateReportFileByteUpdateFileNameContentType <T>(RequestReportsGrid reportsGridData, IReportsGrandGridView <T> groupingList, out string contentType)
        {
            SetCommonValuesForExport <T>(reportsGridData);

            var file = new byte[0];

            contentType = string.Empty;

            fileName = GetFileName(fileName);

            switch (reportsGridData.FileTypeId ?? 0)
            {
            case (int)FileType.Excel:
            {
                fileName    = fileName + ExtensionXLSX;
                file        = CreateFileExcel(groupingList);
                contentType = ContentTypeXLSX;

                break;
            }

            case (int)FileType.CSV:
            {
                fileName    = fileName + ExtensionCSV;
                file        = CreateFileCSV(groupingList);
                contentType = ContentTypeCSV;

                break;
            }

            case (int)FileType.PDF:
            {
                fileName    = fileName + ExtensionPDF;
                file        = CreateFilePDF(groupingList);
                contentType = ContentTypePDF;

                break;
            }
            }

            return(file);
        }
Exemplo n.º 10
0
        private IQueryable <TimeEntry> GetTimeEntriesForGrouping(string userName, RequestReportsGrid reportsGridData)
        {
            var currentMember = Uow.MemberRepository.LinkedCacheGetByName(userName);

            if (currentMember == null)
            {
                throw new CoralTimeEntityNotFoundException($"Member with userName = {userName} not found.");
            }

            if (!currentMember.User.IsActive)
            {
                throw new CoralTimeEntityNotFoundException($"Member with userName = {userName} is not active.");
            }

            CommonHelpers.SetRangeOfWeekByDate(out var weekStart, out var weekEnd, DateTime.Now);

            DateFrom = reportsGridData?.DateFrom ?? weekStart;
            DateTo   = reportsGridData?.DateTo ?? weekEnd;

            // By Dates (default grouping, i.e. "Group by None"; direct order).
            var timeEntriesByDateOfUser = GetTimeEntryByDate(currentMember, DateFrom, DateTo);

            // By Projects.
            if (reportsGridData?.ProjectIds != null && reportsGridData.ProjectIds.Length > 0)
            {
                timeEntriesByDateOfUser = timeEntriesByDateOfUser.Where(x => reportsGridData.ProjectIds.Contains(x.ProjectId));
            }

            // By Members.
            if (reportsGridData?.MemberIds != null && reportsGridData.MemberIds.Length > 0)
            {
                timeEntriesByDateOfUser = timeEntriesByDateOfUser.Where(x => reportsGridData.MemberIds.Contains(x.MemberId));
            }

            // By Clients that has Projects.
            if (reportsGridData?.ClientIds != null && reportsGridData.ClientIds.Length > 0)
            {
                timeEntriesByDateOfUser = timeEntriesByDateOfUser.Where(x => reportsGridData.ClientIds.Contains(x.Project.ClientId) || x.Project.ClientId == null && reportsGridData.ClientIds.Contains(WithoutClient.Id));
            }

            return(timeEntriesByDateOfUser);
        }