Esempio n. 1
0
        public List <Order> GetOrdersByConditions(string username, DateTime dateFrom, DateTime dateTo,
                                                  int orderIdFrom, int orderIdTo, int orderId, int offset)
        {
            SearchOrderCondition conditions = new SearchOrderCondition()
            {
                Username    = username,
                OrderIdFrom = orderIdFrom,
                OrderIdTo   = orderIdTo,
                Offset      = offset,
                OrderId     = orderId,
            };

            DateTime systemDefault = new DateTime();

            if (dateFrom != systemDefault)
            {
                conditions.DateFrom = dateFrom;
            }

            if (dateTo != systemDefault)
            {
                conditions.DateTo = dateTo;
            }

            OrderDal dal = new OrderDal();

            return(dal.ReadAllByCondition(conditions));
        }
Esempio n. 2
0
        //public List<Order> ReadAll(int offset, string userId = "")
        //{
        //    List<Order> orders = new List<Order>();
        //    using (SqlConnection connection = new SqlConnection(Constant.ConnectionString))
        //    {
        //        connection.Open();
        //        string sql = string.Empty;
        //        if(userId != string.Empty)
        //            sql = $"SELECT Id, CreatedOn, CreatedBy FROM OrderDetail WHERE CreatedBy = @UserId";
        //        else
        //            sql = $"SELECT Id, CreatedOn, CreatedBy FROM OrderDetail";

        //        sql = sql + " ORDER BY CreatedOn DESC OFFSET @OffSet ROWS FETCH NEXT 50 ROWS ONLY";
        //        SqlCommand command = new SqlCommand(sql, connection);
        //        command.Parameters.AddWithValue("@UserId", userId);
        //        command.Parameters.AddWithValue("@OffSet", offset);
        //        using (SqlDataReader dataReader = command.ExecuteReader())
        //        {
        //            while (dataReader.Read())
        //            {
        //                Order order = new Order();
        //                order.Id = Convert.ToInt32(dataReader["Id"]);
        //                order.CreatedOn = Convert.ToDateTime(dataReader["CreatedOn"]);
        //                order.CreatedBy = Convert.ToString(dataReader["CreatedBy"]);
        //                orders.Add(order);
        //            }
        //        }

        //        connection.Close();
        //    }

        //    return orders;
        //}

        public List <Order> ReadAllByCondition(SearchOrderCondition condition)
        {
            List <Order> orders = new List <Order>();

            using (SqlConnection connection = new SqlConnection(Constant.ConnectionString))
            {
                connection.Open();
                string     sql     = ConstructSearchOrderQuery(condition);
                SqlCommand command = new SqlCommand(sql, connection);
                command.Parameters.AddWithValue("@Username", condition.Username.Trim());
                command.Parameters.AddWithValue("@OffSet", condition.Offset);
                command.Parameters.AddWithValue("@OrderId", condition.OrderId);
                command.Parameters.AddWithValue("@OrderIdFrom", condition.OrderIdFrom);
                command.Parameters.AddWithValue("@OrderIdTo", condition.OrderIdTo);
                command.Parameters.AddWithValue("@DateFrom", condition.DateFrom);
                command.Parameters.AddWithValue("@DateTo", condition.DateTo);
                using (SqlDataReader dataReader = command.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        Order order = new Order();
                        order.Id        = Convert.ToInt32(dataReader["Id"]);
                        order.CreatedOn = Convert.ToDateTime(dataReader["CreatedOn"]);
                        order.CreatedBy = Convert.ToString(dataReader["CreatedBy"]);
                        orders.Add(order);
                    }
                }

                connection.Close();
            }

            return(orders);
        }
Esempio n. 3
0
        public ActionResult GetOrders(SearchOrderCondition condition)
        {
            var orders = BS.GetOrders(condition);
            var result = new JsonNetResult()
            {
                Data = orders
            };

            result.Settings.DateFormatString = "yyyy-MM-dd";
            return(result);
        }
