Esempio n. 1
0
        //RETRIEVE - SINGLE ORDER BY CUSTOMER ID
        public OneOrder GetOrder(int id) //by cust id/status
        {
            using (var context = DbContextFactory.Create())
            {
                try
                {
                    var ord = context.OrderDetails
                                     .Include(s => s.Shipmethod)
                                     .Include(c => c.CustomerDetails).Include(a => a.CustomerDetails.Addresses)
                                     .Include(l => l.Lineitems).ThenInclude(p => p.ProductDetails)
                                     .Where(o => o.Id == id).First();

                    var returnOrder = new OneOrder();

                    returnOrder.Id = ord.Id;
                    returnOrder.CustomerDetails = ord.CustomerDetails;
                    returnOrder.Shipmethod = ord.Shipmethod;
                    returnOrder.Addresses = ord.CustomerDetails.Addresses;
                    returnOrder.Lineitems = ord.Lineitems.Where(l => l.OrderDetails.Id == id);
                    returnOrder.ProductDetails = ord.Lineitems.Select(p => p.ProductDetails);
                    returnOrder.OrderStatus = (orders_library.OneOrder.ShippingStatus)ord.OrderStatus;
                    returnOrder.OrderDate = ord.OrderDate;

                    Console.WriteLine($"Order #{ord.Id} retrieved for user: {ord.CustomerDetails.Id}");

                    return returnOrder;

                }
                catch (Exception)
                {
                    Console.WriteLine("*** Error retrieving order....");
                    return null;
                }
            }
        }
Esempio n. 2
0
        // TODO: 需要完成
        string DumpOrder()
        {
            string strResult = "";

            for (int i = 0; i < this.Orders.Count; i++)
            {
                OneOrder issue = this.Orders[i];

                // strResult += "publish_time [" + issue.Order.PublishTime + "] issue[" + issue.Issue + "] is_guess[" + issue.IsGuess.ToString() + "]\r\n";
            }

            return(strResult);
        }
Esempio n. 3
0
        public async Task <IActionResult> Order(Login login)
        {
            var user = await _userManager.FindByEmailAsync(login.Email);

            var Nmbr = _db.Paniers.Where(n => n.UserId == user.Id).ToList().Count;

            if (Nmbr == 0)
            {
                return(Ok("panier est vide"));
            }

            IList <Panier> ListPanier = _db.Paniers.Where(l => l.UserId == user.Id).Include(p => p.Product).ToList();
            var            tp         = await _db.Paniers.Where(p => p.UserId == user.Id).Include(n => n.Product).SumAsync(n => (n.TotalPrice));

            Order order = new Order
            {
                UserId       = user.Id,
                Date         = DateTime.Now,
                OrderStateId = "3",
                TotalePrice  = tp
            };

            _db.Orders.Add(order);
            _db.SaveChanges();

            foreach (Panier p in ListPanier)
            {
                OneOrder oneOrder = new OneOrder
                {
                    OrderId   = order.Id,
                    ProductId = p.ProductId,
                    Price     = p.Product.Prix,
                    Quantity  = p.Quantity
                };
                await _db.OneOrders.AddAsync(oneOrder);
            }
            await _db.SaveChangesAsync();

            var panier = _db.Paniers.Where(p => p.UserId == user.Id).ToList();

            if (panier.Count > 0)
            {
                _db.Paniers.RemoveRange(panier);
                await _db.SaveChangesAsync();
            }

            return(Ok(order));
        }
Esempio n. 4
0
        /// <summary>
        /// 获得渠道地址 XML
        /// </summary>
        /// <param name="strSeller">渠道</param>
        /// <returns>XML 字符串</returns>
        public string GetAddressXml(string strSeller)
        {
            if (this.Orders == null)
            {
                return(null);
            }

            for (int i = 0; i < this.Orders.Count; i++)
            {
                OneOrder order = this.Orders[i];

                if (order.Seller == strSeller)
                {
                    return(order.SellerAddress);
                }
            }

            return(null);
        }
