Beispiel #1
0
        public async Task <IEnumerable <LatestAccessRecordDto> > HandleAsync(GetLatestSiteAccessRecords query)
        {
            IEnumerable <IUserStatusDocument> states = await _statusRepository.GetForSiteAsync(query.SiteId);

            var records = new List <LatestAccessRecordDto>();


            foreach (var state in states)
            {
                var user = await _userRepository.GetAsync(state.UserId);

                if (user is null)
                {
                    _logger.LogWarning($"User not found to match with current state id is: {state.UserId}");
                }

                records.Add(new LatestAccessRecordDto
                {
                    Action        = state.CurrentState == AccessAction.In ? "in" : "out",
                    Id            = state.Id,
                    TimeStamp     = state.Updated,
                    UserId        = state.UserId,
                    FullName      = user?.FirstName + " " + user?.SecondName,
                    Email         = user?.Email,
                    ContactNumber = user?.PhoneNumber,
                    Initials      = $"{user?.FirstName[0]}{user?.SecondName[0]}",
                    Code          = user?.Code.ToString()
                });
            }

            return(records);
        }