Forked from vinicius73/CustomValidatorsServiceProvider.php
Last active
February 2, 2016 14:11
-
-
Save emtudo/b20e4b820a37e9c7c559 to your computer and use it in GitHub Desktop.
Helper para datas Laravel
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Support\Validators\Rules; | |
use App\Support\Helpers\Dates as DateHelper; | |
class DateField | |
{ | |
/** | |
* @param string $attribute | |
* @param mixed $value | |
* @param array $parameters | |
* @param \Illuminate\Validation\Validator $validator | |
* | |
* @return bool | |
*/ | |
public function rule($attribute, $value, $parameters, $validator) | |
{ | |
return DateHelper::isValidDate($value); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Support\Helpers; | |
use Carbon\Carbon; | |
use DateTime; | |
class Dates { | |
/** | |
* @param string $date | |
* | |
* @return bool | |
*/ | |
public static function isInternationalValid($date) | |
{ | |
if (!(preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $date)) { | |
return false; | |
} | |
$date=explode("-", $date); | |
return checkdate($date[1], $date[2], $date[0])); | |
} | |
/** | |
* @param string $date | |
* | |
* @return bool | |
*/ | |
public static function isBrazilianValid($date) | |
{ | |
if (!preg_match("/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/", $date)) { | |
return false; | |
} | |
$date=explode("/", $date); | |
return checkdate($date[1], $date[0], $date[2])); | |
} | |
/** | |
* @param string $date | |
* | |
* @return bool | |
*/ | |
public static function isValidDate($date) | |
{ | |
return (bool) (static::isInternationalValid($date) or static::isBrazilianValid($date)); | |
} | |
/** | |
* @param $value | |
* | |
* @return Carbon | |
* | |
* @throws \InvalidArgumentException | |
*/ | |
public static function toCarbonObject($value) | |
{ | |
if($value instanceof DateTime) | |
{ | |
return Carbon::instance($value); | |
} | |
if(static::isInternationalValid($value)) { | |
return Carbon::createFromFormat('Y-m-d', $value); | |
} | |
if(static::isBrazilianValid($value)) | |
{ | |
return Carbon::createFromFormat('d/m/Y', $value); | |
} | |
throw new \InvalidArgumentException("[{$value}] is not a valid date"); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Support\Traits\Eloquent; | |
use App\Support\Helpers\Dates as DateHelper; | |
trait HasDateFieldsTrait | |
{ | |
/** | |
* @param \DateTime|\Carbon\Carbon|string $value | |
* | |
* @return \Carbon\Carbon|null | |
*/ | |
protected function valueToCarbonObject($value) | |
{ | |
if(empty($value)) { | |
return null; | |
} | |
return DateHelper::toCarbonObject($value); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@vinicius73