Tuesday, February 14, 2023

Get completed orders count for a specific user with a specific product in Woocommerce

Get completed orders count for a specific user with a specific product in Woocommerce:

Code:

function get_total_product_completed_order_for_a_specific_user() {
    $product_slug = 'product-slug';
    $product_obj = get_page_by_path($product_slug, OBJECT, 'product');

    $pid = 0;
    if (!empty($product_obj)) {
        $pid = $product_obj->ID;
    }

    // Get all customer orders
    $customer_orders = get_posts(
        array(
            'numberposts' => -1,
            'meta_key'    => '_customer_user',
            'orderby'     => 'date',
            'order'       => 'DESC',
            'meta_value'  => get_current_user_id(),
            'post_type'   => wc_get_order_types(),
            'post_status' => array_keys(wc_get_order_statuses()),
            'post_status' => array('wc-completed'),
        )
    );

    $Order_Array = [];
    $apid_counter = 0;
    foreach ($customer_orders as $customer_order) {
        $orderq        = wc_get_order($customer_order);

        $items = $orderq->get_items();

        foreach ( $items as $item ) {
            $product_id = $item->get_product_id();
            if ($pid == $product_id) {
                $apid_counter++;
            }
            break;
        }

        $Order_Array[] = [
            "ID"    => $orderq->get_id(),
            "Value" => $orderq->get_total(),
            "Date"  => $orderq->get_date_created()->date_i18n('Y-m-d'),
        ];
    }

    // return count($Order_Array);
    return $apid_counter;
}

Happy coding...



Monday, February 6, 2023

Laravel - raw query with pagination

Laravel - raw query with pagination:

class InventoryController extends Controller

{

    public function index(Request $request)

    {

        $sql = "SELECT *,products.name as product_name, product_categories.name as category_name, products.id as productid,

              ( SELECT SUM(buy_products.qty) as purcahse_qty

                FROM buy_products

                WHERE buy_products.product_id=products.id GROUP BY buy_products.product_id ) as bqty,

              ( SELECT SUM(sell_products.qty) as order_qty

                FROM sell_products

                WHERE sell_products.product_id=products.id GROUP BY sell_products.product_id ) as sqty 

                FROM products LEFT JOIN product_categories ON products.product_category_id=product_categories.id

                ";

        $results = DB::select($sql);

        $productInventoryData = $this->arrayPaginator($results, $request);

        return view('auth.inventory.inventory_list')->with('productInventoryData', $productInventoryData);

    }


    public function arrayPaginator($array, $request)

    {

        $page = is_null($request->get('page')) ? 1 : $request->get('page');

        $perPage = 2;

        $offset = ($page * $perPage) - $perPage;


        return new LengthAwarePaginator(array_slice($array, $offset, $perPage, true), count($array), $perPage, $page,

            ['path' => $request->url(), 'query' => $request->query()]);

    }

}

And in views you can use links as like DB query build we use.
Thanks and happy coding.

Switch PHP version in Ubuntu OS or Zorin OS

First check where is installed your PHP by the below command: $ which php See PHP version by below command: $ php -v As I've installed P...