Run time form requests

This commit is contained in:
David Bomba 2022-02-16 08:50:28 +11:00
parent 910aeebaf7
commit c1a39a6ea0
5 changed files with 61 additions and 6 deletions

View File

@ -81,6 +81,7 @@ class ImportController extends Controller {
/** @var UploadedFile $file */
foreach ( $request->files->get( 'files' ) as $entityType => $file ) {
$contents = file_get_contents( $file->getPathname() );
// $contents = mb_convert_encoding($contents, 'UTF-16LE', 'UTF-8');
// Store the csv in cache with an expiry of 10 minutes
Cache::put( $hash . '-' . $entityType, base64_encode( $contents ), 600 );

View File

@ -25,7 +25,6 @@ use Illuminate\Validation\Rule;
class StoreClientRequest extends Request
{
use MakesHash;
/**
* Determine if the user is authorized to make this request.
*
@ -89,7 +88,7 @@ class StoreClientRequest extends Request
protected function prepareForValidation()
{
$input = $this->all();
$settings = ClientSettings::defaults();
if (array_key_exists('settings', $input) && ! empty($input['settings'])) {

View File

@ -11,6 +11,7 @@
namespace App\Http\Requests;
use App\Http\Requests\RuntimeFormRequest;
use App\Http\ValidationRules\User\RelatedUserRule;
use App\Utils\Traits\MakesHash;
use Illuminate\Foundation\Http\FormRequest;
@ -18,7 +19,7 @@ use Illuminate\Foundation\Http\FormRequest;
class Request extends FormRequest
{
use MakesHash;
use RuntimeFormRequest;
/**
* Get the validation rules that apply to the request.
*
@ -163,9 +164,18 @@ class Request extends FormRequest
}
}
if (array_key_exists('email', $contact))
$input['contacts'][$key]['email'] = trim($contact['email']);
}
}
return $input;
}
protected function prepareForValidation()
{
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
trait RuntimeFormRequest
{
public static function runFormRequest($value)
{
$value = self::getMockedRequestByParameters($value);
$validator = self::createFrom($value, new self());
$validator->setContainer(app());
$validator->prepareForValidation();
$validator->setValidator(Validator::make($validator->all(), $validator->rules()));
$instance = $validator->getValidatorInstance();
return $instance;
// if ($instance->fails()) {
// return $instance->errors();
// }
// $validator->passedValidation();
// return $validator->all();
}
protected static function getMockedRequestByParameters($paramters)
{
$mockRequest = Request::create('', 'POST');
$mockRequest->merge($paramters);
return $mockRequest;
}
}

View File

@ -372,11 +372,13 @@ class CSVImport implements ShouldQueue {
$entity = $transformer->transform( $record );
/** @var \App\Http\Requests\Request $request */
$request = new $request_name();
// $request = new $request_name();
// $request->prepareForValidation();
// Pass entity data to request so it can be validated
$request->query = $request->request = new ParameterBag( $entity );
$validator = Validator::make( $entity, $request->rules() );
// $request->query = $request->request = new ParameterBag( $entity );
// $validator = Validator::make( $entity, $request->rules() );
$validator = $request_name::runFormRequest($entity);
if ( $validator->fails() ) {
$this->error_array[ $entity_type ][] =