public override int GetHashCode() { int hashDocNo = DocumentNo == null ? 0 : DocumentNo.GetHashCode(); int hashCustomerId = CustomerId == null ? 0 : CustomerId.GetHashCode(); int hashSalesmanId = SalesmanId == null ? 0 : SalesmanId.GetHashCode(); return(hashDocNo * hashCustomerId * hashSalesmanId); }
protected override Expression <Func <Sale, bool> > GetExpression() { if (!string.IsNullOrWhiteSpace(Keyword)) { ExpressionObj = x => x.OrderNumber.ToLower().Contains(Keyword) || x.OrderReferenceNumber.ToLower().Contains(Keyword) || x.CustomerPhone.ToLower().Contains(Keyword) || x.CustomerName.ToLower().Contains(Keyword); } if (this.SaleChannel != SaleChannel.All) { ExpressionObj = ExpressionObj.And(x => x.SaleChannel == this.SaleChannel); } if (this.SaleFrom != SaleFrom.All) { ExpressionObj = ExpressionObj.And(x => x.SaleFrom == this.SaleFrom); } if (this.OrderState != All) { OrderState state = (OrderState)Enum.Parse(typeof(OrderState), this.OrderState); ExpressionObj = ExpressionObj.And(x => x.OrderState == state); } if (!string.IsNullOrWhiteSpace(DeliverymanId)) { this.ExpressionObj = this.ExpressionObj.And(x => x.DeliverymanId == DeliverymanId); } if (!string.IsNullOrWhiteSpace(Thana) && Thana != All) { this.ExpressionObj = this.ExpressionObj.And(x => x.Address.Thana == Thana); } this.ExpressionObj = this.ExpressionObj.And(x => x.IsDealerSale == this.IsDealerSale); if (OnlyDues) { this.ExpressionObj = this.ExpressionObj.And(x => x.DueAmount >= 1 && x.OrderState != Model.OrderState.Cancel); } if (IsDealerSale) { if (ParentId.IdIsOk()) { this.ExpressionObj = this.ExpressionObj.And(x => x.DealerId == ParentId); } } else { if (ParentId.IdIsOk()) { this.ExpressionObj = this.ExpressionObj.And(x => x.CustomerId == ParentId); } } if (SalesmanId.IdIsOk()) { this.ExpressionObj = this.ExpressionObj.And(x => x.EmployeeInfoId == SalesmanId); } if (WarehouseId.IdIsOk() && WarehouseId != new Guid().ToString()) { this.ExpressionObj = this.ExpressionObj.And(x => x.WarehouseId == WarehouseId); } //if (WarehouseId == new Guid().ToString()) //{ // this.ExpressionObj = this.ExpressionObj.And(x => x.WarehouseId == null); //} this.ExpressionObj = this.ExpressionObj.And(x => x.IsTaggedSale == IsTaggedSale); if (IsTaggedSale) { this.ExpressionObj = this.ExpressionObj.And(x => x.SaleTag == SaleTag); } ExpressionObj = ExpressionObj.And(x => x.ShopId == ShopId); ExpressionObj = ExpressionObj.And(GenerateBaseEntityExpression()); if (!string.IsNullOrWhiteSpace(DateSearchColumn)) { switch (DateSearchColumn) { case "Created": ExpressionObj = ExpressionObj.And(x => DbFunctions.TruncateTime(x.Created) >= StartDate && DbFunctions.TruncateTime(x.Created) <= EndDate); break; case "OrderDate": ExpressionObj = ExpressionObj.And(x => DbFunctions.TruncateTime(x.OrderDate) >= StartDate && DbFunctions.TruncateTime(x.OrderDate) <= EndDate); break; case "DeliveryDate": ExpressionObj = ExpressionObj.And(x => DbFunctions.TruncateTime(x.RequiredDeliveryDateByCustomer) >= StartDate && DbFunctions.TruncateTime(x.RequiredDeliveryDateByCustomer) <= EndDate); break; default: ExpressionObj = ExpressionObj.And(x => DbFunctions.TruncateTime(x.Modified) >= StartDate && DbFunctions.TruncateTime(x.Modified) <= EndDate); break; } } return(ExpressionObj); }