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 SellIsVisitor(int code, string type, int count)
        {
            if (CurrentVisitor != null)
            {
                VisitorOrderRecord record = new VisitorOrderRecord()
                {
                    Count       = count,
                    ProductId   = code,
                    ProductType = type,
                };

                VisitorOrder order = CurrentVisitor.VisitorOrders.LastOrDefault(ord => !ord.Completed);
                if (order != null)
                {
                    record.VisitorOrder = order;
                    order.VisitorOrderRecords.Add(record);
                }
                else
                {
                    order = new VisitorOrder()
                    {
                        Visitor   = CurrentVisitor,
                        VisitorId = CurrentVisitor.Id,
                        Completed = false
                    };

                    record.VisitorOrder = order;
                    order.VisitorOrderRecords.Add(record);

                    CurrentVisitor.VisitorOrders.Add(order);
                }

                CalcVisitorOrderSum(order, count);

                DataContext.SubmitChanges();
            }
        }