Esempio n. 5
0
        // 2012/8/31
        //
        // return:
        //      -1  出错
        //      0   没有装载
        //      1   已经装载
        /// <summary>
        /// 装入订购记录
        /// </summary>
        /// <param name="strOrderRecPath">订购记录路径</param>
        /// <param name="strRefID">返回参考 ID</param>
        /// <param name="strError">返回出错信息</param>
        /// <returns>-1: 出错; 0: 没有装载; 1: 已经装载</returns>
        public int LoadOrderRecord(string strOrderRecPath,
                                   out string strRefID,
                                   out string strError)
        {
            strError = "";
            strRefID = "";

            this.ClearOrders();

            string strOutputBiblioRecPath = "";

            byte[] order_timestamp       = null;
            string strOutputOrderRecPath = "";
            string strResult             = "";
            string strBiblio             = "";

            long lRet = Channel.GetOrderInfo(
                Stop,
                "@path:" + strOrderRecPath,
                "xml",
                out strResult,
                out strOutputOrderRecPath,
                out order_timestamp,
                "recpath",
                out strBiblio,
                out strOutputBiblioRecPath,
                out strError);

            if (lRet == 0 || lRet == -1)
            {
                return(-1);
            }

            this.BiblioRecPath = strOutputBiblioRecPath;

            OneOrder order = new OneOrder();
            int      nRet  = order.LoadRecord(
                strOutputOrderRecPath,
                strResult,
                out strError);

            if (nRet == -1)
            {
                strError = "路径为 '" + strOutputOrderRecPath + "' 的订购记录用于初始化OneOrder对象时发生错误: " + strError;
                return(-1);
            }

            string strState = DomUtil.GetElementText(order.Dom.DocumentElement, "state");

            if (strState == "已订购" || strState == "已验收")
            {
            }
            else
            {
                strError = "订购记录 '" + strOutputOrderRecPath + "' 的状态不是 已订购 或 已验收,被跳过";
                return(0);
            }


            this.Orders.Add(order);

            strRefID = DomUtil.GetElementText(order.Dom.DocumentElement, "refID");
            return(1);
        }
Esempio n. 6
0
        // 装入订购记录
        // return:
        //      -1  出错
        //      0   没有装载
        //      1   已经装载
        public int LoadOrderRecords(string strBiblioRecPath,
                                    out string strError)
        {
            this.BiblioRecPath = strBiblioRecPath;
            this.ClearOrders();

            try
            {
                // string strHtml = "";
                long lStart       = 0;
                long lResultCount = 0;
                long lCount       = -1;

                // 2012/5/9 改写为循环方式
                for (; ;)
                {
                    EntityInfo[] orders = null;

                    long lRet = Channel.GetOrders(
                        stop,
                        strBiblioRecPath,
                        lStart,
                        lCount,
                        "",
                        "zh",
                        out orders,
                        out strError);
                    if (lRet == -1)
                    {
                        goto ERROR1;
                    }

                    if (lRet == 0)
                    {
                        return(0);
                    }

                    lResultCount = lRet;

                    Debug.Assert(orders != null, "");

                    for (int i = 0; i < orders.Length; i++)
                    {
                        if (orders[i].ErrorCode != ErrorCodeValue.NoError)
                        {
                            strError = "路径为 '" + orders[i].OldRecPath + "' 的订购记录装载中发生错误: " + orders[i].ErrorInfo;  // NewRecPath
                            return(-1);
                        }

                        OneOrder order = new OneOrder();
                        int      nRet  = order.LoadRecord(
                            orders[i].OldRecPath,
                            orders[i].OldRecord,
                            out strError);
                        if (nRet == -1)
                        {
                            strError = "路径为 '" + orders[i].OldRecPath + "' 的订购记录用于初始化OneOrder对象时发生错误: " + strError;
                            return(-1);
                        }

                        this.Orders.Add(order);
                    }

                    lStart += orders.Length;
                    if (lStart >= lResultCount)
                    {
                        break;
                    }
                }
            }
            finally
            {
                /*
                 * stop.EndLoop();
                 * stop.OnStop -= new StopEventHandler(this.DoStop);
                 * stop.Initial("");
                 * */
            }

            return(1);

ERROR1:
            return(-1);
        }
