<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\FormEic;
use App\Http\Requests\FormEicDelete;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Storage;

class AdminFormEic extends Controller
{
    public function getListFormEic()
    {
        return view('admin.generic.pages.form-eic-list');
    }

    public function postListFormEic()
    {
        $page = request()->input("current");
        $sort = request()->input("sort");
        $search = request()->input("searchPhrase");

        if (!empty($page)) {
            Paginator::currentPageResolver(function () use ($page) {
                return $page;
            });
            if (!empty($search)) {
                $query = FormEic::where(function ($query) use ($search) {
                    $query->orWhere('full_name_app', 'like', "%{$search}%")
                        ->orWhere('email_app', 'like', "%{$search}%")
                        ->orWhere('full_name_company', 'like', "%{$search}%");
                });
            } else {
                $query = FormEic::query();
            }

            if (empty($sort)) {
                $rows = $query->paginate(request()->input("rowCount"));
            } else {
                foreach ($sort as $field => $direction) {
                    if (empty($direction) || strtolower($direction) !== "desc") {
                        $order_direction = "asc";
                    }
                    $rows = $query->orderBy($field, strtolower($direction))->paginate(request()->input("rowCount"));
                    break;
                }
            }

            $result = array(
                "total" => $rows->total(),
                "current" => $rows->currentPage(),
                "rowCount" => request()->input("rowCount"),
                "rows" => $rows->getCollection()
            );

            return response()->json($result);
        }
    }

    public function getView($formId = null)
    {
        if (!empty($formId)) {
            $form = FormEic::find($formId);
        } else {
            abort(404);
        }

        if(empty($form)){
            abort(404);
        }

        return view('admin.generic.pages.form-eic-view', [
            'form'         => $form,
            'canView'        => true
        ]);
    }

    public function downloadDocumentCompany($formId = null)
    {
        $form = FormEic::find($formId);
        $filePath = 'form-eics/' . $form->document_company_filename . '.' . $form->document_company_extension;
        $privateDisk = Storage::disk('private');

        if ($privateDisk->exists($filePath)) {
            return response()->download(storage_path('app/private/' . $filePath), $form->document_company_original_filename . '.' . $form->document_company_extension);
        }

        return response()->json(['message' => 'Document not found'], 404);
    }

    public function downloadDocumentVat($formId = null)
    {
        $form = FormEic::find($formId);
        $filePath = 'form-eics/' . $form->document_vat_filename . '.' . $form->document_vat_extension;
        $privateDisk = Storage::disk('private');

        if ($privateDisk->exists($filePath)) {
            return response()->download(storage_path('app/private/' . $filePath), $form->document_vat_original_filename . '.' . $form->document_vat_extension);
        }

        return response()->json(['message' => 'Document not found'], 404);
    }

    public function postDelete(FormEicDelete $request)
    {

        $data = $request->validated();
        $form = FormEic::find($data['id']);

        if(!empty($form)){
            $form->delete();
        }

        return response()->json(["success" => true]);
    }
}
