%PDF- %PDF-
Direktori : /var/www/html/geotechnics/api/app/Models/ |
Current File : /var/www/html/geotechnics/api/app/Models/BaseModel.php |
<?php namespace App\Models; use Carbon\Carbon; use Carbon\CarbonPeriod; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; /** * @property integer id * @property mixed created_at * @property mixed updated_at */ class BaseModel extends Model { public static function getLastMonthGroups() { $date = Carbon::now() ->subMonth() ->startOfDay(); $groups = self::query() ->where('created_at', '>=', $date) ->groupBy('date') ->orderBy('date', 'ASC') ->get(array( DB::raw('Date(created_at) as date'), DB::raw('COUNT(*) as "count"'), )); $range = CarbonPeriod::create($date, Carbon::now()); $data = collect(); $total = 0; foreach ($range as $date) { $d = $groups->filter(function ($g) use ($date) { return $g['date'] === $date->format('Y-m-d'); }); $count = $d->first()['count']; if (!$count) { $count = 0; } $total += $count; $data->push([ 'date' => $date->format('Y-m-d'), 'count' => $count, ]); } return [ 'groups' => $data->toArray(), 'total' => $total, ]; } public static function getRandomDateInLastMonth() { $start = Carbon::now() ->subMonth(); $end = Carbon::now(); $range = CarbonPeriod::create($start, $end) ->toArray(); return $range[array_rand($range, 1)]; } public static function getRandomDateInDates($from, $to) { $from = Carbon::parse($from); $to = Carbon::parse($to); $range = CarbonPeriod::create($from, $to) ->toArray(); return $range[array_rand($range, 1)]; } /** * @param $value * @return string */ public function getCreatedAtAttribute($value) { return Carbon::parse($value) ->toIso8601String(); } /** * @param $value * @return string */ public function getUpdatedAtAttribute($value) { return Carbon::parse($value) ->toIso8601String(); } public function isClient() { /** @var User $user */ $user = $this->getLoggedInUser(); return $user->roles() ->count() === 0; } /** * @return User */ public function getLoggedInUser() { return $user = auth() ->guard('api') ->user(); } }