Esempio n. 1
0
        // data parameter has either Facebbok email, either Google, but never both.
        public void SetUsersCognizantEmail(CognizantData data)
        {
            var  user          = _userRepository.GetUserByEmail(EmailType.COGNIZANT, data.CognizantEmail);
            bool facebookEmail = data.FacebookEmail != null;
            var  loginEmail    = facebookEmail ? data.FacebookEmail : data.GoogleEmail;

            if (user == null)
            {
                user = _userRepository.GetUserByEmail(EmailType.LOGIN, loginEmail);

                if (facebookEmail)
                {
                    user.FacebookEmail = loginEmail;
                }
                else
                {
                    user.GoogleEmail = loginEmail;
                }
                user.CognizantEmail = data.CognizantEmail;
            }
            else
            {
                var tempUser = _userRepository.GetUserByEmail(EmailType.LOGIN, loginEmail); // acc which is created when user logs in with second
                // email for the first time. After verification, it is unused.
                if (tempUser.CognizantEmail == null)
                {
                    tempUser.GoogleEmail   = null;
                    tempUser.FacebookEmail = null;
                    _userRepository.UpdateUser(tempUser);
                }

                if (!user.FacebookVerified && data.FacebookEmail != null)
                {
                    user.FacebookEmail = data.FacebookEmail;
                }
                else if (!user.GoogleVerified && data.GoogleEmail != null)
                {
                    user.GoogleEmail = data.GoogleEmail;
                }
                user.CognizantEmail = data.CognizantEmail;
            }
            _userRepository.UpdateUser(user);
        }
        public IActionResult CognizantEmailSubmit([FromBody] CognizantData data)
        {
            if (data.CognizantEmail == null ||
                data.CognizantEmail.Length <= 14 ||
                data.CognizantEmail.Substring(data.CognizantEmail.Length - 14) != "@cognizant.com")
            {
                return(Unauthorized());
            }

            bool      isFacebookEmail = data.FacebookEmail != null;
            EmailType type            = isFacebookEmail ? EmailType.FACEBOOK : EmailType.GOOGLE;

            if (_userLogic.DoesUserExist(type, data.CognizantEmail))
            {
                return(BadRequest()); // There is already registered user with such cognizant email
            }

            _userLogic.SetUsersCognizantEmail(data);
            var loginEmail = data.FacebookEmail == null ? data.GoogleEmail : data.FacebookEmail;

            _cognizantIdentity.SendVerificationCode(data.CognizantEmail, loginEmail);

            return(Ok());
        }