<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\CarOwner;
use App\Models\User;
use App\Models\CarOwnerCar;
use App\Models\WashDetail;
use App\Models\Rating;
use App\Models\Review;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Validator;
use Config;
use Hash;
use Auth;

class CoRatingController extends Controller
{
    public function __construct(){
    }


    public function index(){
    }

    public function addRating(Request $request){
        $validate = Validator::make(
            $request->all(),
            [
                'user_id' => 'required',
                'wash_id' => 'required',
                'rating' => 'required',
                'review' => 'required'
            ],
            [
                // 'user_id.required' => 'Please enter user id'
            ]
        );

        if($validate->fails()) {
            $errorString = implode(",", $validate->messages()->all());
            return response()->json([
                'success' => 0,
                'message' => $errorString,
            ]);
        }
        $user_id = $request->input('user_id');
        $wash_id = $request->input('wash_id');
        $rating = $request->input('rating');
        $review = $request->input('review');
        $dt = Carbon::now();

        $getReviewCount = Review::where('wash_id', $wash_id)->count();
        if($getReviewCount > 0){
            return response()->json([
                'success' => 0,
                'message' => 'Review and ratings have been already submitted for this wash.',
            ]);
        }

        $washDetail = WashDetail::findorfail($wash_id);
        $cwo_id = $washDetail->cwo_id;

        $getCo = CarOwner::select('id')->where('user_id', $user_id)->first();
        $co_id = $getCo->id;

        $ratingData=[
                'cwo_id'=> $cwo_id,
                'co_id'=> $co_id,
                'wash_id'=> $wash_id,
                'rating'=> $rating,
                'created_at'=>$dt->toDayDateTimeString(),
                'updated_at'=>$dt->toDayDateTimeString(),
            ];
        $insertRating = Rating::create($ratingData);
        $rating_id = $insertRating->id;

        $reviewData=[
                'cwo_id'=> $cwo_id,
                'user_id'=> $user_id,
                'wash_id'=> $wash_id,
                'is_cwo_user'=> 0,
                'review'=> $review,
                'created_at'=>$dt->toDayDateTimeString(),
                'updated_at'=>$dt->toDayDateTimeString(),
            ];
        $insertReview = Review::create($reviewData);
        $review_id = $insertReview->id;
        
        return response()->json([
                'success' => 1,
                'message' => 'Success',
                'rating_id' => $rating_id,
                'review_id'=> $review_id
            ]);
    }

    



}
