コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        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);
            }
        }