Skip to content

Commit

Permalink
add new rule validation
Browse files Browse the repository at this point in the history
  • Loading branch information
hekmatinasser committed May 23, 2018
1 parent 4e26213 commit f7562f9
Show file tree
Hide file tree
Showing 18 changed files with 875 additions and 38 deletions.
26 changes: 25 additions & 1 deletion README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -392,21 +392,45 @@ For example, in your English translation are under resources/lang/en directory,
jdate[:Y/m/d]
Determines if an input is a valid Jalali date with the specified format. The default format is Y/m/d.

jdate_equal[:1388/01/01],Y/m/d]
Determines if an input is a valid Jalali date with the specified format and it is equal a given date. The default format is Y/m/d.

jdate_not_equal[:1388/01/01],Y/m/d]
Determines if an input is a valid Jalali date with the specified format and it is not equal a given datet. The default format is Y/m/d.

jdatetime[:Y/m/d h:i:s]
Determines if an input is a valid Jalali datetime with the specified format. The default format is Y/m/d H:i:s.

jdatetime_equal[[:1380/1/1 12:00:00],Y/m/d H:i:s]
Determines if an input is a valid Jalali datetime with the specified format and it is equal a given datetime. The default format is Y/m/d H:i:s.

jdatetime_not_equal[:Y/m/d h:i:s]
Determines if an input is a valid Jalali datetime with the specified format and it is not equal a given datetime. The default format is Y/m/d H:i:s.

jdate_after[[:1388/01/01],Y/m/d]
Determines if an input is a valid Jalali date with the specified format and it is after a given date. The default format is Y/m/d and the default date is today.

jdate_after_equal[[:1388/01/01],Y/m/d]
Determines if an input is a valid Jalali date with the specified format and it is after or equal a given date. The default format is Y/m/d and the default date is today.

jdatetime_after[[:1380/1/1 12:00:00],Y/m/d H:i:s]
Determines if an input is a valid Jalali datetime with the specified format and it is after a given datetime. The default format is Y/m/d H:i:s and the default time is now.

jdatetime_after_equal[[:1380/1/1 12:00:00],Y/m/d H:i:s]
Determines if an input is a valid Jalali datetime with the specified format and it is after or equal a given datetime. The default format is Y/m/d H:i:s and the default time is now.

jdate_before[[:1395-01-01],Y-m-d]
Determines if an input is a valid Jalali date with the specified format and it is before a given date. The default format is Y/m/d and the default date is today.

jdatetime_before:"1395-01-01 h:i","Y-m-d H:i:s"
jdate_before_equal[[:1395-01-01],Y-m-d]
Determines if an input is a valid Jalali date with the specified format and it is before or equal a given date. The default format is Y/m/d and the default date is today.

jdatetime_before:[[:1395/1/1 12:00:00],Y/m/d H:i:s]
Determines if an input is a valid Jalali datetime with the specified format and it is before a given date-time. The default format is Y/m/d h:i:s and the default time is now.

jdatetime_before_equal:[[:1395/1/1 12:00:00],Y/m/d H:i:s]
Determines if an input is a valid Jalali datetime with the specified format and it is before or equal a given date-time. The default format is Y/m/d h:i:s and the default time is now.

