Exemple #1
0
        public UserCurrency GetUserCurrency(UUID agentId)
        {
            object remoteValue = DoRemoteByURL("CurrencyServerURI", agentId);

            if (remoteValue != null || m_doRemoteOnly)
            {
                return((UserCurrency)remoteValue);
            }

            Dictionary <string, object> where = new Dictionary <string, object>(1);
            where["PrincipalID"] = agentId;
            List <string> query = m_gd.Query(new string[] { "*" }, _REALM, new QueryFilter()
            {
                andFilters = where
            }, null, null, null);

            UserCurrency currency;

            if (query.Count == 0)
            {
                currency = new UserCurrency(agentId, 0, 0, 0, false, 0);
                UserCurrencyCreate(agentId);
                return(currency);
            }

            return(new UserCurrency(query));
        }
Exemple #2
0
        public bool UserCurrencyUpdate(UserCurrency agent)
        {
            object remoteValue = DoRemoteByURL("CurrencyServerURI", agent);

            if (remoteValue != null || m_doRemoteOnly)
            {
                return((bool)remoteValue);
            }

            UserCurrencyUpdate(agent, false);
            return(true);
        }
Exemple #3
0
 private void UserCurrencyUpdate(UserCurrency agent, bool full)
 {
     if (full)
     {
         m_gd.Update(_REALM,
                     new Dictionary <string, object>
         {
             { "LandInUse", agent.LandInUse },
             { "Tier", agent.Tier },
             { "IsGroup", agent.IsGroup },
             { "Amount", agent.Amount },
             { "StipendsBalance", agent.StipendsBalance }
         }, null,
                     new QueryFilter()
         {
             andFilters =
                 new Dictionary <string, object>
             {
                 { "PrincipalID", agent.PrincipalID }
             }
         }
                     , null, null);
     }
     else
     {
         m_gd.Update(_REALM,
                     new Dictionary <string, object>
         {
             { "LandInUse", agent.LandInUse },
             { "Tier", agent.Tier },
             { "IsGroup", agent.IsGroup }
         }, null,
                     new QueryFilter()
         {
             andFilters =
                 new Dictionary <string, object>
             {
                 { "PrincipalID", agent.PrincipalID }
             }
         }
                     , null, null);
     }
 }
        public UserCurrency GetUserCurrency(UUID agentId)
        {
            object remoteValue = DoRemoteByURL("CurrencyServerURI", agentId);
            if (remoteValue != null || m_doRemoteOnly)
                return (UserCurrency) remoteValue;

            Dictionary<string, object> where = new Dictionary<string, object>(1);
            where["PrincipalID"] = agentId;
            List<string> query = m_gd.Query(new string[] {"*"}, _REALM, new QueryFilter()
                                                                            {
                                                                                andFilters = where
                                                                            }, null, null, null);

            UserCurrency currency = new UserCurrency();
            if (query.Count == 0)
            {
                UserCurrencyCreate(agentId);
                return currency;
            }
            currency.FromArray(query);
            return currency;
        }
 private void UserCurrencyUpdate(UserCurrency agent, bool full)
 {
     if (full)
         m_gd.Update(_REALM,
                     new Dictionary<string, object>
                         {
                             {"LandInUse", agent.LandInUse},
                             {"Tier", agent.Tier},
                             {"IsGroup", agent.IsGroup},
                             {"Amount", agent.Amount},
                             {"StipendsBalance", agent.StipendsBalance}
                         }, null,
                     new QueryFilter()
                         {
                             andFilters =
                                 new Dictionary<string, object>
                                     {
                                         {"PrincipalID", agent.PrincipalID}
                                     }
                         }
                     , null, null);
     else
         m_gd.Update(_REALM,
                     new Dictionary<string, object>
                         {
                             {"LandInUse", agent.LandInUse},
                             {"Tier", agent.Tier},
                             {"IsGroup", agent.IsGroup}
                         }, null,
                     new QueryFilter()
                         {
                             andFilters =
                                 new Dictionary<string, object>
                                     {
                                         {"PrincipalID", agent.PrincipalID}
                                     }
                         }
                     , null, null);
 }
        public bool UserCurrencyUpdate(UserCurrency agent)
        {
            object remoteValue = DoRemoteByURL("CurrencyServerURI", agent);
            if (remoteValue != null || m_doRemoteOnly)
                return (bool) remoteValue;

            UserCurrencyUpdate(agent, false);
            return true;
        }
