예제 #1
0
        public async Task <ProviderUserResponseModel> Get(Guid providerId, Guid id)
        {
            var providerUser = await _providerUserRepository.GetByIdAsync(id);

            if (providerUser == null || !_currentContext.ProviderManageUsers(providerUser.ProviderId))
            {
                throw new NotFoundException();
            }

            return(new ProviderUserResponseModel(providerUser));
        }
        public async Task <ProviderUser> AcceptUserAsync(Guid providerUserId, User user, string token)
        {
            var providerUser = await _providerUserRepository.GetByIdAsync(providerUserId);

            if (providerUser == null)
            {
                throw new BadRequestException("User invalid.");
            }

            if (providerUser.Status != ProviderUserStatusType.Invited)
            {
                throw new BadRequestException("Already accepted.");
            }

            if (!CoreHelpers.TokenIsValid("ProviderUserInvite", _dataProtector, token, user.Email, providerUser.Id, _globalSettings))
            {
                throw new BadRequestException("Invalid token.");
            }

            if (string.IsNullOrWhiteSpace(providerUser.Email) ||
                !providerUser.Email.Equals(user.Email, StringComparison.InvariantCultureIgnoreCase))
            {
                throw new BadRequestException("User email does not match invite.");
            }

            providerUser.Status = ProviderUserStatusType.Accepted;
            providerUser.UserId = user.Id;
            providerUser.Email  = null;

            await _providerUserRepository.ReplaceAsync(providerUser);

            return(providerUser);
        }
예제 #3
0
        public async Task <ListResponseModel <EventResponseModel> > GetProviderUser(Guid providerId, Guid id,
                                                                                    [FromQuery] DateTime?start = null, [FromQuery] DateTime?end = null, [FromQuery] string continuationToken = null)
        {
            var providerUser = await _providerUserRepository.GetByIdAsync(id);

            if (providerUser == null || !providerUser.UserId.HasValue ||
                !_currentContext.ProviderAccessEventLogs(providerUser.ProviderId))
            {
                throw new NotFoundException();
            }

            var dateRange = GetDateRange(start, end);
            var result    = await _eventRepository.GetManyByProviderActingUserAsync(providerUser.ProviderId,
                                                                                    providerUser.UserId.Value, dateRange.Item1, dateRange.Item2,
                                                                                    new PageOptions { ContinuationToken = continuationToken });

            var responses = result.Data.Select(e => new EventResponseModel(e));

            return(new ListResponseModel <EventResponseModel>(responses, result.ContinuationToken));
        }