Пример #1
0
        public void SetUp()
        {
            mtaLogFilters = new GetMtaLogsRequest()
            {
                Actions = new[] { LogAction.Anticheat, LogAction.Api }
            };
            sourceAffectedModels = new List <SourceAffectedModel>();

            database              = new Mock <IDatabase>();
            filesManager          = new Mock <IReadOnlyFilesManager>();
            mapper                = new Mock <IMapper>();
            httpContextWriter     = new Mock <IHttpContextWriter>();
            logKeyWordsDictionary = new Mock <LogKeyWordsDictionary>();

            database.Setup(d => d.MtaLogRepository.GetMtaLogs(mtaLogFilters, It.IsNotNull <IList <string> >()))
            .ReturnsAsync(new List <MtaLog>()
            {
                new MtaLog(), new MtaLog()
            });
            database.Setup(d => d.PhoneSmsRepository.GetPhoneSms(mtaLogFilters, It.IsNotNull <IList <string> >()))
            .ReturnsAsync(new List <PhoneSms>()
            {
                new PhoneSms(), new PhoneSms()
            });
            mapper.Setup(m => m.Map <IEnumerable <MtaLogModel> >(It.IsNotNull <IEnumerable <MtaLog> >()))
            .Returns(new List <MtaLogModel>());
            mapper.Setup(m => m.Map <IEnumerable <MtaLogModel> >(It.IsNotNull <IEnumerable <PhoneSms> >()))
            .Returns(new List <MtaLogModel>());

            logReader = new LogReader(database.Object, filesManager.Object, mapper.Object, httpContextWriter.Object,
                                      logKeyWordsDictionary.Object);
        }
Пример #2
0
        public void GetMtaLogsFromDatabase_ActionsContainPhoneSmsAndOther_VerifyGetMtaLogsAndGetPhoneSmsCalled()
        {
            mtaLogFilters = new GetMtaLogsRequest()
            {
                Actions = new[] { LogAction.Anticheat, LogAction.Api, LogAction.PhoneSms }
            };

            logReader.GetMtaLogsFromDatabase(mtaLogFilters, sourceAffectedModels);

            database.Verify(d => d.MtaLogRepository.GetMtaLogs(mtaLogFilters, It.IsNotNull <IList <string> >()),
                            Times.Once);
            database.Verify(d => d.PhoneSmsRepository.GetPhoneSms(mtaLogFilters, It.IsNotNull <IList <string> >()),
                            Times.Once);
        }
Пример #3
0
        public void GetMtaLogsFromDatabase_TheOnlyActionIsPhoneSms_VerifyGetPhoneSmsCalled()
        {
            mtaLogFilters = new GetMtaLogsRequest()
            {
                Actions = new[] { LogAction.PhoneSms }
            };

            logReader.GetMtaLogsFromDatabase(mtaLogFilters, sourceAffectedModels);

            database.Verify(d => d.MtaLogRepository.GetMtaLogs(mtaLogFilters, It.IsNotNull <IList <string> >()),
                            Times.Never);
            database.Verify(d => d.PhoneSmsRepository.GetPhoneSms(mtaLogFilters, It.IsNotNull <IList <string> >()),
                            Times.Once);
        }
Пример #4
0
        private static List <string> FetchSourceAffectedValues(MtaLogFiltersParams filters,
                                                               IEnumerable <SourceAffectedModel> sourceAffectedModels)
        {
            var sourceAffectedValues = filters.SourceAffectedLogType switch
            {
                SourceAffectedLogType.Account or SourceAffectedLogType.Character => sourceAffectedModels
                .Select(s => SourceAffectedLogDictionary.Map(s.Type, s.Id.ToString())).ToList(),
                SourceAffectedLogType.System or SourceAffectedLogType.Pefuel or SourceAffectedLogType.Petoll =>
                new List <string> {
                    SourceAffectedLogDictionary.Map(filters.SourceAffectedLogType)
                },
                _ => new List <string>
                {
                    SourceAffectedLogDictionary.Map(filters.SourceAffectedLogType, filters.SourceAffected)
                }
            };

            return(sourceAffectedValues);
        }

        #endregion
    }
Пример #5
0
        public async Task <IEnumerable <MtaLogModel> > GetMtaLogsFromDatabase(MtaLogFiltersParams filters,
                                                                              IEnumerable <SourceAffectedModel> sourceAffectedModels)
        {
            var sourceAffectedValues = FetchSourceAffectedValues(filters, sourceAffectedModels);

            PagedList <MtaLog>   mtaLogs  = default;
            PagedList <PhoneSms> phoneSms = default;

            if (filters.Actions.Any(l => l != LogAction.PhoneSms))
            {
                mtaLogs = (await database.MtaLogRepository.GetMtaLogs(filters, sourceAffectedValues))
                          .ToPagedList(filters.PageNumber, filters.PageSize);
            }

            if (filters.Actions.Contains(LogAction.PhoneSms))
            {
                phoneSms = (await database.PhoneSmsRepository.GetPhoneSms(filters, sourceAffectedValues))
                           .ToPagedList(filters.PageNumber, filters.PageSize);
            }

            httpContextWriter.AddPagination(filters.PageNumber, filters.PageSize,
                                            mtaLogs.TotalCount + (phoneSms != null ? phoneSms.TotalCount : 0),
                                            mtaLogs.TotalPages + (phoneSms != null ? phoneSms.TotalPages : 0));

            var mtaLogModels = mapper.Map <IEnumerable <MtaLogModel> >(mtaLogs);

            if (phoneSms != null)
            {
                mtaLogModels = mtaLogModels.Concat(mapper.Map <IEnumerable <MtaLogModel> >(phoneSms));
            }

            mtaLogModels = filters.SortType == DateSortType.Descending
                ? mtaLogModels.OrderByDescending(m => m.Date)
                : mtaLogModels.OrderBy(m => m.Date);

            return(mtaLogModels);
        }