示例#1
0
        public async Task Kudos_Should_Return_Filtered_Excel_File()
        {
            var filter = new KudosLogsFilterDto
            {
                OrganizationId = 2,
                SearchUserId   = "testUserId3",
                Status         = BusinessLayerConstants.KudosStatusAllFilter,
                SortBy         = "Created",
                SortOrder      = "desc"
            };

            var stream = await _kudosExportService.ExportToExcelAsync(filter);

            using (var excelReader = ExcelReaderFactory.CreateOpenXmlReader(new MemoryStream(stream)))
            {
                excelReader.IsFirstRowAsColumnNames = true;
                var excelData = excelReader.AsDataSet();
                var excelRows = excelData.Tables[0].Rows;

                Assert.AreEqual("name5 surname5", excelRows[0].ItemArray[0]);
                Assert.AreEqual("name3 surname3", excelRows[0].ItemArray[1]);
                Assert.AreEqual(1, excelRows.Count);

                excelReader.Close();
            }
        }
示例#2
0
        public async Task Kudos_GetKudosLog_Should_Return_View_Model()
        {
            // Arrange
            var filter = new KudosLogsFilterViewModel
            {
                Page         = 1,
                SearchUserId = "1"
            };

            IEnumerable <MainKudosLogDto> kudosLogs = new List <MainKudosLogDto>
            {
                new MainKudosLogDto
                {
                    Id = 1
                }
            };

            var entries = new KudosLogsEntriesDto <MainKudosLogDto>
            {
                KudosLogs = kudosLogs
            };

            var dto = new KudosLogsFilterDto();

            _mapper.Map <KudosLogsFilterViewModel, KudosLogsFilterDto>(filter)
            .Returns(dto);

            _kudosService.GetKudosLogsAsync(null).ReturnsForAnyArgs(entries);

            // Act
            var response = await _kudosController.GetKudosLogs(filter);

            // Assert
            Assert.IsInstanceOf <PagedViewModel <KudosLogViewModel> >(response);
        }
示例#3
0
        public async Task <byte[]> ExportToExcelAsync(KudosLogsFilterDto filter)
        {
            var kudos = await _kudosLogsDbSet
                        .Include(log => log.Employee)
                        .Where(log =>
                               log.OrganizationId == filter.OrganizationId &&
                               log.KudosBasketId == null)
                        .Where(KudosServiceHelper.StatusFilter(filter.Status))
                        .Where(KudosServiceHelper.UserFilter(filter.SearchUserId))
                        .GroupJoin(_userDbSet, log => log.CreatedBy, u => u.Id, KudosServiceHelper.MapKudosLogsToDto())
                        .OrderBy(string.Concat(filter.SortBy, " ", filter.SortOrder))
                        .ToListAsync();

            var kudosLogs = kudos.Select(x => new List <object>
            {
                x.Sender.FullName,
                x.Receiver.FullName,
                x.Type.Name,
                x.Multiplier,
                x.Points,
                x.Created,
                x.Comment,
                x.Status,
                x.Type.Value,
                x.RejectionMessage
            });

            var header = new List <string>
            {
                Resources.Models.Kudos.Kudos.ExportColumnSender,
                Resources.Models.Kudos.Kudos.ExportColumnReceiver,
                Resources.Models.Kudos.Kudos.ExportColumnKudosType,
                Resources.Models.Kudos.Kudos.ExportColumnMultiplyBy,
                Resources.Models.Kudos.Kudos.ExportColumnPointsInTotal,
                Resources.Models.Kudos.Kudos.ExportColumnCreated,
                Resources.Models.Kudos.Kudos.ExportColumnComment,
                Resources.Models.Kudos.Kudos.ExportColumnStatus,
                Resources.Models.Kudos.Kudos.ExportColumnKudosTypeValue,
                Resources.Models.Kudos.Kudos.ExportColumnRejectionMessage
            };

            _excelBuilder.AddNewWorksheet(BusinessLayerConstants.KudosLogExcelSheetName, header, kudosLogs);

            return(_excelBuilder.GenerateByteArray());
        }
示例#4
0
        public async Task <KudosLogsEntriesDto <MainKudosLogDto> > GetKudosLogsAsync(KudosLogsFilterDto options)
        {
            var kudosLogsQuery = _kudosLogsDbSet
                                 .Include(log => log.Employee)
                                 .Where(log => log.OrganizationId == options.OrganizationId && log.KudosBasketId == null)
                                 .Where(KudosServiceHelper.StatusFilter(options.Status))
                                 .Where(KudosServiceHelper.UserFilter(options.SearchUserId))
                                 .Where(KudosServiceHelper.TypeFilter(options.FilteringType))
                                 .GroupJoin(_usersDbSet, log => log.CreatedBy, u => u.Id, KudosServiceHelper.MapKudosLogsToDto())
                                 .OrderBy(string.Concat(options.SortBy, " ", options.SortOrder));

            var logsTotalCount = await kudosLogsQuery.CountAsync();

            var entriesCountToSkip = EntriesCountToSkip(options.Page);
            var kudosLogs          = await kudosLogsQuery
                                     .Skip(() => entriesCountToSkip)
                                     .Take(() => BusinessLayerConstants.MaxKudosLogsPerPage)
                                     .ToListAsync();

            var user = await _usersDbSet.FindAsync(options.UserId);

            if (user != null)
            {
                var culture = CultureInfo.GetCultureInfo(user.CultureCode);

                foreach (var kudosLog in kudosLogs)
                {
                    if (IsTranslatableKudosType(kudosLog.Type.Type))
                    {
                        kudosLog.Type.Name = TranslateKudos("KudosType" + kudosLog.Type.Name, culture);
                    }
                }
            }

            return(new KudosLogsEntriesDto <MainKudosLogDto>
            {
                KudosLogs = kudosLogs,
                TotalKudosCount = logsTotalCount
            });
        }