Exemple #7
0
        public bool UserCurrencyTransfer(UUID toID, UUID fromID, UUID toObjectID, string toObjectName, UUID fromObjectID,
                                         string fromObjectName, uint amount, string description, TransactionType type, UUID transactionID)
        {
            object remoteValue = DoRemoteByURL("CurrencyServerURI", toID, fromID, toObjectID, toObjectName, fromObjectID,
                                               fromObjectName, amount, description, type, transactionID);

            if (remoteValue != null || m_doRemoteOnly)
            {
                return((bool)remoteValue);
            }

            UserCurrency toCurrency   = GetUserCurrency(toID);
            UserCurrency fromCurrency = fromID == UUID.Zero ? null : GetUserCurrency(fromID);

            if (toCurrency == null)
            {
                return(false);
            }
            if (fromCurrency != null)
            {
                //Check to see whether they have enough money
                if ((int)fromCurrency.Amount - (int)amount < 0)
                {
                    return(false); //Not enough money
                }
                fromCurrency.Amount -= amount;

                UserCurrencyUpdate(fromCurrency, true);
            }
            if (fromID == toID)
            {
                toCurrency = GetUserCurrency(toID);
            }

            //Update the user whose getting paid
            toCurrency.Amount += amount;
            UserCurrencyUpdate(toCurrency, true);

            //Must send out noficiations to the users involved so that they get the updates
            if (m_syncMessagePoster == null)
            {
                m_syncMessagePoster = m_registry.RequestModuleInterface <ISyncMessagePosterService>();
                m_userInfoService   = m_registry.RequestModuleInterface <IAgentInfoService>();
            }
            if (m_syncMessagePoster != null)
            {
                UserInfo    toUserInfo   = m_userInfoService.GetUserInfo(toID.ToString());
                UserInfo    fromUserInfo = fromID == UUID.Zero ? null : m_userInfoService.GetUserInfo(fromID.ToString());
                UserAccount toAccount    = m_registry.RequestModuleInterface <IUserAccountService>()
                                           .GetUserAccount(null, toID);
                UserAccount fromAccount = m_registry.RequestModuleInterface <IUserAccountService>()
                                          .GetUserAccount(null, fromID);
                if (m_config.SaveTransactionLogs)
                {
                    AddTransactionRecord((transactionID == UUID.Zero ? UUID.Random() : transactionID),
                                         description, toID, fromID, amount, type, (toCurrency == null ? 0 : toCurrency.Amount),
                                         (fromCurrency == null ? 0 : fromCurrency.Amount), (toAccount == null ? "System" : toAccount.Name),
                                         (fromAccount == null ? "System" : fromAccount.Name), toObjectName, fromObjectName, (fromUserInfo == null ?
                                                                                                                             UUID.Zero : fromUserInfo.CurrentRegionID));
                }

                if (fromID == toID)
                {
                    if (toUserInfo != null && toUserInfo.IsOnline)
                    {
                        SendUpdateMoneyBalanceToClient(toID, transactionID, toUserInfo.CurrentRegionURI, toCurrency.Amount,
                                                       toAccount == null ? "" : (toAccount.Name + " paid you $" + amount + (description == "" ? "" : ": " + description)));
                    }
                }
                else
                {
                    if (toUserInfo != null && toUserInfo.IsOnline)
                    {
                        SendUpdateMoneyBalanceToClient(toID, transactionID, toUserInfo.CurrentRegionURI, toCurrency.Amount,
                                                       fromAccount == null ? "" : (fromAccount.Name + " paid you $" + amount + (description == "" ? "" : ": " + description)));
                    }
                    if (fromUserInfo != null && fromUserInfo.IsOnline)
                    {
                        SendUpdateMoneyBalanceToClient(fromID, transactionID, fromUserInfo.CurrentRegionURI, fromCurrency.Amount,
                                                       "You paid " + (toAccount == null ? "" : toAccount.Name) + " $" + amount);
                    }
                }
            }
            return(true);
        }
