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."); } if (type == EmergencyAccessType.Takeover && invitingUser.UsesKeyConnector) { throw new BadRequestException("You cannot use Emergency Access Takeover because you are using Key Connector."); } 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); }
public async Task <EmergencyAccess> InviteAsync(User invitingUser, string invitingUsersName, string email, EmergencyAccessType type, int waitTime) { if (!invitingUser.Premium) { 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, invitingUsersName); return(emergencyAccess); }