public async Task <Tuple <int, long> > UserRegisterNewAccount(string LoginID, string FullName, string Password, string Email, string Phonenumber, string CountryCode, string DOB, int Gender, string Upline) { using var dbContextTransaction = _db.Database.BeginTransaction(); try { int temp = 1; var RandomCode = ""; do { var tempcode = _common_services.GenerateRandomNumber(10); if (IsRefcodeExist(tempcode)) { temp = 1; } else { RandomCode = tempcode; temp = 0; } }while (temp == 1); var gamelogin = "******" + RandomCode; if (Upline != null && !IsRefcodeExist(Upline)) { return(new Tuple <int, long>(Models_General.ERR_UPLINE_REFERCODE_NOT_EXIST, 0)); } else if (IsUsernameExist(LoginID)) { return(new Tuple <int, long>(Models_General.ERR_USERNAME_EXIST, 0)); } else if (IsPhoneExist(Phonenumber)) { return(new Tuple <int, long>(Models_General.ERR_PHONENUMBER_EXIST, 0)); } else if (IsEmailExist(Email)) { return(new Tuple <int, long>(Models_General.ERR_EMAIL_EXIST, 0)); } //This will be the main table that all references will be linked to this MemberSrno so we need it to be the first table to store in our database and get the MemberSrno var UserAccount = new MstUserAccount { LoginId = LoginID, Password = Password, Status = "ACTIVE", AccountType = "MEMBER", GameRegister = 0 }; //Add this into database first so that we can retrive the MemberSrno _db.MstUserAccount.Add(UserAccount); _db.SaveChanges(); //Register a new account into our system var UserDetails = new MstUser { }; if (Upline != null && Upline != "") { var UplineDetails = _db.MstUser.Where(x => x.RefCode.Equals(Upline)).FirstOrDefault(); var UplineAccount = _db.MstUserAccount.Where(x => x.MemberSrno.Equals(UplineDetails.MemberSrno)).FirstOrDefault(); UserDetails = new MstUser { MemberSrno = UserAccount.MemberSrno, Name = FullName, Email = Email, Phone = Phonenumber, Country = CountryCode, DoB = DOB, Gender = Gender, RegisterDate = DateTime.Now, RefCode = RandomCode, Upline = UplineAccount.LoginId, UplineId = UplineAccount.MemberSrno, }; } else { UserDetails = new MstUser { MemberSrno = UserAccount.MemberSrno, Name = FullName, Email = Email, Phone = Phonenumber, Country = CountryCode, DoB = DOB, Gender = Gender, RegisterDate = DateTime.Now, RefCode = RandomCode, }; } var UserCashWallet = new MstUserWallet { MemberSrno = UserAccount.MemberSrno, CashCredit = 0 }; //Set defualt password for game account var _GamePassword = "******"; var UserGameAccount = new MstUserGameAccount { MemberSrno = UserAccount.MemberSrno, GamePassword = _GamePassword, GameId = gamelogin, CreatedDateTime = DateTime.Now, }; var UserGameWallet = new MstUserGameWallet { MemberSrno = UserAccount.MemberSrno, GameId = gamelogin, GameCredit = 0, }; //Call 998 API to create a agame account var result = await _intergration.CreateNewPlayer(gamelogin, FullName, Email, Phonenumber, DOB, _GamePassword, CountryCode, Gender); if (result.Error == 0) { //API Successfully Created an Account from the thrid party side then only allow to create an account into our database _db.MstUser.Add(UserDetails); _db.MstUserWallet.Add(UserCashWallet); _db.MstUserGameAccount.Add(UserGameAccount); _db.MstUserGameWallet.Add(UserGameWallet); UserAccount.GameRegister = 1; await _db.SaveChangesAsync(); dbContextTransaction.Commit(); return(new Tuple <int, long>(Models_General.SUCC_CREATE_ACCOUNT, UserAccount.MemberSrno)); } else { _db.MstUser.Add(UserDetails); _db.MstUserWallet.Add(UserCashWallet); _db.MstUserGameAccount.Add(UserGameAccount); _db.MstUserGameWallet.Add(UserGameWallet); UserAccount.GameRegister = 2; await _db.SaveChangesAsync(); dbContextTransaction.Commit(); return(new Tuple <int, long>(Models_General.SUCC_CREATE_ACCOUNT_WITHOUT_GAME_ACCOUNT, UserAccount.MemberSrno)); } } catch (Exception ex) { dbContextTransaction.Rollback(); var new_error = new LogErrorSystem { Title = "User Register New Account", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(new Tuple <int, long>(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR, 0)); } }
public async Task <Tuple <int, int> > CheckUserGameRegister() { try { var UserAccounts = _db.MstUserAccount.ToList(); int count = 0; foreach (var useraccount in UserAccounts) { if (useraccount.GameRegister == 2) { var UserDetails = _db.MstUser.Where(x => x.MemberSrno == useraccount.MemberSrno).FirstOrDefault(); var GameAccountDetails = _db.MstUserGameAccount.Where(x => x.MemberSrno == useraccount.MemberSrno).FirstOrDefault(); var GameWalletDetails = _db.MstUserGameWallet.Where(x => x.MemberSrno == useraccount.MemberSrno).FirstOrDefault(); bool temp_result = false; do { int temp = 1; var RandomCode = ""; do { var tempcode = _common_services.GenerateRandomNumber(10); if (IsRefcodeExist(tempcode)) { temp = 1; } else { RandomCode = tempcode; temp = 0; } }while (temp == 1); var gamelogin = "******" + RandomCode; var result = await _intergration.CreateNewPlayer(gamelogin, UserDetails.Name, UserDetails.Email, UserDetails.Phone, UserDetails.DoB, GameAccountDetails.GamePassword, UserDetails.Country, UserDetails.Gender); if (result.Error == 0) { //API Successfully Created an Account from the thrid party side then only allow to create an account into our database var new_recreate_user = new LogRecreateUser { MemberSrno = GameAccountDetails.MemberSrno, LoginId = useraccount.LoginId, PreviousGameId = GameAccountDetails.GameId, PreviousGamePassword = GameAccountDetails.GamePassword, CurrentGameId = gamelogin, CurrentGamePassword = GameAccountDetails.GamePassword, Status = true, StatusCode = result.Error, Message = result.Message, CreatedDateTime = DateTime.Now, }; _db.LogRecreateUser.Add(new_recreate_user); temp_result = true; useraccount.GameRegister = 1; GameAccountDetails.GameId = gamelogin; GameWalletDetails.GameId = gamelogin; UserDetails.RefCode = RandomCode; count++; } else { var new_recreate_user_error = new LogRecreateUser { MemberSrno = GameAccountDetails.MemberSrno, LoginId = useraccount.LoginId, PreviousGameId = GameAccountDetails.GameId, PreviousGamePassword = GameAccountDetails.GamePassword, CurrentGameId = gamelogin, CurrentGamePassword = GameAccountDetails.GamePassword, Status = false, StatusCode = result.Error, Message = result.Message, CreatedDateTime = DateTime.Now, }; _db.LogRecreateUser.Add(new_recreate_user_error); } } while (temp_result == false); } } await _db.SaveChangesAsync(); return(new Tuple <int, int>(Models_General.SUCC_CHECK_USER_GAME_REGISTER, count)); } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Check User Game Account", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(new Tuple <int, int>(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR, 0)); } }