// 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()); }