<?php
namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\Request;
use Yajny\Member\Models\Member;
use Yajny\Models\Coupon;

class UserLikeDislikeController extends MemberController
{


    /** @var Member $member */
    public $member;


    public function __construct(Request $request)
    {
        parent::__construct($request);
    }
    /**
     * @param Request $request
     * @param $couponId
     */
    public function likeCoupon(Request $request, $couponId)
    {

        try {
            $coupon = Coupon::findOrFail($couponId);

        } catch (ModelNotFoundException $exception) {
            return response()->json(['status'=>false,'error' => 'Coupon not found'], 404);
        }


        if ($this->member->likedCoupons->contains($coupon)) {
            return response()->json(['message' => 'Coupon already liked']);
        }
        if (!$this->member->likedCoupons->contains($coupon)) {
            $this->member->likedCoupons()->detach($coupon );
            $this->member->likedCoupons()->attach($coupon, ['reaction' => 'like']);
            $coupon->increment('like');
            $coupon->save();
            return response()->json(['status'=>true,'message' => 'Coupon liked successfully']);
        }
    }

    /**
     * @param Request $request
     * @param $couponId
     */
    public function dislikeCoupon(Request $request, $couponId)
    {
        try {
            $coupon = Coupon::findOrFail($couponId);
        } catch (ModelNotFoundException $exception) {
            return response()->json(['status'=>false,'error' => 'Coupon not found'], 404);
        }
        if ($this->member->dislikedCoupons->contains($coupon)) {
            return response()->json(['message' => 'Coupon already disliked']);
        }
        if (!$this->member->dislikedCoupons->contains($coupon)) {
            $this->member->dislikedCoupons()->detach($coupon);
            $this->member->dislikedCoupons()->attach($coupon, ['reaction' => 'dislike']);
            $coupon->increment('dislike');
            $coupon->save();
            return response()->json(['status'=>true,'message' => 'Coupon disliked successfully']);
        }
    }
}
