public FileResult ExportGroupByClients(string userName, RequestReportsGrid reportsGridData, HttpContext httpContext) { var groupByClient = _reportService.GroupByClients(userName, reportsGridData); var result = GetExportFileWithGrouping(reportsGridData, httpContext, groupByClient); return(result); }
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); }
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); }
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); }
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 }
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)); } }
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)); } }
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); }
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); }