コード例 #1
0
        public static void BuyMeme(string memeAssetName, int memeQuantity, int memeID, string username)
        {
            using (UsersDB db = new UsersDB())
            {
                using (var trans = db.Database.BeginTransaction())
                {
                    try
                    {
                        User user = db.Users
                                    .SingleOrDefault(u => u.Username == username);

                        decimal userCurrency = user.Currency;

                        MemeEntry currentMeme = db.MemeStash
                                                .SingleOrDefault(u => u.ID == memeID);

                        decimal memePrice = currentMeme.Price;

                        decimal totalPrice = memePrice * memeQuantity;

                        if (userCurrency >= totalPrice && currentMeme.VendorAmount >= memeQuantity && memeQuantity > 0)
                        {
                            user.Currency            -= totalPrice;
                            currentMeme.VendorAmount -= memeQuantity;

                            MemeAsset asset = new MemeAsset {
                                UserID    = user.ID,
                                MemeID    = currentMeme.ID,
                                Amount    = memeQuantity,
                                AssetName = string.IsNullOrEmpty(memeAssetName) ? "meme_" + currentMeme.ID : memeAssetName
                            };

                            var existingAsset = db.MemeOwners
                                                .SingleOrDefault(
                                a => a.UserID == user.ID &&
                                a.MemeID == memeID);

                            if (existingAsset == null)
                            {
                                db.MemeOwners.Add(asset);
                            }
                            else
                            {
                                existingAsset.Amount += memeQuantity;
                            }

                            db.SaveChanges();
                            trans.Commit();
                        }
                    }
                    catch
                    {
                        trans.Rollback();
                    }
                }
            }
        }
コード例 #2
0
ファイル: MemeScraper.cs プロジェクト: AnkoBG/KEKChat
        private async Task DownloadImageAsync(Post post)
        {
            string postURL = Convert.ToString(post.Url);

            if (post.IsStickied ||
                post.IsSelfPost ||
                postURL.Contains("reddituploads") ||
                postURL.Contains("gfycat") ||
                postURL.Contains(".gifv") ||
                postURL.Contains(".mp4"))
            {
                return;
            }

            string[] splitURL;

            if (postURL.Contains("i.redd.it"))
            {
                splitURL = postURL.Split('/');

                int    index    = splitURL.Length - 1;
                string fileName = splitURL[index];

                WebClient client = new WebClient();

                await client.DownloadFileTaskAsync(post.Url, SavePath + fileName);

                decimal basePrice = 10;
                decimal price     = basePrice * Math.Min(post.Upvotes, 10000) * 1e-2m;
                int     batch     = 50;

                var meme = new MemeEntry {
                    ImagePath    = "Memes\\" + fileName,
                    Price        = price,
                    VendorAmount = batch,
                    Subreddit    = post.Subreddit.Name
                };

                using (UsersDB db = new UsersDB())
                {
                    var memes = db.MemeStash
                                .Where(m => m.ImagePath == meme.ImagePath)
                                .ToList();

                    if (memes != null)
                    {
                        db.MemeStash.Add(meme);
                        db.SaveChanges();
                    }
                }
            }
        }
コード例 #3
0
ファイル: MemeModel.cs プロジェクト: AnkoBG/KEKChat
 public MemeModel(MemeEntry meme)
 {
     Meme     = meme;
     Quantity = 1;
 }