<?php
namespace AppBundle\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use \Pimcore\Model\DataObject;
use AppBundle\Service\UtilService;
use Pimcore\Tool;
use Symfony\Component\HttpClient\HttpClient;
class LocationController extends FrontendController
{
/**
* @Route("/api/location/getstate", methods={"POST","HEAD","OPTIONS"})
*/
public function getstateAction(Request $request)
{
if ($request->getMethod() === 'OPTIONS') {
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'POST, HEAD, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
return $response;
}
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'POST, HEAD, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
$requestArr = json_decode($request->getContent(),true);
$stateName = $requestArr['stateName'];
$stateCode = $requestArr['stateCode'];
if($stateName != ""){
$stateListing = DataObject\Region::getByName($stateName);
}
else if($stateCode != ""){
$stateListing = DataObject\Region::getByCode($stateCode);
}else{
$stateListing = new DataObject\Region\Listing();
}
$stateArry=[];
if($stateListing->getCount() > 0){
$stateData = $stateListing->load();
foreach ($stateData as $state) {
$tmpArr=[];
$tmpArr['stateName'] = $state->getName();
$tmpArr['stateCode'] = $state->GetCode();
array_push($stateArry, $tmpArr);
}
$response->setContent(json_encode(array('success' => 'true', 'errors' => [], 'data' => $stateArry)));
$response->setStatusCode(200);
return $response;
}else{
$response->setContent(json_encode(array('success' => 'false', 'errors' => ['No Data Available'], 'data' => [])));
$response->setStatusCode(404);
return $response;
}
}
/**
* @Route("/api/location/getcity", methods={"POST","HEAD"})
*/
public function getcityAction(Request $request)
{
$requestArr = json_decode($request->getContent(),true);
$cityName = $requestArr['cityName'];
$cityCode = $requestArr['cityCode'];
$stateCode = $requestArr['stateCode'];
if($cityName != ""){
$cityListing = DataObject\City::getByName($cityName);
}else if($cityCode != ''){
$cityListing = DataObject\City::getByCode($cityCode);
}
else if($stateCode != ""){
$cityListing = DataObject\City::getByStateCode($stateCode);
}else{
$cityListing = new DataObject\City\Listing();
}
$cityArry=[];
if($cityListing->getCount() > 0){
$cityData = $cityListing->load();
foreach ($cityData as $city) {
$tmpArr=[];
$tmpArr['cityName'] = $city->getName();
$tmpArr['cityCode'] = $city->GetCode();
$tmpArr['stateCode'] = $city->getStateCode();
array_push($cityArry, $tmpArr);
}
$response = new Response();
$response->setContent(json_encode(array('success' => 'true', 'errors' => [], 'data' => $cityArry)));
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/json');
return $response;
}else{
$response = new Response();
$response->setContent(json_encode(array('success' => 'false', 'errors' => ['No Data Available'], 'data' => [])));
$response->setStatusCode(404);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
/**
* @Route("/api/location/getdistrict", methods={"POST","HEAD"})
*/
public function getdistrictAction(Request $request)
{
$requestArr = json_decode($request->getContent(),true);
$cityName = $requestArr['districtName'];
$cityCode = $requestArr['districtCode'];
$stateCode = $requestArr['stateCode'];
if($cityName != ""){
$cityListing = DataObject\District::getByName($cityName);
}else if($cityCode != ''){
$cityListing = DataObject\District::getByCode($cityCode);
}
else if($stateCode != ""){
$cityListing = DataObject\District::getByStateCode($stateCode);
}else{
$cityListing = new DataObject\District\Listing();
}
$cityArry=[];
if($cityListing->getCount() > 0){
$cityData = $cityListing->load();
foreach ($cityData as $city) {
$tmpArr=[];
$tmpArr['districtName'] = $city->getName();
$tmpArr['districtCode'] = $city->GetCode();
$tmpArr['stateCode'] = $city->getStateCode();
array_push($cityArry, $tmpArr);
}
$response = new Response();
$response->setContent(json_encode(array('success' => 'true', 'errors' => [], 'data' => $cityArry)));
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/json');
return $response;
}else{
$response = new Response();
$response->setContent(json_encode(array('success' => 'false', 'errors' => ['No Data Available'], 'data' => [])));
$response->setStatusCode(404);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
/**
* @Route("/api/location/pincode", methods={"POST","HEAD"})
*/
public function getpincodeAction(Request $request)
{
$requestArr = json_decode($request->getContent(),true);
$pincode = $requestArr['pincode'];
if($pincode != "") {
$pincodeListing = DataObject\Pincode::getByCode($pincode);
$pinArry = [];
if ($pincodeListing->getCount() > 0) {
$pincodeData = $pincodeListing->load();
foreach ($pincodeData as $pin) {
$tmpArr = [];
$tmpArr['pincode'] = $pin->getCode();
$tmpArr['cityCode'] = $pin->getCityCode();
//get City name from city code
$cityDataListing = DataObject\City::getByCode($pin->getCityCode());
if($cityDataListing->getCount() > 0){
$cityData = $cityDataListing->load()[0];
$tmpArr['cityName'] = ucfirst($cityData->getName());
}else{
$tmpArr['cityName'] = '';
}
$tmpArr['stateCode'] = $pin->getStateCode();
//Get State Name from State Code
$stateDataListing = DataObject\Region::getByCode($pin->getStateCode());
if($stateDataListing->getCount() > 0){
$stateData = $stateDataListing->load()[0];
$tmpArr['stateName'] = ucfirst($stateData->getName());
}else{
$tmpArr['stateName'] = '';
}
$tmpArr['districtCode'] = $pin->getDistrictCode();
$tmpArr['districtName'] = $pin->getDistrictName();
$tmpArr['dealerCode'] = $pin->getDealerCode();
if($pin->getIsSupportedByCitroenDirect() == true){
$tmpArr['isServiceByCitroenDirect'] = $pin->getIsSupportedByCitroenDirect();
}else{
$tmpArr['isServiceByCitroenDirect'] = false;
}
if($pin->getIsSupportedByCommercial() == true){
$tmpArr['isServiceByCommercial'] = $pin->getIsSupportedByCommercial();
}else{
$tmpArr['isServiceByCommercial'] = false;
}
if($pin->getIsServiceByCitroenDirecteC3() == true){
$tmpArr['isServiceByCitroenDirecteC3'] = $pin->getIsServiceByCitroenDirecteC3();
}else{
$tmpArr['isServiceByCitroenDirecteC3'] = false;
}
$tmpArr['axisCityCode'] = $pin->getAxisCityId();
$tmpArr['axisCityName'] = $pin->getAxisCityName();
$tmpArr['axisStateName'] = $pin->getAxisStateName();
$tmpArr['latitude'] = $pin->getLatitude();
$tmpArr['longitude'] = $pin->getLongitude();
array_push($pinArry, $tmpArr);
}
$response = new Response();
$response->setContent(json_encode(array('success' => 'true', 'errors' => [], 'data' => $pinArry)));
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/json');
return $response;
} else {
$response = new Response();
$response->setContent(json_encode(array('success' => 'false', 'errors' => ['No Data Available'], 'data' => [])));
$response->setStatusCode(404);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}else{
$response = new Response();
$response->setContent(json_encode(array('success' => 'false', 'errors' => ['Missing required attribute pincode'], 'data' => [])));
$response->setStatusCode(400);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
}