<?php

namespace App\Http\Controllers;

use App\Models\Storedeals;
use Illuminate\Http\Request;

class StoreDealsController extends GenericController
{
    protected $layout = "layouts.main";
    protected $data = array();
    public $module = 'storedeals';
    static $per_page = '10';

    public function __construct()
    {
        $this->model = new Storedeals();
        parent::__construct();
    }

    public function index(Request $request)
    {
        $this->grab($request);
        if ($this->access['is_view'] == 0 && $this->access['is_search'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        elseif ($this->access['is_view'] == 0 && $this->access['is_search'] == 1)
            $deals = [];
        else
            $deals = Storedeals::all();

        return view('manage.storedeals.index', array_merge($this->data, ['deals' => $deals]));
    }

    public function store(Request $request)
    {
        $slug = 'NULL';
        if (isset($request->old_slug) && !empty($request->old_slug))
            $slug = $request->old_slug;

        $request->validate([
            'store_id' => 'required|exists:stores,id',
            'slug' => "required|unique:store_deals,slug,{$slug},slug,store_id,{$request->store_id}",
            'title' => 'required',
            'desc' => 'required',
            'image' => 'required',
            'button_text' => 'required',
            'link' => 'required',
            'region_code' => "required",
            'enabled' => 'required',
            'coupon_title.*' => 'required_with:coupon_code',
            'promo_text.*' => 'required_with:coupon_code'
        ]);

        if (isset($request->id) && !empty($request->id)) {
            $deal = Storedeals::find($request->id);
        } else {
            $deal = new Storedeals();
        }

        $fields = ['store_id', 'slug', 'title', 'desc', 'image', 'button_text', 'link', 'enabled', 'region_code', 'tags', 'coupon_code', 'coupon_title', 'promo_text'];
        foreach ($fields as $field) {
            if (isset($request->{$field})) {
                if (is_array($request->{$field}) && !in_array($field, $deal->translatable))
                    $deal->{$field} = json_encode($request->{$field});
                else
                    $deal->{$field} = $request->{$field};
            } else {
                $deal->{$field} = null;
            }
        }

        $deal->save();
        return redirect()->to('/manage/storedeals');
    }
}
