public async Task <UserProfile> CreateMemberUserProfile(MemberSignupRequest model, int userId, string fileName, int RoleId)
        {
            var         now         = DateTime.UtcNow;
            UserProfile userProfile = new UserProfile
            {
                ProfileId   = 0,
                ProfileGuid = System.Guid.NewGuid(),
                UserId      = userId,
                //FirstName = model.FirstName,
                //LastName = model.LastName,
                //Email = model.Email,
                ProfilePhoto = fileName,
                Gender       = null,
                City         = null,
                State        = null,
                Country      = null,
                ZipCode      = null,
                //Specialities = null,
                Qualification    = null,
                Education        = null,
                IsFeature        = null,
                Ranked           = null,
                BriefBio         = null,
                InstagramProfile = null,
                LinkedInProfile  = null,
                FaceBookProfile  = null,
                ContactNo1       = null,
                ContactNo2       = null,
                //AcceptedDate = null,
                //AcceptedBy = null,
                CreatedDate       = now,
                ModifiedDate      = null,
                CreatedBy         = userId,
                ModifiedBy        = null,
                IsActive          = false,
                PractitionerSince = null,
                Description       = null,
                Language          = null,
                IsDeleted         = false,
                PublicProfile     = true
            };

            try
            {
                await this.authRepo.CreateUserProfileAsync(userProfile);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(userProfile);
        }
        public async Task <User> CreateMemberUser(MemberSignupRequest model, string filename, int RoleId, HttpContext context)
        {
            int  userId       = 0;
            User createMember = null;
            var  now          = DateTime.UtcNow;
            var  guid         = System.Guid.NewGuid();
            //bool userNameExist = await this.authRepo.CheckUserNameExist(model.UserName);
            //if (userNameExist)
            //    return -1;


            var user = new Users
            {
                UserId   = 0,
                UserGuid = guid,
                //UserName = model.UserName,
                //UserPassword = model.UserPassword,
                IsActive     = true,
                IsBlocked    = false,
                LastLogin    = null,
                CreatedDate  = now,
                CreatedBy    = null,
                ModifiedDate = null,
                ModifiedBy   = null,
                IsDeleted    = false,
            };

            UserProfile userProfile = new UserProfile
            {
                ProfileId   = 0,
                ProfileGuid = System.Guid.NewGuid(),
                UserId      = userId,
                //FirstName = model.FirstName,
                //LastName = model.LastName,
                //Email = model.Email,
                ProfilePhoto = filename,
                Gender       = null,
                City         = null,
                State        = null,
                Country      = null,
                ZipCode      = null,
                //Specialities = null,
                Qualification    = null,
                Education        = null,
                IsFeature        = null,
                Ranked           = null,
                BriefBio         = null,
                InstagramProfile = null,
                LinkedInProfile  = null,
                FaceBookProfile  = null,
                ContactNo1       = null,
                ContactNo2       = null,
                //AcceptedDate = null,
                //AcceptedBy = null,
                CreatedDate       = now,
                ModifiedDate      = null,
                CreatedBy         = userId,
                ModifiedBy        = null,
                IsActive          = true,
                PractitionerSince = null,
                Description       = null,
                Language          = null,
                IsDeleted         = false,
                PublicProfile     = true,
                IsDeactivated     = false
            };

            UserInfo userInfo = new UserInfo()
            {
                UserName  = model.UserName,
                Password  = model.UserPassword,
                FirstName = model.FirstName,
                LastName  = model.LastName,
                Email     = model.Email,
            };

            try
            {
                createMember = await this.authRepo.CreateUserAsync(user, userProfile, filename, userInfo, RoleId, "", null, null, 0, 0);

                if (createMember != null && createMember.UserId > 0)
                {
                    await this.commonEmailsService.SendWelcomeEmailToMember(model.Email, context);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(createMember);
        }
        public async Task <IActionResult> MemberSignUp([FromForm] MemberSignupRequest signup)
        {
            JsonResponse <User> objResult = new JsonResponse <User>();

            if (signup != null)
            {
                try
                {
                    HttpContext context = HttpContext;

                    if (!ModelState.IsValid)
                    {
                        return(BadRequest(ModelState));
                    }
                    string fileName = null;
                    bool   matched  = await this.authService.MatchSecretKey(signup.SecretKey);

                    if (!matched)
                    {
                        objResult.Data    = null;
                        objResult.Status  = StaticResource.UnauthorizedStatusCode;
                        objResult.Message = StaticResource.UnauthorizedMessage;
                        return(new OkObjectResult(objResult));
                    }

                    if (signup.ProfileImage != null)
                    {
                        if (string.IsNullOrWhiteSpace(this._env.WebRootPath))
                        {
                            this._env.WebRootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
                        }
                        string uploadsFolder = Path.Combine(this._env.WebRootPath, "images");
                        fileName = await this.authService.UploadedFile(signup.ProfileImage, uploadsFolder);
                    }
                    var user = await this.authService.CreateMemberUser(signup, fileName, Convert.ToInt32(RolesEnum.Member), context);

                    switch (user.Status)
                    {
                    case 1:
                        if (signup.PlanId != null)
                        {
                            bool saved = await this.authService.SaveMemberShipPlan(signup.PlanId, user.UserId);
                        }
                        objResult.Data    = null;
                        objResult.Status  = StaticResource.SuccessStatusCode;
                        objResult.Message = StaticResource.SuccessMessage;
                        break;

                    case 5:
                        objResult.Data    = null;
                        objResult.Status  = StaticResource.DuplicateStatusCode;
                        objResult.Message = StaticResource.EmailExist;
                        break;

                    case 6:
                        objResult.Data    = null;
                        objResult.Status  = StaticResource.DuplicateStatusCode;
                        objResult.Message = StaticResource.UsernameExist;
                        break;

                    default:
                        objResult.Data    = null;
                        objResult.Status  = StaticResource.NotFoundStatusCode;
                        objResult.Message = StaticResource.NotFoundMessage;
                        break;
                    }
                }
                catch (Exception ex)
                {
                    HttpContext.RiseError(ex);
                    objResult.Data    = null;
                    objResult.Status  = StaticResource.FailStatusCode;
                    objResult.Message = StaticResource.FailMessage;
                }
            }
            else
            {
                objResult.Data    = null;
                objResult.Status  = StaticResource.FailStatusCode;
                objResult.Message = StaticResource.InvalidMessage;
            }
            return(new OkObjectResult(objResult));
        }