chore: copas lib from dinguin & rosterku

upload-video
ricky rx 2 years ago
parent 9cb57fcfa1
commit b30b7a3289

@ -0,0 +1,29 @@
<?php
namespace App\Helper;
class Common {
public static function convertRequestConfig(?array $requestConfig): array {
$config = [];
if (isset($requestConfig['timezone'])) $config['timezone'] = $requestConfig['timezone'];
if (isset($requestConfig['attendanceRadius'])) $config['attendance_radius'] = (double) $requestConfig['attendanceRadius'];
if (isset($requestConfig['mustInRadius'])) $config['must_in_radius'] = self::trueOrFalse($requestConfig['mustInRadius']);
if (isset($requestConfig['mustTakePicture'])) $config['must_take_picture'] = self::trueOrFalse($requestConfig['mustTakePicture']);
return $config;
}
public static function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[random_int(0, $charactersLength - 1)];
}
return $randomString;
}
public static function trueOrFalse(mixed $value): bool {
return ($value === "true" || $value === "1" || $value === 1 || $value === true) ? true : false;
}
}

@ -0,0 +1,29 @@
<?php
namespace App\Helper;
use Illuminate\Validation\Rule;
class DatabaseHelper {
public static function str2SearchPatern($str) {
return '%'.preg_replace('!\s+!', '%', trim($str ?? '')).'%';
}
public static function trimNull($str) {
if(empty($str)) return null;
$str = trim($str);
return $str ? $str : null;
}
public static function trimUpperNull($str) {
$str = self::trimNull($str);
return $str ? strtoupper($str) : null;
}
public static function getOrderBysValidations($key = 'orderBys') {
return [
$key => 'nullable|array',
"$key.*" => ['nullable', 'string', Rule::in(['asc', 'desc'])],
];
}
public static function getSearchValidation() { return 'nullable|string'; }
}
?>

@ -0,0 +1,18 @@
<?php
namespace App\Helper\Traits\Models;
use Illuminate\Database\Eloquent\Builder;
trait CanMultiOrderBy {
public function scopeMultiOrderBy(Builder $queryBuilder, ?Array $orderBys, string $defaultOrderBy = '') {
$orderBys = $orderBys ?? [];
if(!empty($orderBys)) {
foreach($orderBys as $column => $direction) {
$queryBuilder->orderBy($column, $direction);
}
} else if($defaultOrderBy) {
$queryBuilder->orderByRaw($defaultOrderBy);
}
}
}

@ -0,0 +1,20 @@
<?php
namespace App\Helper\Traits\Models;
use App\Helper\DatabaseHelper;
use Illuminate\Database\Eloquent\Builder;
trait CanMultiSearch {
public function scopeMultiSearch(Builder $queryBuilder, string|null $search, Array $searchColumns) {
$search = trim($search ?? '');
if(empty($search)) return $queryBuilder;
$search = DatabaseHelper::str2SearchPatern($search);
return $queryBuilder->where(function($q) use($search, $searchColumns) {
foreach($searchColumns as $column) {
$q->orWhere($column, 'ilike', "%$search%");
}
});
}
}
Loading…
Cancel
Save