<?php

namespace App\Http\Controllers;
use Illuminate\Support\Str;
use App\Models\Stores;
use App\Traits\NotDeletableTrait;
use Yajny\Models\Coupon;
use Yajny\Models\Store;
use Yajny\Models\Storecashback ;

class StoresController extends DataManangeCtrl
{
    use NotDeletableTrait;

    protected $layout = "layouts.main";
    protected $data = array();
    public $module = 'stores';
    static $per_page = '10';

    public function __construct()
    {
        $this->model = new Stores();
        $this->modelview = new \App\Models\Storecashback();
        parent::__construct();
    }


    public function getStoreDetails($store_id)
    {

        $store = Store::where('id', $store_id)->orWhere('slug', $store_id)->with([
            'store_cashback' => function ($q) {
                return $q->selectRaw(Storecashback::colSelect());
            },
            'draft_store_cashback' => function ($q) {
                return $q->selectRaw(Storecashback::colSelect());
            },
            'store_coupons' => function ($q) {
                return $q->selectRaw(Coupon::colSelect());
            },
            'draft_store_coupons' => function ($q) {
                return $q->selectRaw(Coupon::colSelect());
            },
            'store_offers' => function ($q) {
                return $q->withoutGlobalScopes()->selectRaw(Coupon::colSelect());
            }
        ])->first();


        $storeCashback = $store->store_cashback->map(function ($item) {
            return Storecashback::mapItems($item);
        });
        $draftStoreCashback = $store->draft_store_cashback->map(function ($item) {
            return Storecashback::mapItems($item);
        });
        $storeCoupons = $store->store_coupons->map(function ($item) {
            return Coupon::mapItems($item, false);
        });
        $draftStoreCoupons = $store->draft_store_coupons->map(function ($item) {
            return Coupon::mapItems($item);
        });
        $storeOffers = $store->store_offers->map(function ($item) {
            return Coupon::mapItems($item, false);
        });


        unset($store->store_cashback);
        unset($store->draft_store_cashback);
        unset($store->store_coupons);
        unset($store->draft_store_coupons);
        unset($store->store_offers);

        return [
            'store_details' => $store,
            'store_cashback' => $storeCashback,
            'draft_store_cashback' => $draftStoreCashback,
            'store_coupons' => $storeCoupons,
            'draft_store_coupons' => $draftStoreCoupons,
            'store_offers' => $storeOffers,
        ];
    }

}
