internal UserLoginResponse UserLogin(UserLoginRequest userLoginRequest) { logger.Debug("Recived user login request"); UserLoginResponse UserLoginResponse; try { String GeneratedToken = Guid.NewGuid().ToString(); userLoginRequest.deviceId = Decryptor.Decrypt(userLoginRequest.deviceId).Split('|')[1]; userLoginRequest.username = Decryptor.Decrypt(userLoginRequest.username).Split('|')[1]; userLoginRequest.password = Decryptor.Decrypt(userLoginRequest.password).Split('|')[1]; logger.Debug("Recived user login request with username - " + userLoginRequest.username + " password - " + userLoginRequest.password + " deviceId - " + userLoginRequest.deviceId); if (!String.IsNullOrEmpty(userLoginRequest.deviceId) && !String.IsNullOrEmpty(userLoginRequest.username) && !String.IsNullOrEmpty(userLoginRequest.password)) { using (var ctx = new PetWhizzEntities()) { //checking for user user User = ctx.users.Where(a => a.userName.ToLower().Equals(userLoginRequest.username.ToLower()) && a.password == userLoginRequest.password).FirstOrDefault(); if (User == null) { logger.Error("Login failed for user - " + userLoginRequest.username); throw new CustomException("Username or Password Invalid", (int)ErrorCode.LOGINFAILURE); } UserLoginResponse = new UserLoginResponse() { email = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.eMail), status = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.status), token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + GeneratedToken), username = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.userName), userId = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.id.ToString()) }; //checking for device userDevice UserDevice = ctx.userDevices.Where(a => a.userId == User.id && a.deviceId == userLoginRequest.deviceId).FirstOrDefault(); if (UserDevice == null) { //new device var userDevice = new userDevice() { deviceId = userLoginRequest.deviceId, deviceName = "", userId = User.id, }; ctx.userDevices.Add(userDevice); ctx.SaveChanges(); //saving user token var userToken = new userToken() { tokenType = "AUTHTOKEN", useCount = 0, generatedTime = DateTime.Now, userDeviceId = userDevice.id, expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime), token = GeneratedToken, }; ctx.userTokens.Add(userToken); ctx.SaveChanges(); } else { userToken userDBToken = ctx.userTokens.Where(a => a.userDeviceId == UserDevice.id).FirstOrDefault(); if (userDBToken == null) { var userToken = new userToken() { tokenType = "AUTHTOKEN", useCount = 0, generatedTime = DateTime.Now, userDeviceId = UserDevice.id, expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime), token = GeneratedToken, }; ctx.userTokens.Add(userToken); ctx.SaveChanges(); } else { ctx.userTokens.Attach(userDBToken); userDBToken.expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime); ctx.SaveChanges(); UserLoginResponse.token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + userDBToken.token); } } } } else { logger.Error("Some of the properties in userLoginRequest is null or empty"); throw new CustomException("All propreties should contains a value", (int)ErrorCode.VALIDATIONFAILED); } } catch (CustomException) { throw; } catch (Exception ex) { logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException); throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); } return(UserLoginResponse); }
internal EnrollUserResponse EnrollUser(EnrollUserRequest EnrollUserRequest) { logger.Debug("Recived enroll user request"); EnrollUserResponse EnrollUserResponse; try { ValidateUserRequest ValidateUserRequest = new ValidateUserRequest() { email = EnrollUserRequest.email, username = EnrollUserRequest.username }; ValidatUser(ValidateUserRequest); EnrollUserRequest.username = Decryptor.Decrypt(EnrollUserRequest.username).Split('|')[1]; EnrollUserRequest.password = Decryptor.Decrypt(EnrollUserRequest.password).Split('|')[1]; EnrollUserRequest.email = Decryptor.Decrypt(EnrollUserRequest.email).Split('|')[1]; EnrollUserRequest.deviceId = Decryptor.Decrypt(EnrollUserRequest.deviceId).Split('|')[1]; String GeneratedToken = Guid.NewGuid().ToString(); int GeneratedCode = new Random().Next(100000, 999999); logger.Debug("Decrypted enroll user request details userName - " + EnrollUserRequest.username + " password - " + EnrollUserRequest.password + " email - " + EnrollUserRequest.email + " deviceId - " + EnrollUserRequest.deviceId); //validating details if (!String.IsNullOrEmpty(EnrollUserRequest.username) && !String.IsNullOrEmpty(EnrollUserRequest.password) && !String.IsNullOrEmpty(EnrollUserRequest.email) && !String.IsNullOrEmpty(EnrollUserRequest.deviceId)) { //setting up user details var user = new user() { createdDate = DateTime.Now, lastUpdatedDate = DateTime.Now, userName = EnrollUserRequest.username, password = EnrollUserRequest.password, eMail = EnrollUserRequest.email, status = "EMAILVERIFY" }; using (var ctx = new PetWhizzEntities()) { //saving user ctx.users.Add(user); ctx.SaveChanges(); //saving user device var userDevice = new userDevice() { deviceId = EnrollUserRequest.deviceId, // deviceName = EnrollUserRequest.deviceName, userId = user.id, }; ctx.userDevices.Add(userDevice); ctx.SaveChanges(); //saving user token var userToken = new userToken() { tokenType = "AUTHTOKEN", useCount = 0, generatedTime = DateTime.Now, userDeviceId = userDevice.id, expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime), token = GeneratedToken, }; ctx.userTokens.Add(userToken); ctx.SaveChanges(); //user verification data var userVerificationInfo = new userVerification() { code = GeneratedCode.ToString(), generatedTime = DateTime.Now, expiryTime = DateTime.Now.AddSeconds(VerificationCodeExpiryTime), isValid = true, userId = user.id, verificationType = "EMAILVERIFY", }; ctx.userVerifications.Add(userVerificationInfo); ctx.SaveChanges(); } SendEmailVerification(user.eMail, user.userName, user.id, GeneratedCode.ToString()); EnrollUserResponse = new EnrollUserResponse() { token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + GeneratedToken), username = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.userName), email = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.eMail), status = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.status), userId = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.id) }; } else { logger.Error("Some of the properties in EnrollUserRequest is null or empty"); throw new CustomException("All propreties should contains a value", (int)ErrorCode.VALIDATIONFAILED); } } catch (CustomException) { throw; } catch (Exception ex) { logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException); throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); } return(EnrollUserResponse); }