public virtual ActionResult GetSalesOrderList([DataSourceRequest] DataSourceRequest request, SavedSalesOrderSearchModel searchModel)
        {
            IQueryable <SalesOrderDto> list = null;

            list = GetSalesOrderQueryable(searchModel).OrderByDescending(s => s.SalesOrderID);
            return(Json(list.ToDataSourceResult(request), JsonRequestBehavior.AllowGet));
        }
        private IQueryable <SalesOrderDto> GetSalesOrderQueryable(SavedSalesOrderSearchModel searchModel = null)
        {
            int?branchId   = Session[SessionVariables.UserDetails].GetBranchIdFromSession();
            int?userTypeId = Session[SessionVariables.UserDetails].GetUserTypeIdFromSession();

            IQueryable <SalesOrderDto> list = null;

            if ((searchModel.IsNull() && !branchId.IsNull() && (userTypeId == Constants.UserTypeUserId)))
            {
                list = _orderService.GetAllSalesOrder().Where(s => s.BranchID == branchId);
            }
            else if ((searchModel.IsNull() && branchId.IsNull() && (userTypeId == Constants.UserTypeAdminId)))
            {
                list = _orderService.GetAllSalesOrder();
            }
            else
            {
                var predicate      = PredicateBuilder.True <SalesOrderDto>();
                var hasOtherFilter = false;

                if (!searchModel.ReceiptNumber.IsNull())
                {
                    hasOtherFilter = true;
                    predicate      = predicate.And(p => p.SalesOrderNum.Contains(searchModel.ReceiptNumber));
                }
                //searchModel.DateFrom
                //searchModel.DateTo
                if (!searchModel.DateFrom.IsNull() && searchModel.DateTo.IsNull())
                {
                    hasOtherFilter = true;
                    predicate      = predicate.And(a => DbFunctions.TruncateTime(a.DateCreated) >= DbFunctions.TruncateTime(searchModel.DateFrom));
                }
                else if (searchModel.DateFrom.IsNull() && !searchModel.DateTo.IsNull())
                {
                    hasOtherFilter = true;
                    predicate      = predicate.And(a => DbFunctions.TruncateTime(a.DateCreated) <= DbFunctions.TruncateTime(searchModel.DateTo));
                }
                else if (!searchModel.DateFrom.IsNull() && !searchModel.DateTo.IsNull())
                {
                    hasOtherFilter = true;
                    predicate      = predicate.And(a => DbFunctions.TruncateTime(a.DateCreated) >= DbFunctions.TruncateTime(searchModel.DateFrom) && DbFunctions.TruncateTime(a.DateCreated) <= DbFunctions.TruncateTime(searchModel.DateTo));
                }

                if (userTypeId == Constants.UserTypeAdminId)
                {
                    if (!searchModel.BranchId.IsNull())
                    {
                        hasOtherFilter = true;
                        predicate      = predicate.And(p => p.BranchID == searchModel.BranchId);
                    }

                    list = _orderService.GetAllSalesOrder().AsExpandable().Where(predicate);
                }
                else
                {
                    predicate = predicate.And(p => p.BranchID == branchId);
                    list      = _orderService.GetAllSalesOrder().AsExpandable().Where(predicate);
                }
            }



            return(list);
        }
        public virtual ActionResult RefreshSavedSalesOrder(SavedSalesOrderSearchModel searchModel)
        {
            var list = GetSalesOrder(searchModel);

            return(PartialView(IOBALANCEMVC.OrderManagement.SalesOrder.Views._ListOfSavedSalesOrder, list));
        }