Files
crater/app/Rules/UniqueNumber.php
Mwikala Kangwa 9e98a96d61 Implement PHP CS Fixer and a coding standard to follow (#471)
* Create PHP CS Fixer config and add to CI workflow

* Run php cs fixer on project

* Add newline at end of file

* Update to use PHP CS Fixer v3

* Run v3 config on project

* Run seperate config in CI
2021-05-21 17:27:51 +05:30

62 lines
1.3 KiB
PHP

<?php
namespace Crater\Rules;
use Illuminate\Contracts\Validation\Rule;
class UniqueNumber implements Rule
{
public $id;
public $class;
/**
* Create a new rule instance.
* @param string $class
* @param int $id
* @return void
*/
public function __construct(string $class = null, int $id = null)
{
$this->class = $class;
$this->id = $id;
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if ($value && count(explode("-", $value)) > 2) {
$number = explode("-", $value);
$uniqueNumber = $number[0].'-'.sprintf('%06d', intval($number[1]));
} else {
$uniqueNumber = $value;
}
if ($this->id && $this->class::where('id', $this->id)->where($attribute, $uniqueNumber)->first()) {
return true;
}
if ($this->class::where($attribute, $uniqueNumber)->first()) {
return false;
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Invalid number passed.';
}
}