<?php

namespace App\Http\Controllers\Parametres\Imports;

use App\Http\Controllers\Controller;
use App\Imports\ProjetsImport;
use App\Jobs\ImportExcel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel;

class ImportProjetController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function index()
    {
        return view('parametres.import-projet.index');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function store(Request $request)
    {
        $validator = Validator::make(
            [
                'projet'    => $request->projet,
                'extension' => $request->projet != null ? strtolower($request->projet->getClientOriginalExtension()) : 'xlsx',
            ],
            [
                'projet'    => 'required',
                'extension' => 'required|in:xlsx',
            ]
        );

        // On sauvegarde le fichier Excel dans le storage pour que le Job puisse le récupérer lors de l'import
        $file = Storage::put('public/imports/projet', $validator->validated()['projet']);

        // On ajoute le job à la queue
        ImportExcel::dispatch(Auth::user(), $file, 'projet')->onQueue('imports');

        return redirect()->route('import-projet.index')->with([
            'success' => 'L\'import est en cours, vous recevrez une notification du succès de ce dernier dans quelques instants. Merci de ne pas effectuer d\'autres tentatives entre temps.'
        ]);
    }
}
