コード例 #1
0
        public string RecordNewUserInvitation(int type, long team_id, string email, int access_level, int userId, bool enableUndercarriage, bool enableGET)
        {
            string result = "";

            using (var context = new SharedContext())
            {
                var             currentuser = context.USER_TABLE.Find(userId);
                string          aspUserId   = currentuser != null ? currentuser.AspNetUserId : "";
                var             aspUser     = context.AspNetUsers.Find(aspUserId);
                UserInvitations invite      = new UserInvitations();
                invite.team_type       = type;
                invite.team_id         = team_id;
                invite.email           = email;
                invite.access_level    = access_level;
                invite.invitation_sent = DateTime.Now;
                invite.disable         = false;
                invite.SenderEmail     = (aspUser == null && currentuser == null) ? "" :
                                         (aspUser == null ? currentuser.email : aspUser.Email);
                invite.SenderAspUserId     = aspUser == null ? "" : aspUserId;
                invite.InvitationAccepted  = false;
                invite.EnableUndercarriage = enableUndercarriage;
                invite.EnableGET           = enableGET;
                context.UserInvitations.Add(invite);
                context.SaveChanges();

                result = invite.unique_id.ToString();
            }

            return(result);
        }
コード例 #2
0
ファイル: UserManager.cs プロジェクト: hari81/BLL
        public async Task <Tuple <bool, string> > InviteNewUser(UserModel user, long invitedByUserId)
        {
            var existingAccountEmail = await _context.USER_TABLE.Where(t => t.email == user.Email).FirstOrDefaultAsync();

            var existingInvitationEmail = await _context.UserInvitations.Where(t => t.email == user.Email).FirstOrDefaultAsync();

            if (existingAccountEmail != null || existingInvitationEmail != null)
            {
                return(Tuple.Create(false, "A user with this email already exists. "));
            }

            var existingUserName = await _context.USER_TABLE.Where(t => t.userid == user.UserName).Where(t => t.user_auto != user.Id).FirstOrDefaultAsync();

            if (existingUserName != null)
            {
                return(Tuple.Create(false, "A user with this username already exists. "));
            }

            var aspNetUserId = await _context.USER_TABLE.Where(t => t.user_auto == user.Id).Select(t => t.AspNetUserId).FirstOrDefaultAsync();

            var existingUserName2 = await _context.AspNetUsers.Where(t => t.UserName == user.UserName).Where(t => t.Id != aspNetUserId).FirstOrDefaultAsync();

            if (existingUserName2 != null)
            {
                return(Tuple.Create(false, "A user with this username already exists. "));
            }
            if (user.Password.Length < 3)
            {
                return(Tuple.Create(false, "Password must be at least 3 characters. "));
            }

            int teamType = 0;
            int teamId   = 0;

            if (user.DealershipId != null)
            {
                teamType = 1;
                teamId   = (int)user.DealershipId;
            }
            else if (user.CustomerId != null)
            {
                teamType = 2;
                teamId   = (int)user.CustomerId;
            }

            var userInvitation = new UserInvitations()
            {
                team_type           = teamType,
                team_id             = teamId,
                email               = user.Email,
                name                = user.Name,
                username            = user.UserName,
                access_level        = user.AccessTypeId,
                invitation_sent     = DateTime.Now,
                disable             = false,
                SenderEmail         = _context.USER_TABLE.Find(invitedByUserId).email,
                SenderAspUserId     = _context.USER_TABLE.Find(invitedByUserId).AspNetUserId,
                InvitationAccepted  = false,
                EnableUndercarriage = user.UndercarriageEnabled,
                EnableGET           = user.GetEnabled
            };

            _context.UserInvitations.Add(userInvitation);

            // Add customer access records if required
            if (user.AccessTypeId == (int)UserAccessTypes.DealershipUser)
            {
                foreach (var customer in user.AccessCustomerIds)
                {
                    _context.UserInvitationAccessToCustomers.Add(new UserInvitationAccessToCustomers()
                    {
                        customerId   = customer,
                        invitationId = userInvitation.invitation_auto
                    });
                }
            }

            // Add job role records
            foreach (var role in user.JobRoles)
            {
                _context.UserInvitationJobRoles.Add(new UserInvitationJobRoles()
                {
                    invitationId = userInvitation.invitation_auto,
                    jobRoleId    = role
                });
            }

            _context.SaveChanges();

            // Send email
            if (userInvitation.unique_id.ToString() == "")
            {
                return(Tuple.Create(false, "Failed to generate unique registration ID. Please contact support. "));
            }

            var emailManager = new EmailManager();

            BLL.Core.Domain.AppConfigAccess ACA = new BLL.Core.Domain.AppConfigAccess();
            string identityServerAccess         = ACA.GetApplicationValue("IdentityServerUri");
            string emailSubject = "Invited to register for TrackTreads";
            string emailBody    = @"<br/>
                                <p>You have been invited to register for TrackTreads.</p> 
                                <br/>
                                <p>Please use the following link to complete your registration.</p>
                                <p><a href='" + identityServerAccess + @"Account/Register?token=" + userInvitation.unique_id + "'>"
                                  + identityServerAccess + @"Account/Register?token=" + userInvitation.unique_id + @"
                                </a></p>
                                <br/><br/>";
            var result = emailManager.SendEmail(user.Email, emailSubject, emailBody, true);

            if (result)
            {
                return(Tuple.Create(true, userInvitation.unique_id.ToString()));
            }
            return(Tuple.Create(false, "Failed to send the email to the user. "));
        }