unioil-loyalty-app/app/Libraries/ParameterHelper.php

111 lines
2.5 KiB
PHP

<?php
namespace App\Libraries;
use \Carbon\Carbon;
use Illuminate\Http\Request;
class ParameterHelper
{
/**
* Validate if there's a start and limit parameter for pagination
* @param array $request
* @return array
*/
public static function validatePagination($request = [])
{
$parameter = [];
foreach ($request as $key => $value) {
if ($key == 'page_size') {
$parameter['page_size'] = $value;
}
if ($key == 'page') {
$parameter['page'] = $value;
}
}
return $parameter;
}
/**
* Validate and prepare sorting order of model based on query string parameter
* @param Request $request
* @return array
*/
public static function prepareSortingParameter(Request $request)
{
$response = [];
if ($request->has('_sort_by') && $request->has('_sort_order')) {
if ($request->get('_sort_by') != '') {
$response['field'] = $request->get('_sort_by');
}
if ($request->get('_sort_order') != '') {
$response['sort_order'] = $request->get('_sort_order');
}
}
return $response;
}
/**
* Prepare simple search parameters that will be used for eloquent
* @param array $fields
* @param string $value
* @return array
*/
public static function prepareSimpleSearchParameter($fields = [], $value = '')
{
$response = [];
foreach ($fields as $field) {
$response[] = [$field, 'LIKE', '%'.$value.'%'];
}
return $response;
}
/**
* Prepare parameter for multiple storing of resource with timestamp
* @param array $request
* @return array
*/
public static function prepareMultipleResource($request = [])
{
$parameters = [];
foreach ($request as $param) {
foreach ($param as $key => $value) {
$resource[$key] = $value;
}
$resource['created_at'] = Carbon::now();
$resource['updated_at'] = Carbon::now();
$parameters[] = $resource;
}
return $parameters;
}
/**
* Validate and prepare grouping of model based on query string parameter
* @param Request $request
* @return array
*/
public static function prepareGroupingParameter(Request $request)
{
$response = [];
if ($request->has('group_by')) {
if ($request->get('group_by') != '') {
$response['group_by'] = $request->get('group_by');
}
}
return $response;
}
public static function validateStartEndDate($params)
{
if($params['date_start'] != null && $params['date_end'] != null)
{
if(strtotime($params['date_start']) > strtotime($params['date_end']))
return true;
}
return false;
}
}