public async Task <EmergencyAccess> InviteAsync(User invitingUser, string email, EmergencyAccessType type, int waitTime) { if (!await _userService.CanAccessPremium(invitingUser)) { throw new BadRequestException("Not a premium user."); } var emergencyAccess = new EmergencyAccess { GrantorId = invitingUser.Id, Email = email.ToLowerInvariant(), Status = EmergencyAccessStatusType.Invited, Type = type, WaitTimeDays = waitTime, CreationDate = DateTime.UtcNow, RevisionDate = DateTime.UtcNow, }; await _emergencyAccessRepository.CreateAsync(emergencyAccess); await SendInviteAsync(emergencyAccess, NameOrEmail(invitingUser)); return(emergencyAccess); }
private bool IsValidRequest(EmergencyAccess availibleAccess, User requestingUser, EmergencyAccessType requestedAccessType) { return(availibleAccess != null && availibleAccess.GranteeId == requestingUser.Id && availibleAccess.Status == EmergencyAccessStatusType.RecoveryApproved && availibleAccess.Type == requestedAccessType); }