Esempio n. 4
0
        public string ConstructSearchOrderQuery(SearchOrderCondition condition)
        {
            DateTime systemDefaultDate = new DateTime();

            string sql = "SELECT Id, CreatedOn, CreatedBy FROM OrderDetail";

            // Ensure there are some condition set
            if (condition.Username.Trim() != string.Empty ||
                condition.OrderId != 0 ||
                condition.OrderIdFrom != 0 ||
                condition.OrderIdTo != 0 ||
                condition.DateFrom != systemDefaultDate ||
                condition.DateTo != systemDefaultDate)
            {
                sql += " WHERE ";
            }

            if (condition.Username.Trim() != string.Empty)
            {
                UserDal userDal = new UserDal();
                User    user    = userDal.Read(condition.Username);
                if (!user.Admin)
                {
                    sql += "CreatedBy = @Username ";
                }
            }

            if (condition.OrderId != 0)
            {
                sql += "AND Id = @OrderId ";
            }
            else
            {
                if (condition.OrderIdFrom != 0)
                {
                    sql += "AND Id >= @OrderIdFrom ";
                }

                if (condition.OrderIdTo != 0)
                {
                    sql += "AND Id <= @OrderIdTo ";
                }
            }


            if (condition.DateFrom != systemDefaultDate)
            {
                sql += "AND CreatedOn >= @DateFrom ";
            }

            if (condition.DateTo != systemDefaultDate)
            {
                sql += "AND CreatedOn <= @DateTo ";
            }

            // Clean up
            if (!sql.Contains("="))
            {
                sql = sql.Replace("WHERE", string.Empty);
            }

            if (sql.Contains("WHERE AND"))
            {
                sql = sql.Replace("WHERE AND", "WHERE");
            }

            sql = sql + " ORDER BY CreatedOn DESC OFFSET @OffSet ROWS FETCH NEXT 50 ROWS ONLY";

            return(sql);
        }
Esempio n. 5
0
        public List <OrderReview> GetOrders(SearchOrderCondition condition)
        {
            var orderPred = PredicateBuilder.New <ZY_Order>(true);

            if (condition.From.HasValue)
            {
                orderPred = orderPred.And(x => x.OrderDate >= condition.From.Value);
            }
            if (condition.To.HasValue)
            {
                orderPred = orderPred.And(x => x.OrderDate <= condition.To.Value);
            }
            if (condition.Status.HasValue)
            {
                orderPred = orderPred.And(x => x.Status.Equals(condition.Status.Value));
            }
            if (!string.IsNullOrEmpty(condition.CustomerOpenId))
            {
                orderPred = orderPred.And(x => x.CustomerOpenId.Contains(condition.CustomerOpenId));
            }
            var shopPred = PredicateBuilder.New <ZY_Shop>(true);

            if (!condition.ShopId.HasValue)
            {
                condition.ShopId = Guid.NewGuid();
            }
            shopPred = shopPred.And(x => condition.ShopId.Value == (x.ShopId));

            using (var db = GetDbContext())
            {
                var positions = (from bp in db.ZY_Booked_Position
                                 join o in db.ZY_Order.AsExpandable().Where(orderPred) on bp.OrderId equals o.OrderId
                                 join desk in db.ZY_Shop_Desk on bp.DeskId equals desk.DeskId
                                 join shop in db.ZY_Shop.AsExpandable().Where(shopPred) on desk.ShopId equals shop.ShopId
                                 select new
                {
                    o.OrderId,
                    ShopName = shop.Name,
                    desk.DeskName,
                    o.OrderDate,
                    bp.Position,
                    o.Status,
                    o.Amount,
                    o.IsInternal,
                    o.CustomerOpenId,
                    o.PickTime
                }).ToList();
                return(positions.GroupBy(
                           x => new { x.OrderId, x.OrderDate, x.ShopName, x.DeskName, x.Status, x.IsInternal, x.Amount, x.CustomerOpenId, x.PickTime })
                       .Select(x => new OrderReview()
                {
                    OrderId = x.Key.OrderId,
                    OrderDate = x.Key.OrderDate,
                    ShopName = x.Key.ShopName,
                    DeskName = x.Key.DeskName,
                    Status = x.Key.Status,
                    IsInternal = x.Key.IsInternal,
                    Amount = x.Key.Amount,
                    Positions = x.Select(p => p.Position).ToList(),
                    PickTime = x.Key.PickTime,
                    CustomerOpenId = x.Key.CustomerOpenId
                }).ToList());
            }
        }