<?php

namespace App\Http\Controllers;

use App\Coupon;
use Illuminate\Http\Request;
use Validator;

class CouponController extends Controller
{
    
    public function __construct () 
    {
        $this->middleware('auth:admin');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $coupons = Coupon::all();
        return view('admin.coupons.index')->withCoupons($coupons);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.coupons.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
       $customMessage = '';
       $validator = Validator::make($request->all(), [          
        'coupon_name' => 'required',
        'coupon_amount' => 'required',
        'coupon_type' => 'required',
        'status' => 'required'
        ]);
        if ($validator->fails()) {
            $validator_ArrayCount = $validator->errors()->toArray();
          
            foreach ($validator_ArrayCount as $key => $value) {
                $customMessage .= $value[$key].'<br>';
            }
           
             session()->flash('error', $customMessage);
        }
        else{
            $coupon = new Coupon();
            $coupon->coupon_name = $request->coupon_name;
            $coupon->coupon_amount = ($request->coupon_amount)? $request->coupon_amount :'';
            $coupon->coupon_type = ($request->coupon_type)? $request->coupon_type :'';
            $coupon->status = ($request->status)?$request->status:'';
            $res = $coupon->save();
             
            if($res)
            {
                session()->flash('success', 'Coupon successfully created');
                return redirect()->route('coupon.index');
            }
        }
        
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Coupon  $coupon
     * @return \Illuminate\Http\Response
     */
    public function show(Coupon $coupon)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Coupon  $coupon
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        
        $coupon = Coupon::find($id);     
        return view('admin.coupons.edit')->withCoupon($coupon);
      
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Coupon  $coupon
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,$id)
    {
         $customMessage = '';
       $validator = Validator::make($request->all(), [          
        'coupon_name' => 'required',
        'coupon_amount' => 'required',
        'coupon_type' => 'required',
        'status' => 'required'
        ]);
        if ($validator->fails()) {
            $validator_ArrayCount = $validator->errors()->toArray();
          
            foreach ($validator_ArrayCount as $key => $value) {
                $customMessage .= $value[$key].'<br>';
            }
           
             session()->flash('error', $customMessage);
        }
        else{
            $coupon = Coupon::find($id);     
            $coupon->coupon_name = $request->coupon_name;
            $coupon->coupon_amount = ($request->coupon_amount)? $request->coupon_amount :'';
            $coupon->coupon_type = ($request->coupon_type)? $request->coupon_type :'';
            $coupon->status = ($request->status)?$request->status:'0';
            $res = $coupon->save();
             
            if($res)
            {
                session()->flash('success', 'Coupon successfully created');
                return redirect()->route('coupon.index');
            }
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Coupon  $coupon
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        Coupon::where('id', $id)->delete();
        session()->flash('success','Page was successfully deleted!!!');
        return redirect()->route('coupon.index');
    }
}
