public ActionResult RemoveProductFromBasket(int productId, string productType)
        {
            AccountOrder       currentAccountOrder = CurrentUser?.AccountOrders.LastOrDefault(ord => !ord.Completed);
            AccountOrderRecord accountOrderRecord  = currentAccountOrder?.AccountOrderRecords.FirstOrDefault(
                rec => rec.ProductId == productId && rec.ProductType == productType);

            if (accountOrderRecord != null)
            {
                DataContext.AccountOrderRecords.DeleteOnSubmit(accountOrderRecord);
                DataContext.SubmitChanges();
                CalcAccountOrderSum(currentAccountOrder, accountOrderRecord.Count);
            }

            VisitorOrder       currentVisitorOrder = CurrentVisitor?.VisitorOrders.LastOrDefault(ord => !ord.Completed);
            VisitorOrderRecord visitorOrderRecord  =
                currentVisitorOrder?.VisitorOrderRecords.FirstOrDefault(
                    rec => rec.ProductId == productId && rec.ProductType == productType);

            if (visitorOrderRecord != null)
            {
                DataContext.VisitorOrderRecords.DeleteOnSubmit(visitorOrderRecord);
                DataContext.SubmitChanges();
                CalcVisitorOrderSum(currentVisitorOrder, visitorOrderRecord.Count);
            }

            return(RedirectToAction("Basket"));
        }
        public IHttpActionResult RemoveProductFromBasket(RemoveProductFromBasketModel model)
        {
            try
            {
                AccountOrder       currentAccountOrder = CurrentUser?.AccountOrders.LastOrDefault(ord => !ord.Completed);
                AccountOrderRecord accountOrderRecord  = currentAccountOrder?.AccountOrderRecords.FirstOrDefault(
                    rec => rec.ProductId == model.ProductId && rec.ProductType == model.ProductType);
                if (accountOrderRecord != null)
                {
                    DataContext.AccountOrderRecords.DeleteOnSubmit(accountOrderRecord);
                    DataContext.SubmitChanges();
                    CalcAccountOrderSum(currentAccountOrder, accountOrderRecord.Count);
                    return(Ok());
                }

                VisitorOrder       currentVisitorOrder = CurrentVisitor?.VisitorOrders.LastOrDefault(ord => !ord.Completed);
                VisitorOrderRecord visitorOrderRecord  =
                    currentVisitorOrder?.VisitorOrderRecords.FirstOrDefault(
                        rec => rec.ProductId == model.ProductId && rec.ProductType == model.ProductType);
                if (visitorOrderRecord != null)
                {
                    DataContext.VisitorOrderRecords.DeleteOnSubmit(visitorOrderRecord);
                    DataContext.SubmitChanges();
                    CalcVisitorOrderSum(currentVisitorOrder, visitorOrderRecord.Count);
                    return(Ok());
                }
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
            return(Ok());
        }
        private void SellIsAccount(int code, string type, int count)
        {
            if (CurrentUser != null)
            {
                AccountOrderRecord record = new AccountOrderRecord()
                {
                    Count       = count,
                    ProductId   = code,
                    ProductType = type,
                };

                AccountOrder order = CurrentUser.AccountOrders.LastOrDefault(ord => !ord.Completed);
                if (order != null)
                {
                    record.AccountOrder = order;
                    order.AccountOrderRecords.Add(record);
                }
                else
                {
                    order = new AccountOrder()
                    {
                        Account   = CurrentUser,
                        AccountId = CurrentUser.Id,
                        Completed = false
                    };

                    record.AccountOrder = order;
                    order.AccountOrderRecords.Add(record);
                    DataContext.AccountOrders.InsertOnSubmit(order);

                    CurrentUser.AccountOrders.Add(order);
                }

                CalcAccountOrderSum(order, count);

                DataContext.SubmitChanges();
            }
        }