Ejemplo n.º 1
0
        /// <summary>
        /// User purchased currency, we are saving it here. But it is not yet complete.
        /// </summary>
        /// <param name="purchaseID"></param>
        /// <param name="principalID"></param>
        /// <param name="userName"></param>
        /// <param name="amount"></param>
        /// <param name="conversionFactor"></param>
        /// <param name="region"></param>
        /// <param name="puchaseType"> </param>
        /// <returns></returns>
        public bool UserCurrencyBuy(UUID purchaseID, UUID principalID, string userName, uint amount, float conversionFactor, RegionTransactionDetails region, int puchaseType)
        {
            List <object> values = new List <object>
            {
                purchaseID.ToString(),             // PurchaseID
                          puchaseType,             // PurchaseType
                          principalID.ToString(),  // PrincipalID
                          userName,                // PrincipalID
                          amount,                  // Amount
                          Convert.ToInt32(Math.Round(((float.Parse(amount.ToString()) / m_options.RealCurrencyConversionFactor) + ((float.Parse(amount.ToString()) / m_options.RealCurrencyConversionFactor) * (m_options.AdditionPercentage / 10000.0)) + (m_options.AdditionAmount / 100.0)) * 100)),
                Convert.ToInt32(conversionFactor), // ConversionFactor
                region.RegionName,                 // RegionName
                region.RegionID.ToString(),        // RegionID
                region.RegionPosition,             // RegionPos
                0,                                 // Complete
                "",                                // CompleteMethod
                "",                                // CompleteReference
                "",                                // TransactionID
                Utils.GetUnixTime(),               // Created
                Utils.GetUnixTime(),               // Updated
                "",                                // pyapal raw data
                ""                                 //notes
            };

            m_gd.Insert("stardust_purchased", values.ToArray());
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// This is the function that everythign really happens Grid and Region Side. We build the transaction here.
        /// </summary>
        /// <param name="toID"></param>
        /// <param name="fromID"></param>
        /// <param name="toObjectID"></param>
        /// <param name="fromObjectID"></param>
        /// <param name="amount"></param>
        /// <param name="description"></param>
        /// <param name="type"></param>
        /// <param name="transactionID"></param>
        /// <returns></returns>
        public virtual bool UserCurrencyTransfer(UUID toID, UUID fromID, UUID toObjectID, UUID fromObjectID, uint amount, string description, TransactionType type, UUID transactionID)
        {
            bool isgridServer = false;

            #region Build the transaction



            string transactionPosition = "";
            IScene scene          = null;
            string fromObjectName = "";
            string toObjectName   = "";


            if ((fromObjectID != UUID.Zero) && (StarDustRegionService != null))
            {
                ISceneChildEntity ce = StarDustRegionService.FindObject(fromObjectID, out scene);
                if (ce != null)
                {
                    fromObjectName      = ce.Name;
                    transactionPosition = ce.AbsolutePosition.ToString();
                }
            }

            if ((toObjectID != UUID.Zero) && (StarDustRegionService != null))
            {
                ISceneChildEntity ce = StarDustRegionService.FindObject(toObjectID, out scene);
                if (ce != null)
                {
                    toObjectName        = ce.Name;
                    transactionPosition = ce.AbsolutePosition.ToString();
                }
            }

            if (transactionPosition.Length == 0)
            {
                transactionPosition = scene.GetScenePresence(fromID).AbsolutePosition.ToString();
            }

            if (transactionPosition.Length == 0)
            {
                transactionPosition = scene.GetScenePresence(toID).AbsolutePosition.ToString();
            }

            if (transactionPosition.Length == 0)
            {
                transactionPosition = "Unknown";
            }

            RegionTransactionDetails r = new RegionTransactionDetails();
            ulong regionHandel         = 0;
            if (scene != null)
            {
                r = new RegionTransactionDetails
                {
                    RegionID       = scene.RegionInfo.RegionID,
                    RegionName     = scene.RegionInfo.RegionName,
                    RegionPosition = transactionPosition
                };
            }
            else if (m_registry != null)
            {
                ICapsService capsService = m_registry.RequestModuleInterface <ICapsService>();
                if (capsService != null)
                {
                    IClientCapsService client = capsService.GetClientCapsService(fromID);
                    if (client != null)
                    {
                        IRegionClientCapsService regionClient = client.GetRootCapsService();
                        if (regionClient != null)
                        {
                            regionHandel     = regionClient.Region.RegionHandle;
                            r.RegionName     = regionClient.Region.RegionName;
                            r.RegionPosition = "<128,128,128>";
                            r.RegionID       = regionClient.Region.RegionID;
                            isgridServer     = true;
                        }
                    }
                }
            }
            else
            {
                return(false);
            }


            string fromName = "";
            if (fromID != UUID.Zero)
            {
                if (StarDustRegionService != null)
                {
                    IClientAPI icapiFrom = StarDustRegionService.GetUserClient(fromID);
                    if (icapiFrom != null)
                    {
                        fromName = icapiFrom.Name;
                    }
                }
                if (fromName == "")
                {
                    UserAccount ua = GetUserAccount(fromID);
                    if (ua != null)
                    {
                        fromName = ua.Name;
                    }
                }
                if (fromName == "")
                {
                    if (StarDustRegionService != null)
                    {
                        ISceneChildEntity ce = StarDustRegionService.FindObject(fromID, out scene);
                        if (ce != null)
                        {
                            fromObjectID = fromID;
                            fromID       = ce.OwnerID;
                            UserAccount ua2 = GetUserAccount(fromID);

                            if (ua2 != null)
                            {
                                fromName = ua2.Name;
                            }
                            else
                            {
                                fromID = UUID.Zero;
                            }

                            fromObjectName = ce.Name;
                        }
                        else
                        {
                            fromID = UUID.Zero;
                        }
                    }
                    else
                    {
                        fromID = UUID.Zero;
                    }
                }
            }

            if (fromID == UUID.Zero)
            {
                MainConsole.Instance.Debug("[StarDust MoneyModule.cs] Could not find who the money was coming from.");
                return(false);
            }

            string toName = "";
            if (toID != UUID.Zero)
            {
                if (StarDustRegionService != null)
                {
                    IClientAPI icapiFrom = StarDustRegionService.GetUserClient(toID);
                    if (icapiFrom != null)
                    {
                        toName = icapiFrom.Name;
                    }
                }
                if (toName == "")
                {
                    UserAccount ua = GetUserAccount(toID);
                    if (ua != null)
                    {
                        toName = ua.Name;
                    }
                }
                if (toName == "")
                {
                    if (StarDustRegionService != null)
                    {
                        ISceneChildEntity ce = StarDustRegionService.FindObject(toID, out scene);
                        if (ce != null)
                        {
                            toObjectID = toID;
                            toID       = ce.OwnerID;
                            UserAccount ua3 = GetUserAccount(toID);
                            if (ua3 != null)
                            {
                                toName = ua3.Name;
                            }
                            toObjectName = ce.Name;
                        }
                        else
                        {
                            toName = "Group";
                        }
                    }
                    else
                    {
                        toName = "Group";
                    }
                }
            }
            else
            {
                toID = m_options.BankerPrincipalID;
            }
            //this ensure no matter what theres a place for the money to go
            UserCurrencyInfo(toID);

            if ((description == "") && ((int)type == 5001) && (fromObjectID == UUID.Zero) && (toObjectID == UUID.Zero))
            {
                description = "Gift";
            }
            if (description == "")
            {
                description = Enum.GetName(typeof(TransactionType), type);
            }
            if (description == "")
            {
                description = type.ToString();
            }



            #endregion

            #region Perform transaction

            Transaction transaction =
                UserCurrencyTransfer(new Transaction
            {
                TransactionID  = transactionID,
                Amount         = amount,
                Description    = description,
                FromID         = fromID,
                FromName       = fromName,
                FromObjectID   = fromObjectID,
                FromObjectName = fromObjectName,
                Region         = r,
                ToID           = toID,
                ToName         = toName,
                ToObjectID     = toObjectID,
                ToObjectName   = toObjectName,
                TypeOfTrans    = type
            });
            bool returnvalue = transaction.Complete == 1;

            if (returnvalue)
            {
                m_moneyModule.FireObjectPaid(toObjectID, fromID, (int)amount);
            }

            #endregion

            #region notifications

            if (transaction.Complete == 1)
            {
                if (transaction.ToID != m_options.BankerPrincipalID)
                {
                    if (transaction.TypeOfTrans == TransactionType.Gift)
                    {
                        SendGridMessage(transaction.FromID,
                                        "You Paid " + transaction.ToName + " $" + transaction.Amount.ToString(), !isgridServer, transaction.TransactionID);
                    }
                    else
                    {
                        SendGridMessage(transaction.FromID,
                                        "You Paid $" + transaction.Amount + " to " + transaction.ToName, !isgridServer, transaction.TransactionID);
                    }
                    SendGridMessage(transaction.ToID,
                                    "You Were Paid $" + transaction.Amount + " by " + transaction.FromName, !isgridServer, transaction.TransactionID);
                }
                else if (transaction.TypeOfTrans == TransactionType.UploadCharge)
                {
                    SendGridMessage(transaction.FromID, "You Paid $" + transaction.Amount + " to upload", !isgridServer, transaction.TransactionID);
                }
                else
                {
                    SendGridMessage(transaction.FromID, "You Paid $" + transaction.Amount, !isgridServer, transaction.TransactionID);
                }
            }
            else
            {
                if (transaction.CompleteReason != "")
                {
                    SendGridMessage(transaction.FromID, "Transaction Failed - " + transaction.CompleteReason, !isgridServer, transaction.TransactionID);
                }
                else
                {
                    SendGridMessage(transaction.FromID, "Transaction Failed", !isgridServer, transaction.TransactionID);
                }
            }

            if ((toObjectID != UUID.Zero) && (!isgridServer))
            {
                m_moneyModule.FireObjectPaid(toObjectID, fromID, (int)amount);
            }

            #endregion

            return(returnvalue);
        }