<?php
namespace Hona\ApiBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
class ResidentialController extends EntityController
{
protected $required = array("name");
protected function _validateAfterGET(Request $request, $entity, $uuid, &$data, $clean){
if($entity == "access_history"){
$this->_changeIdForEntity("address", $data, $clean);
}
}
protected function _validateBeforePOST(Request $request, $entity, &$data){
if(!isset($data["status"])){
$data["status"] = Utils::ACTIVE;
}
}
/**
* @Route("/residential/{uuid}/providers", name="residential_get_uuid_providers", methods={"GET"})
* @param $request
*/
public function residentialProvidersGETAction(Request $request, $uuid)
{
$dataReturn = array(
array("v"=>1, "k"=>"Otro"),
array("v"=>2, "k"=>"Uber"),
array("v"=>3, "k"=>"Uber Eats"),
array("v"=>4, "k"=>"Rappi"),
array("v"=>5, "k"=>"Sin Delantal"),
array("v"=>6, "k"=>"Didi"),
array("v"=>7, "k"=>"CornerShop")
);
return new JsonResponse($dataReturn);
}
/**
* @Route("/residential/{uuid}/tree", name="residential_get_uuid_tree", methods={"GET"})
* @param $request
*/
public function residentialTreeGETAction(Request $request, $uuid)
{
$dataReturn = $this->_listEntitiesByRelationshipFieldGET($request, "address", "residential", "uuid", $uuid, null, true);
if(is_array($dataReturn)){
$tree = array();
$returnTree = array();
foreach ($dataReturn as $address) {
if(!array_key_exists($address["street"], $tree)){
$tree[$address["street"]] = array(
"pos" => array_push(
$returnTree, array(
"k" => $address["street"],
"g" => array()
)
) - 1,
"g" => array()
);
}
if(empty($address["outdoor_number"])){
$address["outdoor_number"] = "SN";
}
if(!array_key_exists($address["outdoor_number"], $tree[$address["street"]]["g"])){
$tree[$address["street"]]["g"][$address["outdoor_number"]] = array(
"pos" => array_push(
$returnTree[$tree[$address["street"]]["pos"]]["g"], array(
"k" => $address["outdoor_number"],
"g" => array()
)
) - 1,
"g" => array()
);
}
if(empty($address["interior_number"])){
$address["interior_number"] = "SN";
}
if(!array_key_exists($address["interior_number"], $tree[$address["street"]]["g"][$address["outdoor_number"]]["g"])){
$tree[$address["street"]]["g"][$address["outdoor_number"]]["g"][$address["interior_number"]] = $address["uuid"];
array_push(
$returnTree[$tree[$address["street"]]["pos"]]["g"][$tree[$address["street"]]["g"][$address["outdoor_number"]]["pos"]]["g"], array(
"k" => $address["interior_number"],
"v" => $address["uuid"]
)
);
}
}
return new JsonResponse($returnTree);
}else{
return $dataReturn;
}
}
/**
* @Route("/residential/{uuid}/news/{type}/{size}/{page}", name="residential_get_uuid_news", methods={"GET"})
* @param $request
*/
public function residentialNewsGETAction(Request $request, $uuid, $type = 0, $size = 10, $page = 0)
{
$data = $this->_entityGET($request, "residential", $uuid, null, true, false);
if(is_array($data)){
if(empty($type)){
return $this->_listEntitiesByFunction($request, "news", "residential_id", $data["id"], array("date_published" => "DESC"), $size, $page);
}else{
return $this->_listEntitiesByFunction($request, "news", "residential_id_and_type", array(
"residential_id" => $data["id"],
"type" => $type
), array("date_published" => "DESC"), $size, $page);
}
}else{
return $data;
}
}
/**
* @Route("/residential/{uuid}/need/exit/{size}/{page}", name="residential_get_uuid_need_exit", methods={"GET"})
* @param $request
*/
public function residentialNeedExitGETAction(Request $request, $uuid, $size = 10, $page = 0)
{
$data = $this->_entityGET($request, "residential", $uuid, null, true, false);
if(is_array($data)){
return $this->_listEntitiesByFunction($request, "access_history", "need_to_exit_from_residential_id", $data["id"], array(), $size, $page);
}else{
return $data;
}
}
/**
* @Route("/residential/{uuid}", name="residential_get_uuid", methods={"GET"})
* @param $request
*/
public function residentialGETAction(Request $request, $uuid)
{
return $this->_entityGET($request, "residential", $uuid);
}
/**
* @Route("/residential", name="residential_post_uuid", methods={"POST"})
* @param $request
*/
public function residentialPOSTAction(Request $request)
{
return $this->_entityPOST($request, "residential");
}
/**
* @Route("/residential/{uuid}", name="residential_put_uuid", methods={"PUT"})
* @param $request
*/
public function residentialPUTAction(Request $request, $uuid)
{
return $this->_entityPUT($request, "residential", $uuid);
}
/**
* @Route("/residential/{uuid}", name="residential_delete_uuid", methods={"DELETE"})
* @param $request
*/
public function residentialDELETEAction(Request $request, $uuid)
{
return $this->_entityDELETE($request, "residential", $uuid);
}
}