Files
erahn-click/app/Rules/PaymentRules/NorujukanNotAttemptPaymentRecently.php
T

73 lines
1.8 KiB
PHP

<?php
namespace App\Rules\PaymentRules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Http\Client\Pool;
use Illuminate\Support\Facades\Http;
class NorujukanNotAttemptPaymentRecently implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$norujukanToPay = json_decode($value);
$norujukanRecentlyAttemptPayment = $this->getNorujukanRecentlyAttemptPayment($norujukanToPay);
return sizeof($norujukanRecentlyAttemptPayment) == 0;
}
private function getNorujukanRecentlyAttemptPayment($norujukanList)
{
$getRecentlyAttemptPayment = function () use ($norujukanList) {
return Http::pool(function (Pool $pool) use ($norujukanList) {
foreach ($norujukanList as $norujukan) {
$pool->get(config('api.url') . '/portal/searchsagonline/', ['norujukan' => $norujukan]);
}
});
};
$recentlyAttemptPaymentResponse = array_map(
fn($x, $y) => ['norujukan' => $x, 'isRecentlyAttemptPayment' => $y->json()],
$norujukanList,
$getRecentlyAttemptPayment()
);
$filterRecentlyAttemptPayment = array_filter(
$recentlyAttemptPaymentResponse,
fn($x) => $x['isRecentlyAttemptPayment'] === true
);
return array_map(fn($x) => $x['norujukan'], $filterRecentlyAttemptPayment);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Sila Tunggu Sebentar!';
}
}