示例#1
0
        public async Task <Result <GroupedStatisticsViewModel> > GetIndexViewModel(string groupId)
        {
            IBaseSpecification <GroupUserEntity, GroupUserEntity> getAllUsersSpecification = SpecificationBuilder
                                                                                             .Create <GroupUserEntity>()
                                                                                             .Build();

            int allUsers = await _groupUserStore.Count(getAllUsersSpecification);

            IBaseSpecification <GroupUserEntity, GroupUserEntity> getActiveUsersSpecification = SpecificationBuilder
                                                                                                .Create <GroupUserEntity>()
                                                                                                .Where(x => x.User.Sessions.Any())
                                                                                                .Build();

            int activeUsers = await _groupUserStore.Count(getActiveUsersSpecification);

            IBaseSpecification <GroupUserEntity, GroupUserEntity> getUnconfirmedUsersSpecification = SpecificationBuilder
                                                                                                     .Create <GroupUserEntity>()
                                                                                                     .Where(x => !x.User.EmailConfirmed)
                                                                                                     .Build();

            int unconfirmedUsers = await _groupUserStore.Count(getUnconfirmedUsersSpecification);

            IBaseSpecification <GroupUserEntity, GroupUserEntity> getDisabledUsersSpecification = SpecificationBuilder
                                                                                                  .Create <GroupUserEntity>()
                                                                                                  .Where(x => !x.User.Enabled)
                                                                                                  .Build();

            int disabledUsers = await _groupUserStore.Count(getDisabledUsersSpecification);

            GroupedStatisticsViewModel viewModel = new GroupedStatisticsViewModel(
                groupId: groupId,
                usersCount: allUsers,
                activeUsersCount: activeUsers,
                unconfirmedUsersCount: unconfirmedUsers,
                disabledUsersCount: disabledUsers);

            return(Result.Ok(viewModel));
        }