Beispiel #1
0
        public async Task <bool> CreateInvitesAsync(Department department, string addingUserId, List <string> emailAddresses, CancellationToken cancellationToken = default(CancellationToken))
        {
            var sendingUser    = _usersService.GetUserById(addingUserId);
            var sendingProfile = await _userProfileService.GetProfileByUserIdAsync(addingUserId);

            for (int i = 0; i < emailAddresses.Count; i++)
            {
                Invite invite = new Invite();
                invite.Code          = Guid.NewGuid();
                invite.DepartmentId  = department.DepartmentId;
                invite.EmailAddress  = emailAddresses[i];
                invite.SendingUserId = addingUserId;
                invite.SentOn        = DateTime.UtcNow;

                await _invitesRepository.SaveOrUpdateAsync(invite, cancellationToken);

                if (invite.Department == null && department != null)
                {
                    invite.Department = department;
                }
                else if (invite.Department == null)
                {
                    invite.Department = await _departmentsService.GetDepartmentByIdAsync(department.DepartmentId);
                }


                await _emailService.SendInviteAsync(invite, sendingProfile.FullName.AsFirstNameLastName, sendingUser.Email);
            }

            return(true);
        }