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(); } } } }
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(); } } } }
public MemeModel(MemeEntry meme) { Meme = meme; Quantity = 1; }