Ejemplo n.º 1
0
 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)));
     }
 }