/home/brandsfa/www/app/Http/Controllers/RestAPI/v1/FlashDealController.php
<?php

namespace App\Http\Controllers\RestAPI\v1;

use App\Http\Controllers\Controller;
use App\Models\FlashDeal;
use App\Models\FlashDealProduct;
use App\Models\Product;
use App\Utils\Helpers;
use Illuminate\Http\Request;

class FlashDealController extends Controller
{
    public function get_flash_deal()
    {
        try {
            $flash_deals = FlashDeal::where('deal_type','flash_deal')
                ->where(['status' => 1])
                ->whereDate('start_date', '<=', date('Y-m-d'))
                ->whereDate('end_date', '>=', date('Y-m-d'))->first();
            return response()->json($flash_deals, 200);
        } catch (\Exception $e) {
            return response()->json(['errors' => $e], 403);
        }

    }

    public function get_products(Request $request, $deal_id)
    {
        $user = Helpers::get_customer($request);
        $p_ids = FlashDealProduct::with(['product'])
                ->whereHas('product',function($q){
                    $q->active();
                })
                ->where(['flash_deal_id' => $deal_id])
                ->pluck('product_id')->toArray();

        if (count($p_ids) > 0) {
            $products = Product::with(['rating', 'reviews'])
                ->withCount(['wishList' => function($query) use($user){
                    $query->where('customer_id', $user != 'offline' ? $user->id : '0');
                }])
                ->whereIn('id', $p_ids)
                ->get();

            $products?->map(function ($product) {
                $product['reviews_count'] = $product->reviews->count();
                unset($product->reviews);
                return $product;
            });
            return response()->json(Helpers::product_data_formatting($products, true), 200);
        }

        return response()->json([], 200);
    }
}