app/Http/Controllers/Api/Statistics/ApiStatisticsController.php (38 lines of code) (raw):

<?php namespace App\Http\Controllers\Api\Statistics; use App\Helpers\DateHelper; use Illuminate\Http\Request; use App\Models\Instance\Instance; use App\Models\Instance\Statistic; use App\Http\Controllers\Api\ApiController; class ApiStatisticsController extends ApiController { /** * Get the list of general, public statistics. * * @return \Illuminate\Support\Collection|\Illuminate\Http\JsonResponse */ public function index(Request $request) { if (config('monica.allow_statistics_through_public_api_access') == false) { return $this->respondNotFound(); } // Collecting statistics $statistic = Statistic::orderBy('created_at', 'desc')->first(); $instance = Instance::first(); // Get the date of the monday of last week $dateMondayLastWeek = now()->subDays(7); $dateMondayLastWeek = $dateMondayLastWeek->startOfWeek(); // Get the date of the sunday of last week $dateSundayLastWeek = now()->subDays(7); $dateSundayLastWeek = $dateSundayLastWeek->endOfWeek(); // Get the number of users last monday $instanceLastMonday = Statistic::whereDate('created_at', '=', $dateMondayLastWeek->toDateString())->first(); $instanceLastSunday = Statistic::whereDate('created_at', '=', $dateSundayLastWeek->toDateString())->first(); $numberNewUsers = 0; if ($instanceLastMonday && $instanceLastSunday) { $numberNewUsers = $instanceLastSunday->number_of_users - $instanceLastMonday->number_of_users; } $statistics = collect(); $statistics->push([ 'instance_creation_date' => DateHelper::getTimestamp($instance->created_at), 'number_of_contacts' => ($statistic ? $statistic->number_of_contacts : 0), 'number_of_users' => ($statistic ? $statistic->number_of_users : 0), 'number_of_activities' => ($statistic ? $statistic->number_of_activities : 0), 'number_of_reminders' => ($statistic ? $statistic->number_of_reminders : 0), 'number_of_new_users_last_week' => $numberNewUsers, ]); return $statistics; } }