<?php namespace App\Http\Controllers;

use App\Models\Loyaltyprograms;
use App\Traits\NotDeletableTrait;
use Illuminate\Http\Request;

class LoyaltyProgramsController extends GenericController
{
    use NotDeletableTrait;
    protected $layout = "layouts.main";
    protected $data = array();
    public $module = 'loyaltyprograms';
    static $per_page = '10';

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

    public function store(Request $request)
    {
        if ($this->access['is_edit'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        $bonus_code = 'NULL';
        if (isset($request->old_code) && !empty($request->old_code)) {
            $bonus_code = $request->old_code;
            $program = Loyaltyprograms::where('bonus_code', $bonus_code)->first();
        } else {
            $program = new Loyaltyprograms();
        }

        $request->validate([
            'name' => 'required',
            'bonus_code' => "required|unique:loyalty_programs,bonus_code,{$bonus_code},bonus_code",
            'bonus_amount' => 'required|numeric',
            'min_sale_count' => 'required|integer',
            'min_sale_amount' => 'required|numeric',
            'rank' => "required|unique:loyalty_programs,rank," . (isset($program->id) ? $program->id : 'NULL') . ",id",
            'landing_text_color' => 'required',
            'landing_card_background' => 'required',
            'app_card_background_img' => 'required',
            'badge' => 'required'
        ]);

        $program->name = $request->name;
        $program->bonus_code = $request->bonus_code;
        $program->bonus_amount = $request->bonus_amount;
        $program->min_sale_count = $request->min_sale_count;
        $program->min_sale_amount = $request->min_sale_amount;
        $program->rank = $request->rank;
        $program->landing_text_color = $request->landing_text_color;
        $program->landing_card_background = $request->landing_card_background;
        $program->app_card_background_img = $request->app_card_background_img;
        $program->badge = $request->badge;
        $program->save();
        return redirect()->to('/manage/loyaltyprograms');
    }

    public function edit(Request $request, $id)
    {
        if ($this->access['is_edit'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        $program = Loyaltyprograms::findOrFail($id);
        if (!$program)
            return redirect('/manage/' . $this->module)->with('message', 'Record Not Found !')->with('status', 'error');
        if ($this->access['is_edit'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        $row = $program->toArray();
        $row['old_bonus_code'] = $row['bonus_code'];
        return view('manage.loyaltyprograms.form', ['row' => $row]);
    }


}
