WebErpMesv2
WebErpMesv2 copied to clipboard
[COMPANY] Use DragonBe/vies
composer require dragonbe/vies
namespace App\Services;
use DragonBe\Vies\Vies;
class VatValidationService
{
protected $vies;
public function __construct()
{
$this->vies = new Vies();
}
public function validateVatNumber($countryCode, $vatNumber)
{
if ($this->vies->getHeartBeat()->isAlive()) {
$result = $this->vies->validateVat($countryCode, $vatNumber);
return $result->isValid();
}
return false;
}
}
namespace App\Http\Controllers;
use App\Services\VatValidationService;
use Illuminate\Http\Request;
class PartnerController extends Controller
{
protected $vatService;
public function __construct(VatValidationService $vatService)
{
$this->vatService = $vatService;
}
public function store(Request $request)
{
$validated = $request->validate([
'vat_number' => ['required', function($attribute, $value, $fail) use ($request) {
$countryCode = substr($value, 0, 2); // Assume the first two characters are the country code
$vatNumber = substr($value, 2);
if (!$this->vatService->validateVatNumber($countryCode, $vatNumber)) {
$fail('The VAT number is invalid.');
}
}],
// autres règles de validation
]);
// Logic to store the partner details...
}
}
namespace App\Rules;
use App\Services\VatValidationService;
use Illuminate\Contracts\Validation\Rule;
class ValidVatNumber implements Rule
{
protected $vatService;
public function __construct(VatValidationService $vatService)
{
$this->vatService = $vatService;
}
public function passes($attribute, $value)
{
$countryCode = substr($value, 0, 2);
$vatNumber = substr($value, 2);
return $this->vatService->validateVatNumber($countryCode, $vatNumber);
}
public function message()
{
return 'The VAT number is invalid.';
}
}
use App\Rules\ValidVatNumber;
$request->validate([
'vat_number' => ['required', new ValidVatNumber(app(VatValidationService::class))],
]);