Exemple #8
0
        public XmlRpcResponse PreflightBuyLandPrepFunc(XmlRpcRequest request, IPEndPoint ep)
        {
            Hashtable      requestData = (Hashtable)request.Params[0];
            XmlRpcResponse ret         = new XmlRpcResponse();
            Hashtable      retparam    = new Hashtable();

            Hashtable membershiplevels = new Hashtable();

            membershiplevels.Add("levels", membershiplevels);

            Hashtable landuse = new Hashtable();

            Hashtable level = new Hashtable
            {
                { "id", "00000000-0000-0000-0000-000000000000" },
                { m_connector.GetConfig().UpgradeMembershipUri, "Premium Membership" }
            };

            if (requestData.ContainsKey("agentId") && requestData.ContainsKey("currencyBuy"))
            {
                UUID agentId;
                UUID.TryParse((string)requestData["agentId"], out agentId);
                UserCurrency     currency = m_connector.GetUserCurrency(agentId);
                IUserProfileInfo profile  =
                    DataManager.RequestPlugin <IProfileConnector>("IProfileConnector").GetUserProfile(agentId);

                OSDMap   replyData = null;
                bool     response  = false;
                UserInfo user      = m_agentInfoService.GetUserInfo(agentId.ToString());
                if (user == null)
                {
                    landuse.Add("action", false);

                    retparam.Add("success", false);
                    retparam.Add("currency", currency);
                    retparam.Add("membership", level);
                    retparam.Add("landuse", landuse);
                    retparam.Add("confirm", "asdfajsdkfjasdkfjalsdfjasdf");
                    ret.Value = retparam;
                }
                else
                {
                    OSDMap map = new OSDMap();
                    map["Method"]  = "GetLandData";
                    map["AgentID"] = agentId;
                    m_syncMessagePoster.Get(user.CurrentRegionURI, map, (o) =>
                    {
                        replyData = o;
                        response  = true;
                    });
                    while (!response)
                    {
                        Thread.Sleep(10);
                    }
                    if (replyData == null || replyData["Success"] == false)
                    {
                        landuse.Add("action", false);

                        retparam.Add("success", false);
                        retparam.Add("currency", currency);
                        retparam.Add("membership", level);
                        retparam.Add("landuse", landuse);
                        retparam.Add("confirm", "asdfajsdkfjasdkfjalsdfjasdf");
                        ret.Value = retparam;
                    }
                    else
                    {
                        if (replyData.ContainsKey("SalePrice"))
                        {
                            int  landTierNeeded = (int)(currency.LandInUse + replyData["Area"].AsInteger());
                            bool needsUpgrade   = false;
                            switch (profile.MembershipGroup)
                            {
                            case "Premium":
                            case "":
                                needsUpgrade = landTierNeeded >= currency.Tier;
                                break;

                            case "Banned":
                                needsUpgrade = true;
                                break;
                            }

                            landuse.Add("action", needsUpgrade);

                            retparam.Add("success", true);
                            retparam.Add("currency", currency);
                            retparam.Add("membership", level);
                            retparam.Add("landuse", landuse);
                            retparam.Add("confirm", "asdfajsdkfjasdkfjalsdfjasdf");
                            ret.Value = retparam;
                        }
                    }
                }
            }

            return(ret);
        }
