public DomainModelResponse Add(UserAddRequest request)
        {
            EntityModel.Role role = _repRole.Get(filter: f => f.RoleCode == request.RoleCode).FirstOrDefault();

            UserProfile up = new UserProfile()
            {
                EmailId = request.emailId,
                FirstName = request.firstName,
                LastName = request.lastName,
                HashedPassword = createHash(request.password),
                SecurityQuestion = request.securityQuestion,
                HashedAnswer = createHash(request.answer),
                isAdmin = request.isAdmin,
                LastChangedTime = DateTime.UtcNow,
                LastPasswordChangeDate = DateTime.UtcNow,
                PasswordExpired = false,
                CourseUserRoles = null
            };
            _repUser.Add(up);
            _uow.Commit();
            AddUserToCourse(new UpdateUserCourse() { courseCode = "Default", emailId = request.emailId, RoleCode = request.RoleCode });
            _securityResponse.addResponse("Add", MessageCodes.InfoCreatedSuccessfully, "User");
            return _securityResponse;
        }
        private Token InternalCreateToken(UserProfile up, bool isPasswordExpire = false)
        {
            DateTime dtNow = DateTime.UtcNow;
            string sToken = String.Format("{0}:{1}", Guid.NewGuid().ToString(), dtNow.AddHours(3.0).ToString("yyyyMMddHHmmss"));
            sToken = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(sToken));
            Token t = new Token()
            {
                token = String.Concat(_tokenPrefix, sToken),
                maxSessionTime = isPasswordExpire ? 30 : 120,
                remainingTime = isPasswordExpire ? 30 : 120,
                passwordExpired = isPasswordExpire,
                message = isPasswordExpire ? "Password expired. Use this token to reset password." : null,
                user = new UserGetResponse()
                {
                    emailId = up.EmailId,
                    firstName = up.FirstName,
                    lastName = up.LastName,
                    isAdmin = (up.isAdmin == null) ? false : (bool) up.isAdmin,
                    UserCourseDetails = mapCourseDetails(up.CourseUserRoles)
                }
            };

            _repSessionToken.Add(new SessionToken
            {
                Token = t.token,
                CreationTimeUtc = DateTime.UtcNow,
                HasPasswordExpired = isPasswordExpire,
                LastActivityTimeUtc = DateTime.UtcNow,
                UserId = up.UserId,
                User = up,
                UserName = up.EmailId
            });
            _uow.Commit();
            return t;
        }