```php
$validate = Validator::make([
'start_date' => '1389/01/31',
Expand Down
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -399,12 +399,39 @@ jdate[:Y/m/d]

فرمت پیش فرض می باشد Y/m/d

jdate_equal[[:1388/01/01],Y/m/d]

اگر تاریخ شمسی با فرمت معین مساوی باشد

فرمت پیش فرض می باشد Y/m/d


jdate_not_equal[[:1388/01/01],Y/m/d]

اگر تاریخ شمسی با فرمت معین نامساوی باشد

فرمت پیش فرض می باشد Y/m/d


jdatetime[:Y/m/d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین درست باشد

فرمت پیش فرض می باشد Y/m/d H:i:s

jdatetime_equal[:Y/m/d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین مساوی باشد

فرمت پیش فرض می باشد Y/m/d H:i:s


jdatetime_not_equal[[:1380/1/1 12:00:00],Y/m/d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین درست باشد

فرمت پیش فرض می باشد Y/m/d H:i:s

jdate_after[[:1388/01/01],Y/m/d]

اگر تاریخ شمسی با فرمت معین درست باشد و بعد از تاریخ تعیین شده باشد
Expand All @@ -413,6 +440,14 @@ jdate_after[[:1388/01/01],Y/m/d]

فرمت پیش فرض می باشد Y/m/d

jdate_after_equal[[:1388/01/01],Y/m/d]

اگر تاریخ شمسی با فرمت معین درست باشد و بعد یا مساوی از تاریخ تعیین شده باشد

درصورتی که تاریخ وارد کنید بعد از تاریخ فعلی باشد باشد

فرمت پیش فرض می باشد Y/m/d

jdatetime_after[[:1380/1/1 12:00:00],Y/m/d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین درست باشد و بعد از تاریخ تعیین شده باشد
Expand All @@ -421,6 +456,14 @@ jdatetime_after[[:1380/1/1 12:00:00],Y/m/d H:i:s]

فرمت پیش فرض می باشد Y/m/d H:i:s

jdatetime_after_equal[[:1380/1/1 12:00:00],Y/m/d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین درست باشد و بعد یا مساوی از تاریخ تعیین شده باشد

درصورتی که تاریخ وارد کنید بعد از تاریخ فعلی باشد باشد

فرمت پیش فرض می باشد Y/m/d H:i:s

jdate_before[[:1395-01-01],Y-m-d]

اگر تاریخ شمسی با فرمت معین درست باشد و قبل از تاریخ تعیین شده باشد
Expand All @@ -429,6 +472,14 @@ jdate_before[[:1395-01-01],Y-m-d]

فرمت پیش فرض می باشد Y/m/d

jdate_before_equal[[:1395-01-01],Y-m-d]

اگر تاریخ شمسی با فرمت معین درست باشد و قبل یا مساوی از تاریخ تعیین شده باشد

درصورتی که تاریخ وارد کنید قبل از تاریخ فعلی باشد باشد

فرمت پیش فرض می باشد Y/m/d

jdatetime_before[[:1395-01-01 12:00:00],Y-m-d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین درست باشد و قبل از تاریخ تعیین شده باشد
Expand All @@ -437,6 +488,14 @@ jdatetime_before[[:1395-01-01 12:00:00],Y-m-d H:i:s]

فرمت پیش فرض می باشد Y/m/d H:i:s

jdatetime_before_equal[[:1395-01-01 12:00:00],Y-m-d H:i:s]

اگر تاریخ و زمان شمسی با فرمت معین درست باشد و قبل یا مساوی از تاریخ تعیین شده باشد

درصورتی که تاریخ وارد کنید قبل از تاریخ فعلی باشد باشد

فرمت پیش فرض می باشد Y/m/d H:i:s

```php
$validate = Validator::make([
'start_date' => '1389/01/31',
Expand Down
3 changes: 1 addition & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
"require": {
"php": ">=5.5",
"hekmatinasser/notowo": "^1.0",
"illuminate/validation": "^5",
"illuminate/translation": "^5"
"illuminate/validation": "^5"
},
"require-dev" : {},
"autoload": {
Expand Down
125 changes: 116 additions & 9 deletions src/JalaliValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,34 @@ public function validateDate($attribute, $value, $parameters)
return true;
}

public function validateDateEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->eq($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateNotEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->ne($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateTime($attribute, $value, $parameters)
{
if (!is_string($value)) {
Expand All @@ -34,6 +62,34 @@ public function validateDateTime($attribute, $value, $parameters)
return true;
}

public function validateDateTimeEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->eq($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateTimeNotEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->ne($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateAfter($attribute, $value, $parameters)
{
if (!is_string($value)) {
Expand All @@ -42,7 +98,21 @@ public function validateDateAfter($attribute, $value, $parameters)
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->greaterThan($base);
return Verta::parseFormat($format, $value)->gt($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateAfterEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->gte($base);
} catch (\Exception $e) {
return false;
}
Expand All @@ -56,7 +126,21 @@ public function validateDateTimeAfter($attribute, $value, $parameters)
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->greaterThan($base);
return Verta::parseFormat($format, $value)->gt($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateTimeAfterEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->gte($base);
} catch (\Exception $e) {
return false;
}
Expand All @@ -70,7 +154,21 @@ public function validateDateBefore($attribute, $value, $parameters)
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->lessThan($base);
return Verta::parseFormat($format, $value)->lt($base);
} catch (\Exception $e) {
return false;
}
}

public function validateDateBeforeEqual($attribute, $value, $parameters)
{
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->lte($base);
} catch (\Exception $e) {
return false;
}
Expand All @@ -84,31 +182,40 @@ public function validateDateTimeBefore($attribute, $value, $parameters)
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->lessThan($base);
return Verta::parseFormat($format, $value)->lt($base);
} catch (\Exception $e) {
return false;
}
}

public function replaceDate($message, $attribute, $rule, $parameters)
public function validateDateTimeBeforeEqual($attribute, $value, $parameters)
{
return $message;
if (!is_string($value)) {
return false;
}
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
try {
$base = count($parameters) > 0 ? Verta::parseFormat($format, $parameters[0]) : null;
return Verta::parseFormat($format, $value)->lte($base);
} catch (\Exception $e) {
return false;
}
}

public function replaceDatetime($message, $attribute, $rule, $parameters)
public function replaceDateOrDatetime($message, $attribute, $rule, $parameters)
{
return $message;
}

public function replaceDateAfterOrBefore($message, $attribute, $rule, $parameters)
public function replaceDateAfterOrBeforeOrEqual($message, $attribute, $rule, $parameters)
{
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d';
$date = count($parameters) ? $parameters[0] : Verta::instance()->format($format);
$faDate = Verta::persianNumbers($date);
return str_replace([':date', ':fa-date'], [$date, $faDate], $message);
}

public function replaceDateTimeAfterOrBefore($message, $attribute, $rule, $parameters)
public function replaceDateTimeAfterOrBeforeOrEqual($message, $attribute, $rule, $parameters)
{
$format = count($parameters) > 1 ? $parameters[1] : 'Y/m/d H:i:s';
$date = count($parameters) ? $parameters[0] : Verta::instance()->format($format);
Expand Down
28 changes: 22 additions & 6 deletions src/VertaServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,33 @@ public function provides()
protected function validator()
{
Validator::extend('jdate', JalaliValidator::class . '@validateDate');
Validator::extend('jdate_equal', JalaliValidator::class . '@validateDateEqual');
Validator::extend('jdate_not_equal', JalaliValidator::class . '@validateDateNotEqual');
Validator::extend('jdatetime', JalaliValidator::class . '@validateDateTime');
Validator::extend('jdatetime_equal', JalaliValidator::class . '@validateDateTimeEqual');
Validator::extend('jdatetime_not_equal', JalaliValidator::class . '@validateDateTimeNotEqual');
Validator::extend('jdate_after', JalaliValidator::class . '@validateDateAfter');
Validator::extend('jdate_after_equal', JalaliValidator::class . '@validateDateAfterEqual');
Validator::extend('jdatetime_after', JalaliValidator::class . '@validateDateTimeAfter');
Validator::extend('jdatetime_after_equal', JalaliValidator::class . '@validateDateTimeAfterEqual');
Validator::extend('jdate_before', JalaliValidator::class . '@validateDateBefore');
Validator::extend('jdate_before_equal', JalaliValidator::class . '@validateDateBeforeEqual');
Validator::extend('jdatetime_before', JalaliValidator::class . '@validateDateTimeBefore');
Validator::extend('jdatetime_before_equal', JalaliValidator::class . '@validateDateTimeBeforeEqual');

Validator::replacer('jdate', JalaliValidator::class . '@replaceDate');
Validator::replacer('jdatetime', JalaliValidator::class . '@replaceDateTime');
Validator::replacer('jdate_after', JalaliValidator::class . '@replaceDateAfterOrBefore');
Validator::replacer('jdatetime_after', JalaliValidator::class . '@replaceDateTimeAfterOrBefore');
Validator::replacer('jdate_before', JalaliValidator::class . '@replaceDateAfterOrBefore');
Validator::replacer('jdatetime_before', JalaliValidator::class . '@replaceDateTimeAfterOrBefore');
Validator::replacer('jdate', JalaliValidator::class . '@replaceDateOrDatetime');
Validator::replacer('jdate_equal', JalaliValidator::class . '@replaceDateAfterOrBeforeOrEqual');
Validator::replacer('jdate_not_equal', JalaliValidator::class . '@replaceDateAfterOrBeforeOrEqual');
Validator::replacer('jdatetime', JalaliValidator::class . '@replaceDateOrDatetime');
Validator::replacer('jdatetime_equal', JalaliValidator::class . '@replaceDateTimeAfterOrBeforeOrEqual');
Validator::replacer('jdatetime_not_equal', JalaliValidator::class . '@replaceDateTimeAfterOrBeforeOrEqual');
Validator::replacer('jdate_after', JalaliValidator::class . '@replaceDateAfterOrBeforeOrEqual');
Validator::replacer('jdate_after_equal', JalaliValidator::class . '@replaceDateAfterOrBeforeOrEqual');
Validator::replacer('jdatetime_after', JalaliValidator::class . '@replaceDateTimeAfterOrBeforeOrEqual');
Validator::replacer('jdatetime_after_equal', JalaliValidator::class . '@replaceDateTimeAfterOrBeforeOrEqual');
Validator::replacer('jdate_before', JalaliValidator::class . '@replaceDateAfterOrBeforeOrEqual');
Validator::replacer('jdate_before_equal', JalaliValidator::class . '@replaceDateAfterOrBeforeOrEqual');
Validator::replacer('jdatetime_before', JalaliValidator::class . '@replaceDateTimeAfterOrBeforeOrEqual');
Validator::replacer('jdatetime_before_equal', JalaliValidator::class . '@replaceDateTimeAfterOrBeforeOrEqual');
}
}
Loading

0 comments on commit f7562f9

Please sign in to comment.