Esempio n. 1
0
        public static void SendMeme(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);

                        db.Messages.Add(new Message {
                            MemeID   = memeID,
                            UserID   = user.ID,
                            Username = username
                        });

                        MemeAsset asset = db.MemeOwners
                                          .Include(a => a.MemeEntry)
                                          .SingleOrDefault(a => a.MemeID == memeID && a.UserID == user.ID);

                        asset.Amount--;

                        db.SaveChanges();
                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                    }
                }
            }
        }
Esempio n. 2
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();
                    }
                }
            }
        }
Esempio n. 3
0
        public static void SellMeme(int memeQuantity, decimal memePrice, int assetID, string username)
        {
            using (UsersDB db = new UsersDB())
            {
                using (var trans = db.Database.BeginTransaction())
                {
                    try
                    {
                        User user = db.Users
                                    .SingleOrDefault(u => u.Username == username);

                        MemeAsset currentMeme = db.MemeOwners
                                                .SingleOrDefault(u => u.ID == assetID &&
                                                                 u.UserID == user.ID);

                        if (currentMeme.Amount >= memeQuantity && memeQuantity > 0)
                        {
                            currentMeme.Amount -= memeQuantity;

                            var existingMemeForSale = db.Marketplace
                                                      .SingleOrDefault(
                                a => a.SellerID == user.ID &&
                                a.AssetID == assetID &&
                                a.Price == memePrice);

                            if (existingMemeForSale != null)
                            {
                                existingMemeForSale.Quantity += memeQuantity;
                            }
                            else
                            {
                                db.Marketplace.Add(new MarketplaceEntry {
                                    AssetID  = currentMeme.ID,
                                    SellerID = user.ID,
                                    Quantity = memeQuantity,
                                    Price    = memePrice
                                });
                            }

                            db.SaveChanges();
                            trans.Commit();
                        }
                    }
                    catch
                    {
                        trans.Rollback();
                    }
                }
            }
        }
Esempio n. 4
0
        public static void TradeMeme(int quantity, int marketEntryID, string username)
        {
            using (UsersDB db = new UsersDB())
            {
                using (var trans = db.Database.BeginTransaction())
                {
                    try
                    {
                        MarketplaceEntry marketEntry = db.Marketplace.Include(u => u.MemeAsset.MemeEntry)
                                                       .Include(u => u.User)
                                                       .SingleOrDefault(m => m.ID == marketEntryID);

                        User buyer = db.Users.SingleOrDefault(u => u.Username == username);

                        User owner = marketEntry.User;

                        decimal memePrice = marketEntry.Price;

                        decimal totalPrice = memePrice * quantity;

                        if (buyer.Currency >= totalPrice && marketEntry.Quantity >= quantity && quantity > 0)
                        {
                            buyer.Currency -= totalPrice;
                            owner.Currency += totalPrice;

                            MemeAsset asset = new MemeAsset {
                                UserID    = buyer.ID,
                                MemeID    = marketEntry.MemeAsset.MemeEntry.ID,
                                Amount    = quantity,
                                AssetName = marketEntry.MemeAsset.AssetName
                            };

                            MemeAsset existingAsset = db.MemeOwners
                                                      .SingleOrDefault(a => a.UserID == buyer.ID &&
                                                                       a.MemeID == marketEntry.MemeAsset.MemeID);

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

                            if (marketEntry.Quantity > quantity)
                            {
                                marketEntry.Quantity -= quantity;
                            }
                            else
                            {
                                db.Marketplace.Remove(marketEntry);
                            }

                            db.SaveChanges();
                            trans.Commit();
                        }
                    }
                    catch
                    {
                        trans.Rollback();
                    }
                }
            }
        }
Esempio n. 5
0
 public InventoryModel(MemeAsset meme)
 {
     Meme = meme;
 }
Esempio n. 6
0
 public MarketplaceInventoryModel(MemeAsset meme)
 {
     Meme = meme;
 }