Esempio n. 7
0
        // 获得期各种信息
        // 每期一行,按照书商名进行了汇总
        // TODO: “直订”等需要特殊处理
        // return:
        //      -1  error
        //      0   没有任何信息
        //      >0  信息个数
        /// <summary>
        /// 获得期各种信息
        /// </summary>
        /// <param name="filter">时间过滤器</param>
        /// <param name="issue_infos">返回期信息集合</param>
        /// <param name="strError">返回出错信息</param>
        /// <param name="strWarning">返回警告信息</param>
        /// <returns>
        ///      -1  出错
        ///      0   没有任何信息
        ///      >0  信息个数
        /// </returns>
        public int GetOrderInfo(
            TimeFilter filter,
            out List <IssueInfo> issue_infos,
            out string strError,
            out string strWarning)
        {
            strError   = "";
            strWarning = "";

            issue_infos = new List <IssueInfo>();

            string   strLastSeller = "";
            int      nOrderCount   = 0;
            int      nArriveCount  = 0;
            OneOrder order         = null;

            for (int j = 0; j < this.Orders.Count; j++)
            {
                order = this.Orders[j];

                string strCurrentSeller = order.Seller;
                if (strCurrentSeller != strLastSeller &&
                    strLastSeller != "")
                {
                    // 将上一段汇总值推出
                    IssueInfo info = new IssueInfo();

                    // 获得预计的出版时间
                    string strPublishTime = "";
                    int    nRet           = order.GetPublishTime(
                        filter,
                        out strPublishTime,
                        out strError);
                    if (nRet == -1)
                    {
                        strWarning += "获得(订购记录路径 '" + order.RecPath + "')预计出版日期时出错: " + strError + "\r\n";
                        continue;
                    }

                    info.PublishTime = strPublishTime;  // 预计出版时间
                    info.OrderTime   = order.OrderTime; // 2012/8/31

                    // info.Issue = order.Issue;
                    info.Seller       = strLastSeller;
                    info.OrderCount   = nOrderCount.ToString();
                    info.ArrivedCount = nArriveCount.ToString();
                    info.MissingCount = Math.Max(0, nOrderCount - nArriveCount).ToString();
                    issue_infos.Add(info);

                    nOrderCount  = 0;
                    nArriveCount = 0;
                }

                nOrderCount  += order.OldCopyValue;
                nArriveCount += order.NewCopyValue;
                strLastSeller = strCurrentSeller;
            }

            // 将最后一段汇总值推出
            if ((nOrderCount != 0 || nArriveCount != 0) &&
                strLastSeller != "")
            {
                IssueInfo info = new IssueInfo();

                // 获得预计的出版时间
                string strPublishTime = "";
                int    nRet           = order.GetPublishTime(
                    filter,
                    out strPublishTime,
                    out strError);
                if (nRet == -1)
                {
                    strWarning += "获得(订购记录路径 '" + order.RecPath + "')预计出版日期时出错: " + strError + "\r\n";
                    goto END1;
                }

                info.PublishTime = strPublishTime;
                info.OrderTime   = order.OrderTime; // 2012/8/31
                // info.Issue = order.Issue;
                info.Seller       = strLastSeller;
                info.OrderCount   = nOrderCount.ToString();
                info.ArrivedCount = nArriveCount.ToString();
                info.MissingCount = Math.Max(0, nOrderCount - nArriveCount).ToString();
                issue_infos.Add(info);
            }

END1:

            return(issue_infos.Count);
        }