%PDF- %PDF-
Direktori : /var/www/html/hrsys/api/app/Http/Controllers/Api/v1/ |
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()); } } }