Показать созданные записи в API с Maatwebsite / Laravel -Excel - PullRequest
0 голосов
/ 18 марта 2020

Я хочу вернуть все данные, которые были вставлены в базу данных с файлом Excel.

В основном у меня есть файл с несколькими строками в качестве данных, этот файл будет вставлен в базу данных, которая работает хорошо. Но проблема в том, что я хочу вернуть / вывести список всех вставленных данных пользователю.

Вот мои контроллеры

<?php

namespace App\Http\Controllers\Api;

use App\Imports\QuotasImport;
use App\Models\Quota;
use Illuminate\Http\Request;

class QuotaController extends BasicCrudController
{
    public function store(Request $request)
    {
        if ($request->file('file')) {
           $a = (new QuotasImport())->import(request()->file('file'));

           return "Return here, the data";
        }

    }

    public function rulesStore()
    {
        return [
            'operation_uuid' => 'required|uuid|exists:operations,uuid',
            'product_uuid' => 'required|uuid|exists:products,uuid',
            'client_type' => 'required|alpha|in:PJ,PF',
            'wallet_uuid' => 'required|uuid|exists:wallets,uuid',
            'action_uuid' => 'required|uuid|exists:actions,uuid',
            'agency_uuid' => 'required|uuid|exists:agencies,uuid',
            'provider_uuid' => 'required|uuid|exists:providers,uuid',
            'quantity' => 'required|integer',
            'execution_date' =>  ['required','regex:/^[0-9]{2}\/[0-9]{4}$/']
        ];
    }

    protected function rulesUpdate()
    {
        return [
            'client_type' => 'sometimes|required|alpha|in:PJ,PF',
            'quantity' => 'sometimes|required|integer',
            'execution_date' =>  ['sometimes', 'required','regex:/^[0-9]{2}\/[0-9]{4}$/']
        ];
    }


    protected function model()
    {
        return Quota::class;
    }

}

и мой контроллер импорта

<?php

namespace App\Imports;

use App\Http\Controllers\Api\QuotaController;
use App\Models\Quota;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToModel;

class QuotasImport implements ToModel
{
    use Importable;
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */


    public function model(array $row)
    {

        $segmentation = $row[0];
        $quantity = $row[1];
        $execution_date = '10/2020';

        $operation_code = substr($segmentation, 0, 2);
        $operation_uuid = $this->find( \App\Models\Operation::class, $operation_code);

        $product_code = substr($segmentation, 2, 2);
        $product_uuid = $this->find( \App\Models\Product::class, $product_code);

        $client_type = substr($segmentation, 4, 2);

        $wallet_code = substr($segmentation, 6, 4);
        $wallet_uuid = $this->find( \App\Models\Wallet::class, $wallet_code);

        $action_code = substr($segmentation, 11, 3);
        $action_uuid = $this->find( \App\Models\Action::class, $action_code);

        $agency_code = substr($segmentation, 14, 3);
        $agency_uuid = $this->find( \App\Models\Agency::class, $agency_code);

        $provider_code = substr($segmentation, 17, 3);
        $provider_uuid = $this->find( \App\Models\Provider::class, $provider_code);

        $data = [
            'operation_uuid' => $operation_uuid,
            'product_uuid' =>  $product_uuid,
            'client_type' =>   $client_type,
            'wallet_uuid' => $wallet_uuid,
            'action_uuid' => $action_uuid,
            'agency_uuid' => $agency_uuid,
            'provider_uuid' => $provider_uuid,
            'quantity' => $quantity,
            'execution_date' =>  $execution_date
        ];

        $validatedData = Validator::make($data, app(QuotaController::class)->rulesStore())->validate();

        return new Quota ($validatedData);

    }

    protected function find($model, $code)
    {
        $model = $model::where('code', $code)->firstOrFail();
        return $model->uuid;
    }

} 
...