TKK_E32232188/smartcollar-fe/services/dashboard.service.php

148 lines
3.2 KiB
PHP

<?php
require_once __DIR__ . "/../config/api.php";
require_once __DIR__ . "/../config/auth.php";
/*
|--------------------------------------------------------------------------
| Dashboard Summary
|--------------------------------------------------------------------------
*/
function dashboardSummary()
{
$token = getToken();
/*
|--------------------------------------------------------------------------
| Get Cow
|--------------------------------------------------------------------------
*/
$cowResponse =
apiGet(
"/cows",
$token
);
$cows =
$cowResponse["data"] ?? [];
/*
|--------------------------------------------------------------------------
| Get Smart Collar
|--------------------------------------------------------------------------
*/
$collarResponse =
apiGet(
"/collars",
$token
);
$collars =
$collarResponse["data"] ?? [];
/*
|--------------------------------------------------------------------------
| Get Assignment
|--------------------------------------------------------------------------
*/
$assignmentResponse =
apiGet(
"/assignments",
$token
);
$assignments =
$assignmentResponse["data"] ?? [];
/*
|--------------------------------------------------------------------------
| Online Device
|--------------------------------------------------------------------------
*/
$online = 0;
$offline = 0;
$available = 0;
foreach ($collars as $collar) {
$assigned = isset($collar["assigned"]) ? $collar["assigned"] : false;
if (!$assigned) {
$available++;
}
if (isset($collar["lastOnline"])) {
$diff = time() * 1000 - $collar["lastOnline"];
if ($diff < 30000) {
$online++;
} else {
$offline++;
}
} else {
$offline++;
}
}
/*
|--------------------------------------------------------------------------
| Assigned Cows
|--------------------------------------------------------------------------
*/
$activeAssignments = array_filter(
$assignments,
function ($assignment) {
return isset($assignment["active"]) && $assignment["active"];
}
);
$assignedCowIds = array_unique(
array_filter(
array_map(
function ($assignment) {
return $assignment["cowId"] ?? null;
},
$activeAssignments
)
)
);
$cows = array_map(
function ($cow) use ($assignedCowIds) {
$cow["assigned"] = in_array($cow["id"], $assignedCowIds, true);
return $cow;
},
$cows
);
return [
"cow" =>
count($cows),
"collar" =>
count($collars),
"assignment" =>
count($activeAssignments),
"available" =>
$available,
"online" =>
$online,
"offline" =>
$offline,
"cows" =>
$cows
];
}