Exemplo n.º 1
0
        public void FinishPurchase(FinishedPurchase purchase)
        {
            const string sql = "INSERT INTO PurchasesTable (Id, PurchaseDate, SteamId, SteamName, ItemId, ItemName, ServerId, CreateDate) " +
                               "VALUES (@Id, @PurchaseDate, @SteamId, @SteamName, @ItemId, @ItemName, @ServerId, @CreateDate);";

            connection.Execute(Query(sql), purchase);
        }
        private void ProcessPurchase(JToken item, JToken result)
        {
            var features = pluginInstance.Configuration.Instance.Packages.FirstOrDefault(x => x.EnjinItemId == item["item_id"].ToObject <int>());

            if (features == null)
            {
                return;
            }

            bool flag = Database.ContainsPurchase(result["purchase_date"].ToObject <int>(), item["item_id"].ToObject <int>());

            string steamIdStr = item["variables_names"][pluginInstance.Configuration.Instance.SteamIDIdentifier].ToString();

            string steamName = null;

            if (ulong.TryParse(steamIdStr, out ulong steamId))
            {
                try
                {
                    Profile profile = new Profile(steamId);
                    steamName = profile.SteamID;
                }
                catch (Exception e)
                {
                    Logger.LogException(e, $"An exception occurated while downloading {steamId} name from Steam");
                }

                TaskDispatcher.QueueOnMainThread(() => ExecuteFeatures(new RocketPlayer(steamId.ToString(), steamName), features, item["item_name"].ToString(), flag));
            }

            var purchase = new FinishedPurchase()
            {
                ItemId       = item["item_id"].ToObject <int>(),
                ItemName     = item["item_name"].ToString(),
                SteamId      = steamIdStr,
                SteamName    = steamName,
                PurchaseDate = result["purchase_date"].ToObject <int>(),
                ServerId     = pluginInstance.Configuration.Instance.ServerIdentifier,
                CreateDate   = DateTime.UtcNow
            };


            Database.FinishPurchase(purchase);

            if (!flag && !string.IsNullOrEmpty(pluginInstance.Configuration.Instance.DiscordWebhookUrl))
            {
                DiscordHelper.SendNotification(purchase);
            }
        }
Exemplo n.º 3
0
        public static void SendNotification(FinishedPurchase purchase)
        {
            var obj = new JObject();

            obj["embeds"] = new JArray
            {
                JToken.FromObject(new
                {
                    color       = Convert.ToInt32(pluginInstance.Configuration.Instance.DiscordWebhookColor.Trim('#'), 16),
                    description = pluginInstance.Translate("DiscordNotification", purchase.SteamName, purchase.SteamId, purchase.ItemName)
                })
            };

            using (var wc = new WebClient())
            {
                wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                wc.UploadString(pluginInstance.Configuration.Instance.DiscordWebhookUrl, obj.ToString());
            }
        }