public async Task <ActionResult <IEnumerable <SmartLockDto> > > GetSmartLocks()
        {
            var smartLocksFromRepo = await _smartLockRepository.GetSmartLocks();

            var smartLocksDto = _mapper.Map <IEnumerable <SmartLockDto> >(smartLocksFromRepo);

            return(Ok(smartLocksDto));
        }
Exemple #2
0
        public async Task <IEnumerable <AdminAccessDto> > GetAccesses()
        {
            var allAccessesFromRepo = await _accessRepository.GetAccesses();

            var client = await MicrosoftGraphClient.GetGraphServiceClient();

            var allUsersFromAzureAd = await _azureAdRepository.GetUsers(client);

            var allSmartLocks = await _smartLockRepository.GetSmartLocks();

            var logsFromRepo = allAccessesFromRepo.ToList();

            var mergedUsers = (from logFromRepo in logsFromRepo
                               from dbUserFromAzureAd in allUsersFromAzureAd
                               where logFromRepo.UserId == Guid.Parse(dbUserFromAzureAd.Id)
                               let dtoFromDb = _mapper.Map <AdminAccessDto>(logFromRepo)
                                               select _mapper.Map(dbUserFromAzureAd, dtoFromDb))
                              .OrderByDescending(al => al.Time).ToList();

            var mergedSmartLocks = (from logFromRepo in logsFromRepo
                                    from smartLockFromRepo in allSmartLocks
                                    where logFromRepo.SmartLockId == smartLockFromRepo.Id
                                    let dtoFromDb = _mapper.Map <AdminAccessDto>(logFromRepo)
                                                    select _mapper.Map(smartLockFromRepo, dtoFromDb)).ToList();


            foreach (var ul in mergedUsers)
            {
                foreach (var sll in mergedSmartLocks)
                {
                    if (ul.SmartLockId == sll.SmartLockId)
                    {
                        ul.SmartLockTitle = sll.SmartLockTitle;
                    }
                }
            }

            return(mergedUsers);
        }