Example #1
0
        public async Task <ActionResult> DeleteConfirmed(
            int subscriptionId, int productId)
        {
            Subscription_Product subscriptionProduct =
                await GetSubscriptionProduct(subscriptionId, productId);

            db.Subscriptions_Products.Remove(subscriptionProduct);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Example #2
0
        public async Task <ActionResult> Create(
            [Bind(Include = "ProductID,SubscriptionID")] Subscription_Product subscriptionProduct)
        {
            if (ModelState.IsValid)
            {
                db.Subscriptions_Products.Add(subscriptionProduct);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(subscriptionProduct));
        }
        public static async Task <bool> CanChange(
            this Subscription_Product subscriptionProduct,
            ApplicationDbContext db)
        {
            var oldSP = await db.Subscriptions_Products.CountAsync(sp =>
                                                                   sp.ProductID.Equals(subscriptionProduct.OldProductID) &&
                                                                   sp.SubscriptionID.Equals(subscriptionProduct.OldSubscriptionID));

            var newSP = await db.Subscriptions_Products.CountAsync(sp =>
                                                                   sp.ProductID.Equals(subscriptionProduct.ProductID) &&
                                                                   sp.SubscriptionID.Equals(subscriptionProduct.SubscriptionID));

            return(oldSP.Equals(1) && newSP.Equals(0));
        }
Example #4
0
        // GET: Admin/SubscriptionProduct/Edit/5
        public async Task <ActionResult> Edit(int?subscriptionId, int?productId)
        {
            if (subscriptionId == null || productId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Subscription_Product subscriptionProduct =
                await GetSubscriptionProduct(subscriptionId, productId);

            if (subscriptionProduct == null)
            {
                return(HttpNotFound());
            }
            return(View(await subscriptionProduct.Convert(db)));
        }
Example #5
0
        public async Task <ActionResult> Edit(
            [Bind(Include = "ProductID,SubscriptionID,OldProductID,OldSubscriptionID")]
            Subscription_Product subscriptionProduct)
        {
            if (ModelState.IsValid)
            {
                var canChange = await subscriptionProduct.CanChange(db);

                if (canChange)
                {
                    await subscriptionProduct.Change(db);
                }

                return(RedirectToAction("Index"));
            }
            return(View(subscriptionProduct));
        }
        public static async Task <SubscriptionProductModel> Convert(
            this Subscription_Product subscriptionProduct,
            ApplicationDbContext db, bool addListData = true)
        {
            var model = new SubscriptionProductModel
            {
                SubscriptionID    = subscriptionProduct.SubscriptionID,
                ProductID         = subscriptionProduct.ProductID,
                Subscriptions     = addListData ? await db.Subscriptions.ToListAsync() : null,
                Products          = addListData ? await db.Products.ToListAsync() : null,
                SubscriptionTitle = (await db.Subscriptions.FirstOrDefaultAsync(s =>
                                                                                s.ID.Equals(subscriptionProduct.SubscriptionID))).Title,
                ProductTitle = (await db.Products.FirstOrDefaultAsync(p =>
                                                                      p.ID.Equals(subscriptionProduct.ProductID))).Title
            };

            return(model);
        }
        public static async Task Change(this Subscription_Product subscriptionProduct, ApplicationDbContext db)
        {
            var oldSubscriptionProduct = await db.Subscriptions_Products.FirstOrDefaultAsync(
                sp => sp.ProductID.Equals(subscriptionProduct.OldProductID) &&
                sp.SubscriptionID.Equals(subscriptionProduct.OldSubscriptionID));

            var newSubscriptionProduct = await db.Subscriptions_Products.FirstOrDefaultAsync(
                sp => sp.ProductID.Equals(subscriptionProduct.ProductID) &&
                sp.SubscriptionID.Equals(subscriptionProduct.SubscriptionID));

            if (oldSubscriptionProduct != null && newSubscriptionProduct == null)
            {
                newSubscriptionProduct = new Subscription_Product
                {
                    SubscriptionID = subscriptionProduct.SubscriptionID,
                    ProductID      = subscriptionProduct.ProductID
                };

                using (var transaction = new TransactionScope(
                           TransactionScopeAsyncFlowOption.Enabled))
                {
                    //try
                    //{

                    using (var context = new EntityContext())
                    {
                        context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
                        db.Subscriptions_Products.Remove(oldSubscriptionProduct);
                        db.Subscriptions_Products.Add(newSubscriptionProduct);
                        await db.SaveChangesAsync();
                    }


                    transaction.Complete();
                    //}
                    //catch { transaction.Dispose(); }
                }
            }
        }