public OrderRentArr GetProductsWithLastDate()
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    (!orderRentArr.IsContains(orderRent.Product))
                )
                {
                    orderRentArr.Add(orderRent);
                }
                else
                {
                    OrderRent new_OrderRent = Contain(orderRent.Product);
                    if (orderRent.DateTo > new_OrderRent.DateTo)
                    {
                        orderRentArr.Remove(new_OrderRent);
                        orderRentArr.Add(orderRent);
                    }
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(Client client)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    ((client == null) || (orderRent.Client.Id == client.Id))
                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(Product product)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    ((product == null) || (orderRent.Product.Id == product.Id))
                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr FilterNoReturned()
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    (orderRent.Product.Doesavailable == "InRent")
                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(DateTime dt)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    (orderRent.DateFrom.Year == dt.Year) &&
                    (orderRent.DateFrom.Month == dt.Month)
                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(Employee employee, DateTime dateTime)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    ((employee == null) || (orderRent.Employee.Id == employee.Id)) &&
                    ((orderRent.DateFrom.Month == dateTime.Month) && (orderRent.DateFrom.Year == dateTime.Year))

                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(DateTime From, DateTime To)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (

                    (orderRent.DateFrom >= From) &&
                    (orderRent.DateTo <= To)
                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(int id, string Client, DateTime From, DateTime To)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    (id <= 0 || orderRent.Id == id) &&
                    orderRent.Client.Fullname.Contains(Client) &&
                    (orderRent.DateFrom >= From) &&
                    (orderRent.DateTo <= To)
                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }
        public OrderRentArr Filter(Client client, Product product, DateTime dateTime)
        {
            OrderRentArr orderRentArr = new OrderRentArr();

            for (int i = 0; i < this.Count; i++)
            {
                OrderRent orderRent = (this[i] as OrderRent);
                if
                (
                    ((client == null) || (orderRent.Client.Id == client.Id)) &&
                    ((product == null) || (orderRent.Product.Id == product.Id)) &&
                    (orderRent.DateTo.Date == dateTime.Date)


                )
                {
                    orderRentArr.Add(orderRent);
                }
            }
            return(orderRentArr);
        }