Esempio n. 1
0
 public function overviewAction(Request $request)
 {
     $redirector = $this->checkForFirstLogin();
     if ($redirector != null) {
         return $redirector;
     }
     $fetcher = new DQL\FetchData($this);
     $cPackage = $cPackage = $fetcher->getRunningDataPackage();
     if ($cPackage == null) {
         return $this->redirect($this->generateUrl('settings_packages', array(), true));
     }
     $pstart = $cPackage->getStart();
     $pend = $cPackage->getEnd();
     $clientStatusDTO = $fetcher->getClientStatusDTO($cPackage);
     //var_dump($clientStatusDTO);
     $totalUsageObj = $fetcher->getTotalUsageObj($cPackage);
     //var_dump($totalUsageObj);
     $now = new \DateTime();
     // or your date as well
     $totDays = $pend->diff($pstart)->format("%a");
     $today = $now->diff($pstart)->format("%a");
     //var_dump($now,$pstart,$pend,$totDays,$today);
     $html = $this->render('dashboard/overview.html.twig', array('clientStatusDTO' => $clientStatusDTO, 'totalUsageObj' => $totalUsageObj, 'totalPackage' => $cPackage->getKbytes(), 'totalDays' => $totDays, 'today' => $today, 'expireDate' => $pend->format('Y-m-d')));
     return $html;
 }
Esempio n. 2
0
 public function packagesAction(Request $request)
 {
     $user = $this->get('security.token_storage')->getToken()->getUser();
     $data_package = new Entity\data_package($user);
     $form = $this->createFormBuilder($data_package)->add('kbytes', IntegerType::class, array('required' => true, 'attr' => array('style' => 'width: 100px', 'maxlength' => '10', 'min' => '100000', 'step' => '100000'), 'label' => 'Balance in KB'))->add('start', DateType::class)->add('end', DateType::class)->add('Active', SubmitType::class, array('label' => 'Activate'))->getForm();
     $form->handleRequest($request);
     if ($form->isSubmitted() && $form->isValid()) {
         // ... perform some action, such as saving the task to the database
         $inserter = new DQL\InsertData($this);
         $inserter->activatePackage($data_package);
         return $this->redirect($request->getUri());
     }
     $fetcher = new DQL\FetchData($this);
     return $this->render('dashboard/settings/packages.html.twig', array('form' => $form->createView(), 'runningPackage' => $fetcher->getRunningDataPackage()));
 }
Esempio n. 3
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)));
     }
 }
Esempio n. 4
0
 public function packageChangeAction(Request $request)
 {
     $fetcher = new DQL\FetchData($this);
     $json = $request->request->get("data");
     $packages = json_decode($json);
     $sum = array_reduce($packages, function ($i, $obj) {
         return $i += $obj->package;
     });
     $total = $fetcher->getRunningDataPackage()->getKbytes() / 1000000;
     if ($total < $sum) {
         return new Response("<p><b>Error</b></p><p>You can't exceed master package limit.</p>");
     }
     $inserter = new DQL\InsertData($this);
     $user = $this->get('security.token_storage')->getToken()->getUser();
     $zone = $user->getZone();
     foreach ($packages as $p) {
         $inserter->updateClientPackage($p->sid, $zone, $p->package * 1000000);
     }
     return new Response("<p><b>Success</b></p><p>Slave packages are updated.</p>");
 }
Esempio n. 5
0
 public function updateUsage($mac, $zone, $kbytes)
 {
     $fetcher = new FetchData($this->controller, $this->isAnonymous);
     $usageType = $fetcher->getRunningUsageType($zone, $mac);
     $ut = $this->getUT($usageType['utid'], $zone);
     $slave = $this->getSlave($mac, $zone);
     $usage = new slave_usage($slave, new \DateTime('now'), $kbytes, $ut);
     $this->persist($usage);
 }