public int TopupCredit(string loginid, decimal TopupAmount, bool IsReset) { try { int result; var UserAccount = _db.MstUserAccount.Where(x => x.LoginId == loginid).FirstOrDefault(); if (UserAccount != null) { var CurrentUserWallet = _db.MstUserWallet.Where(x => x.MemberSrno == UserAccount.MemberSrno).FirstOrDefault(); var CurrentSettings = _db.MstSettings.Where(x => x.SettingName == "TwelveTurnover").FirstOrDefault(); var user_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = UserAccount.MemberSrno, WalletFrom = "TWELVE SYSTEM", WalletTo = "CASH WALLET", TransactionType = 8, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = TopupAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + TopupAmount, IsDeduct = false, Description = string.Format("TWELVE SYSTEM TOPUP CREDIT TO THIS USER AT {0}", DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_topup = new LogTopup { MemberSrno = UserAccount.MemberSrno, WalletFrom = "TWELVE SYSTEM", WalletTo = "CASH WALLET", TransactionType = 8, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = TopupAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + TopupAmount, Description = string.Format("TWELVE SYSTEM TOPUP CREDIT TO THIS USER AT {0}", DateTime.Now), CreatedDateTime = DateTime.Now, }; _db.LogUserTrackingWallet.Add(user_topup_request_tracking); _db.LogTopup.Add(log_topup); result = Models_General.SUCC_TOPUP; decimal finalturnover = TopupAmount * int.Parse(CurrentSettings.SettingValue); CurrentUserWallet.CashCredit += TopupAmount; CurrentUserWallet.TurnoverAmount += finalturnover; if (IsReset == true) { CurrentUserWallet.TwelveTurnoverAmount = TopupAmount; } _db.SaveChanges(); return(result); } else { return(Models_General.ERR_USER_NOT_FOUND); } } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Twelve Topup Credit", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }
public async Task <int> TopUpGameCredit(long _MemberSrno, decimal TransferAmount) { using (var dbContextTransaction = _db.Database.BeginTransaction()) { try { var ISUserExist = _db.MstUserAccount.Where(x => x.MemberSrno == _MemberSrno && x.Status == "ACTIVE").Any(); if (ISUserExist) { var UserWalletData = _db.MstUserWallet.Where(x => x.MemberSrno == _MemberSrno).FirstOrDefault(); var UserDetails = _db.MstUserAccount.Where(x => x.MemberSrno == _MemberSrno).FirstOrDefault(); var UserGameAccountDetails = _db.MstUserGameAccount.Where(x => x.MemberSrno == _MemberSrno).FirstOrDefault(); if (UserWalletData.CashCredit >= TransferAmount) { var TransactionID = new Guid().ToString(); //CALL 998 API TO TRANSFER CASH CREDIT TO GAME CREDIT var result = await _intergration.TransferGameCredit(UserGameAccountDetails.GameId, TransferAmount, TransactionID); if (result.Error == 0) { // add new log from cash credit transaction var log_user_tracking_wallet = new LogUserTrackingWallet { MemberSrno = _MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "GAME WALLET", TransactionType = 4, PreviousAmount = UserWalletData.CashCredit, TransactionAmount = TransferAmount, CurrentTotalAmount = UserWalletData.CashCredit - TransferAmount, IsDeduct = true, Description = string.Format("MEMBER:{0} TRANSFER CASH INTO GAME WALLET WITH AMOUNT:{1} AT:{2}", UserDetails.LoginId, TransferAmount, DateTime.Now), CreatedDateTime = DateTime.Now, }; //add new log for game credit transaction var log_user_game_credit_transaction = new LogUserGameCreditTransaction { GameApi = "998 API", TrasactionId = TransactionID, MemberSrno = _MemberSrno, Player = UserGameAccountDetails.GameId, TransferAmount = result.Amount, BeforeAmount = result.Before, AfterAmount = result.After, TransactionType = "DEPOSIT", Status = "SUCCESS", TransferDate = DateTime.Now }; //DEDUCT TRANSFER AMOUNT FROM USER CASH WALLET var UserWalletDetails = _db.MstUserWallet.Where(x => x.MemberSrno == _MemberSrno).FirstOrDefault(); UserWalletDetails.CashCredit -= TransferAmount; //Update all the changes into database _db.LogUserTrackingWallet.Add(log_user_tracking_wallet); _db.LogUserGameCreditTransaction.Add(log_user_game_credit_transaction); await _db.SaveChangesAsync(); dbContextTransaction.Commit(); return(Models_General.SUCC_TOPUP_GAME_CREDIT); } return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } return(Models_General.ERR_INSUFFICIENT_CASH_BALANCE); } return(Models_General.ERR_USER_NOT_FOUND); } catch (Exception ex) { dbContextTransaction.Rollback(); var new_error = new LogErrorSystem { Title = "Topup Game Credit", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } } }
public int BackResponseDepositPaymentGateway(string Merchant, string Reference, string Currency, string Amount, string Language, string Customer, string Datetime, string Note, string Key, string Status, string ID) { try { int result; var UserAccount = _db.MstUserAccount.Where(x => x.LoginId == Customer).FirstOrDefault(); var UserWallet = _db.MstUserWallet.Where(x => x.MemberSrno == UserAccount.MemberSrno).FirstOrDefault(); var CurrentSettings = _db.MstSettings.Where(x => x.SettingName == "NormalTurnover").FirstOrDefault(); var PaymentGatewayResponse = new LogResponsePaymentGateway { Merchant = Merchant, Reference = Reference, Currency = Currency, Amount = Convert.ToDecimal(Amount), Language = Language, Customer = Customer, Datetime = Datetime, Note = Note, Key = Key, Status = Status, Id = ID, CreatedDateTime = DateTime.Now, }; _db.LogResponsePaymentGateway.Add(PaymentGatewayResponse); if (Status == "000") { var user_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = UserWallet.MemberSrno, WalletFrom = "PAYLAH88", WalletTo = "CASH WALLET", TransactionType = 12, PreviousAmount = UserWallet.CashCredit, TransactionAmount = Convert.ToDecimal(Amount), CurrentTotalAmount = UserWallet.CashCredit + Convert.ToDecimal(Amount), IsDeduct = false, Description = string.Format("User:{0} HAS TOPUP AMOUNT:{1} WITH {2} USING PAYLAH88 PAYMENT GATEWAY AT:{3}", Customer, Convert.ToDecimal(Amount), ID, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_topup = new LogTopup { MemberSrno = UserWallet.MemberSrno, WalletFrom = "PAYLAH88", WalletTo = "CASH WALLET", TransactionType = 12, PreviousAmount = UserWallet.CashCredit, TransactionAmount = Convert.ToDecimal(Amount), CurrentTotalAmount = UserWallet.CashCredit + Convert.ToDecimal(Amount), Description = string.Format("User:{0} HAS TOPUP AMOUNT:{1} USING PAYLAH88 PAYMENT GATEWAY AT:{2}", Customer, Convert.ToDecimal(Amount), DateTime.Now), CreatedDateTime = DateTime.Now, }; var TopupRequest = new MstTopUp { MemberSrno = UserWallet.MemberSrno, WalletType = "CASH WALLET", TopupAmount = Convert.ToDecimal(Amount), Currency = Currency, Status = 1, RequestDate = DateTime.Now, TransactionReferenceNumber = ID, TransactionType = 2, }; _db.LogUserTrackingWallet.Add(user_topup_request_tracking); _db.LogTopup.Add(log_topup); _db.MstTopUp.Add(TopupRequest); decimal finalturnover = Convert.ToDecimal(Amount) * int.Parse(CurrentSettings.SettingValue); UserWallet.CashCredit += Convert.ToDecimal(Amount); UserWallet.TurnoverAmount += finalturnover; result = Models_General.SUCC_PAYMENT; } else { result = Models_General.ERR_PAYMENT; } _db.SaveChanges(); return(result); } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Back Response Deposit Payment Gateway", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }
public int AdminTopupApproval(string AdminID, long TopupSrno, bool ApproveStatus, string Remarks) { try { int result; var CurrentUserTopup = _db.MstTopUp.Where(x => x.Srno == TopupSrno && x.Status == 0).FirstOrDefault(); if (CurrentUserTopup != null) { var CurrentUserWallet = _db.MstUserWallet.Where(x => x.MemberSrno == CurrentUserTopup.MemberSrno).FirstOrDefault(); if (ApproveStatus) { var CurrentSettings = _db.MstSettings.Where(x => x.SettingName == "NormalTurnover").FirstOrDefault(); if (CurrentUserTopup.TransactionType == 0) { var user_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = CurrentUserTopup.MemberSrno, WalletFrom = CurrentUserTopup.BankName + " " + CurrentUserTopup.BankAccountNumber + " " + CurrentUserTopup.BankAccountHolder + " with reference number " + CurrentUserTopup.TransactionReferenceNumber, WalletTo = "CASH WALLET", TransactionType = 0, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = (decimal)CurrentUserTopup.TopupAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + (decimal)CurrentUserTopup.TopupAmount, IsDeduct = false, Description = string.Format("ADMIN:{0} APPROVED THIS TOPUP SERIAL NUMBER:{1} AT:{2}", AdminID, CurrentUserTopup.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_topup = new LogTopup { MemberSrno = CurrentUserTopup.MemberSrno, WalletFrom = CurrentUserTopup.BankName + " " + CurrentUserTopup.BankAccountNumber + " " + CurrentUserTopup.BankAccountHolder + " with reference number " + CurrentUserTopup.TransactionReferenceNumber, WalletTo = "CASH WALLET", TransactionType = 0, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = (decimal)CurrentUserTopup.TopupAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + (decimal)CurrentUserTopup.TopupAmount, Description = string.Format("ADMIN:{0} APPROVED THIS TOPUP SERIAL NUMBER:{1} AT:{2}", AdminID, CurrentUserTopup.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; _db.LogUserTrackingWallet.Add(user_topup_request_tracking); _db.LogTopup.Add(log_topup); result = Models_General.SUCC_ADMIN_APPROVE_TOPUP; } else if (CurrentUserTopup.TransactionType == 1) { var user_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = CurrentUserTopup.MemberSrno, WalletFrom = "CRYPTO CURRENCY WITH TRANSACTION HASH" + CurrentUserTopup.TransactionHash, WalletTo = "CASH WALLET", TransactionType = 2, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = (decimal)CurrentUserTopup.TopupAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + (decimal)CurrentUserTopup.TopupAmount, IsDeduct = false, Description = string.Format("ADMIN:{0} APPROVED THIS TOPUP SERIAL NUMBER:{1} AT:{2}", AdminID, CurrentUserTopup.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_topup = new LogTopup { MemberSrno = CurrentUserTopup.MemberSrno, WalletFrom = "CRYPTO CURRENCY WITH TRANSACTION HASH" + CurrentUserTopup.TransactionHash, WalletTo = "CASH WALLET", TransactionType = 2, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = (decimal)CurrentUserTopup.TopupAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + (decimal)CurrentUserTopup.TopupAmount, Description = string.Format("ADMIN:{0} APPROVED THIS TOPUP SERIAL NUMBER:{1} AT:{2}", AdminID, CurrentUserTopup.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; _db.LogUserTrackingWallet.Add(user_topup_request_tracking); _db.LogTopup.Add(log_topup); result = Models_General.SUCC_ADMIN_APPROVE_TOPUP; } else { result = Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR; } decimal finalturnover = CurrentUserTopup.TopupAmount * int.Parse(CurrentSettings.SettingValue); CurrentUserTopup.Status = 1; CurrentUserTopup.ApproveBy = AdminID; CurrentUserTopup.ApproveDate = DateTime.Now; CurrentUserTopup.ApproveRemark = Remarks; CurrentUserWallet.CashCredit += CurrentUserTopup.TopupAmount; CurrentUserWallet.TurnoverAmount += finalturnover; } else { CurrentUserTopup.Status = 2; CurrentUserTopup.ApproveBy = AdminID; CurrentUserTopup.ApproveDate = DateTime.Now; CurrentUserTopup.ApproveRemark = Remarks; result = Models_General.SUCC_ADMIN_REJECT_TOPUP; } _db.SaveChanges(); return(result); } else { return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Admin Approve Topup", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }
public int EditMainWalletCredit(string AdminID, long MemberSrno, int ManipulateType, decimal ManipulateAmount, decimal TurnoverAmount) { try { int result; var CurrentUserWallet = _db.MstUserWallet.Where(x => x.MemberSrno == MemberSrno).FirstOrDefault(); if (CurrentUserWallet != null) { if (ManipulateType == 0) { var user_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = MemberSrno, WalletFrom = "EGG SYSTEM", WalletTo = "CASH WALLET", TransactionType = 6, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = ManipulateAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + ManipulateAmount, IsDeduct = false, Description = string.Format("ADMIN:{0} MANUALLY TOPUP TO {1} WITH TURNOVER AMOUNT {2} AT:{3}", AdminID, MemberSrno, TurnoverAmount, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_topup = new LogTopup { MemberSrno = MemberSrno, WalletFrom = "EGG SYSTEM", WalletTo = "CASH WALLET", TransactionType = 6, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = ManipulateAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit + ManipulateAmount, Description = string.Format("ADMIN:{0} MANUALLY TOPUP TO {1} WITH TURNOVER AMOUNT {2} AT:{3}", AdminID, MemberSrno, TurnoverAmount, DateTime.Now), CreatedDateTime = DateTime.Now, }; _db.LogUserTrackingWallet.Add(user_topup_request_tracking); _db.LogTopup.Add(log_topup); CurrentUserWallet.CashCredit += ManipulateAmount; CurrentUserWallet.TurnoverAmount += TurnoverAmount; _db.SaveChanges(); result = Models_General.SUCC_EDIT_CASH_WALLET; } else if (ManipulateType == 1) { var user_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "EGG SYSTEM", TransactionType = 7, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = ManipulateAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit - ManipulateAmount, IsDeduct = true, Description = string.Format("ADMIN:{0} MANUALLY WITHDRAWAL TO {1} WITH TURNOVER AMOUNT {2} AT:{3}", AdminID, MemberSrno, TurnoverAmount, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_withdraw = new LogWithdraw { MemberSrno = MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "EGG SYSTEM", TransactionType = 7, PreviousAmount = CurrentUserWallet.CashCredit, TransactionAmount = ManipulateAmount, CurrentTotalAmount = CurrentUserWallet.CashCredit - ManipulateAmount, Description = string.Format("ADMIN:{0} MANUALLY WITHDRAWAL TO {1} WITH TURNOVER AMOUNT {2} AT:{3}", AdminID, MemberSrno, TurnoverAmount, DateTime.Now), CreatedDateTime = DateTime.Now, }; _db.LogUserTrackingWallet.Add(user_topup_request_tracking); _db.LogWithdraw.Add(log_withdraw); if (CurrentUserWallet.CashCredit > 0) { if (ManipulateAmount > CurrentUserWallet.CashCredit) { CurrentUserWallet.CashCredit = 0; } else { CurrentUserWallet.CashCredit -= ManipulateAmount; } } if (CurrentUserWallet.TurnoverAmount > 0) { if (TurnoverAmount > CurrentUserWallet.TurnoverAmount) { CurrentUserWallet.TurnoverAmount = 0; } else { CurrentUserWallet.TurnoverAmount -= TurnoverAmount; } } _db.SaveChanges(); result = Models_General.SUCC_EDIT_CASH_WALLET; } else { result = Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR; } } else { result = Models_General.ERR_USER_WALLET_NOT_FOUND; } return(result); } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Manipulate Main Wallet Credit", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }
public int TransferWalletCredit(long Srno, string RefCode, decimal TransferAmount) { try { var OwnerExist = _db.MstUser.Where(x => x.MemberSrno == Srno).FirstOrDefault(); var ReceiverExist = _db.MstUser.Where(x => x.RefCode == RefCode).FirstOrDefault(); if (OwnerExist != null) { var OwnerWallet = _db.MstUserWallet.Where(x => x.MemberSrno == OwnerExist.MemberSrno).FirstOrDefault(); if (OwnerWallet.CashCredit < TransferAmount) { return(Models_General.ERR_INSUFFICIENT_CASH_BALANCE); } else { if (ReceiverExist != null) { if (OwnerExist.Country != ReceiverExist.Country) { return(Models_General.ERR_CURRENCY_NOT_SAME); } var ReceiverWallet = _db.MstUserWallet.Where(x => x.MemberSrno == ReceiverExist.MemberSrno).FirstOrDefault(); var owner_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = OwnerExist.MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "OTHER USER CASH WALLET", TransactionType = 10, PreviousAmount = OwnerWallet.CashCredit, TransactionAmount = TransferAmount, CurrentTotalAmount = OwnerWallet.CashCredit - TransferAmount, IsDeduct = true, Description = string.Format("USER:{0} TRANSFER AMOUNT:{1} TO USER:{2} AT:{3}", OwnerExist.MemberSrno, TransferAmount, ReceiverExist.MemberSrno, DateTime.Now), CreatedDateTime = DateTime.Now, Sender = OwnerExist.MemberSrno, Receiver = ReceiverExist.MemberSrno }; var receiver_topup_request_tracking = new LogUserTrackingWallet { MemberSrno = ReceiverExist.MemberSrno, WalletFrom = "OTHER USER CASH WALLET", WalletTo = "CASH WALLET", TransactionType = 11, PreviousAmount = ReceiverWallet.CashCredit, TransactionAmount = TransferAmount, CurrentTotalAmount = ReceiverWallet.CashCredit + TransferAmount, IsDeduct = false, Description = string.Format("USER:{0} TRANSFER AMOUNT:{1} TO USER:{2} AT:{3}", OwnerExist.MemberSrno, TransferAmount, ReceiverExist.MemberSrno, DateTime.Now), CreatedDateTime = DateTime.Now, Sender = OwnerExist.MemberSrno, Receiver = ReceiverExist.MemberSrno }; var receiver_log_topup = new LogTopup { MemberSrno = ReceiverExist.MemberSrno, WalletFrom = "OTHER USER CASH WALLET", WalletTo = "CASH WALLET", TransactionType = 11, PreviousAmount = ReceiverWallet.CashCredit, TransactionAmount = TransferAmount, CurrentTotalAmount = ReceiverWallet.CashCredit + TransferAmount, Description = string.Format("USER:{0} TRANSFER AMOUNT:{1} TO USER:{2} AT:{3}", OwnerExist.MemberSrno, TransferAmount, ReceiverExist.MemberSrno, DateTime.Now), CreatedDateTime = DateTime.Now, }; var owner_log_withdraw = new LogWithdraw { MemberSrno = OwnerExist.MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "OTHER USER CASH WALLET", TransactionType = 10, PreviousAmount = OwnerWallet.CashCredit, TransactionAmount = TransferAmount, CurrentTotalAmount = OwnerWallet.CashCredit - TransferAmount, Description = string.Format("USER:{0} TRANSFER AMOUNT:{1} TO USER:{2} AT:{3}", OwnerExist.MemberSrno, TransferAmount, ReceiverExist.MemberSrno, DateTime.Now), CreatedDateTime = DateTime.Now, }; _db.LogUserTrackingWallet.Add(owner_topup_request_tracking); _db.LogUserTrackingWallet.Add(receiver_topup_request_tracking); _db.LogTopup.Add(receiver_log_topup); _db.LogWithdraw.Add(owner_log_withdraw); OwnerWallet.CashCredit -= TransferAmount; ReceiverWallet.CashCredit += TransferAmount; ReceiverWallet.TurnoverAmount += TransferAmount; _db.SaveChanges(); return(Models_General.SUCC_TRANSFER_CREDIT); } else { return(Models_General.ERR_TRANSFER_USER_NOT_FOUND); } } } else { return(Models_General.ERR_USER_NOT_FOUND); } } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Transfer Wallet Credit", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }
public int AdminApproveWithdrawal(string AdminID, long withdrawalsrno, bool approvestatus, string remarks) { try { //Retrieve The Following Withdrawal Details And Check Is it Valid var WithdrawalDetails = _db.MstWithdraw.Where(x => x.Srno == withdrawalsrno && x.Status == 0).FirstOrDefault(); //Declare a default result; int result; if (WithdrawalDetails != null) { // Check The Approval Staus For The Withdrawal if (approvestatus) { if (WithdrawalDetails.TransactionType == 0) { WithdrawalDetails.ApproveBy = AdminID; WithdrawalDetails.ApproveDate = DateTime.Now; WithdrawalDetails.ApproveRemark = remarks; WithdrawalDetails.Status = 1; //UPDATE MEMBER WALLET PENDING WITHDRAWAL AMOUNT TO ZERO var UserWalletDetails = _db.MstUserWallet.Where(x => x.MemberSrno == WithdrawalDetails.MemberSrno).FirstOrDefault(); //LOG_USER_TRAKCING_WALLET - LOG USER TRANSACTION ACTIVITY ONLY WHEN TRANSACTION COMPLETED : LIKE WITHDRAWAL APPROVED, TOPUP APPROVED, TRANSFER GAME CREDIT SUCCESS var log_user_tracking_wallet = new LogUserTrackingWallet { MemberSrno = WithdrawalDetails.MemberSrno, WalletFrom = "CASH WALLET", WalletTo = WithdrawalDetails.BankName + " " + WithdrawalDetails.BankCardNo + " " + WithdrawalDetails.BankAccountHolder, TransactionType = 1, PreviousAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount, TransactionAmount = WithdrawalDetails.WithdrawAmount, CurrentTotalAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount - WithdrawalDetails.WithdrawAmount, IsDeduct = true, Description = string.Format("ADMIN:{0} APPROVED THIS WITHDRAWAL SERIAL NUMBER:{1} AT:{2}", AdminID, WithdrawalDetails.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_topup = new LogWithdraw { MemberSrno = WithdrawalDetails.MemberSrno, WalletFrom = "CASH WALLET", WalletTo = WithdrawalDetails.BankName + " " + WithdrawalDetails.BankCardNo + " " + WithdrawalDetails.BankAccountHolder, TransactionType = 1, PreviousAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount, TransactionAmount = WithdrawalDetails.WithdrawAmount, CurrentTotalAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount - WithdrawalDetails.WithdrawAmount, Description = string.Format("ADMIN:{0} APPROVED THIS TOPUP SERIAL NUMBER:{1} AT:{2}", AdminID, WithdrawalDetails.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; UserWalletDetails.PendingWithdrawAmount -= WithdrawalDetails.WithdrawAmount; _db.LogUserTrackingWallet.Add(log_user_tracking_wallet); result = Models_General.SUCC_ADMIN_APPROVE_WITHDRAWAL; } else if (WithdrawalDetails.TransactionType == 1) { WithdrawalDetails.ApproveBy = AdminID; WithdrawalDetails.ApproveDate = DateTime.Now; WithdrawalDetails.ApproveRemark = remarks; WithdrawalDetails.Status = 1; //UPDATE MEMBER WALLET PENDING WITHDRAWAL AMOUNT TO ZERO var UserWalletDetails = _db.MstUserWallet.Where(x => x.MemberSrno == WithdrawalDetails.MemberSrno).FirstOrDefault(); UserWalletDetails.PendingWithdrawAmount -= WithdrawalDetails.WithdrawAmount; //LOG_USER_TRAKCING_WALLET - LOG USER TRANSACTION ACTIVITY ONLY WHEN TRANSACTION COMPLETED : LIKE WITHDRAWAL APPROVED, TOPUP APPROVED, TRANSFER GAME CREDIT SUCCESS var log_user_tracking_wallet = new LogUserTrackingWallet { MemberSrno = WithdrawalDetails.MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "WALLET ADDRESS " + WithdrawalDetails.ToAddress, TransactionType = 3, PreviousAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount, TransactionAmount = WithdrawalDetails.WithdrawAmount, CurrentTotalAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount - WithdrawalDetails.WithdrawAmount, IsDeduct = true, Description = string.Format("ADMIN:{0} APPROVED THIS WITHDRAWAL SERIAL NUMBER:{1} AT:{2}", AdminID, WithdrawalDetails.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; var log_withdraw = new LogWithdraw { MemberSrno = WithdrawalDetails.MemberSrno, WalletFrom = "CASH WALLET", WalletTo = "WALLET ADDRESS " + WithdrawalDetails.ToAddress, TransactionType = 3, PreviousAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount, TransactionAmount = WithdrawalDetails.WithdrawAmount, CurrentTotalAmount = UserWalletDetails.CashCredit + UserWalletDetails.PendingWithdrawAmount - WithdrawalDetails.WithdrawAmount, Description = string.Format("ADMIN:{0} APPROVED THIS TOPUP SERIAL NUMBER:{1} AT:{2}", AdminID, WithdrawalDetails.Srno, DateTime.Now), CreatedDateTime = DateTime.Now, }; UserWalletDetails.PendingWithdrawAmount -= WithdrawalDetails.WithdrawAmount; _db.LogUserTrackingWallet.Add(log_user_tracking_wallet); _db.LogWithdraw.Add(log_withdraw); result = Models_General.SUCC_ADMIN_APPROVE_WITHDRAWAL; } else { result = Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR; } //Update The Withdrawal Details and Set Status to APPROVED } else { //Update The Withdrawal Details and Set Status to REJECTED WithdrawalDetails.RejectBy = AdminID; WithdrawalDetails.RejectDate = DateTime.Now; WithdrawalDetails.RejectRemark = remarks; WithdrawalDetails.Status = 2; //UPDATE MEMBER WALLET PENDING WITHDRAWAL AMOUNT TO ZERO AND TRANSFER BACK TO CASH CREDIT var UserWalletDetails = _db.MstUserWallet.Where(x => x.MemberSrno == WithdrawalDetails.MemberSrno).FirstOrDefault(); UserWalletDetails.CashCredit = UserWalletDetails.CashCredit + WithdrawalDetails.WithdrawAmount; UserWalletDetails.PendingWithdrawAmount -= WithdrawalDetails.WithdrawAmount; result = Models_General.SUCC_ADMIN_REJECT_WITHDRAWAL; } _db.SaveChanges(); return(result); } return(Models_General.ERR_WITHDRAWAL_NOT_FOUND); } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Admin Approve Withdrawal", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }
public async Task <int> RecollectGameWalletAmounts() { try { var UserGameAccounts = _db.MstUserGameAccount.ToList(); foreach (var useraccount in UserGameAccounts) { var balance = await _intergration.GetBalance(useraccount.GameId); if (balance.Error == 0) { var founduserwallet = _db.MstUserWallet.Where(x => x.MemberSrno == useraccount.MemberSrno).FirstOrDefault(); if (founduserwallet != null) { var TransactionID = new Guid().ToString(); var result = await _intergration.WithdrawGameCredit(useraccount.GameId, balance.Balance, TransactionID); var UserDetails = _db.MstUserAccount.Where(x => x.MemberSrno == useraccount.MemberSrno).FirstOrDefault(); if (result.Error == 0) { // add new log from cash credit transaction var log_user_tracking_wallet = new LogUserTrackingWallet { MemberSrno = useraccount.MemberSrno, WalletFrom = "GAME WALLET", WalletTo = "CASH WALLET", TransactionType = 5, PreviousAmount = founduserwallet.CashCredit, TransactionAmount = balance.Balance, CurrentTotalAmount = founduserwallet.CashCredit + balance.Balance, IsDeduct = false, Description = string.Format("MEMBER:{0} WITHDRAWAL GAME CREDIT INTO CASH WALLET WITH AMOUNT:{1} AT:{2}", UserDetails.LoginId, balance.Balance, DateTime.Now), CreatedDateTime = DateTime.Now, }; //add new log for game credit transaction var log_user_game_credit_transaction = new LogUserGameCreditTransaction { GameApi = "998 API", TrasactionId = TransactionID, MemberSrno = useraccount.MemberSrno, Player = useraccount.GameId, TransferAmount = result.Amount, BeforeAmount = result.Before, AfterAmount = result.After, TransactionType = "WITHDRAWAL", Status = "SUCCESS", TransferDate = DateTime.Now }; founduserwallet.CashCredit += balance.Balance; _db.LogUserTrackingWallet.Add(log_user_tracking_wallet); _db.LogUserGameCreditTransaction.Add(log_user_game_credit_transaction); } } else { continue; } } } await _db.SaveChangesAsync(); return(Models_General.SUCC_RECOLLECT_ALL_GAMER_WALLET_BALANCE); } catch (Exception ex) { var new_error = new LogErrorSystem { Title = "Recollect Game Wallets Amount", Details = ex.Message + "/" + ex.StackTrace, Context = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(), CreatedDateTime = DateTime.Now, }; _db.LogErrorSystem.Add(new_error); _db.SaveChanges(); return(Models_General.ERR_SERVER_BUSY_INTERNAL_ERROR); } }