예제 #1
0
        public void SendEmail_UnSuccessfull()
        {
            InviteUsers invite = new InviteUsers
            {
                InviteUserEmailId = "*****@*****.**",
                InviteUrl         = "/bookDashboard",
                InviteRoleLevel   = "Admin"
            };
            string email   = "*****@*****.**";
            string subject = "salary";
            string body    = "salary for may";

            userServiceMoq.Setup(c => c.CreateInviteUsers(invite)).Returns(false);

            mailService.Setup(c => c.SendEmail(email, subject, body));
            //Act
            var controller = new UserController(logger.Object, userServiceMoq.Object, mailService.Object);
            var result     = controller.SendEMail(invite);

            // assert
            Assert.IsType <OkObjectResult>(result.Result);
            var okResult = result.Result as OkObjectResult;

            Assert.NotNull(okResult);
            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal("User already Exist or Already Invitation Sent", okResult.Value);
        }
예제 #2
0
        public async Task <IActionResult> SendEMail([FromBody] InviteUsers inviteUsers)
        {
            try
            {
                var res = _user.CreateInviteUsers(inviteUsers);

                if (res)
                {
                    string subject = "Invitation For RunBook Application";
                    string body    = InviteUserTemplate.emailTemplate;
                    body = body.Replace("{UserName}", inviteUsers.UserName);
                    body = body.Replace("{InviteRoleLevel}", inviteUsers.InviteRoleLevel);
                    //System.IO.File.ReadAllText("./Templates/InviteUserTemplate.html");
                    _logger.LogInformation("Preparing an Email");

                    await _mail.SendEmail(inviteUsers.InviteUserEmailId, subject, body);

                    _logger.LogInformation("Email sent");
                    return(Ok("Email sent successfully"));
                }
                else
                {
                    return(Ok("User already Exist or Already Invitation Sent"));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Internal server error in SendEMail : {ex}");
                return(StatusCode(500, $"Error while sending Email: {ex}"));
            }
        }
예제 #3
0
        public async Task InviteUsers([FromBody] InviteUsers inviteUsers, CancellationToken cancellationToken)
        {
            try
            {
                var emailsNotInvited = new List <string>();

                var invitedUsers = new List <ApplicationUser>();

                foreach (var email in inviteUsers.Emails)
                {
                    var user = await _operations.RepositoryManager.GetUserFromLoginAsync(email, cancellationToken);

                    if (user != null && user.IsInvited)
                    {
                        emailsNotInvited.Add(email);
                    }
                    else if (user != null)
                    {
                        user.IsInvited   = true;
                        user.HubQuota    = inviteUsers.HubQuota;
                        user.InviteQuota = inviteUsers.InviteQuota;
                        user.UserRole    = inviteUsers.Role;
                        await _operations.RepositoryManager.UpdateUserAsync(user, cancellationToken);

                        invitedUsers.Add(user);
                    }
                    else
                    {
                        user = new ApplicationUser()
                        {
                            Email       = email,
                            UserName    = email,
                            IsInvited   = true,
                            HubQuota    = inviteUsers.HubQuota,
                            InviteQuota = inviteUsers.InviteQuota,
                            IsEnabled   = true
                        };
                        await _operations.RepositoryManager.CreateUserAsync(user, null, cancellationToken);

                        invitedUsers.Add(user);
                    }
                }
                await SendInvites(invitedUsers, cancellationToken);

                if (emailsNotInvited.Count > 0)
                {
                    throw new AdminControllerException("The following emails were not added: " + string.Join(", ", emailsNotInvited));
                }
            }
            catch (Exception ex)
            {
                throw new AdminControllerException($"Error inviting users: {ex.Message}", ex);
            }
        }
예제 #4
0
        public bool CreateInviteUsers(InviteUsers inviteUsers)
        {
            InviteUsers userExist        = null;
            var         UserEmail        = inviteUsers.InviteUserEmailId;
            string      userCmd          = @"SELECT id FROM [dbo].[InviteUser] WHERE InviteUserEmailId = @InviteUserEmailId AND  TenantId =@TenantId AND InviteUrl =@InviteUrl AND InviteRoleLevel=@InviteRoleLevel";
            var         inviteUserparams = new DynamicParameters();

            inviteUserparams.Add("@InviteUserEmailId", inviteUsers.InviteUserEmailId);
            inviteUserparams.Add("@InviteUrl", inviteUsers.InviteUrl);
            inviteUserparams.Add("@InviteRoleLevel", inviteUsers.InviteRoleLevel);
            inviteUserparams.Add("@TenantId", Convert.ToInt32(inviteUsers.TenantId));
            inviteUserparams.Add("@UserId", Convert.ToInt32(inviteUsers.UserId));
            inviteUserparams.Add("@Accepted", inviteUsers.Accepted);

            inviteUserparams.Add("@Id", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);

            using (IDbConnection con = _Idbconnection)
            {
                con.Open();

                userExist = con.QuerySingleOrDefault <InviteUsers>(userCmd, new { InviteUserEmailId = UserEmail, InviteUrl = inviteUsers.InviteUrl, InviteRoleLevel = inviteUsers.InviteRoleLevel, TenantId = inviteUsers.TenantId, UserId = inviteUsers.UserId });

                if (userExist != null)
                {
                    return(false);
                }
                var sqltrans          = con.BeginTransaction();
                var createdInviteUser = con.Execute("[dbo].sp_CreateInviteUser", inviteUserparams, sqltrans, 0, commandType: CommandType.StoredProcedure);


                if (createdInviteUser > 0)
                {
                    sqltrans.Commit();
                }
                else
                {
                    sqltrans.Rollback();
                }
                con.Close();

                if (createdInviteUser > 0)
                {
                    return(true);
                }
            }
            return(false);
        }