public ActionResultBase Process(GameState state, GameConfiguration config)
        {
            BuyItemActionResult result = new BuyItemActionResult();

            if (!CanApply(state, config))
            {
                result.IsSeccessful = false;
                return(result);
            }

            ShopConfiguration shop = GetShop(config);

            Item newItem = new Item();

            newItem.ItemType = _type;
            newItem.Price    = shop.Price;

            result.EffectResult = GetItemEffect(shop);

            switch (_type)
            {
            case ItemTypes.Armor:
                newItem.Health = result.EffectResult;
                break;

            case ItemTypes.Weapon:
                newItem.Damage = result.EffectResult;
                break;
            }

            state.CurrentPlayer.ApplyItem(newItem);
            state.CurrentPlayer.DecreaseCoins(shop.Price);

            return(result);
        }
        public async Task <IHttpActionResult> DeleteShopConfiguration(long id)
        {
            CurrentIdentity identity = getIdentity();

            if (identity.role == "Admin")
            {
            }
            else
            {
                Shop shop = await db.Shops.FirstOrDefaultAsync(p => p.UserId == identity.userId);

                if (shop == null)
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
                }

                if (shop.Id != id)
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.Unauthorized)));
                }
            }

            ShopConfiguration shopConfiguration = await db.ShopConfigurations.FindAsync(id);

            if (shopConfiguration == null)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
            }

            db.ShopConfigurations.Remove(shopConfiguration);
            await db.SaveChangesAsync();

            return(Ok(shopConfiguration));
        }
Exemplo n.º 3
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            ShopConfiguration shopConfiguration = db.ShopConfigurations.Find(id);

            shopConfiguration.IsDeleted    = true;
            shopConfiguration.DeletionDate = DateTime.Now;

            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 4
0
        public async Task <IHttpActionResult> DeleteShop(long id)
        {
            CurrentIdentity identity = getIdentity();
            Shop            shop     = await db.Shops.FindAsync(id);

            if (shop == null)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
            }


            if (identity.userId == shop.UserId || identity.role == "Admin")
            {
                List <Product> products = await db.Products.Where(p => p.ShopId == id).ToListAsync();

                //Delete all products in shop
                if (products != null)
                {
                    foreach (var product in products)
                    {
                        IList <Image> images = await db.Images.Where(p => p.ProductId == product.Id).ToListAsync();

                        IList <ProductsToCategory> categories = await db.ProductsToCategories.Where(p => p.ProductId == product.Id).ToListAsync();

                        ShopConfiguration shopConfig = await db.ShopConfigurations.FindAsync(id);

                        //Delete shop config if it exsists
                        if (shopConfig != null)
                        {
                            db.ShopConfigurations.Remove(shopConfig);
                            await db.SaveChangesAsync();
                        }

                        db.Products.Remove(product);
                        await db.SaveChangesAsync();

                        foreach (var image in images)
                        {
                            db.Images.Remove(image);
                        }
                        foreach (var category in categories)
                        {
                            db.ProductsToCategories.Remove(category);
                        }
                        await db.SaveChangesAsync();
                    }
                }

                db.Shops.Remove(shop);
                await db.SaveChangesAsync();

                return(Ok(shop));
            }
            return(ResponseMessage(getHttpResponse(HttpStatusCode.Unauthorized)));
        }
        public bool CanApply(GameState state, GameConfiguration config)
        {
            ShopConfiguration shop = GetShop(config);

            if (state.CurrentPlayer.Coins < shop.Price)
            {
                return(false);
            }

            return(true);
        }
        protected int GetItemEffect(ShopConfiguration shop)
        {
            int delta = shop.EffectTo - shop.EffectFrom;

            if (delta == 0)
            {
                return(shop.EffectTo);
            }

            return(shop.EffectFrom + Generator.Next(0, delta));
        }
        public async Task <IHttpActionResult> GetShopConfiguration(long id)
        {
            ShopConfiguration shopConfiguration = await db.ShopConfigurations.FindAsync(id);

            if (shopConfiguration == null)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
            }

            return(Ok(shopConfiguration));
        }
Exemplo n.º 8
0
        public static string GetZarinpalCode()
        {
            ShopConfiguration shopConfiguration =
                db.ShopConfigurations.FirstOrDefault(current => current.Name.ToLower() == "zarinpal");

            if (shopConfiguration != null)
            {
                return(shopConfiguration.Value);
            }

            return(string.Empty);
        }
Exemplo n.º 9
0
        public static decimal GetShipingAmount()
        {
            ShopConfiguration shopConfiguration =
                db.ShopConfigurations.FirstOrDefault(current => current.Name.ToLower() == "shipingamount");

            if (shopConfiguration != null)
            {
                return(Convert.ToDecimal(shopConfiguration.Value));
            }

            return(0);
        }
