<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\EncuestaNpsRequest;
use App\Http\Resources\DefaultCollection;
use App\Http\Resources\DefaultResource;
use App\Models\EncuestaNps;
use Illuminate\Http\Request;

class EncuestasNpsController extends Controller
{
    public function index(): DefaultCollection
    {
        $size = request('page.size', 10);
        $page = request('page.number', 1);

        $sort = request('sort', null);

        $result = EncuestaNps::query()
            ->selectFillable()
            ->applySorts($sort, 'id')
            ->filterLike(request('filter', []))
            // ->orderByDesc('id') 
            ->latest()
            ->paginate($size, ['id'], 'page[number]', $page);

        $result->each(function ($item) {
            $item->total = $item->detractors + $item->passives + $item->promoters;

            if ($item->total) {

                $item->detractors = round(($item->detractors / $item->total) * 100);
                $item->passives = round(($item->passives / $item->total) * 100);
                $item->promoters = round(($item->promoters / $item->total) * 100);
            }
        });

        return DefaultCollection::make($result);
    }

    public function store(EncuestaNpsRequest $request): DefaultResource
    {
        $result = EncuestaNps::create($request->all());
        return DefaultResource::make($result);
    }

    public function edit($id): DefaultResource
    {
        $result = EncuestaNps::find($id);
        return DefaultResource::make($result);
    }

    public function update(EncuestaNpsRequest $request, $id): DefaultResource
    {
        $result = EncuestaNps::find($id);
        $result->fill($request->all())->save();
        return DefaultResource::make($result);
    }
}
