public function usageUpdateAction(Request $request, $zone, $mac, $kbytes) { $responseObj = new \StdClass(); try { $inserter = new DQL\InsertData($this, true); $fetcher = new DQL\FetchData($this, true); $result = $fetcher->getClientStatus($mac, $zone); $cPackage = $fetcher->getRunningDataPackageByZone($zone); $shared = $fetcher->getSharedQuotaByZone($zone); $remainingBytes = $cPackage->getKbytes() - $shared; // Max possible package by users request time. $responseObj->status = "NEW"; $responseObj->details = $remainingBytes; if (!empty($result)) { switch ($result['state']) { case 0: $responseObj->status = "OK"; if ($fetcher->isOver($mac, $zone)) { $responseObj->status = "OVER"; } break; case 1: $responseObj->status = 'BLOCKED'; break; } if ($kbytes <= 0) { $responseObj->status = 'INVALID'; } else { $inserter->updateUsage($mac, $zone, $kbytes); } $responseObj->details = $fetcher->getClientResponse($mac, $zone); } } catch (Exception $e) { $responseObj->status = 'ERROR'; } finally { return new Response(str_replace("'", "\"", json_encode($responseObj))); } }