public async Task <FacebookSignInResponseViewModel> SignInFacebook([FromBody] GoogleSignInFormDataViewModel model) { if (ModelState.IsValid) { var result = new { Succeeded = true }; var email = model.Email; var passwordHasher = new PasswordHasher <string>(); string password = new Random().NextDouble().ToString(); string PasswordHash = passwordHasher.HashPassword(model.Email, password); try { var Email = model.Email; var userSearchResult = await _querySender.Send(new UserSearchQuery { Email = model.Email, ChannelId = Channels.Feel, SignUpMethodId = SignUpMethods.Facebook, SocialLoginId = model.SocialLoginId }); if (userSearchResult.Success) { var UserData = new LoginWithFacebookFormDataViewModel { Email = model.Email, SocialLoginId = model.SocialLoginId, ChannelId = Channels.Feel, SignUpMethodId = SignUpMethods.Facebook, }; var authenticated = await _authenticationHelper.AuthenticateFacebookUser(UserData, u => { return(Task.FromResult(true)); }); return(new FacebookSignInResponseViewModel { Success = authenticated, Session = await _sessionProvider.Get() }); } else if (string.IsNullOrEmpty(model.Email) && !string.IsNullOrEmpty(model.SocialLoginId)) { return(new FacebookSignInResponseViewModel { Success = false, IsEmailReqd = true }); } else { await _commandSender.Send(new RasvRegisterUserCommand { Email = model.Email, PasswordHash = PasswordHash, UserName = model.Email, FirstName = model.FirstName, LastName = model.LastName, PhoneCode = model.PhoneCode, RolesId = 11, PhoneNumber = model.PhoneNumber, ChannelId = Channels.Feel, SocialLoginId = model.SocialLoginId, OptedForMailer = true, Ip = _clientIpProvider.Get(), SignUpMethodId = SignUpMethods.Facebook, ReferralId = model.ReferralId, }); var UserData = new LoginWithFacebookFormDataViewModel { Email = model.Email, SocialLoginId = model.SocialLoginId, ChannelId = Channels.Feel }; var authenticated = await _authenticationHelper.AuthenticateFacebookUser(UserData, u => { return(Task.FromResult(true)); }); //adding userr to MailChimp contacts try { var query = await _querySender.Send(new UserSearchQuery { Email = model.Email, ChannelId = Channels.Feel, SignUpMethodId = SignUpMethods.Facebook, }); await _mailChimpProvider.AddFILMember(new MCUserModel { FirstName = model.FirstName, LastName = model.LastName, Email = model.Email, PhoneCode = model.PhoneCode, PhoneNumber = model.PhoneNumber, SignUpType = "Facebook", IsCreator = false }, query.Country); } catch (Exception e) { _logger.Log(Logging.Enums.LogCategory.Error, e); } return(new FacebookSignInResponseViewModel { Success = authenticated, Session = await _sessionProvider.Get() }); } } catch (Exception ex) { _logger.Log(Logging.Enums.LogCategory.Error, ex); return(new FacebookSignInResponseViewModel { Success = false }); } } else { return(new FacebookSignInResponseViewModel { Success = false }); } }