Exemplo n.º 10
0
 public ActionResult Edit([Bind(Include = "Id,Title,Name,Value,IsActive,CreationDate,LastModifiedDate,IsDeleted,DeletionDate,Description")] ShopConfiguration shopConfiguration)
 {
     if (ModelState.IsValid)
     {
         shopConfiguration.LastModifiedDate = DateTime.Now;
         shopConfiguration.IsDeleted        = false;
         db.Entry(shopConfiguration).State  = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(shopConfiguration));
 }
        public async Task <IHttpActionResult> PostShopConfiguration(ShopConfiguration shopConfiguration)
        {
            CurrentIdentity identity = getIdentity();

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (identity.role == "Admin")
            {
            }
            else
            {
                Shop shop = await db.Shops.FirstOrDefaultAsync(p => p.UserId == identity.userId);

                if (shop == null)
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
                }

                if (shop.Id != shopConfiguration.ShopId)
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.Unauthorized)));
                }
            }

            if (shopConfiguration.LayoutId < 0)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.BadRequest)));
            }

            db.ShopConfigurations.Add(shopConfiguration);

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (ShopConfigurationExists(shopConfiguration.ShopId))
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.Conflict)));
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("WSApi", new { id = shopConfiguration.ShopId }, shopConfiguration));
        }
Exemplo n.º 12
0
        // GET: ShopConfigurations/Delete/5
        public ActionResult Delete(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ShopConfiguration shopConfiguration = db.ShopConfigurations.Find(id);

            if (shopConfiguration == null)
            {
                return(HttpNotFound());
            }
            return(View(shopConfiguration));
        }
Exemplo n.º 13
0
        public ActionResult Create([Bind(Include = "Id,Title,Name,Value,IsActive,CreationDate,LastModifiedDate,IsDeleted,DeletionDate,Description")] ShopConfiguration shopConfiguration)
        {
            if (ModelState.IsValid)
            {
                shopConfiguration.IsDeleted        = false;
                shopConfiguration.CreationDate     = DateTime.Now;
                shopConfiguration.LastModifiedDate = DateTime.Now;
                shopConfiguration.Id = Guid.NewGuid();
                db.ShopConfigurations.Add(shopConfiguration);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(shopConfiguration));
        }
        public async Task <IHttpActionResult> GetOwnShopConfig()
        {
            CurrentIdentity identity = getIdentity();

            Shop shop = await db.Shops.FirstOrDefaultAsync(p => p.UserId == identity.userId);

            if (shop == null)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
            }

            ShopConfiguration shopConfiguration = await db.ShopConfigurations.FindAsync(shop.Id);

            if (shopConfiguration == null)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
            }
            return(Ok(shopConfiguration));
        }
        /// <summary>
        /// Return shop info by ItemType
        /// </summary>
        private ShopConfiguration GetShop(GameConfiguration config)
        {
            ShopConfiguration shop = null;

            switch (_type)
            {
            case ItemTypes.Armor:
                shop = config.Shops.Armor;
                break;

            case ItemTypes.Weapon:
                shop = config.Shops.Weapon;
                break;
            }

            if (shop == null)
            {
                throw new ArgumentOutOfRangeException("itenType", "Item should be weapon or armor");
            }

            return(shop);
        }
 public ShopsConfiguration()
 {
     Armor  = new ShopConfiguration();
     Weapon = new ShopConfiguration();
     Heal   = new ShopConfiguration();
 }
        public async Task <IHttpActionResult> PutShopConfiguration(long id, ShopConfiguration shopConfiguration)
        {
            CurrentIdentity identity = getIdentity();

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (identity.role == "Admin")
            {
            }
            else
            {
                Shop shop = await db.Shops.FirstOrDefaultAsync(p => p.UserId == identity.userId);

                if (shop == null)
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
                }

                if (shop.Id != shopConfiguration.ShopId)
                {
                    return(ResponseMessage(getHttpResponse(HttpStatusCode.Unauthorized)));
                }
            }

            if (shopConfiguration.LayoutId < 0)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.BadRequest)));
            }

            Shop shopCurrent = await db.Shops.FindAsync(id);

            if (shopCurrent == null)
            {
                return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
            }

            if (identity.userId == shopCurrent.UserId || identity.role == "Admin")
            {
                db.Entry(shopConfiguration).State = EntityState.Modified;

                try
                {
                    await db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ShopConfigurationExists(id))
                    {
                        return(ResponseMessage(getHttpResponse(HttpStatusCode.NotFound)));
                    }
                    else
                    {
                        throw;
                    }
                }

                return(StatusCode(HttpStatusCode.NoContent));
            }
            return(ResponseMessage(getHttpResponse(HttpStatusCode.Unauthorized)));
        }