Exemple #9
0
        public XmlRpcResponse PreflightBuyLandPrepFunc(XmlRpcRequest request, IPEndPoint ep)
        {
            Hashtable      requestData = (Hashtable)request.Params[0];
            XmlRpcResponse ret         = new XmlRpcResponse();
            Hashtable      retparam    = new Hashtable();

            Hashtable membershiplevels = new Hashtable();

            membershiplevels.Add("levels", membershiplevels);

            Hashtable landuse = new Hashtable();

            Hashtable level = new Hashtable
            {
                { "id", "00000000-0000-0000-0000-000000000000" },
                { m_connector.GetConfig().UpgradeMembershipUri, "Premium Membership" }
            };

            if (requestData.ContainsKey("agentId") && requestData.ContainsKey("currencyBuy"))
            {
                UUID agentId;
                UUID.TryParse((string)requestData["agentId"], out agentId);
                UserCurrency     currency = m_connector.GetUserCurrency(agentId);
                IUserProfileInfo profile  =
                    DataManager.RequestPlugin <IProfileConnector>("IProfileConnector").GetUserProfile(agentId);


                //IClientCapsService client = m_dustCurrencyService.Registry.RequestModuleInterface<ICapsService>().GetClientCapsService(agentId);
                OSDMap   replyData = null;
                bool     response  = false;
                UserInfo user      = m_agentInfoService.GetUserInfo(agentId.ToString());
                if (user == null)
                {
                    landuse.Add("action", false);

                    retparam.Add("success", false);
                    retparam.Add("currency", currency);
                    retparam.Add("membership", level);
                    retparam.Add("landuse", landuse);
                    retparam.Add("confirm", "asdfajsdkfjasdkfjalsdfjasdf");
                    ret.Value = retparam;
                }
                else
                {
                    OSDMap map = new OSDMap();
                    map["Method"]  = "GetLandData";
                    map["AgentID"] = agentId;
                    m_syncMessagePoster.Get(user.CurrentRegionURI, map, (o) =>
                    {
                        replyData = o;
                        response  = true;
                    });
                    while (!response)
                    {
                        Thread.Sleep(10);
                    }
                    if (replyData == null || replyData["Success"] == false)
                    {
                        landuse.Add("action", false);

                        retparam.Add("success", false);
                        retparam.Add("currency", currency);
                        retparam.Add("membership", level);
                        retparam.Add("landuse", landuse);
                        retparam.Add("confirm", "asdfajsdkfjasdkfjalsdfjasdf");
                        ret.Value = retparam;
                    }
                    else
                    {
                        //if (client != null)
                        //    m_dustCurrencyService.SendGridMessage(agentId, String.Format(m_dustCurrencyService.m_options.MessgeBeforeBuyLand, profile.DisplayName, replyData.ContainsKey("SalePrice")), false, UUID.Zero);
                        if (replyData.ContainsKey("SalePrice"))
                        {
                            // I think, this might be usable if they don't have the money
                            // Hashtable currencytable = new Hashtable { { "estimatedCost", replyData["SalePrice"].AsInteger() } };

                            int  landTierNeeded = (int)(currency.LandInUse + replyData["Area"].AsInteger());
                            bool needsUpgrade   = false;
                            switch (profile.MembershipGroup)
                            {
                            case "Premium":
                            case "":
                                needsUpgrade = landTierNeeded >= currency.Tier;
                                break;

                            case "Banned":
                                needsUpgrade = true;
                                break;
                            }
                            // landuse.Add("action", m_DustCurrencyService.m_options.upgradeMembershipUri);
                            landuse.Add("action", needsUpgrade);

                            retparam.Add("success", true);
                            retparam.Add("currency", currency);
                            retparam.Add("membership", level);
                            retparam.Add("landuse", landuse);
                            retparam.Add("confirm", "asdfajsdkfjasdkfjalsdfjasdf");
                            ret.Value = retparam;
                        }
                    }
                }
            }

            return(ret);
        }