src/Controller/DeliveryslotapiController.php line 2438

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use symfony\Component\Routing\Annotation\Route;
  7. use Pimcore\Model\DataObject;
  8. use Pimcore\Model\Asset\Service;
  9. use Pimcore\Model\DataObject\Service as DoService;
  10. use Carbon\Carbon;
  11. use Pimcore\Model\User;
  12. use Firebase\JWT\JWT;
  13. use Firebase\JWT\Key;
  14. class DeliveryslotapiController extends FrontendController
  15. {
  16.     /**
  17.      * @Route("/holidays/getlist")
  18.      */
  19.     public function getlistAction()
  20.     {
  21.         $api_log_info "API:Get All Holidays - ".date("YmdHis")." ".time();
  22.         $log_data "Started - ".$api_log_info;
  23.         SELF::createApiLog($log_data);
  24.         $holidaysList DataObject\Holidays::getList();
  25.         $holidaysList->load();
  26.         
  27.         $log_data $api_log_info." | holidaysList Count:".json_encode(count($holidaysList));
  28.         SELF::createApiLog($log_data);
  29.         if(count($holidaysList) > 0){
  30.             foreach ($holidaysList as $key => $holidayInfo) {  
  31.                 $log_data $api_log_info." | holidayInfo:".json_encode($holidayInfo);
  32.                 SELF::createApiLog($log_data);
  33.                 
  34.                 $location_codes $holidayInfo->getlocation_code();
  35.                 $loc_name '';
  36.                 $log_data $api_log_info." | location_codes:".json_encode($location_codes);
  37.                 SELF::createApiLog($log_data);
  38.                 foreach($location_codes as $location_code){
  39.                     $loc_name .= $location_code->getlocation_name().' ';
  40.                 }
  41.                 $log_data $api_log_info." | loc_name:".json_encode($loc_name);
  42.                 SELF::createApiLog($log_data);
  43.                 $data[] = array(
  44.                     "name" => $holidayInfo->getname(),
  45.                     "loc_name" => $loc_name,
  46.                     "holidaydate" => $holidayInfo->getHolidaydate());
  47.                 $log_data $api_log_info." | data:".json_encode($data);
  48.                 SELF::createApiLog($log_data);
  49.             }
  50.         } else $data[] = [];
  51.         // return $slotsList;
  52.         $returndata = ["success" => true"data" => $data];
  53.         $log_data "Ended - ".$api_log_info." | returndata:".json_encode($returndata);
  54.         SELF::createApiLog($log_data);
  55.         return $this->json(["success" => true"data" => $data]);
  56.     }
  57.     /*-------------------------------- Slots Related APIs ----------------------------*/
  58.     /**
  59.      * @Route("/deliveryslots/list")
  60.      */
  61.     public function listAction()
  62.     {
  63.         $api_log_info "API:Get Delivery Slots based on Today and Current Time - ".date("YmdHis")." ".time();
  64.         $log_data "Started - ".$api_log_info;
  65.         SELF::createApiLog($log_data);
  66.         $today_date strtotime("Y-m-d");
  67.         $cur_time date("H:i");
  68.         $log_data $api_log_info." | today_date:".json_encode($today_date)." | cur_time:".json_encode($cur_time);
  69.         SELF::createApiLog($log_data);
  70.         $slotsList DataObject\Slots::getList();
  71.         $slotsList->setCondition("slotdate >= ? AND prior_time >= ?",[$today_date$cur_time]);
  72.         // $slotsList->setOffset(0);
  73.         $slotsList->setLimit(100);
  74.         $slotsList->setOrderKey("slotdate");
  75.         $slotsList->setOrder("desc");
  76.         $slotsList->load();
  77.         // $slotsList = DataObject\Slots::getList();
  78.         // $slotsList->setOffset(0);
  79.         // $slotsList->setLimit(10);
  80.         // $slotsList->load();
  81.         $log_data $api_log_info." | slotsList count:".json_encode(count($slotsList));
  82.         SELF::createApiLog($log_data);
  83.         // if(count($slotsList) > 0){
  84.             foreach ($slotsList as $key => $slotInfo) {
  85.                 $log_data $api_log_info." | slotInfo:".json_encode($slotInfo);
  86.                 SELF::createApiLog($log_data);
  87.                 // $location_code = $blog->getlocation_code()->getlocation_code();
  88.                 // $location_code = (!empty($slotInfo->getloc_id()) && $slotInfo->getloc_id())?$slotInfo->getloc_id()->getlocation_code():'';
  89.                 // $loc_name = (!empty($slotInfo->getloc_id()) && $slotInfo->getloc_id())?$slotInfo->getloc_id()->getlocation_name():'';
  90.                 $slotLocationData DataObject\Locations::getById($slotInfo->getLoc_id());
  91.                 $loc_name = (!empty($slotLocationData) && $slotLocationData->getlocation_name())?$slotLocationData->getlocation_name():'';
  92.                 $location_code = (!empty($slotLocationData) && $slotLocationData->getlocation_code())?$slotLocationData->getlocation_code():'';
  93.                 // foreach($location_codes as $location_code){
  94.                 //     $loc_name = $location_code->getlocation_name();
  95.                 // }
  96.                 $log_data $api_log_info." | location_code:".json_encode($location_code)." | loc_name:".json_encode($loc_name);
  97.                 SELF::createApiLog($log_data);
  98.                 $data[] = array(
  99.                     "slotId" => $slotInfo->getId(),
  100.                     "prior_time" => $slotInfo->getprior_time(),
  101.                     // "picking_time" => $slotInfo->getpicking_time(),
  102.                     "location_code" => $location_code,
  103.                     "loc_name" => $loc_name,
  104.                     // "charge" => $slotInfo->getcharge(),
  105.                     "slotdate" => $slotInfo->getslotdate(),
  106.                     "fromtime" => $slotInfo->getfromtime(),
  107.                     "totime" => $slotInfo->gettotime(),
  108.                     "maxorder" => $slotInfo->getmaxorder(),
  109.                     "ordercount" => $slotInfo->getordercount(),
  110.                     "delivery_mode" => $slotInfo->getdelivery_mode());
  111.                 
  112.                 $log_data $api_log_info." | data:".json_encode($data);
  113.                 SELF::createApiLog($log_data);
  114.             }
  115.         // } else $data[] = [];
  116.         // return $slotsList;
  117.         $returnData = ["success" => true"data" => $data];
  118.         $log_data "Ended - ".$api_log_info." | returnData:".json_encode($returnData);
  119.         SELF::createApiLog($log_data);
  120.         return $this->json(["success" => true"data" => $data]);
  121.     }
  122.     /**
  123.      * @Route("/deliveryslots/saveslots")
  124.      */
  125.     public function saveslotsAction()
  126.     {
  127.         $api_log_info "API:Generating / Saving Delivery Slots - ".date("YmdHis")." ".time();
  128.         $log_data "Started - ".$api_log_info;
  129.         SELF::createApiLog($log_data);
  130.         /*--------------- Settings info ----------------*/
  131.         $settingsInfo SELF::getSettingInfo($api_log_info);
  132.         $log_data $api_log_info." | settingsInfo:".json_encode($settingsInfo);
  133.         SELF::createApiLog($log_data);
  134.         /*----------- End of Settings Info -------------*/
  135.         // echo 'settingsInfo:<pre>';
  136.         // echo $settingsInfo['stg_deliveryslot_config_is_upcountry_configuration_applicable'];
  137.         // print_r($settingsInfo); die;
  138.         $locationsList DataObject\Locations::getList();
  139.         $locationsList->load();
  140.         $log_data $api_log_info." | locationsList count:".json_encode(count($locationsList));
  141.         SELF::createApiLog($log_data);
  142.         foreach($locationsList as $location)//Start of Locations Loop
  143.         {
  144.             $log_data $api_log_info." | location:".json_encode($location);
  145.             SELF::createApiLog($log_data);
  146.             //echo "<br>Id:".$location->getId()."|Location Name:".$location->getLocation_name()."|Location Code:".$location->getLocation_code();
  147.             $location_id $location->getId();
  148.             $locationName $location->getLocation_name();
  149.             $locationCode $location->getLocation_code();
  150.             /*------ Check Location is Up Country or not --------*/
  151.             $Is_location_up_country = (strpos(strtolower($locationName),"up country") || strpos(strtoupper($locationCode),"UPCTR"))?1:0;
  152.             $log_data $api_log_info." | location_id:".json_encode($location_id)." | locationName:".json_encode($locationName)." | locationCode:".json_encode($locationCode)." | Is_location_up_country:".json_encode($Is_location_up_country);
  153.             SELF::createApiLog($log_data);
  154.             $holidaysList DataObject\Holidays::getList();
  155.             $holidaysList->setCondition("location_code like '%,".$location_id.",%'");
  156.             $holidaysList->load();
  157.             // if(count($holidaysList) > 0)
  158.             // {
  159.                 $holidayDates $rangeDates = [];
  160.                 foreach($holidaysList as $holiday)
  161.                 {
  162.                     $log_data $api_log_info." | holiday:".json_encode($holiday);
  163.                     SELF::createApiLog($log_data);
  164.                     $holiday_locations_list $holiday->getLocation_code();
  165.                     $holidaydate $holiday->getHolidaydate();
  166.                     $holidayDate date("Y-m-d"strtotime($holidaydate));
  167.                     $holidaysenddate $holiday->getHolidaysenddate();
  168.                     $log_data $api_log_info." | holiday_locations_list:".json_encode($holiday_locations_list)." | holidaydate:".json_encode($holidaydate)." | holidaysenddate:".json_encode($holidaysenddate);
  169.                     SELF::createApiLog($log_data);
  170.                     if(!empty($holidaysenddate) && $holidaysenddate){
  171.                         $holidaysenddate date("Y-m-d"strtotime($holidaysenddate));
  172.                         $rangeDates self::getDatesFromRange($holidayDate$holidaysenddate);
  173.                         $log_data $api_log_info." | rangeDates:".json_encode($rangeDates)." | holidaysenddate:".json_encode($holidaysenddate);
  174.                         SELF::createApiLog($log_data);
  175.                         foreach($rangeDates as $rangeDateInfo){
  176.                             $log_data $api_log_info." | rangeDateInfo:".json_encode($rangeDateInfo);
  177.                             SELF::createApiLog($log_data);
  178.                             array_push($holidayDates,$rangeDateInfo);
  179.                             $log_data $api_log_info." | holidayDates:".json_encode($holidayDates);
  180.                             SELF::createApiLog($log_data);
  181.                         }
  182.                     } else {
  183.                         array_push($holidayDates,$holidayDate);
  184.                         $log_data $api_log_info." | holidayDate:".json_encode($holidayDate)." | holidayDates:".json_encode($holidayDates);
  185.                         SELF::createApiLog($log_data);
  186.                     }
  187.                 }
  188.                 // if(!empty($rangeDates)){
  189.                 //     echo '<pre>'; print_r($holidayDates); die;
  190.                 // }
  191.                 /*----------- Delivery Slot Times Loop Starts --------*/
  192.                 $deliveryslottimesList DataObject\Deliveryslottimes::getList();
  193.                 $deliveryslottimesList->load();
  194.                 //echo '<br>deliveryslottimesList Count:'.count($deliveryslottimesList);
  195.                 $log_data $api_log_info." | deliveryslottimesList Count:".json_encode(count($deliveryslottimesList));
  196.                 SELF::createApiLog($log_data);
  197.                 if(count($deliveryslottimesList)>0)
  198.                 {
  199.                     foreach($deliveryslottimesList as $deliveryslottimes)
  200.                     {
  201.                         $log_data $api_log_info." | deliveryslottimes:".json_encode($deliveryslottimes);
  202.                         SELF::createApiLog($log_data);
  203.                         // echo '<pre>deliveryslottimes:'; print_r($deliveryslottimes); //die;
  204.                         $slot_prepare_days = ($deliveryslottimes->getprepare_days())?$deliveryslottimes->getprepare_days():0;
  205.                         $slot_generate_days = ($deliveryslottimes->getslot_generate_days())?$deliveryslottimes->getslot_generate_days():7;
  206.                         $saturday_slot_availability = ($deliveryslottimes->getsaturday_slot_availability())?$deliveryslottimes->getsaturday_slot_availability():'No';
  207.                         $sunday_slot_availability = ($deliveryslottimes->getsunday_slot_availability())?$deliveryslottimes->getsunday_slot_availability():'No';
  208.                         $slot_generate_days $slot_generate_days+$settingsInfo['stg_normalloc_slot_generate_days']; 
  209.                         $log_data $api_log_info." | slot_prepare_days:".json_encode($slot_prepare_days)." | slot_generate_days:".json_encode($slot_generate_days)." | saturday_slot_availability:".json_encode($saturday_slot_availability)." | sunday_slot_availability:".json_encode($sunday_slot_availability)." | setting stg_normalloc_slot_generate_days:".json_encode($settingsInfo['stg_normalloc_slot_generate_days'])." | slot_generate_days:".json_encode($slot_generate_days);
  210.                         SELF::createApiLog($log_data);
  211.                         /*--------------------- Up Country Configuration ------------------------*/
  212.                         $is_upcountry_configuration_applicable = ($deliveryslottimes->getis_upcountry_configuration_applicable())?$deliveryslottimes->getis_upcountry_configuration_applicable():'No';
  213.                         $slot_upcountry_prepare_days = ($deliveryslottimes->getupcountry_prepare_days())?$deliveryslottimes->getupcountry_prepare_days():0;
  214.                         $upcountry_slot_generate_days = ($deliveryslottimes->getupcountry_slot_generate_days())?$deliveryslottimes->getupcountry_slot_generate_days():7;
  215.                         $upcountry_saturday_slot_availability = ($deliveryslottimes->getupcountry_saturday_slot_availability())?$deliveryslottimes->getupcountry_saturday_slot_availability():'No';
  216.                         $upcountry_sunday_slot_availability = ($deliveryslottimes->getupcountry_sunday_slot_availability())?$deliveryslottimes->getupcountry_sunday_slot_availability():'No';
  217.                         $upcountry_slot_generate_days $upcountry_slot_generate_days+$settingsInfo['stg_upcountryloc_slot_generate_days']; 
  218.                         $log_data $api_log_info." | is_upcountry_configuration_applicable:".json_encode($is_upcountry_configuration_applicable)." | slot_upcountry_prepare_days:".json_encode($slot_upcountry_prepare_days)." | upcountry_slot_generate_days:".json_encode($upcountry_slot_generate_days)." | upcountry_saturday_slot_availability:".json_encode($upcountry_saturday_slot_availability)." | upcountry_sunday_slot_availability:".json_encode($upcountry_sunday_slot_availability)." | setting stg_upcountryloc_slot_generate_days:".json_encode($settingsInfo['stg_upcountryloc_slot_generate_days'])." | upcountry_slot_generate_days:".json_encode($upcountry_slot_generate_days);
  219.                         SELF::createApiLog($log_data);
  220.                         if($settingsInfo['stg_deliveryslot_config_is_upcountry_configuration_applicable'] == 'Yes' && $Is_location_up_country == 1)//if($is_upcountry_configuration_applicable == 'Yes' && $Is_location_up_country == 1)
  221.                             $delSlotTimesAvailibility = ['slot_prepare_days'=>$slot_upcountry_prepare_days,'slot_generate_days'=>$upcountry_slot_generate_days,'saturday_slot_availability'=>$upcountry_saturday_slot_availability,'sunday_slot_availability'=>$upcountry_sunday_slot_availability];
  222.                         else
  223.                             $delSlotTimesAvailibility = ['slot_prepare_days'=>$slot_prepare_days,'slot_generate_days'=>$slot_generate_days,'saturday_slot_availability'=>$saturday_slot_availability,'sunday_slot_availability'=>$sunday_slot_availability];
  224.                         $log_data $api_log_info." | delSlotTimesAvailibility:".json_encode($delSlotTimesAvailibility);
  225.                         SELF::createApiLog($log_data);
  226.                         // echo '<pre>delSlotTimesAvailibility:'; print_r($delSlotTimesAvailibility); //die;
  227.                         $weekdates self::getWeekDates($holidayDatesdate("Y-m-d"), $delSlotTimesAvailibility);
  228.                         // echo '<pre>weekdates:'; print_r($weekdates);
  229.                         $log_data $api_log_info." | weekdates:".json_encode($weekdates);
  230.                         SELF::createApiLog($log_data);
  231.                         foreach($weekdates as $weekdate)
  232.                         {
  233.                             $log_data $api_log_info." | weekdate:".json_encode($weekdate);
  234.                             SELF::createApiLog($log_data);
  235.                             $slotsList DataObject\Deliveryslotrules::getList();
  236.                             // $slotsList->setCondition("location_code like '%,".$location_id.",%'");
  237.                             $slotsList->setCondition("location_ids IS NOT NULL AND location_ids like '%,".$location_id.",%'");
  238.                             $slotsList->load();
  239.                             //echo '<br>slotsList Count:'.count($slotsList);
  240.                             $log_data $api_log_info." | slotsList count:".json_encode(count($slotsList));
  241.                             SELF::createApiLog($log_data);
  242.                             if(count($slotsList) > 0)
  243.                             {
  244.                                 foreach($slotsList as $slot)
  245.                                 {
  246.                                     $log_data $api_log_info." | slot:".json_encode($slot);
  247.                                     SELF::createApiLog($log_data);
  248.                                     $prior_time $slot->getprior_time();
  249.                                     $location_codes $slot->getlocation_ids();//$slot->getlocation_code();
  250.                                     // $picking_time = $slot->getpicking_time();
  251.                                     $delivery_mode $slot->getdelivery_mode();
  252.                                     // $charge = $slot->getcharge();
  253.                                     $fromtime $slot->getfromtime();
  254.                                     $totime $slot->gettotime();
  255.                                     $maxorder $slot->getmaxorder();
  256.                                     // $ordercount = $slot->getordercount();
  257.                                     $date $weekdate;//$slot->getslotdate();
  258.                                     $date2 date("m/d/y"strtotime($date));
  259.                                     $dates Carbon::createFromFormat('m/d/y'$date2);
  260.                                     $location_code_array = [];
  261.                                     // echo '<pre>location_codes Count:'.count($location_codes);
  262.                                     $log_data $api_log_info." | location_codes:".json_encode($location_codes);
  263.                                     SELF::createApiLog($log_data);
  264.                                     if(!empty($location_codes))
  265.                                     {
  266.                                         foreach($location_codes as $location_id_info){//foreach($location_codes as $location_code){//Location Code loop Starts
  267.                                             $log_data $api_log_info." | location_id_info:".json_encode($location_id_info);
  268.                                             SELF::createApiLog($log_data);
  269.                                             if($location_id == $location_id_info)//if($location_id == $location_code->getId())
  270.                                             {
  271.                                                 $log_data $api_log_info." | location_id:".json_encode($location_id)." | location_id_info:".json_encode($location_id_info);
  272.                                                 SELF::createApiLog($log_data);
  273.                                                 // $location_code_array[] = DataObject\Locations::getById($location_code->getId());
  274.                                                 // $location_code_id = DataObject\Locations::getById($location_code->getId());
  275.     
  276.                                                 // $loc_id = $location_code->getId();
  277.     
  278.                                                 $location_code_array[] = DataObject\Locations::getById($location_id_info);
  279.                                                 $location_code_id DataObject\Locations::getById($location_id_info);
  280.                                                 $log_data $api_log_info." | location_code_id:".json_encode($location_code_id);
  281.                                                 SELF::createApiLog($log_data);
  282.     
  283.                                                 $loc_id $location_id_info;
  284.     
  285.                                                 /*----------- Delivery Slot Times Loop Starts --------*/
  286.                                                 // $deliveryslottimesList = DataObject\Deliveryslottimes::getList();
  287.                                                 // $deliveryslottimesList->load();
  288.                                                 // //echo '<br>deliveryslottimesList Count:'.count($deliveryslottimesList);
  289.                                                 // if(count($deliveryslottimesList)>0)
  290.                                                 // {
  291.                                                 //     foreach($deliveryslottimesList as $deliveryslottimes)
  292.                                                 //     {
  293.                                                         /*------------ Checking the slot data -------------*/
  294.                                                         $slotCheck 1;
  295.                                                         $today_date date("Y-m-d"strtotime($weekdate));
  296.                                                         $cur_time $prior_time;
  297.     
  298.                                                         $checkDataList DataObject\Slots::getList();
  299.     
  300.                                                         if ($checkDataList->getClass()->getFieldDefinition('slotdate')->isFilterable()) {
  301.                                                             $checkDataList->filterBySlotdate($today_date'=');
  302.                                                         }
  303.     
  304.                                                         if ($checkDataList->getClass()->getFieldDefinition('prior_time')->isFilterable()) {
  305.                                                             $checkDataList->filterByprior_time($cur_time'=');
  306.                                                         }
  307.     
  308.                                                         if ($checkDataList->getClass()->getFieldDefinition('delivery_mode')->isFilterable()) {
  309.                                                             $checkDataList->filterBydelivery_mode($delivery_mode'=');
  310.                                                         }
  311.                                                         // $checkDataList->setCondition("loc_id__id = ".$loc_id);
  312.                                                         // $checkDataList->setCondition("delivery_mode = '".$delivery_mode."' ");
  313.     
  314.                                                         $checkDataList->setLimit(100);
  315.                                                         $checkDataList->setOrderKey("slotdate");
  316.                                                         $checkDataList->setOrder("asc");
  317.                                                         $checkDataList->load();
  318.                                                         //echo '<br>checkDataList Count:'.count($checkDataList);
  319.     
  320.                                                         $checkData_loc_valid 0$checkData_locs = [];
  321.                                                         $log_data $api_log_info." | checkDataList count:".json_encode(count($checkDataList));
  322.                                                         SELF::createApiLog($log_data);
  323.                                                         
  324.                                                         if(count($checkDataList) > 0)
  325.                                                         {
  326.                                                             foreach($checkDataList as $checkData)
  327.                                                             {
  328.                                                                 $log_data $api_log_info." | checkData:".json_encode($checkData);
  329.                                                                 SELF::createApiLog($log_data);
  330.                                                         
  331.                                                                 // $checkData_locData = $checkData->getloc_id();
  332.                                                                 // $checkData_locId = $checkData_locData->getId();
  333.                                                                 $checkData_locId $checkData->getloc_id();
  334.                                                                 array_push($checkData_locs$checkData_locId);
  335.                                                                 $log_data $api_log_info." | checkData_locId:".json_encode($checkData_locId)." | checkData_locs:".json_encode($checkData_locs);
  336.                                                                 SELF::createApiLog($log_data);
  337.                                                             }
  338.                                                         }
  339.                                                         $checkData_loc_valid = (empty($checkData_locs) || (!empty($checkData_locs) && !in_array($loc_id$checkData_locs)) || count($checkDataList) <= 0)?1:0;
  340.                                                         $log_data $api_log_info." | checkData_loc_valid:".json_encode($checkData_loc_valid);
  341.                                                         SELF::createApiLog($log_data);
  342.     
  343.                                                         // echo '<br>checkData_locId:'.$checkData_locId;
  344.                                                         // echo '<pre>checkData_locs:';
  345.                                                         // print_r($checkData_locs);
  346.                                                         // echo '<br>checkData_loc_valid:'.$checkData_loc_valid;
  347.                                                         /*------------ End of Checking the slot data -------------*/
  348.     
  349.                                                         if($checkData_loc_valid == 1){
  350.                                                             // $generateObjFolderId = self::generateSlotObjFolder('Slots',$delivery_mode,$loc_id);
  351.     
  352.                                                             $createAssetFolder DoService::createFolderByPath('Slots');
  353.                                                             $objParentId $createAssetFolder->getId();
  354.     
  355.                                                             // $holidayObjectName = $location_code.'-'.$name;
  356.                                                             $slotObjectName $weekdate.'-'.$loc_id.'-'.$slot->getId().'-'.$deliveryslottimes->getId().'-'.time();
  357.     
  358.                                                             $slotObject = new DataObject\Slots(); 
  359.                                                             $slotObject->setKey(\Pimcore\Model\Element\Service::getValidKey($slotObjectName'object'));
  360.                                                             $slotObject->setParentId($objParentId);
  361.                                                             $slotObject->setPrior_time($prior_time);
  362.                                                             // $slotObject->setPicking_time($picking_time);
  363.                                                             $slotObject->setDelivery_mode($delivery_mode);
  364.                                                             // $slotObject->setSlotdate($date2);
  365.                                                             $slotObject->setSlotdate($dates);
  366.                                                             $slotObject->setfromtime($fromtime);
  367.                                                             $slotObject->settotime($totime);
  368.                                                             $slotObject->setmaxorder($maxorder);
  369.     
  370.                                                             // $slotObject->setLocation_code($location_code_array);
  371.     
  372.                                                             // $slotObject->setCharge($charge);
  373.                                                             $slotObject->setdeliveryslottime_id(DataObject\Deliveryslottimes::getById($deliveryslottimes->getId()));
  374.                                                             // $slotObject->setloc_id(DataObject\Locations::getById($location_code->getId()));
  375.                                                             // $slotObject->setloc_id(DataObject\Locations::getById($location_id_info));
  376.                                                             $slotObject->setloc_id($location_id_info);
  377.     
  378.                                                             $slotObject->setPublished(true);
  379.                                                             $slotObject->save();
  380.                                                             $log_data $api_log_info." | objParentId :".json_encode($objParentId)." | slotObjectName :".json_encode($slotObjectName)." | save slot : success";
  381.                                                             SELF::createApiLog($log_data);
  382.                                                         }
  383.                                                 //     }
  384.                                                 // }
  385.                                             }
  386.                                             /*---------- Delivery Slot Time loop ends ------------*/
  387.                                         }//Location Code loop ends
  388.                                     }
  389.                                 }
  390.                             }
  391.                         }
  392.                     }
  393.                 }
  394.             // }
  395.         }//End of Locations Loop
  396.         
  397.         $log_data "Ended - ".$api_log_info." | data : Slot Created for one week Successfully'";
  398.         SELF::createApiLog($log_data);
  399.         return $this->json(["success" => true"data" => 'Slot Created for one week Successfully']);
  400.     }
  401.     /**
  402.      * @Route("deliveryslots/updateslotordercount", methods={"POST"})
  403.      */
  404.     public function updateslotordercountAction(Request $request)
  405.     {
  406.         $api_log_info "API:Update Delivery Slot Order Count based on slotId - ".date("YmdHis")." ".time();
  407.         $log_data "Started - ".$api_log_info;
  408.         SELF::createApiLog($log_data);
  409.         $message SELF::verifyauthToken($api_log_info);
  410.         $log_data $api_log_info." | message:".json_encode($message);
  411.         SELF::createApiLog($log_data);
  412.         $data = [];
  413.         if($message == "No data found")
  414.         {
  415.             $slotId $request->get('slotId');
  416.             $ordercount $request->get('ordercount');
  417.             $log_data $api_log_info." | slotId:".json_encode($slotId)." | ordercount:".json_encode($ordercount);
  418.             SELF::createApiLog($log_data);
  419.             if($slotId == "" || $ordercount == "")
  420.             {
  421.                 $data "slotId and ordercount are mandatory!";
  422.                 $log_data $api_log_info." | data:".json_encode($data);
  423.                 SELF::createApiLog($log_data);
  424.             } else 
  425.             {
  426.                 $slotruleObject DataObject\Slots::getById($slotId);
  427.                 $log_data $api_log_info." | slotruleObject:".json_encode($slotruleObject);
  428.                 SELF::createApiLog($log_data);
  429.                 if(!empty($slotruleObject) && $slotruleObject->getId()){
  430.                     $slotruleObject->setordercount($ordercount);
  431.                     $slotruleObject->save();
  432.                     $data "Slot Updated Successfully!";
  433.                     $log_data $api_log_info." | data:".json_encode($data);
  434.                     SELF::createApiLog($log_data);
  435.                 } else {
  436.                     $data "This Slot Id ".$slotId." is not existed, Please try with valid Slot Id";
  437.                     $log_data $api_log_info." | data:".json_encode($data);
  438.                     SELF::createApiLog($log_data);
  439.                 }
  440.             }
  441.         }else $data[] = ['message'=>$message];
  442.         $data = (empty($data))?$message:$data;
  443.         $returnData = ["success" => true"data" => $data];
  444.         $log_data "Ended - ".$api_log_info." | returnData:".json_encode($returnData);
  445.         SELF::createApiLog($log_data);
  446.         return $this->json(["success" => true"data" => $message]);
  447.     }
  448.     /**
  449.      * @Route("/deliveryslots/getSlot/{id}")
  450.      */
  451.     public function getSlot($id)
  452.     {
  453.         $api_log_info "API:Slot Info by Slot ID | ID:".$id." - ".date("YmdHis")." ".time();
  454.         $log_data "Started - ".$api_log_info;
  455.         SELF::createApiLog($log_data);
  456.         $message SELF::verifyauthToken($api_log_info);
  457.         $log_data $api_log_info." | message:".json_encode($message);
  458.         SELF::createApiLog($log_data);
  459.         $data = [];
  460.         if($message == "No data found")
  461.         {
  462.             $slot DataObject\Slots::getById($id);  
  463.         
  464.             $log_data $api_log_info." | slot:".json_encode($slot);
  465.             SELF::createApiLog($log_data);
  466.             if(isset($slot) && $slot->getId() != ''){
  467.                 
  468.                 $slotLocationData DataObject\Locations::getById($slot->getLoc_id());
  469.                 $loc_name = (!empty($slotLocationData) && $slotLocationData->getlocation_name())?$slotLocationData->getlocation_name():'';
  470.                 $loc_code = (!empty($slotLocationData) && $slotLocationData->getlocation_code())?$slotLocationData->getlocation_code():'';
  471.                 $log_data $api_log_info." | slotLocationData:".json_encode($slotLocationData)." | loc_name:".json_encode($loc_name)." | loc_code:".json_encode($loc_code);
  472.                 SELF::createApiLog($log_data);
  473.                 $data = array(
  474.                     "prior_time" => $slot->getprior_time(),
  475.                     // "picking_time" => $slot->getpicking_time(),
  476.                     // "charge" => $slot->getcharge(),
  477.                     "slotdate" => date("Y-m-d"strtotime($slot->getslotdate())),//$slot->getslotdate(),
  478.                     "loc_code" => $loc_code,
  479.                     "loc_name" => $loc_name,
  480.                     "fromtime" => $slot->getfromtime(),
  481.                     "totime" => $slot->gettotime(),
  482.                     "maxorder" => $slot->getmaxorder(),
  483.                     "ordercount" => $slot->getordercount(),
  484.                     "delivery_mode" => $slot->getdelivery_mode());
  485.                 $log_data $api_log_info." | data:".json_encode($data);
  486.                 SELF::createApiLog($log_data);
  487.             } else {
  488.                 $data "No data found";
  489.                 $log_data $api_log_info." | data:".json_encode($data);
  490.                 SELF::createApiLog($log_data);
  491.             }   
  492.         }else $data[] = ['message'=>$message];
  493.         $data = (empty($data))?$message:$data;  
  494.         
  495.         $returnData = ["success" => true"data" => $data];
  496.         $log_data "Ended - ".$api_log_info." | returnData:".json_encode($returnData);
  497.         SELF::createApiLog($log_data);
  498.         
  499.         // return $slotsList;
  500.         return $this->json(["success" => true"data" => $data]);
  501.     }
  502.     /**
  503.      * @Route("/deliveryslots/getStoreslot/{id}")
  504.      */
  505.     public function getStoreslot($id)
  506.     {
  507.         $api_log_info "API:Get Delivery Slots based on Location Code for Today and Time only | ID:".$id." - ".date("YmdHis")." ".time();
  508.         $log_data "Started - ".$api_log_info;
  509.         SELF::createApiLog($log_data);
  510.         $data ="No data found";
  511.         if($id == "")
  512.         {
  513.             $data ="Location Code is mandatory!";
  514.             $log_data $api_log_info." | data:".json_encode($data);
  515.             SELF::createApiLog($log_data);
  516.         } else 
  517.         {
  518.             /*---- Check Location by Location Code ---------*/
  519.             $locData DataObject\Locations::getBylocation_code($id1);
  520.             $log_data $api_log_info." | locData:".json_encode($locData);
  521.             SELF::createApiLog($log_data);
  522.             if(empty($locData) || empty($locData->getId()))
  523.             {
  524.                 $data "Location is not exited, please try with valid location code!";
  525.                 $log_data $api_log_info." | data:".json_encode($data);
  526.                 SELF::createApiLog($log_data);
  527.             } else {
  528.                 $loc_id $locData->getId();
  529.                 $today_date date("Y-m-d");//"2024-01-03";//
  530.                 $cur_time date("H:i");
  531.                 $log_data $api_log_info." | loc_id:".json_encode($loc_id)." | today_date:".json_encode($today_date)." | cur_time:".json_encode($cur_time);
  532.                 SELF::createApiLog($log_data);
  533.                 $slotsList DataObject\Slots::getList();
  534.                 if ($slotsList->getClass()->getFieldDefinition('slotdate')->isFilterable()) {
  535.                     $slotsList->filterBySlotdate($today_date'=');
  536.                 }
  537.                 if ($slotsList->getClass()->getFieldDefinition('prior_time')->isFilterable()) {
  538.                     $slotsList->filterByprior_time($cur_time'>=');
  539.                 }
  540.                 $slotsList->setCondition("loc_id = ".$loc_id);
  541.                 $slotsList->setLimit(100);
  542.                 $slotsList->setOrderKey("slotdate");
  543.                 $slotsList->setOrder("asc");
  544.                 $slotsList->load();
  545.                 $log_data $api_log_info." | slotsList count:".json_encode(count($slotsList));
  546.                 SELF::createApiLog($log_data);
  547.                 $data = [];
  548.                 if(count($slotsList) > 0){
  549.                     foreach ($slotsList as $key => $slotInfo) {
  550.                         $log_data $api_log_info." | slotInfo:".json_encode($slotInfo);
  551.                         SELF::createApiLog($log_data);
  552.                         $slotLocationData DataObject\Locations::getById($slotInfo->getLoc_id());
  553.                         $log_data $api_log_info." | slotLocationData:".json_encode($slotLocationData);
  554.                         SELF::createApiLog($log_data);
  555.                         $loc_name $slotLocationData->getlocation_name();
  556.                         $loc_code $slotLocationData->getlocation_code();
  557.                         $log_data $api_log_info." | loc_name:".json_encode($loc_name)." | loc_code:".json_encode($loc_code);
  558.                         SELF::createApiLog($log_data);
  559.             
  560.                         // if($loc_name != 0 && $loc_name == $id){
  561.                         // if(!empty($loc_codes) && in_array($id, $loc_codes)){//&& $id!= '' 
  562.                             // if(!empty($blog->getloc_id()) && $blog->getloc_id()->getlocation_code() == $id){//&& $id!= '' 
  563.                             $data[] = array(
  564.                                 "slotId" => $slotInfo->getId(),
  565.                                 "prior_time" => $slotInfo->getprior_time(),
  566.                                 // "picking_time" => $slotInfo->getpicking_time(),
  567.                                 "location_code" => $loc_code,
  568.                                 "loc_name" => $loc_name,
  569.                                 // "charge" => $slotInfo->getcharge(),
  570.                                 "slotdate" => $slotInfo->getslotdate(),
  571.                                 "fromtime" => $slotInfo->getfromtime(),
  572.                                 "totime" => $slotInfo->gettotime(),
  573.                                 "maxorder" => $slotInfo->getmaxorder(),
  574.                                 "ordercount" => $slotInfo->getordercount(),
  575.                                 "delivery_mode" => $slotInfo->getdelivery_mode());
  576.                             $log_data $api_log_info." | data:".json_encode($data);
  577.                             SELF::createApiLog($log_data);
  578.                         //}
  579.                     }
  580.                 } else $data "No data found";
  581.             }
  582.         }
  583.         $return_data = ["success" => true"data" => $data];
  584.         $log_data $api_log_info." | return_data:".json_encode($return_data);
  585.         SELF::createApiLog($log_data);
  586.         
  587.         return $this->json(["success" => true"data" => $data]);
  588.     }
  589.     /**
  590.      * @Route("/deliveryslottime/gelocslottimes/{locCode}")
  591.      */
  592.     public function gelocslottimesAction($locCode)
  593.     {
  594.         $api_log_info "API:Retriving Delivery Slots by Location Code | locCode:".$locCode." - ".date("YmdHis")." ".time();
  595.         $log_data "Started - ".$api_log_info;
  596.         SELF::createApiLog($log_data);
  597.         $message SELF::verifyauthToken($api_log_info);
  598.         $log_data $api_log_info." | message:".json_encode($message);
  599.         SELF::createApiLog($log_data);
  600.         $Is_location_up_country $is_upcountry_configuration_applicable '';
  601.         if($message == "No data found")
  602.         {
  603.             $today_date date("Y-m-d");
  604.             $tomorrow_date date('Y-m-d'strtotime($today_date ' +1 day'));
  605.             $dates_list = array($today_date$tomorrow_date);
  606.             
  607.             $log_data $api_log_info." | dates_list:".json_encode($dates_list);
  608.             SELF::createApiLog($log_data);
  609.             /*---- Check Location by Location Code ---------*/
  610.             $locationData DataObject\Locations::getBylocation_code($locCode1);
  611.             
  612.             $log_data $api_log_info." | locationData:".json_encode($locationData);
  613.             SELF::createApiLog($log_data);
  614.             /*--------------- Settings info ----------------*/
  615.             $settingsInfo SELF::getSettingInfo($api_log_info);
  616.             $log_data $api_log_info." | settingsInfo:".json_encode($settingsInfo);
  617.             SELF::createApiLog($log_data);
  618.             /*----------- End of Settings Info -------------*/
  619.              /*--------- Getting Delivery Modes settings ----------*/
  620.             $setting_slot_time_flag $settingsInfo['setting_slot_time_flag'];
  621.             $setting_deliveryModes $settingsInfo['setting_deliveryModes'];
  622.             $settingDataId $settingsInfo['settingDataId'];
  623.             // echo 'settingsInfo:<pre>';
  624.             // print_r($settingsInfo); die;
  625.             
  626.             $log_data $api_log_info." | setting_slot_time_flag:".json_encode($setting_slot_time_flag)."| setting_deliveryModes:".json_encode($setting_deliveryModes)."| settingDataId:".json_encode($settingDataId);
  627.             SELF::createApiLog($log_data);
  628.             if(!empty($locationData) && !empty($locationData->getId()))
  629.             {
  630.                 $parentLoc_id $locationData->getId();
  631.                 $parentLocationName $locationData->getLocation_name();
  632.                 $parentLocationCode $locationData->getLocation_code();
  633.                 $fastDelivery $locationData->getfastDeliveryAvailable();
  634.                 /*------ Check Location is Up Country or not --------*/
  635.                 $Is_location_up_country = (strpos(strtolower($parentLocationName),"up country") || strpos(strtoupper($parentLocationCode),"UPCTR"))?1:0;
  636.                 $log_data $api_log_info." | parentLoc_id:".json_encode($parentLoc_id)."| parentLocationName:".json_encode($parentLocationName)."| parentLocationCode:".json_encode($parentLocationCode);
  637.                 SELF::createApiLog($log_data);
  638.                 //------ get holidays list ------------//
  639.                 $holidaysList DataObject\Holidays::getList();
  640.                 $holidaysList->setCondition("location_code like '%,".$parentLoc_id.",%'");
  641.                 $holidaysList->load();
  642.                 
  643.                 $holidayDates = [];
  644.                 foreach($holidaysList as $holiday)
  645.                 {
  646.                     $log_data $api_log_info." | holiday:".json_encode($holiday);
  647.                     SELF::createApiLog($log_data);
  648.                     $holiday_locations_list $holiday->getLocation_code();
  649.                     $holidaydate $holiday->getHolidaydate();
  650.                     $holidayDate date("Y-m-d"strtotime($holidaydate));
  651.                     $log_data $api_log_info." | holiday_locations_list:".json_encode($holiday_locations_list)."| holidaydate:".json_encode($holidaydate);
  652.                     SELF::createApiLog($log_data);
  653.                     
  654.                     $holidaysenddate $holiday->getHolidaysenddate();
  655.                     if(!empty($holidaysenddate) && $holidaysenddate){
  656.                         $holidaysenddate date("Y-m-d"strtotime($holidaysenddate));
  657.                         $rangeDates self::getDatesFromRange($holidayDate$holidaysenddate);
  658.                         $log_data $api_log_info." | holidaysenddate:".json_encode($holidaysenddate)."| rangeDates:".json_encode($rangeDates);
  659.                         SELF::createApiLog($log_data);
  660.                         
  661.                         foreach($rangeDates as $rangeDateInfo){
  662.                             array_push($holidayDates,$rangeDateInfo);
  663.                         }
  664.                     } else {
  665.                         array_push($holidayDates,$holidayDate);
  666.                     }
  667.                 }
  668.                 $delSlotTimesList DataObject\Deliveryslottimes::getList();
  669.                 $delSlotTimesList->setOrderKey("o_id");
  670.                 $delSlotTimesList->setOrder("desc");
  671.                 $delSlotTimesList->load();
  672.                 // foreach($dates_list as $cur_date){
  673.                     $log_data $api_log_info." | delSlotTimesList count:".count($delSlotTimesList);
  674.                     SELF::createApiLog($log_data);
  675.                     
  676.                     if(count($delSlotTimesList) > 0){
  677.                         $cur_time date("H:i");//"09:00";//
  678.                         $log_data $api_log_info." | cur_time:".$cur_time;
  679.                         SELF::createApiLog($log_data);
  680.                         foreach($delSlotTimesList as $delSlotTimes)
  681.                         {
  682.                             $log_data $api_log_info." | delSlotTimes:".json_encode($delSlotTimes);
  683.                             SELF::createApiLog($log_data);
  684.                             //------- Get Week Dates based on Holidays and Slot Time data ---------//
  685.                             $slot_prepare_days = ($delSlotTimes->getprepare_days())?$delSlotTimes->getprepare_days():0;
  686.                             $slot_generate_days = ($delSlotTimes->getslot_generate_days())?$delSlotTimes->getslot_generate_days():7;
  687.                             $saturday_slot_availability = ($delSlotTimes->getsaturday_slot_availability())?$delSlotTimes->getsaturday_slot_availability():'No';
  688.                             $sunday_slot_availability = ($delSlotTimes->getsunday_slot_availability())?$delSlotTimes->getsunday_slot_availability():'No';
  689.                             $log_data $api_log_info." | slot_prepare_days:".json_encode($slot_prepare_days)."| slot_generate_days:".json_encode($slot_generate_days)."| saturday_slot_availability:".json_encode($saturday_slot_availability)."| sunday_slot_availability:".json_encode($sunday_slot_availability);
  690.                             SELF::createApiLog($log_data);
  691.                             /*--------------------- Up Country Configuration ------------------------*/
  692.                             $is_upcountry_configuration_applicable = ($delSlotTimes->getis_upcountry_configuration_applicable())?$delSlotTimes->getis_upcountry_configuration_applicable():'No';
  693.                             $slot_upcountry_prepare_days = ($delSlotTimes->getupcountry_prepare_days())?$delSlotTimes->getupcountry_prepare_days():0;
  694.                             $upcountry_slot_generate_days = ($delSlotTimes->getupcountry_slot_generate_days())?$delSlotTimes->getupcountry_slot_generate_days():7;
  695.                             $upcountry_saturday_slot_availability = ($delSlotTimes->getupcountry_saturday_slot_availability())?$delSlotTimes->getupcountry_saturday_slot_availability():'No';
  696.                             $upcountry_sunday_slot_availability = ($delSlotTimes->getupcountry_sunday_slot_availability())?$delSlotTimes->getupcountry_sunday_slot_availability():'No';
  697.                             $log_data $api_log_info." | is_upcountry_configuration_applicable:".json_encode($is_upcountry_configuration_applicable)."| slot_upcountry_prepare_days:".json_encode($slot_upcountry_prepare_days)."| upcountry_slot_generate_days:".json_encode($upcountry_slot_generate_days)."| upcountry_saturday_slot_availability:".json_encode($upcountry_saturday_slot_availability)."| upcountry_sunday_slot_availability:".json_encode($upcountry_sunday_slot_availability);
  698.                             SELF::createApiLog($log_data);
  699.                             $log_data $api_log_info." | settings stg_deliveryslot_config_is_upcountry_configuration_applicable:".json_encode($settingsInfo['stg_deliveryslot_config_is_upcountry_configuration_applicable'])."| Is_location_up_country:".json_encode($Is_location_up_country);
  700.                             SELF::createApiLog($log_data);
  701.                             if($settingsInfo['stg_deliveryslot_config_is_upcountry_configuration_applicable'] == 'Yes' && $Is_location_up_country == 1)//if($is_upcountry_configuration_applicable == 'Yes' && $Is_location_up_country == 1)
  702.                             {                                
  703.                                 $slot_prepare_days $slot_upcountry_prepare_days;
  704.                                 $slot_generate_days $upcountry_slot_generate_days;
  705.                                 $saturday_slot_availability $upcountry_saturday_slot_availability;
  706.                                 $sunday_slot_availability $upcountry_sunday_slot_availability;
  707.                                 
  708.                                 $cur_slot_generate_days = ($delSlotTimes->getupcountry_slot_generate_days())?$delSlotTimes->getupcountry_slot_generate_days():0;
  709.                                 
  710.                                 // $slot_generate_days = ($cur_time > $settingsInfo['stg_delslot_upcountryloc_morethan_fromtime'] && $cur_time < $settingsInfo['stg_delslot_upcountryloc_lessthaneq_totime'])?$slot_generate_days+$settingsInfo['stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays']:$slot_generate_days+$settingsInfo['stg_delslot_normalloc_after_totime_extra_generate_slotdays'];
  711.                                 
  712.                                 $stg_normalloc_upcounry_slot_generate_days = ($cur_time $settingsInfo['stg_delslot_upcountryloc_morethan_fromtime'] && $cur_time $settingsInfo['stg_delslot_upcountryloc_lessthaneq_totime'])?$settingsInfo['stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays']:$settingsInfo['stg_delslot_upcountryloc_after_totime_extra_generate_slotdays'];
  713.                                 $slot_generate_days $slot_generate_days+$stg_normalloc_upcounry_slot_generate_days;
  714.                                 $log_data $api_log_info." | slot_prepare_days:".json_encode($slot_prepare_days)."| slot_generate_days:".json_encode($slot_generate_days)."| saturday_slot_availability:".json_encode($saturday_slot_availability)."| sunday_slot_availability:".json_encode($sunday_slot_availability)."| cur_slot_generate_days:".json_encode($cur_slot_generate_days)."| stg_normalloc_upcounry_slot_generate_days:".json_encode($stg_normalloc_upcounry_slot_generate_days)."| slot_generate_days:".json_encode($slot_generate_days);
  715.                                 SELF::createApiLog($log_data);
  716.                             }
  717.                             else
  718.                             {
  719.                                 $cur_slot_generate_days = ($delSlotTimes->getslot_generate_days())?$delSlotTimes->getslot_generate_days():0;
  720.                                 // $slot_generate_days = ($cur_time > $setting_slot_time_flag)?$slot_generate_days+1:$slot_generate_days;
  721.                                 $stg_normalloc_upcounry_slot_generate_days = ($cur_time $settingsInfo['stg_delslot_normalloc_morethan_fromtime'] && $cur_time $settingsInfo['stg_delslot_normalloc_lessthaneq_totime'])?$settingsInfo['stg_delslot_normalloc_bw_from_to_time_extra_generate_slotdays']:$settingsInfo['stg_delslot_normalloc_after_totime_extra_generate_slotdays'];
  722.                                 $slot_generate_days $slot_generate_days+$stg_normalloc_upcounry_slot_generate_days;
  723.                                 $log_data $api_log_info." | cur_slot_generate_days:".json_encode($cur_slot_generate_days)."| stg_normalloc_upcounry_slot_generate_days:".json_encode($stg_normalloc_upcounry_slot_generate_days);
  724.                                 SELF::createApiLog($log_data);
  725.                             }
  726.                             $cur_slot_prepare_days = ($slot_prepare_days == 0)?$slot_prepare_days+$stg_normalloc_upcounry_slot_generate_days:$slot_prepare_days+$stg_normalloc_upcounry_slot_generate_days-1;
  727.                             $cur_slot_prepare_days = (!empty($fastDelivery)) ? $cur_slot_prepare_days;
  728.                             $log_data $api_log_info." | cur_slot_prepare_days:".json_encode($cur_slot_prepare_days);
  729.                             SELF::createApiLog($log_data);
  730.                             
  731.                             $delSlotTimesAvailibility = ['slot_prepare_days'=>$cur_slot_prepare_days,'slot_generate_days'=>$slot_generate_days,'saturday_slot_availability'=>$saturday_slot_availability,'sunday_slot_availability'=>$sunday_slot_availability];
  732.                             $log_data $api_log_info." | delSlotTimesAvailibility:".json_encode($delSlotTimesAvailibility);
  733.                             SELF::createApiLog($log_data);
  734.                             
  735.                             $weekdates self::getWeekDates($holidayDatesdate("Y-m-d"), $delSlotTimesAvailibility);
  736.                             $log_data $api_log_info." | weekdates:".json_encode($weekdates);
  737.                             SELF::createApiLog($log_data);
  738.                             // echo $cur_time." | ".$setting_slot_time_flag;
  739.                             // echo 'delSlotTimesAvailibility<pre>:';
  740.                             // print_r($delSlotTimesAvailibility);
  741.                             // echo 'weekdates<pre>:';
  742.                             // print_r($weekdates);die;
  743.                             //------- Get Week Dates based on Holidays and Slot Time data ---------//
  744.                             // $prepare_days = $delSlotTimes->getprepare_days();
  745.                             // $delSlot_date = ($prepare_days == 0)?$tomorrow_date:date('Y-m-d', strtotime($today_date . ' +'.$prepare_days.' day'));
  746.                             $delSlot_date = ($slot_prepare_days == 0)?$tomorrow_date:date('Y-m-d'strtotime($today_date ' +'.$slot_prepare_days.' day'));
  747.                             if(!empty($fastDelivery)){
  748.                                 date_default_timezone_set('Asia/Kolkata');
  749.                                 $delSlot_date date('Y-m-d');
  750.                                 
  751.                                 // Get the current hour
  752.                                 $currentHour = (int)date('H');
  753.                                 // Check if the current time is greater than 6 PM
  754.                                 if ($currentHour >= 18) {
  755.                                     // Add one day to the current date
  756.                                     $delSlot_date date('Y-m-d'strtotime($delSlot_date ' +1 day'));
  757.                                 }
  758.                             }
  759.                             $delSlot_date1 date("Y-m-d"strtotime($delSlot_date));
  760.                             
  761.                             $cur_time_data explode(" ",$cur_time);
  762.                             // $slot_generate_days = ($delSlotTimes->getslot_generate_days())?$delSlotTimes->getslot_generate_days():0;
  763.                             // $slot_generate_days_limit = ($slot_generate_days > 0)?$slot_generate_days:1;
  764.                             $slot_generate_days_limit = ($cur_slot_generate_days 0)?$cur_slot_generate_days:1;
  765.                             $log_data $api_log_info." | delSlot_date:".json_encode($delSlot_date)."| delSlot_date1:".json_encode($delSlot_date1)."| cur_time_data:".json_encode($cur_time_data)."| slot_generate_days_limit:".json_encode($slot_generate_days_limit);
  766.                             SELF::createApiLog($log_data);
  767.                             // echo $tomorrow_date.":".$weekdates[0];
  768.                             /* if($cur_time > $setting_slot_time_flag)//if($cur_time > '18:00')
  769.                             {
  770.                                 // if($tomorrow_date >= $weekdates[0])
  771.                                 // {
  772.                                 //     $weekdates = ($slot_generate_days > 0)?array_values(array_diff($weekdates,[$weekdates[0]])):[$weekdates[1]];
  773.                                 // } else {
  774.                                 //     $no_of_weekdates = count($weekdates);
  775.                                 //     $weekdates = ($slot_generate_days > 0)?array_values(array_diff($weekdates,[$weekdates[$no_of_weekdates-1]])):[$weekdates[0]];
  776.                                 // }
  777.                                 
  778.                                 $no_of_weekdates = count($weekdates);
  779.                                 // $weekdates = ($slot_generate_days > 0)?array_values(array_diff($weekdates,[$weekdates[$no_of_weekdates-1]])):[$weekdates[0]];
  780.                                 $weekdates = ($slot_generate_days > 0)?array_values(array_diff($weekdates,[$weekdates[0]])):[$weekdates[1]];
  781.                             } else {
  782.                                 $weekdates = ($slot_generate_days > 0)?$weekdates:[$weekdates[0]];
  783.                             } */
  784.                             /* if($settingsInfo['stg_deliveryslot_config_is_upcountry_configuration_applicable'] == 'Yes' && $Is_location_up_country == 1)
  785.                             {
  786.                                 if($cur_time > $settingsInfo['stg_delslot_upcountryloc_morethan_fromtime'] && $cur_time < $settingsInfo['stg_delslot_upcountryloc_lessthaneq_totime'])
  787.                                 {
  788.                                     $weekdates = ($slot_generate_days > 0)?array_values(array_diff($weekdates,[$weekdates[0]])):[$weekdates[1]];
  789.                                 } else {
  790.                                     $weekdates = ($slot_generate_days > 0)?$weekdates:[$weekdates[0]];
  791.                                 }
  792.                                 if(($slot_generate_days > 0)){
  793.                                     for($ii=0; $ii<$stg_normalloc_upcounry_slot_generate_days; $ii++)
  794.                                     {
  795.                                         $weekdates = array_values(array_diff($weekdates,[$weekdates[0]]));
  796.                                     }
  797.                                 } else 
  798.                                 $weekdates = [$weekdates[$stg_normalloc_upcounry_slot_generate_days]];
  799.                                 
  800.                             } else {
  801.                                 $stg_normalloc_upcounry_slot_generate_days = ($cur_time > $settingsInfo['stg_delslot_upcountryloc_morethan_fromtime'] && $cur_time < $settingsInfo['stg_delslot_upcountryloc_lessthaneq_totime'])?$settingsInfo['stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays']:$settingsInfo['stg_delslot_upcountryloc_after_totime_extra_generate_slotdays'];
  802.                             } */
  803.                             /* if(($slot_generate_days > 0)){
  804.                                 for($ii=0; $ii<$stg_normalloc_upcounry_slot_generate_days; $ii++)
  805.                                 {
  806.                                     $weekdates = array_values(array_diff($weekdates,[$weekdates[0]]));
  807.                                 }
  808.                             } else 
  809.                             $weekdates = [$weekdates[$stg_normalloc_upcounry_slot_generate_days]]; */
  810.                             /*
  811.                             if(($slot_generate_days > 0)){
  812.                                 if($stg_normalloc_upcounry_slot_generate_days>1)
  813.                                 {
  814.                                     for($ii=0; $ii<$stg_normalloc_upcounry_slot_generate_days-1; $ii++)
  815.                                     {
  816.                                         $weekdates = array_values(array_diff($weekdates,[$weekdates[0]]));
  817.                                     }
  818.                                 }
  819.                                 $cur_weekdates = [];
  820.                                 if($cur_slot_generate_days > 0){
  821.                                     for($jj=0; $jj < $cur_slot_generate_days; $jj++)
  822.                                     {
  823.                                         array_push($cur_weekdates,$weekdates[$jj]);
  824.                                     }
  825.                                 }
  826.                                 $weekdates = $cur_weekdates;
  827.                             } else 
  828.                             $weekdates = [$weekdates[$stg_normalloc_upcounry_slot_generate_days]];
  829.                             */
  830.                             $log_data $api_log_info." | slot_generate_days:".json_encode($slot_generate_days)."| cur_slot_generate_days:".json_encode($cur_slot_generate_days);
  831.                             SELF::createApiLog($log_data);
  832.                             if(($slot_generate_days 0)){
  833.                                 $cur_weekdates = [];
  834.                                 if($cur_slot_generate_days 0){
  835.                                     for($jj=0$jj $cur_slot_generate_days$jj++)
  836.                                     {
  837.                                         $log_data $api_log_info." | jj:".json_encode($jj)."| cur_weekdates:".json_encode($cur_weekdates)."| weekdates:".json_encode($weekdates);
  838.                                         SELF::createApiLog($log_data);
  839.                                         array_push($cur_weekdates,$weekdates[$jj]);
  840.                                     }
  841.                                 }
  842.                                 $weekdates $cur_weekdates;
  843.                             } else 
  844.                             $weekdates = [$weekdates[$stg_normalloc_upcounry_slot_generate_days]];
  845.                             $log_data $api_log_info." | stg_normalloc_upcounry_slot_generate_days:".json_encode($stg_normalloc_upcounry_slot_generate_days)."| weekdates:".json_encode($weekdates);
  846.                             SELF::createApiLog($log_data);
  847.                             // $weekdates = ($slot_generate_days > 0)?$weekdates:[$weekdates[0]];
  848.                             // echo 'weekdates:<pre>:'; print_r($weekdates);
  849.                             
  850.                             $slot_generate_days_date  date('Y-m-d'strtotime($today_date ' +'.$slot_generate_days.' day'));
  851.                             $delivery_modes $setting_deliveryModes;//['standard','express'];//['courier','standard','express'];
  852.                             $locationSlotRule = new DataObject\Deliveryslotrules\Listing();
  853.                             $locationSlotRule->setCondition(" FIND_IN_SET('".$parentLoc_id."',location_ids) ");
  854.                             $locationSlotRule $locationSlotRule->getData();
  855.                             if (count($locationSlotRule)) {
  856.                                 $delivery_modes = array();
  857.                                 foreach ($locationSlotRule as $slv) {
  858.                                     $delivery_modes[] = $slv->getdelivery_mode();
  859.                                 }
  860.                             }
  861.                             $log_data $api_log_info." | slot_generate_days_date:".json_encode($slot_generate_days_date)."| delivery_modes:".json_encode($delivery_modes);
  862.                             SELF::createApiLog($log_data);
  863.                             $delivery_mode_slots_all = [];
  864.                             foreach($delivery_modes as $delivery_mode)
  865.                             {
  866.                                 $log_data $api_log_info." | delivery_mode:".json_encode($delivery_mode)."| delSlotTimes Title:".json_encode($delSlotTimes->gettitle());
  867.                                 SELF::createApiLog($log_data);
  868.                                 if($delSlotTimes->gettitle() == 'customized' && (!in_array($delivery_mode,['standard'])))
  869.                                 {
  870.                                     $delivery_mode_slots_all[$delivery_mode] = [];
  871.                                 } else if($delSlotTimes->gettitle() == 'Confectionery' && (!in_array($delivery_mode,['standard','express'])))
  872.                                 {
  873.                                     $delivery_mode_slots_all[$delivery_mode] = [];
  874.                                 } else {
  875.                                     $slotsList DataObject\Slots::getList();
  876.                                     if($cur_time $setting_slot_time_flag)//if($cur_time > '18:00')
  877.                                     {
  878.                                         $slotsList->setCondition("slotdate >= :tomdate AND delivery_mode = :delivery_mode AND loc_id = :parentLoc_id AND slotdate IN (:slotdates)", ["slotdate" => $today_date"prior_time" => $cur_time"delivery_mode" => $delivery_mode"parentLoc_id" => $parentLoc_id"tomdate" => $delSlot_date1"slotdates" => $weekdates]);
  879.                                     } else {
  880.                                         if($delivery_mode == 'standard')
  881.                                         {
  882.                                             $slotsList->setCondition("((slotdate = :slotdate AND fromtime <= :prior_time AND totime >= :prior_time) || slotdate >= :tomdate) AND delivery_mode = :delivery_mode AND loc_id = :parentLoc_id AND slotdate IN (:slotdates)", ["slotdate" => $today_date"prior_time" => $cur_time"delivery_mode" => $delivery_mode"parentLoc_id" => $parentLoc_id"tomdate" => $delSlot_date1"slotdates" => $weekdates]);
  883.                                         } else
  884.                                         {
  885.                                             $slotsList->setCondition("((slotdate = :slotdate AND prior_time >= :prior_time) || slotdate >= :tomdate) AND delivery_mode = :delivery_mode AND loc_id = :parentLoc_id AND slotdate IN (:slotdates)", ["slotdate" => $today_date"prior_time" => $cur_time"delivery_mode" => $delivery_mode"parentLoc_id" => $parentLoc_id"tomdate" => $delSlot_date1"slotdates" => $weekdates]);
  886.                                         }
  887.                                     }
  888.                                     $slotsList->setOrderKey("slotdate");
  889.                                     $slotsList->setOrder("asc");
  890.                                     $slotsList->load();
  891.                                     // if($slot_generate_days == 3)
  892.                                     // {
  893.                                     //     echo '<pre>';
  894.                                     //     print_r($slotsList); die;
  895.                                     // }
  896.                                     /*---------- Slots Loop Starts ----------*/
  897.                                     $log_data $api_log_info." | slotsList count:".json_encode(count($slotsList))."| cur_slot_generate_days:".json_encode($cur_slot_generate_days);
  898.                                     SELF::createApiLog($log_data);
  899.                                     $delivery_mode_slots = [];
  900.                                     if(count($slotsList) > && $cur_slot_generate_days>0){
  901.                                         foreach($slotsList as $slot)
  902.                                         {
  903.                                             $log_data $api_log_info." | slot:".json_encode($slot);
  904.                                             SELF::createApiLog($log_data);
  905.                                             $slotLocationData DataObject\Locations::getById($slot->getLoc_id());
  906.                                             $loc_name $slotLocationData->getlocation_name();
  907.                                             $delivery_mode_slot1 = array(
  908.                                                 "slotId" => $slot->getId(),
  909.                                                 "prior_time" => $slot->getprior_time(),
  910.                                                 "slotdate" => date("Y-m-d"strtotime($slot->getslotdate())),//$slot->getslotdate(),//$delSlot_date1,//
  911.                                                 "loc_name" => $loc_name,
  912.                                                 "fromtime" => $slot->getfromtime(),
  913.                                                 "totime" => $slot->gettotime(),
  914.                                                 "maxorder" => $slot->getmaxorder(),
  915.                                                 "ordercount" => $slot->getordercount(),
  916.                                                 "delivery_mode" => $slot->getdelivery_mode(),
  917.                                             );
  918.                                             array_push($delivery_mode_slots$delivery_mode_slot1);
  919.                                             $log_data $api_log_info." | delivery_mode_slot1:".json_encode($delivery_mode_slot1)."| delivery_mode_slots:".json_encode($delivery_mode_slots);
  920.                                             SELF::createApiLog($log_data);
  921.                                         }
  922.                                     }
  923.                                     /*---------- Slots Loop Starts ----------*/
  924.                                     $delivery_mode_slot2 = array($delivery_mode=>$delivery_mode_slots);
  925.                                     $log_data $api_log_info." | delivery_mode_slot2:".json_encode($delivery_mode_slot2);
  926.                                     SELF::createApiLog($log_data);
  927.                                     // array_push($delivery_mode_slots_all, $delivery_mode_slot2);
  928.                                     if ($fastDelivery) {
  929.                                         $delivery_mode_slots_all[$delivery_mode] = (!empty($delivery_mode_slots[0]) ? array($delivery_mode_slots[0]) : array());
  930.                                     } else {
  931.                                         $delivery_mode_slots_all[$delivery_mode] = $delivery_mode_slots;
  932.                                     }
  933.                                     $log_data $api_log_info." | delivery_mode:".json_encode($delivery_mode)."| delivery_mode_slots:".json_encode($delivery_mode_slots);
  934.                                     SELF::createApiLog($log_data);
  935.                                 }
  936.                             }
  937.                             $data[] = array(
  938.                                 // "LocationName" => $parentLocationName,
  939.                                 // "LocationCode" => $parentLocationCode,
  940.                                 // "Is_location_up_country" => $Is_location_up_country,
  941.                                 "is_upcountry_configuration_applicable" => $is_upcountry_configuration_applicable,
  942.                                 "stg_normalloc_upcounry_slot_generate_days" => $stg_normalloc_upcounry_slot_generate_days,
  943.                                 "deliverytype_id" => $delSlotTimes->gettitle(),
  944.                                 "label" => $delSlotTimes->getdeliverytype_id()->getdeliverytype(),
  945.                                 "prepare_days" => $slot_prepare_days,//$delSlotTimes->getprepare_days(),
  946.                                 "slot_generate_days" => $cur_slot_generate_days,//$slot_generate_days,
  947.                                 "delSlot_date" => $delSlot_date1,
  948.                                 "slots"=>$delivery_mode_slots_all);
  949.                                 $log_data $api_log_info." | data:".json_encode($data);
  950.                                 SELF::createApiLog($log_data);
  951.                         }
  952.                     } else $data[] = ['message'=>$message];
  953.                 // }
  954.             } else $data[] = ['message'=>$message];
  955.             
  956.         } else $data[] = ['message'=>$message];
  957.         $return_data = ["success" => true"Is_location_up_country" => $Is_location_up_country"data" => $data];
  958.         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  959.         SELF::createApiLog($log_data);
  960.         return $this->json(["success" => true"Is_location_up_country" => $Is_location_up_country"data" => $data]);
  961.     }
  962.     /**
  963.      * @Route("/api/allslots")
  964.      */
  965.     public function allslotsAction()
  966.     {
  967.         $api_log_info "API:All Available Slots - ".date("YmdHis")." ".time();
  968.         $log_data "Started - ".$api_log_info;
  969.         SELF::createApiLog($log_data);
  970.         $message SELF::verifyauthToken($api_log_info);
  971.         $log_data $api_log_info." | message:".json_encode($message);
  972.         SELF::createApiLog($log_data);
  973.         if($message == "No data found")
  974.         {
  975.             $delSlotTimesList DataObject\Deliveryslottimes::getList();
  976.             $delSlotTimesList->load();
  977.             // $delivery_modes = ['courier','standard','express'];
  978.             // $slotsList = DataObject\Slots::getList();
  979.             // $slotsList->setCondition("delivery_mode = 'courier'");
  980.             // // if ($slotsList->getClass()->getFieldDefinition('delivery_mode')->isFilterable()) {
  981.             // //     $slotsList->filterBydelivery_mode($courier_mode, '=');
  982.             // // }
  983.             // $slotsList->load();
  984.             // echo '<pre>kk'; print_r($slotsList); die;
  985.             $log_data $api_log_info." | delSlotTimesList count:".json_encode(count($delSlotTimesList));
  986.             SELF::createApiLog($log_data);
  987.             if(count($delSlotTimesList) > 0){
  988.                 foreach($delSlotTimesList as $delSlotTimes)
  989.                 {
  990.                     $log_data $api_log_info." | delSlotTimes:".json_encode($delSlotTimes);
  991.                     SELF::createApiLog($log_data);
  992.                     $prepare_days $delSlotTimes->getprepare_days();
  993.                     $delSlot_date date('Y-m-d H:i:s'strtotime(' +'.$prepare_days.' day'));
  994.                     $delSlot_date1 date("Y-m-d");//date("Y-m-d", strtotime($delSlot_date));
  995.                     $cur_time date("H:i");
  996.                     // $delSlotTimes->delSlot_date = $delSlot_date;
  997.                     $delivery_modes = ['courier','standard','express'];
  998.                     $log_data $api_log_info." | prepare_days:".json_encode($prepare_days)." | delSlot_date:".json_encode($delSlot_date)." | delSlot_date1:".json_encode($delSlot_date1)." | cur_time:".json_encode($cur_time)." | delivery_modes:".json_encode($delivery_modes);
  999.                     SELF::createApiLog($log_data);
  1000.                     $delivery_mode_slots_all = [];
  1001.                     foreach($delivery_modes as $delivery_mode)
  1002.                     {
  1003.                         $log_data $api_log_info." | delivery_mode:".json_encode($delivery_mode);
  1004.                         SELF::createApiLog($log_data);
  1005.                         $slotsList DataObject\Slots::getList();
  1006.                         // $slotsList->setCondition("delivery_mode = '".$delivery_mode."'");
  1007.                         if ($slotsList->getClass()->getFieldDefinition('slotdate')->isFilterable()) {
  1008.                             $slotsList->filterBySlotdate($delSlot_date1'>=');
  1009.                         }
  1010.                         // if ($slotsList->getClass()->getFieldDefinition('prior_time')->isFilterable()) {
  1011.                         //     $slotsList->filterByprior_time($cur_time, '>=');
  1012.                         // }
  1013.                         if ($slotsList->getClass()->getFieldDefinition('delivery_mode')->isFilterable()) {
  1014.                             $slotsList->filterBydelivery_mode($delivery_mode'>=');
  1015.                         }
  1016.                         $slotsList->setLimit(100);
  1017.                         $slotsList->setOrderKey("slotdate");
  1018.                         $slotsList->setOrder("asc");
  1019.                         $slotsList->load();
  1020.                         /*---------- Slots Loop Starts ----------*/
  1021.                         $log_data $api_log_info." | slotsList count:".json_encode(count($slotsList));
  1022.                         SELF::createApiLog($log_data);
  1023.                         $delivery_mode_slots = [];
  1024.                         if(count($slotsList) > 0){
  1025.                             foreach($slotsList as $slot)
  1026.                             {
  1027.                                 $log_data $api_log_info." | slot:".json_encode($slot);
  1028.                                 SELF::createApiLog($log_data);
  1029.                                 // $loc_name = (!empty($slot->getLoc_id()))?$slot->getLoc_id()->getlocation_name():'';
  1030.                                 // $loc_code = (!empty($slot->getLoc_id()))?$slot->getLoc_id()->getlocation_code():'';
  1031.                                 $slotLocationData DataObject\Locations::getById($slot->getLoc_id());
  1032.                                 $loc_name $slotLocationData->getlocation_name();
  1033.                                 $loc_code $slotLocationData->getlocation_code();
  1034.                                 $log_data $api_log_info." | slotLocationData:".json_encode($slotLocationData)." | loc_name:".json_encode($loc_name)." | loc_code:".json_encode($loc_code);
  1035.                                 SELF::createApiLog($log_data);
  1036.                                 $delivery_mode_slot1 = array(
  1037.                                     "slotId" => $slot->getId(),
  1038.                                     "prior_time" => $slot->getprior_time(),
  1039.                                     // "picking_time" => $slot->getpicking_time(),
  1040.                                     // "charge" => $slot->getcharge(),
  1041.                                     "slotdate" => $slot->getslotdate(),
  1042.                                     "loc_name" => $loc_name,
  1043.                                     "loc_code" => $loc_code,
  1044.                                     "fromtime" => $slot->getfromtime(),
  1045.                                     "totime" => $slot->gettotime(),
  1046.                                     "maxorder" => $slot->getmaxorder(),
  1047.                                     "ordercount" => $slot->getordercount(),
  1048.                                     "delivery_mode" => $slot->getdelivery_mode()
  1049.                                 );
  1050.                                 $log_data $api_log_info." | delivery_mode_slot1:".json_encode($delivery_mode_slot1);
  1051.                                 SELF::createApiLog($log_data);
  1052.                                 array_push($delivery_mode_slots$delivery_mode_slot1);
  1053.                                 $log_data $api_log_info." | delivery_mode_slots:".json_encode($delivery_mode_slots);
  1054.                                 SELF::createApiLog($log_data);
  1055.                             }
  1056.                         }
  1057.                         /*---------- Slots Loop Starts ----------*/
  1058.                         $delivery_mode_slot2 = array($delivery_mode=>$delivery_mode_slots);
  1059.                         $log_data $api_log_info." | delivery_mode_slot2:".json_encode($delivery_mode_slot2);
  1060.                         SELF::createApiLog($log_data);
  1061.                         // array_push($delivery_mode_slots_all, $delivery_mode_slot2);
  1062.                         $delivery_mode_slots_all[$delivery_mode] = $delivery_mode_slots;
  1063.                         $log_data $api_log_info." | delivery_mode:".json_encode($delivery_mode)." | delivery_mode_slots_all:".json_encode($delivery_mode_slots_all);
  1064.                         SELF::createApiLog($log_data);
  1065.                     }
  1066.                     $data[] = array(
  1067.                         "deliverytype_id" => $delSlotTimes->gettitle(),
  1068.                         "label" => $delSlotTimes->getdeliverytype_id()->getdeliverytype(),
  1069.                         "prepare_days" => $delSlotTimes->getprepare_days(),
  1070.                         "delSlot_date" => $delSlot_date,
  1071.                         "slots"=>$delivery_mode_slots_all);
  1072.                     
  1073.                     $log_data $api_log_info." | data:".json_encode($data);
  1074.                     SELF::createApiLog($log_data);
  1075.                 }
  1076.             } else $data[] = [];
  1077.         } else $data[] = ['message'=>$message];
  1078.         $data = (empty($data))?$message:$data;
  1079.                 
  1080.         $log_data "Ended - ".$api_log_info." | data:".json_encode($data);
  1081.         SELF::createApiLog($log_data);
  1082.         return $this->json(["success" => true"data" => $data]);
  1083.     }
  1084.     /*------------------------------ End of Slots Related APIs -------------------------*/
  1085.     /*---------------------------------- Delivery Slot Time Related APIs ----------------------------*/
  1086.     /**
  1087.      * @Route("/deliveryslottime/getslottimes")
  1088.      */
  1089.     public function getslottimesAction()
  1090.     {
  1091.         $api_log_info "API:Retriving all Delivery Slot times / Confencery Days - ".date("YmdHis")." ".time();
  1092.         $log_data "Started - ".$api_log_info;
  1093.         SELF::createApiLog($log_data);
  1094.         $message SELF::verifyauthToken($api_log_info);
  1095.         $log_data $api_log_info." | message:".json_encode($message);
  1096.         SELF::createApiLog($log_data);
  1097.         
  1098.         if($message == "No data found")
  1099.         {
  1100.             $delSlotTimesList DataObject\Deliveryslottimes::getList();
  1101.             $delSlotTimesList->load();
  1102.             $log_data $api_log_info." | delSlotTimesList Count ; ".count($delSlotTimesList);
  1103.             SELF::createApiLog($log_data);
  1104.             if(count($delSlotTimesList) > 0){
  1105.                 foreach($delSlotTimesList as $delSlotTimes)
  1106.                 {
  1107.                     $log_data $api_log_info." | delSlotTimes ; ".json_encode($delSlotTimes);
  1108.                     SELF::createApiLog($log_data);
  1109.                     $prepare_days $delSlotTimes->getprepare_days();
  1110.                     $delSlot_date date('Y-m-d H:i:s'strtotime(' +'.$prepare_days.' day'));
  1111.                     $data[] = array(
  1112.                         "title" => $delSlotTimes->gettitle(),
  1113.                         "deliverytype_id" => $delSlotTimes->getdeliverytype_id()->getdeliverytype(),
  1114.                         "prepare_days" => $delSlotTimes->getprepare_days(),
  1115.                         "delSlot_date" => $delSlot_date);
  1116.                         $log_data $api_log_info." | data ; ".json_encode($data);
  1117.                         SELF::createApiLog($log_data);
  1118.                 }
  1119.             } else $data "No data found";
  1120.         }else $data[] = ['message'=>$message];
  1121.         $data = (empty($data))?$message:$data;
  1122.         $log_data "Ended - ".$api_log_info." | data ; ".json_encode($data);
  1123.         SELF::createApiLog($log_data);
  1124.         return $this->json(["success" => true"data" => $data]);
  1125.     }
  1126.     /**
  1127.      * @Route("/deliveryslottime/getslottimeslist")
  1128.      */
  1129.     public function getslottimeslistAction()
  1130.     {
  1131.         $api_log_info "API:Retriving all Delivery Slots - ".date("YmdHis")." ".time();
  1132.         $log_data "Started - ".$api_log_info;
  1133.         SELF::createApiLog($log_data);
  1134.         $message SELF::verifyauthToken($api_log_info);
  1135.         $log_data $api_log_info." | message:".json_encode($message);
  1136.         SELF::createApiLog($log_data);
  1137.         
  1138.         if($message == "No data found")
  1139.         {
  1140.             $delSlotTimesList DataObject\Deliveryslottimes::getList();
  1141.             $delSlotTimesList->load();
  1142.             // $delivery_modes = ['courier','standard','express'];
  1143.             // $slotsList = DataObject\Slots::getList();
  1144.             // $slotsList->setCondition("delivery_mode = 'courier'");
  1145.             // // if ($slotsList->getClass()->getFieldDefinition('delivery_mode')->isFilterable()) {
  1146.             // //     $slotsList->filterBydelivery_mode($courier_mode, '=');
  1147.             // // }
  1148.             // $slotsList->load();
  1149.             // echo '<pre>kk'; print_r($slotsList); die;
  1150.             $log_data $api_log_info." | delSlotTimesList:".json_encode(count($delSlotTimesList));
  1151.             SELF::createApiLog($log_data);
  1152.             if(count($delSlotTimesList) > 0){
  1153.                 foreach($delSlotTimesList as $delSlotTimes)
  1154.                 {
  1155.                     $log_data $api_log_info." | delSlotTimes:".json_encode($delSlotTimes);
  1156.                     SELF::createApiLog($log_data);
  1157.                     $prepare_days $delSlotTimes->getprepare_days();
  1158.                     $delSlot_date date('Y-m-d H:i:s'strtotime(' +'.$prepare_days.' day'));
  1159.                     $delSlot_date1 date("Y-m-d"strtotime($delSlot_date));
  1160.                     $cur_time date("H:i");
  1161.                     // $delSlotTimes->delSlot_date = $delSlot_date;
  1162.                     $delivery_modes = ['courier','standard','express'];
  1163.                     $log_data $api_log_info." | prepare_days:".json_encode($prepare_days)." | delSlot_date:".json_encode($delSlot_date)." | delSlot_date1:".json_encode($delSlot_date1)." | cur_time:".json_encode($cur_time)." | delivery_modes:".json_encode($delivery_modes);
  1164.                     SELF::createApiLog($log_data);
  1165.                     $delivery_mode_slots_all = [];
  1166.                     foreach($delivery_modes as $delivery_mode)
  1167.                     {
  1168.                         $log_data $api_log_info." | delivery_mode:".json_encode($delivery_mode);
  1169.                         SELF::createApiLog($log_data);
  1170.                         $slotsList DataObject\Slots::getList();
  1171.                         // $slotsList->setCondition("delivery_mode = '".$delivery_mode."'");
  1172.                         if ($slotsList->getClass()->getFieldDefinition('slotdate')->isFilterable()) {
  1173.                             $slotsList->filterBySlotdate($delSlot_date1'=');
  1174.                         }
  1175.                         if ($slotsList->getClass()->getFieldDefinition('prior_time')->isFilterable()) {
  1176.                             $slotsList->filterByprior_time($cur_time'>=');
  1177.                         }
  1178.                         if ($slotsList->getClass()->getFieldDefinition('delivery_mode')->isFilterable()) {
  1179.                             $slotsList->filterBydelivery_mode($delivery_mode'>=');
  1180.                         }
  1181.                         $slotsList->setLimit(100);
  1182.                         $slotsList->setOrderKey("slotdate");
  1183.                         $slotsList->setOrder("asc");
  1184.                         $slotsList->load();
  1185.                         /*---------- Slots Loop Starts ----------*/
  1186.                         $log_data $api_log_info." | slotsList count:".json_encode(count($slotsList));
  1187.                         SELF::createApiLog($log_data);
  1188.                         $delivery_mode_slots = [];
  1189.                         if(count($slotsList) > 0){
  1190.                             foreach($slotsList as $slot)
  1191.                             {
  1192.                                 $log_data $api_log_info." | slot:".json_encode($slot);
  1193.                                 SELF::createApiLog($log_data);
  1194.                                 // $loc_name = (!empty($slot->getLoc_id()))?$slot->getLoc_id()->getlocation_name():'';
  1195.                                 // $loc_code = (!empty($slot->getLoc_id()))?$slot->getLoc_id()->getlocation_code():'';
  1196.                                 $slotLocationData DataObject\Locations::getById($slot->getLoc_id());
  1197.                                 $loc_name $slotLocationData->getlocation_name();
  1198.                                 $loc_code $slotLocationData->getlocation_code();
  1199.                                 $delivery_mode_slot1 = array(
  1200.                                     "slotId" => $slot->getId(),
  1201.                                     "prior_time" => $slot->getprior_time(),
  1202.                                     // "picking_time" => $slot->getpicking_time(),
  1203.                                     // "charge" => $slot->getcharge(),
  1204.                                     "slotdate" => $slot->getslotdate(),
  1205.                                     "loc_name" => $loc_name,
  1206.                                     "loc_code" => $loc_code,
  1207.                                     "fromtime" => $slot->getfromtime(),
  1208.                                     "totime" => $slot->gettotime(),
  1209.                                     "maxorder" => $slot->getmaxorder(),
  1210.                                     "ordercount" => $slot->getordercount(),
  1211.                                     "delivery_mode" => $slot->getdelivery_mode()
  1212.                                 );
  1213.                                 array_push($delivery_mode_slots$delivery_mode_slot1);
  1214.                                 $log_data $api_log_info." | delivery_mode_slot1:".json_encode($delivery_mode_slot1)." | delivery_mode_slots:".json_encode($delivery_mode_slots);
  1215.                                 SELF::createApiLog($log_data);
  1216.                             }
  1217.                         }
  1218.                         /*---------- Slots Loop Starts ----------*/
  1219.                         $delivery_mode_slot2 = array($delivery_mode=>$delivery_mode_slots);
  1220.                         $log_data $api_log_info." | delivery_mode_slot2:".json_encode($delivery_mode_slot2);
  1221.                         SELF::createApiLog($log_data);
  1222.                         // array_push($delivery_mode_slots_all, $delivery_mode_slot2);
  1223.                         $delivery_mode_slots_all[$delivery_mode] = $delivery_mode_slots;
  1224.                         $log_data $api_log_info." | delivery_mode:".json_encode($delivery_mode)." | delivery_mode_slots_all:".json_encode($delivery_mode_slots_all);
  1225.                         SELF::createApiLog($log_data);
  1226.                     }
  1227.                     $data[] = array(
  1228.                         "deliverytype_id" => $delSlotTimes->gettitle(),
  1229.                         "label" => $delSlotTimes->getdeliverytype_id()->getdeliverytype(),
  1230.                         "prepare_days" => $delSlotTimes->getprepare_days(),
  1231.                         "delSlot_date" => $delSlot_date,
  1232.                         "slots"=>$delivery_mode_slots_all);
  1233.                         
  1234.                     $log_data $api_log_info." | data:".json_encode($data);
  1235.                     SELF::createApiLog($log_data);
  1236.                 }
  1237.             } else $data[] = [];
  1238.         }else $data[] = ['message'=>$message];
  1239.         $data = (empty($data))?$message:$data;
  1240.         $log_data "Ended - ".$api_log_info." | data:".json_encode($data);
  1241.         SELF::createApiLog($log_data);
  1242.         return $this->json(["success" => true"data" => $data]);
  1243.     }
  1244.     /*------------------------------ End of Delivery Slot Time Related APIs -------------------------*/
  1245.     /*----------------------------------- AWS S3 Bucket Related APIs ---------------------------*/
  1246.     /**
  1247.      * @Route("/awss3bucket/gets3bucketlist")
  1248.      */
  1249.     public function gets3bucketlistAction()
  1250.     {
  1251.         putenv('AWS_DEFAULT_REGION=us-east-2');
  1252.         putenv('AWS_ACCESS_KEY_ID=AKIAUY45FDQLWT32YTPJ');
  1253.         putenv('AWS_SECRET_ACCESS_KEY=IyaHsvQqIdeyDvUrpmlm4T/xizd5999KCpuBP8vg');
  1254.         // $output = shell_exec('aws s3 ls');
  1255.         try
  1256.         {
  1257.             $output shell_exec('aws s3api create-bucket --bucket snap2web-13 --region us-east-2 --create-bucket-configuration LocationConstraint=us-east-2');
  1258.         } catch(Exception $e)
  1259.         {
  1260.             echo $e->getMessage(); die;
  1261.         }
  1262.         // echo "<pre>$output</pre>";
  1263.         echo '<pre>'print_r($output); die;
  1264.         return $this->json(["success" => true"data" => $data]);
  1265.     }
  1266.     /**
  1267.      * @Route("/awss3bucket/uploadFileToS3")
  1268.      */
  1269.     public function uploadFileToS3()
  1270.     {
  1271.         $curl curl_init();
  1272.         curl_setopt_array($curl, array(
  1273.         CURLOPT_URL => 'https://itc-test.s3.ap-south-1.amazonaws.com/public/test.txt?X-Amz-Expires=86400&X-Amz-Date=20230320T054345Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAUY45FDQLWT32YTPJ%252F20230320%252Fap-south-1%252Fs3%252Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=8911af2498f4c48c8b0192a17fa4b8261946d1a7bb482f901091fb96760b2181',
  1274.         CURLOPT_RETURNTRANSFER => true,
  1275.         CURLOPT_ENCODING => '',
  1276.         CURLOPT_MAXREDIRS => 10,
  1277.         CURLOPT_TIMEOUT => 0,
  1278.         CURLOPT_FOLLOWLOCATION => true,
  1279.         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  1280.         CURLOPT_CUSTOMREQUEST => 'PUT',
  1281.         CURLOPT_POSTFIELDS => "<file contents here>",
  1282.         CURLOPT_HTTPHEADER => array(
  1283.             'Content-Type: text/plain'
  1284.         ),
  1285.         ));
  1286.         $response curl_exec($curl);
  1287.         curl_close($curl);
  1288.         echo $response;
  1289.     }
  1290.     /*------------------------------ End of AWS S3 Bucket Related APIs -------------------------*/
  1291.     /**
  1292.      * @Route("/user/login", methods={"POST"})
  1293.      */
  1294.     public function userLogin(Request $request)
  1295.     {
  1296.         $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  1297.         $userName = (isset($reqparams['username']))?$reqparams['username']:'';
  1298.         $password = (isset($reqparams['password']))?$reqparams['password']:'';
  1299.         if($userName == '' || $password == '')
  1300.         {
  1301.             $data "Username and Password are mandatory!";
  1302.         } else {
  1303.             $user User::getByName($userName);
  1304.             if($user) {
  1305.                 $validateUser \Pimcore\Tool\Authentication::authenticatePlaintext($userName,$password);
  1306.                 if($validateUser) {
  1307.                     $userInfo = ['id'=>$validateUser->getId(),
  1308.                                 'firstname'=>$validateUser->getfirstname(),
  1309.                                 'lastname'=>$validateUser->getlastname(),
  1310.                                 'email'=>$validateUser->getemail(),
  1311.                                 ];
  1312.                     $generateAuthTokenInfo SELF::generateAuthToken($userInfo);
  1313.                     $generateAuthToken $generateAuthTokenInfo['generateAuthToken'];
  1314.                     $jwtToken = (!empty($generateAuthTokenInfo['jwt']))?$generateAuthTokenInfo['jwt']:'';
  1315.                     $userId $validateUser->getId(); 
  1316.                     $dbConnection \Pimcore\Db::get();
  1317.                     $dbConnection->query("UPDATE users SET `authToken` = ? WHERE id = ?", [$generateAuthToken$userId]);
  1318.                     $userData User::getById($userId);
  1319.                     $authTokenVal $dbConnection->fetchOne("SELECT authToken FROM users WHERE id = ".$userId);
  1320.                     $data = ["message"=>'Login successfull'"authToken"=>$authTokenVal];
  1321.                     if($jwtToken!='')
  1322.                         $data = ["message"=>'Login successfull'"authToken"=>$authTokenVal"jwtToken"=>$jwtToken];
  1323.                     
  1324.                 } else {
  1325.                     $data 'Wrong password';
  1326.                 }
  1327.             } else {
  1328.                 $data 'User not found';
  1329.             }
  1330.         }
  1331.         return $this->json(["success" => true"data" => $data]);
  1332.     }
  1333.     /*---------------------------------- JWT Related APIs ----------------------------*/
  1334.     /**
  1335.      * @Route("/api/gernerateJwtToken")
  1336.      */
  1337.     public function gernerateJwtTokenAction()
  1338.     {
  1339.         $id 1024;
  1340.         $firstname 'Tex';
  1341.         $lastname 'Hardrock';
  1342.         $email 'dino@stone.age';
  1343.         $secret_key "951e345a17ab26f80ec0e16b1d2a0c2a";
  1344.         $issuer_claim "pimcore6.local"// this can be the servername
  1345.         $audience_claim "Babu";
  1346.         $issuedat_claim time(); // issued at
  1347.         $notbefore_claim $issuedat_claim 10//not before in seconds
  1348.         $expire_claim $issuedat_claim 60// expire time in seconds
  1349.         $token = array(
  1350.             "iss" => $issuer_claim,
  1351.             "aud" => $audience_claim,
  1352.             "iat" => $issuedat_claim,
  1353.             "nbf" => $notbefore_claim,
  1354.             "exp" => $expire_claim,
  1355.             "data" => array(
  1356.                 "id" => $id,
  1357.                 "firstname" => $firstname,
  1358.                 "lastname" => $lastname,
  1359.                 "email" => $email
  1360.         ));
  1361.         $jwt JWT::encode($token$secret_key'HS256');
  1362.         // echo json_encode(
  1363.         //     array(
  1364.         //         "message" => "Successful login.",
  1365.         //         "jwt" => $jwt,
  1366.         //         "email" => $email,
  1367.         //         "expireAt" => $expire_claim
  1368.         //     )); die;
  1369.         $data = array(
  1370.             "message" => "Successful login.",
  1371.             "jwt" => $jwt,
  1372.             "email" => $email,
  1373.             "expireAt" => $expire_claim
  1374.         );
  1375.         return $this->json(["success" => true"data" => $data]);
  1376.     }
  1377.     /**
  1378.      * @Route("/api/verifyJwtToken")
  1379.      */
  1380.     public function verifyJwtTokenAction()
  1381.     {
  1382.         $secret_key "951e345a17ab26f80ec0e16b1d2a0c2a";
  1383.         $jwt null;
  1384.         
  1385.         $data json_decode(file_get_contents("php://input"));
  1386.         $authHeader $_SERVER['HTTP_AUTHORIZATION'];
  1387.         $arr explode(" "$authHeader);
  1388.         $jwt $arr[1];
  1389.         if($jwt){
  1390.             try {
  1391.                 $decoded JWT::decode($jwt, new Key($secret_key'HS256'));
  1392.                 // Access is granted. Add code of the operation here 
  1393.                 $data = array(
  1394.                     "message" => "Access granted"
  1395.                 );
  1396.                 return $this->json(["success" => true"data" => $data]);
  1397.             }catch (Exception $e){
  1398.                 $data = array(
  1399.                     "message" => "Access denied"
  1400.                 );
  1401.                 return $this->json(["success" => true"data" => $data]);
  1402.             }
  1403.         }
  1404.     }
  1405.     /*------------------------------ End of JWT Related APIs -------------------------*/
  1406.     /*---------------------------------- Personal Statement Related APIs ----------------------------*/
  1407.     /**
  1408.      * @Route("personalitystatement/getperstmtlist", methods={"POST"})
  1409.      */
  1410.     public function getperstmtlistAction(Request $request)
  1411.     {
  1412.         $api_log_info "API:Get Personality Statements list with or without params - ".date("YmdHis")." ".time();
  1413.         $log_data "Started - ".$api_log_info;
  1414.         SELF::createApiLog($log_data);
  1415.         $message SELF::verifyauthToken($api_log_info);
  1416.         $log_data $api_log_info." | message:".json_encode($message);
  1417.         SELF::createApiLog($log_data);
  1418.         // $data[] = ['message'=>$message];
  1419.         $data = [];
  1420.         if($message == "No data found")
  1421.         {
  1422.             $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  1423.             // print_r($reqparams); die;
  1424.             // print_r($request->get->all());
  1425.             $log_data $api_log_info." | reqparams:".json_encode($reqparams);
  1426.             SELF::createApiLog($log_data);
  1427.             $title = (isset($reqparams['title']))?$reqparams['title']:'';
  1428.             $gender = (isset($reqparams['gender']))?$reqparams['gender']:'';
  1429.             $standout_fitin = (isset($reqparams['standout_fitin']))?$reqparams['standout_fitin']:'';
  1430.             $describe_yourself = (isset($reqparams['describe_yourself']))?$reqparams['describe_yourself']:'';
  1431.             $occasion = (isset($reqparams['occasion']))?$reqparams['occasion']:'';
  1432.             $priceband = (isset($reqparams['priceband']))?$reqparams['priceband']:'';
  1433.             $blank1 = (isset($reqparams['blank1']))?$reqparams['blank1']:'';
  1434.             $blank2 = (isset($reqparams['blank2']))?$reqparams['blank2']:'';
  1435.             $log_data $api_log_info." | title:".json_encode($title)." | gender:".json_encode($gender)." | standout_fitin:".json_encode($standout_fitin)." | describe_yourself:".json_encode($describe_yourself)." | occasion:".json_encode($occasion)." | priceband:".json_encode($priceband)." | blank1:".json_encode($blank1)." | blank2:".json_encode($blank2);
  1436.             SELF::createApiLog($log_data);
  1437.             $perstmtList DataObject\Personalitystatements::getList();
  1438.             if($title || $blank1 || $blank2 || $priceband || $gender || $standout_fitin || $describe_yourself || $occasion)
  1439.             {
  1440.                 $whr_condition " personality_statement != '' "$whr_condition_array = [];
  1441.                 if($title){
  1442.                     $whr_condition .= " AND personality_statement = '".$title."'";
  1443.                 }
  1444.                 if($priceband){
  1445.                     $whr_condition .= " AND priceband = '".$priceband."'";
  1446.                 }
  1447.                 if($blank1){
  1448.                     $whr_condition .= " AND blank1 = '".$blank1."'";
  1449.                 }
  1450.                 if($blank2){
  1451.                     $whr_condition .= " AND blank2 = '".$blank2."'";
  1452.                 }
  1453.                 if($gender){
  1454.                     $whr_condition .= " AND gender LIKE '%,".$gender.",%'";
  1455.                 }
  1456.                 if($standout_fitin){
  1457.                     $whr_condition .= " AND standout_fitin LIKE '%,".$standout_fitin.",%'";
  1458.                 }
  1459.                 if($describe_yourself){
  1460.                     $whr_condition .= " AND describe_yourself LIKE '%,".$describe_yourself.",%'";
  1461.                 }
  1462.                 if($occasion){
  1463.                     $whr_condition .= " AND occasion LIKE '%,".$occasion.",%'";
  1464.                 }
  1465.                 // echo "whr_condition:".$whr_condition;
  1466.                 // echo "whr_condition_array:";
  1467.                 // print_r($whr_condition_array); die;
  1468.                 $log_data $api_log_info." | whr_condition:".json_encode($whr_condition);
  1469.                 SELF::createApiLog($log_data);
  1470.                 $perstmtList->setCondition($whr_condition);
  1471.                 
  1472.             }
  1473.             
  1474.             $perstmtList->load();
  1475.             $log_data $api_log_info." | perstmtList count:".json_encode(count($perstmtList));
  1476.             SELF::createApiLog($log_data);
  1477.             foreach ($perstmtList as $key => $perstmtObj) {
  1478.                 $log_data $api_log_info." | perstmtObj:".json_encode($perstmtObj);
  1479.                 SELF::createApiLog($log_data);
  1480.                 $data[] = array(
  1481.                     "id" => $perstmtObj->getId(),
  1482.                     "personality_statement" => $perstmtObj->getpersonality_statement(),
  1483.                     "standout_fitin" => $perstmtObj->getstandout_fitin(),
  1484.                     "describe_yourself" => $perstmtObj->getdescribe_yourself(),
  1485.                     "occasion" => $perstmtObj->getoccasion(),
  1486.                     "priceband" => $perstmtObj->getpriceband(),
  1487.                     "blank2" => $perstmtObj->getblank2(),
  1488.                     "blank1" => $perstmtObj->getblank1());
  1489.                 $log_data $api_log_info." | data:".json_encode($data);
  1490.                 SELF::createApiLog($log_data);
  1491.             }
  1492.         } else $data[] = ['message'=>$message];
  1493.         $data = (empty($data))?$message:$data;
  1494.         // return $slotsList;
  1495.         $return_data = ["success" => true"data" => $data];
  1496.         $log_data $api_log_info." | return_data:".json_encode($return_data);
  1497.         SELF::createApiLog($log_data);
  1498.         return $this->json(["success" => true"data" => $data]);
  1499.     }
  1500.     /**
  1501.      * @Route("personalitystatement/perstmtlist")
  1502.      */
  1503.     public function perstmtlistAction()
  1504.     {
  1505.         $api_log_info "API:Get All Personality Statements - ".date("YmdHis")." ".time();
  1506.         $log_data "Started - ".$api_log_info;
  1507.         SELF::createApiLog($log_data);
  1508.         $message SELF::verifyauthToken($api_log_info);
  1509.         $log_data $api_log_info." | message:".json_encode($message);
  1510.         SELF::createApiLog($log_data);
  1511.         if($message == "No data found")
  1512.         {
  1513.             $perstmtList DataObject\Personalitystatements::getList();
  1514.             $perstmtList->load();
  1515.             $log_data $api_log_info." | perstmtList count:".json_encode(count($perstmtList));
  1516.             SELF::createApiLog($log_data);
  1517.             if(count($perstmtList)>0){
  1518.                 foreach ($perstmtList as $key => $perstmtObj) {
  1519.                     $log_data $api_log_info." | perstmtObj:".json_encode($perstmtObj);
  1520.                     SELF::createApiLog($log_data);
  1521.                     $data[] = array(
  1522.                         "id" => $perstmtObj->getId(),
  1523.                         "personality_statement" => $perstmtObj->getpersonality_statement(),
  1524.                         "standout_fitin" => $perstmtObj->getstandout_fitin(),
  1525.                         "describe_yourself" => $perstmtObj->getdescribe_yourself(),
  1526.                         "occasion" => $perstmtObj->getoccasion(),
  1527.                         "priceband" => $perstmtObj->getpriceband(),
  1528.                         "blank2" => $perstmtObj->getblank2(),
  1529.                         "blank1" => $perstmtObj->getblank1());
  1530.                     $log_data $api_log_info." | data:".json_encode($data);
  1531.                     SELF::createApiLog($log_data);
  1532.                 }
  1533.             } else $data[] = ['message'=>$message];
  1534.         } else $data[] = ['message'=>$message];
  1535.         $return_data = ["success" => true"data" => $data];
  1536.         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  1537.         SELF::createApiLog($log_data);
  1538.         return $this->json(["success" => true"data" => $data]);
  1539.     }
  1540.     /**
  1541.      * @Route("personalitystatement/perstmtinfo/{id}")
  1542.      */
  1543.     public function perstmtinfoAction($id)
  1544.     {
  1545.         $api_log_info "API:Get Personality Statement Info by ID - ".date("YmdHis")." ".time();
  1546.         $log_data "Started - ".$api_log_info;
  1547.         SELF::createApiLog($log_data);
  1548.         $log_data $api_log_info." | ID:".$id;
  1549.         SELF::createApiLog($log_data);
  1550.         $message SELF::verifyauthToken($api_log_info);
  1551.         $log_data $api_log_info." | message:".json_encode($message);
  1552.         SELF::createApiLog($log_data);
  1553.         if($message == "No data found")
  1554.         {
  1555.             $perstmtObject DataObject\Personalitystatements::getById($id);
  1556.             $log_data $api_log_info." | perstmtObject:".json_encode($perstmtObject);
  1557.             SELF::createApiLog($log_data);
  1558.             if(!empty($perstmtObject) && $perstmtObject->getpersonality_statement()){
  1559.                 $log_data $api_log_info." | perstmtObject getpersonality_statement:".json_encode($perstmtObject->getpersonality_statement());
  1560.                 SELF::createApiLog($log_data);
  1561.                 $data[] = array(
  1562.                     "id" => $perstmtObject->getId(),
  1563.                     "personality_statement" => $perstmtObject->getpersonality_statement(),
  1564.                     "standout_fitin" => $perstmtObject->getstandout_fitin(),
  1565.                     "describe_yourself" => $perstmtObject->getdescribe_yourself(),
  1566.                     "occasion" => $perstmtObject->getoccasion(),
  1567.                     "priceband" => $perstmtObject->getpriceband(),
  1568.                     "blank2" => $perstmtObject->getblank2(),
  1569.                     "blank1" => $perstmtObject->getblank1());
  1570.                 $log_data $api_log_info." | data:".json_encode($data);
  1571.                 SELF::createApiLog($log_data);
  1572.             } else $data[] = ['message'=>$message];
  1573.         } else $data[] = ['message'=>$message];
  1574.         $returnData = ["success" => true"data" => $data];
  1575.         $log_data "Ended - ".$api_log_info." | returnData:".json_encode($returnData);
  1576.         SELF::createApiLog($log_data);
  1577.         return $this->json(["success" => true"data" => $data]);
  1578.     }
  1579.     /*------------------------------ End of Personal Statement Related APIs -------------------------*/
  1580.     /*---------------------------------- Shipping Rate / Delivery Fee Related APIs ----------------------------*/
  1581.     /**
  1582.      * @Route("api/shippingchargeslist")
  1583.      */
  1584.     public function shippingchargeslistAction()
  1585.     {
  1586.         $api_log_info "API:Get Shipping Charges List - ".date("YmdHis")." ".time();
  1587.         $log_data "Started - ".$api_log_info;
  1588.         SELF::createApiLog($log_data);
  1589.         $message SELF::verifyauthToken($api_log_info);
  1590.         $log_data $api_log_info." | message:".json_encode($message);
  1591.         SELF::createApiLog($log_data);
  1592.         if($message == "No data found")
  1593.         {
  1594.             $shippingchargesList DataObject\Shippingcharges::getList();
  1595.             $shippingchargesList->load();
  1596.             $log_data $api_log_info." | shippingchargesList count:".json_encode(count($shippingchargesList));
  1597.             SELF::createApiLog($log_data);
  1598.             if(count($shippingchargesList)>0){
  1599.                 foreach ($shippingchargesList as $key => $shippingchargeObj) {
  1600.                     $log_data $api_log_info." | shippingchargeObj:".json_encode($shippingchargeObj);
  1601.                     SELF::createApiLog($log_data);
  1602.                     $data[] = array(
  1603.                         "id" => $shippingchargeObj->getId(),
  1604.                         "minimum_order" => $shippingchargeObj->getminimum_order(),
  1605.                         "maximum_order" => $shippingchargeObj->getmaximum_order(),
  1606.                         "discount_percentage" => $shippingchargeObj->getdiscount_percentage(),
  1607.                         "location" => $shippingchargeObj->getlocationId()->getLocation_name());
  1608.                     $log_data $api_log_info." | data:".json_encode($data);
  1609.                     SELF::createApiLog($log_data);
  1610.                 }
  1611.             } else $data[] = ['message'=>$message];
  1612.         } else $data[] = ['message'=>$message];
  1613.         $returnData = ["success" => true"data" => $data];
  1614.         $log_data "Ended - ".$api_log_info." | returnData:".json_encode($returnData);
  1615.         SELF::createApiLog($log_data);
  1616.         return $this->json(["success" => true"data" => $data]);
  1617.     }
  1618.     /**
  1619.      * @Route("api/shippingrateslist", methods={"POST"})
  1620.      */
  1621.     public function shippingrateslistAction()
  1622.     {
  1623.         $api_log_info "API:Shipping Rate / Delivery Fee List - ".date("YmdHis")." ".time();
  1624.         $log_data "Started - ".$api_log_info;
  1625.         SELF::createApiLog($log_data);
  1626.         $message SELF::verifyauthToken($api_log_info);
  1627.         $log_data $api_log_info." | message:".json_encode($message);
  1628.         SELF::createApiLog($log_data);
  1629.         if($message == "No data found")
  1630.         {
  1631.             $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  1632.             $log_data $api_log_info." | reqparams:".json_encode($reqparams);
  1633.             SELF::createApiLog($log_data);
  1634.             $weight_cart = (isset($reqparams['weight_cart']))?$reqparams['weight_cart']:'';
  1635.             $req_weight_cart $weight_cart;
  1636.             $locationCode = (isset($reqparams['locationCode']))?$reqparams['locationCode']:'';
  1637.             $shipping_state_code = (isset($reqparams['shipping_state_code']))?$reqparams['shipping_state_code']:'';
  1638.             $pincode = (isset($reqparams['pincode']))?$reqparams['pincode']:'';
  1639.             $order_amount = (isset($reqparams['order_amount']))?$reqparams['order_amount']:'';
  1640.             $log_data $api_log_info." | weight_cart:".json_encode($weight_cart)." | req_weight_cart:".json_encode($req_weight_cart)." | locationCode:".json_encode($locationCode)." | shipping_state_code:".json_encode($shipping_state_code)." | pincode:".json_encode($pincode)." | order_amount:".json_encode($order_amount);
  1641.             SELF::createApiLog($log_data);
  1642.             if($weight_cart == '' || $locationCode == '' || $shipping_state_code == '' || $pincode == '' || $order_amount == '')
  1643.             {
  1644.                 $data "weight_cart, locationCode, shipping_state_code, pincode and order_amount are mandatory!";
  1645.                 $log_data $api_log_info." | data:".json_encode($data);
  1646.                 SELF::createApiLog($log_data);
  1647.             } else {
  1648.                 /*------ Get Shipping Rate Card Class data --------*/
  1649.                 $dbConnection \Pimcore\Db::get();
  1650.                 $shippingRatecardClassId $dbConnection->fetchOne(" SELECT id FROM classes WHERE LOWER(name) = 'Shippingratecards' ");
  1651.                 $shippingRatecardObject "object_".$shippingRatecardClassId;
  1652.                 $log_data $api_log_info." | shippingRatecardObject:".json_encode($shippingRatecardObject);
  1653.                 SELF::createApiLog($log_data);
  1654.                 // $shippingRatecardId = $dbConnection->fetchOne(" select * from object_12 order by abs(no_of_kgs - ".$weight_cart.")");
  1655.                 $shippingRatecardId $dbConnection->fetchOne(" select * from ".$shippingRatecardObject." order by abs(no_of_kgs - ".$weight_cart.")");
  1656.                 $log_data $api_log_info." | shippingRatecardId:".json_encode($shippingRatecardId);
  1657.                 SELF::createApiLog($log_data);
  1658.                 /*----- End of ---------*/
  1659.                 /*---- Check Location by Location Code ---------*/
  1660.                 $locData DataObject\Locations::getBylocation_code($locationCode1);
  1661.                 $pincodeInfo DataObject\ItcAddPincode::getBypincode($pincode1);
  1662.                 $stateInfo DataObject\States::getBystate_code($shipping_state_code1);
  1663.                 $shipChargeInfo DataObject\Shippingratecards::getById($shippingRatecardId); //DataObject\Shippingratecards::getByno_of_kgs($weight_cart, 1);
  1664.                 $log_data $api_log_info." | locData:".json_encode($locData)." | pincodeInfo:".json_encode($pincodeInfo)." | stateInfo:".json_encode($stateInfo)." | shipChargeInfo:".json_encode($shipChargeInfo);
  1665.                 SELF::createApiLog($log_data);
  1666.                 if(empty($locData) || empty($locData->getId()) || empty($pincodeInfo) || empty($pincodeInfo->getId()) || empty($shipChargeInfo) || empty($shipChargeInfo->getId()))// || empty($stateInfo) || empty($stateInfo->getId()) 
  1667.                 {
  1668.                     if(empty($locData) || empty($locData->getId()))
  1669.                         $message "Location is not exited, please try with valid location code!";
  1670.                     
  1671.                     if(empty($pincodeInfo) || empty($pincodeInfo->getId()))
  1672.                         $message "Pincode is not exited, please try with valid pincode!";
  1673.                 
  1674.                     if(empty($shipChargeInfo) || empty($shipChargeInfo->getId()))
  1675.                         $message "Shipping Charge is not exited for ".$weight_cart." Kgs, please try with valid No of Kgs!";
  1676.                     $data[] = ['message'=>$message];
  1677.                     
  1678.                     $log_data $api_log_info." | data:".json_encode($data);
  1679.                     SELF::createApiLog($log_data);
  1680.                 } else {
  1681.                     $locationId $locData->getId();
  1682.                     $locationName $locData->getLocation_name();
  1683.                     $message SELF::verifyauthToken();
  1684.                     
  1685.                     $log_data $api_log_info." | locationId:".json_encode($locationId)." | locationName:".json_encode($locationName)." | message:".json_encode($message);
  1686.                     SELF::createApiLog($log_data);
  1687.                     if($message == "No data found")
  1688.                     {
  1689.                         /*------ Check Location is Up Country or not --------*/
  1690.                         $Is_location_up_country = (strpos(strtolower($locationName),"up country"))?1:0;
  1691.                     
  1692.                         $log_data $api_log_info." | Is_location_up_country:".json_encode($Is_location_up_country);
  1693.                         SELF::createApiLog($log_data);
  1694.         
  1695.                         /*------ Get Settings Class, Object and ID data --------*/
  1696.                         $dbConnection \Pimcore\Db::get();
  1697.                         $settingsClassId $dbConnection->fetchOne(" SELECT id FROM classes WHERE LOWER(name) = 'Settings' ");
  1698.                         $settingsObject "object_".$settingsClassId;
  1699.                     
  1700.                         $log_data $api_log_info." | settingsObject:".json_encode($settingsObject);
  1701.                         SELF::createApiLog($log_data);
  1702.                         $settingsObjectId $dbConnection->fetchOne("select * from ".$settingsObject." order by oo_id asc");
  1703.                     
  1704.                         $log_data $api_log_info." | settingsObjectId:".json_encode($settingsObjectId);
  1705.                         SELF::createApiLog($log_data);
  1706.                         /*---- Get Settings Data ---------*/
  1707.                         $settingsData DataObject\Settings::getById($settingsObjectId);
  1708.                         $log_data $api_log_info." | settingsData:".json_encode($settingsData);
  1709.                         SELF::createApiLog($log_data);
  1710.                         // echo '<pre>settingsObjectId:'.$settingsObjectId;
  1711.                         // echo '<pre>settingsData:';
  1712.                         // print_r($settingsData->getis_deliveryfee_config_applicable());
  1713.                         $is_shippingapplicable=$pincodeInfo->getis_shipping_applicable();
  1714.                     
  1715.                         $log_data $api_log_info." | is_shippingapplicable:".json_encode($is_shippingapplicable);
  1716.                         SELF::createApiLog($log_data);
  1717.                         $pincode_data['pincode'] = $pincodeInfo->getpincode();
  1718.                         $pincode_data['state'] = $pincodeInfo->getstate();
  1719.                         $pincode_data['is_shipping_applicable'] = $pincodeInfo->getis_shipping_applicable();
  1720.                         $pincode_data['deliverytype'] = $pincodeInfo->getdeliverytype();
  1721.                     
  1722.                         $log_data $api_log_info." | pincode_data:".json_encode($pincode_data);
  1723.                         SELF::createApiLog($log_data);
  1724.                         /*----------- End of Check Is Shipping Applicable or Not based on Pincode from Pincode Table ----------*/
  1725.                         /*------------- Get Shipping Discount Based on Is Shipping Applicable Fee Shipping Rule(Shipping Charges) Table------------*/
  1726.                         $final_cost=0$rate_discount_perc=0$cur_noofkgs $shipChargeInfo->getno_of_kgs();
  1727.                         $zone_name=(!empty($stateInfo) && $stateInfo->getZoneId())?$stateInfo->getZoneId()->getzone_name():'';
  1728.                     
  1729.                         $log_data $api_log_info." | final_cost:".json_encode($final_cost)." | rate_discount_perc:".json_encode($rate_discount_perc)." | cur_noofkgs:".json_encode($cur_noofkgs)." | zone_name:".json_encode($zone_name);
  1730.                         SELF::createApiLog($log_data);
  1731.                         /*----------- End of Get Zone based on State Code from States Table ----------*/
  1732.                         /*------------- Get Shipping rate data based on state code and weight cart ------------*/
  1733.                         $shippingratesList DataObject\Shippingratecards::getList();
  1734.                         if ($shippingratesList->getClass()->getFieldDefinition('no_of_kgs')->isFilterable()) {
  1735.                             $shippingratesList->filterByno_of_kgs($cur_noofkgs'=');
  1736.                         }
  1737.                         $shippingratesList->setOrderKey("no_of_kgs");
  1738.                         $shippingratesList->setOrder("desc");
  1739.                         $shippingratesList->load();
  1740.                     
  1741.                         $log_data $api_log_info." | shippingratesList count:".json_encode(count($shippingratesList));
  1742.                         SELF::createApiLog($log_data);
  1743.                         if(count($shippingratesList)>0){
  1744.                             $ii=0;
  1745.                             foreach ($shippingratesList as $key => $shippingrateObj) {
  1746.                     
  1747.                                 $log_data $api_log_info." | key:".json_encode($key)." | shippingrateObj:".json_encode($shippingrateObj);
  1748.                                 SELF::createApiLog($log_data);
  1749.                                 $data_key $data_val $data_key2 $data_val2 '';
  1750.                                 $data[] = array(
  1751.                                     "id" => $shippingrateObj->getId(),
  1752.                                     "no_of_kgs" => $req_weight_cart,
  1753.                                     "inter_region_cost" => $shippingrateObj->getintera_region_cost(),
  1754.                                     "j_k_cost" => $shippingrateObj->getj_and_k_cost(),
  1755.                                     "ne_and_andaman_cost" => $shippingrateObj->getne_and_andaman()
  1756.                                 );
  1757.                     
  1758.                                 $log_data $api_log_info." | Initialise data_key, data_val, data_key2 and data_val2 values as null | data:".json_encode($data);
  1759.                                 SELF::createApiLog($log_data);
  1760.                                 
  1761.                                 if($is_shippingapplicable == 'Yes')
  1762.                                 {
  1763.                                     if($zone_name == 'J and K')
  1764.                                     {
  1765.                                         $final_cost $shippingrateObj->getj_and_k_cost();
  1766.                                     }
  1767.                                     else if($zone_name == 'NE and Andaman')
  1768.                                     {
  1769.                                         $final_cost $shippingrateObj->getne_and_andaman();  
  1770.                                     }
  1771.                                     else 
  1772.                                     {
  1773.                                         $final_cost $shippingrateObj->getintera_region_cost();
  1774.                                     }
  1775.                                 }
  1776.                                 $log_data $api_log_info." | zone_name:".json_encode($zone_name)." | final_cost:".json_encode($final_cost);
  1777.                                 SELF::createApiLog($log_data);
  1778.                                 $data[$ii]['locationCode'] = $locationCode;
  1779.                                 $data[$ii]['pincode'] = $pincode_data;
  1780.                     
  1781.                                 $log_data $api_log_info." | ii:".json_encode($ii)." | data:".json_encode($data);
  1782.                                 SELF::createApiLog($log_data);
  1783.                                 
  1784.                             }
  1785.                             $minimum_order $maximum_order $discount_percentage 0$shippingRules = [];
  1786.                     
  1787.                             $log_data $api_log_info." | Initialise minimum_order, maximum_order, discount_percentage and shippingRules values as null | is_shippingapplicable:".json_encode($is_shippingapplicable);
  1788.                             SELF::createApiLog($log_data);
  1789.                             
  1790.                             if($is_shippingapplicable == 'Yes')//&& $loc_code_error == ''
  1791.                             {
  1792.                                 $shippingchargesList DataObject\Shippingcharges::getList();
  1793.                                 $shippingchargesList->setCondition("locationId__Id = ? AND (minimum_order <= ? AND maximum_order >= ?)",[$locationId$order_amount$order_amount]);
  1794.                                 $shippingchargesList->load();
  1795.                     
  1796.                                 $log_data $api_log_info." | shippingchargesList count:".json_encode(count($shippingchargesList));
  1797.                                 SELF::createApiLog($log_data);
  1798.                                 if(count($shippingchargesList)>0)
  1799.                                 {
  1800.                                     foreach($shippingchargesList as $shippingchargeObj)
  1801.                                     {
  1802.                                         $log_data $api_log_info." | shippingchargeObj:".json_encode($shippingchargeObj);
  1803.                                         SELF::createApiLog($log_data);
  1804.                                         $minimum_order $shippingchargeObj->getminimum_order();
  1805.                                         $maximum_order $shippingchargeObj->getmaximum_order();
  1806.                                         $discount_percentage $shippingchargeObj->getdiscount_percentage();
  1807.                                         $log_data $api_log_info." | minimum_order:".json_encode($minimum_order)." | maximum_order:".json_encode($maximum_order)." | discount_percentage:".json_encode($discount_percentage);
  1808.                                         SELF::createApiLog($log_data);
  1809.                                         $shippingRules['shippingRuleId'] = $shippingchargeObj->getId();
  1810.                                         $shippingRules['minimum_order_amount'] = $minimum_order;
  1811.                                         $shippingRules['maximum_order_amount'] = $maximum_order;
  1812.                                         $shippingRules['discount_percentage'] = $discount_percentage;
  1813.                                         $log_data $api_log_info." | shippingRules:".json_encode($shippingRules);
  1814.                                         SELF::createApiLog($log_data);
  1815.                                     }
  1816.                                     $data[$ii]['shippingRules'] = $shippingRules;
  1817.                                     $log_data $api_log_info." | ii:".json_encode($ii)." | data:".json_encode($data);
  1818.                                     SELF::createApiLog($log_data);
  1819.                                     $rate_discount_perc = ($minimum_order <= $order_amount && $maximum_order >= $order_amount)?$discount_percentage:0;
  1820.                                     $final_cost $final_cost - (($final_cost*$rate_discount_perc)/100);
  1821.                                     $log_data $api_log_info." | rate_discount_perc:".json_encode($rate_discount_perc)." | final_cost:".json_encode($final_cost);
  1822.                                     SELF::createApiLog($log_data);
  1823.                                 }
  1824.                                 
  1825.                             }
  1826.                             /*----------- Delivery Fee Configuration Condition --------------*/
  1827.                             $log_data $api_log_info." | settingsData getis_deliveryfee_config_applicable:".json_encode($settingsData->getis_deliveryfee_config_applicable());
  1828.                             SELF::createApiLog($log_data);
  1829.                             if($settingsData->getis_deliveryfee_config_applicable() == 'Yes')
  1830.                             {
  1831.                                 $stg_deliveryfee_config $settingsData->getdeliveryfee_config();
  1832.                                 $stg_deliveryfee_config_location_lessthan_charge $settingsData->getdeliveryfee_config_location_lessthan_charge();
  1833.                                 $stg_deliveryfee_config_location_greaterthanequal_charge $settingsData->getdeliveryfee_config_location_greaterthanequal_charge();
  1834.                                 $stg_deliveryfee_config_upcountry_lessthan_charge $settingsData->getdeliveryfee_config_upcountry_lessthan_charge();
  1835.                                 $stg_deliveryfee_config_upcountry_greaterthanequal_charge $settingsData->getdeliveryfee_config_upcountry_greaterthanequal_charge();
  1836.                                 $log_data $api_log_info." | stg_deliveryfee_config:".json_encode($stg_deliveryfee_config)." | stg_deliveryfee_config_location_lessthan_charge:".json_encode($stg_deliveryfee_config_location_lessthan_charge)." | stg_deliveryfee_config_location_greaterthanequal_charge:".json_encode($stg_deliveryfee_config_location_greaterthanequal_charge)." | stg_deliveryfee_config_upcountry_lessthan_charge:".json_encode($stg_deliveryfee_config_upcountry_lessthan_charge)." | stg_deliveryfee_config_upcountry_greaterthanequal_charge:".json_encode($stg_deliveryfee_config_upcountry_greaterthanequal_charge);
  1837.                                 SELF::createApiLog($log_data);
  1838.                                 if($Is_location_up_country == && $order_amount $stg_deliveryfee_config && $stg_deliveryfee_config_location_lessthan_charge != -1$final_cost $stg_deliveryfee_config_location_lessthan_charge;
  1839.                                 else if($Is_location_up_country == && $order_amount >= $stg_deliveryfee_config && $stg_deliveryfee_config_location_greaterthanequal_charge != -1$final_cost $stg_deliveryfee_config_location_greaterthanequal_charge;
  1840.                                 else if($Is_location_up_country == && $order_amount $stg_deliveryfee_config && $stg_deliveryfee_config_upcountry_lessthan_charge != -1$final_cost $stg_deliveryfee_config_upcountry_lessthan_charge;
  1841.                                 else if($Is_location_up_country == && $order_amount >= $stg_deliveryfee_config && $stg_deliveryfee_config_upcountry_greaterthanequal_charge != -1$final_cost $stg_deliveryfee_config_upcountry_greaterthanequal_charge;
  1842.                                 else $final_cost $final_cost;
  1843.                                 $log_data $api_log_info." | final_cost:".json_encode($final_cost);
  1844.                                 SELF::createApiLog($log_data);
  1845.                             }
  1846.                             
  1847.                             $data[$ii]['final_cost'] = $final_cost;
  1848.                             // 2 hours fast delivery code
  1849.                             if($is_shippingapplicable == 'Yes')
  1850.                             {
  1851.                                 $fdsett DataObject\FastDeliverySetting::getList();
  1852.                                 $fdsett->setCondition("locationId__Id = ?",[$locationId]);
  1853.                                 $fdsett->load();
  1854.                                 $data[$ii]['platform_fee'] = 0;
  1855.                                 $data[$ii]['low_order_fee'] = 0;
  1856.                                 if(count($fdsett->getData()) > 0) {
  1857.                                     $fdsett $fdsett->getData()[0];
  1858.                                     $data[$ii]['platform_fee'] = $fdsett->getplatFormFee();
  1859.                                     $cartValue $fdsett->getcartValue();
  1860.                                     if($cartValue $order_amount) {
  1861.                                         $data[$ii]['low_order_fee'] = $fdsett->getminLowOrderFee();
  1862.                                     } else {
  1863.                                         $data[$ii]['low_order_fee'] = $fdsett->getlowOrderFee();
  1864.                                     }
  1865.                                 }
  1866.                             }
  1867.                             $log_data $api_log_info." | final_cost:".json_encode($final_cost)." | ii:".json_encode($ii)." | data:".json_encode($data);
  1868.                             SELF::createApiLog($log_data);
  1869.                         } else $data[] = ['message'=>$message];
  1870.                         /*----------- End of Get Shipping rate data based on state code and weight cart ----------*/
  1871.                     } else $data[] = ['message'=>$message];
  1872.                 }
  1873.             }
  1874.         } else $data[] = ['message'=>$message];
  1875.         $log_data "Ended - ".$api_log_info." | data:".json_encode($data);
  1876.         SELF::createApiLog($log_data);
  1877.         return $this->json(["success" => true"data" => $data]);
  1878.     }
  1879.     /*------------------------------ End of Shipping Rate / Delivery Fee Related APIs -------------------------*/
  1880.     /*---------------------------------- Factory Related APIs ----------------------------*/
  1881.     /**
  1882.      * @Route("/factory/getfactories")
  1883.      */
  1884.     public function getfactories()
  1885.     {
  1886.         $api_log_info "API:Get All Factories - ".date("YmdHis")." ".time();
  1887.         $log_data "Started - ".$api_log_info;
  1888.         SELF::createApiLog($log_data);
  1889.         $message SELF::verifyauthToken($api_log_info);
  1890.         $log_data $api_log_info." | message:".json_encode($message);
  1891.         SELF::createApiLog($log_data);
  1892.         if($message == "No data found")
  1893.         {
  1894.             $factoriesList DataObject\Factories::getList();
  1895.             $factoriesList->load();
  1896.             $log_data $api_log_info." | factoriesList count:".json_encode(count($factoriesList));
  1897.             SELF::createApiLog($log_data);
  1898.             if(count($factoriesList) > 0){
  1899.                 foreach ($factoriesList as $key => $blog) {
  1900.                     $log_data $api_log_info." | key:".json_encode($key)." | blog:".json_encode($blog);
  1901.                     SELF::createApiLog($log_data);
  1902.                     $bestbefore_date '';
  1903.                     if($blog->getbestbefore()){
  1904.                         $bestbefore_dt date("m/d/y"strtotime($blog->getbestbefore()));
  1905.                         $bestbefore_date Carbon::createFromFormat('m/d/y'$bestbefore_dt);
  1906.                         $log_data $api_log_info." | bestbefore_dt:".json_encode($bestbefore_dt)." | bestbefore_date:".json_encode($bestbefore_date);
  1907.                         SELF::createApiLog($log_data);
  1908.                     }
  1909.                     $data[] = array(
  1910.                         "code" => $blog->getcode(),
  1911.                         "name" => $blog->getname(),
  1912.                         "address" => $blog->getaddress(),
  1913.                         "street" => $blog->getstreet(),
  1914.                         "landmark" => $blog->getlandmark(),
  1915.                         "city" => $blog->getcity(),
  1916.                         "state" => $blog->getstate(),
  1917.                         "country" => $blog->getcountry(),
  1918.                         "pincode" => $blog->getpincode(),
  1919.                         "bestbefore" => $bestbefore_date);
  1920.                     $log_data $api_log_info." | data:".json_encode($data);
  1921.                     SELF::createApiLog($log_data);
  1922.                 }
  1923.             } else $data[] = ['message'=>$message];
  1924.         } else $data[] = ['message'=>$message];
  1925.         $log_data "Ended - ".$api_log_info." | data:".json_encode($data);
  1926.         SELF::createApiLog($log_data);
  1927.         
  1928.         return $this->json(["success" => true"data" => $data]);
  1929.     }
  1930.     /**
  1931.      * @Route("api/getfactorydata", methods={"POST"})
  1932.      */
  1933.     public function getfactorydataAction(Request $request)
  1934.     {
  1935.         $api_log_info "API:Get factory Info by Code - ".date("YmdHis")." ".time();
  1936.         $log_data "Started - ".$api_log_info;
  1937.         SELF::createApiLog($log_data);
  1938.         $factorycode $request->get('factorycode');
  1939.         $log_data $api_log_info." | factorycode:".json_encode($factorycode);
  1940.         SELF::createApiLog($log_data);
  1941.         if($factorycode == "")
  1942.         {
  1943.             $data "Factory Code is mandatory!";
  1944.             $log_data $api_log_info." | data:".json_encode($data);
  1945.             SELF::createApiLog($log_data);
  1946.         } else 
  1947.         {
  1948.             $data SELF::verifyauthToken($api_log_info);
  1949.             $log_data $api_log_info." | data:".json_encode($data);
  1950.             SELF::createApiLog($log_data);
  1951.             if($data == "No data found")
  1952.             {
  1953.                 /*---- Check Factory by Code ---------*/
  1954.                 $factoryData DataObject\Factories::getBycode($factorycode1);
  1955.                 $log_data $api_log_info." | factoryData:".json_encode($factoryData);
  1956.                 SELF::createApiLog($log_data);
  1957.                 if(!empty($factoryData) && $factoryData->getId()){
  1958.                         
  1959.                     $log_data $api_log_info." | factoryData getId:".json_encode($factoryData->getId());
  1960.                     SELF::createApiLog($log_data);
  1961.                     $data = array(
  1962.                         "id" => $factoryData->getId(),
  1963.                         "code" => $factoryData->getCode(),
  1964.                         "name" => $factoryData->getname(),
  1965.                         "address" => $factoryData->getaddress(),
  1966.                         "street" => $factoryData->getstreet(),
  1967.                         "landmark" => $factoryData->getlandmark(),
  1968.                         "city" => $factoryData->getcity(),
  1969.                         "state" => $factoryData->getstate(),
  1970.                         "country" => $factoryData->getcountry(),
  1971.                         "pincode" => $factoryData->getpincode(),
  1972.                         "bestbefore" => $factoryData->getbestbefore());
  1973.                     $log_data $api_log_info." | data:".json_encode($data);
  1974.                     SELF::createApiLog($log_data);
  1975.                 } else {
  1976.                     $data "No data found!";
  1977.                     $log_data $api_log_info." | data:".json_encode($data);
  1978.                     SELF::createApiLog($log_data);
  1979.                 }
  1980.             }
  1981.         }
  1982.         $log_data "Ended - ".$api_log_info." | data:".json_encode($data);
  1983.         SELF::createApiLog($log_data);
  1984.         return $this->json(["success" => true"data" => $data]);
  1985.     }
  1986.     /**
  1987.      * @Route("api/getfactoriesdata", methods={"POST"})
  1988.      */
  1989.     public function getfactoriesdataAction(Request $request)
  1990.     {
  1991.         $api_log_info "API:Get Factories list by multiple Factory codes - ".date("YmdHis")." ".time();
  1992.         $log_data "Started - ".$api_log_info;
  1993.         SELF::createApiLog($log_data);
  1994.         $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  1995.         $log_data $api_log_info." | reqparams:".json_encode($reqparams);
  1996.         SELF::createApiLog($log_data);
  1997.         $factorycodes = (isset($reqparams['factorycodes']))?$reqparams['factorycodes']:'';
  1998.         $log_data $api_log_info." | factorycodes:".json_encode($factorycodes);
  1999.         SELF::createApiLog($log_data);
  2000.         // $factorycode = $request->get('factorycode');
  2001.         if($factorycodes == "")
  2002.         {
  2003.             $data "Factory Code(s) is(are) mandatory!";
  2004.             $log_data $api_log_info." | data:".json_encode($data);
  2005.             SELF::createApiLog($log_data);
  2006.         } else 
  2007.         {
  2008.             $data SELF::verifyauthToken($api_log_info);
  2009.             $log_data $api_log_info." | data:".json_encode($data);
  2010.             SELF::createApiLog($log_data);
  2011.             if($data == "No data found")
  2012.             {
  2013.                 /*---- Check Factory by Code ---------*/
  2014.                 $factoriesData = new DataObject\Factories\Listing();
  2015.                 $factoriesData->setCondition("code IN (?)", [$factorycodes]);
  2016.                 $factoriesData->load();
  2017.                 $log_data $api_log_info." | factoriesData count:".json_encode(count($factoriesData));
  2018.                 SELF::createApiLog($log_data);
  2019.                 if(!empty($factoriesData) && count($factoriesData)>0){
  2020.                     $data = [];
  2021.                     foreach($factoriesData as $factoryData){
  2022.                         $log_data $api_log_info." | factoryData:".json_encode($factoryData);
  2023.                         SELF::createApiLog($log_data);
  2024.                         $curdata = array(
  2025.                             "id" => $factoryData->getId(),
  2026.                             "code" => $factoryData->getCode(),
  2027.                             "name" => $factoryData->getname(),
  2028.                             "address" => $factoryData->getaddress(),
  2029.                             "street" => $factoryData->getstreet(),
  2030.                             "landmark" => $factoryData->getlandmark(),
  2031.                             "city" => $factoryData->getcity(),
  2032.                             "state" => $factoryData->getstate(),
  2033.                             "country" => $factoryData->getcountry(),
  2034.                             "pincode" => $factoryData->getpincode(),
  2035.                             "bestbefore" => $factoryData->getbestbefore());
  2036.                         $log_data $api_log_info." | curdata:".json_encode($curdata);
  2037.                         SELF::createApiLog($log_data);
  2038.                         array_push($data$curdata);
  2039.                     }
  2040.                 } else {
  2041.                     $data "No data found!";
  2042.                     $log_data $api_log_info." | data:".json_encode($data);
  2043.                     SELF::createApiLog($log_data);
  2044.                 }
  2045.             }
  2046.         }
  2047.         $return_data = ["success" => true"data" => $data];
  2048.         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  2049.         SELF::createApiLog($log_data);
  2050.         return $this->json(["success" => true"data" => $data]);
  2051.     }
  2052.     /*------------------------------ End of Factory Related APIs -------------------------*/
  2053.     /*---------------------------------- Faq Related APIs ----------------------------*/
  2054.     /**
  2055.      * @param Request $request
  2056.      * 
  2057.      * @Route("/faqApi1",methods={"POST"})
  2058.      * 
  2059.      * @return Response
  2060.      * 
  2061.      */
  2062.     
  2063.      public function faqApi1Action(Request $request)
  2064.      {
  2065.         $api_log_info "API:Get Faq List by locationcode with or without type - ".date("YmdHis")." ".time();
  2066.         $log_data "Started - ".$api_log_info;
  2067.         SELF::createApiLog($log_data);
  2068.         $data SELF::verifyauthToken($api_log_info);
  2069.         $log_data $api_log_info." | data:".json_encode($data);
  2070.         SELF::createApiLog($log_data);
  2071.         if($data == "No data found")
  2072.         {
  2073.             $locationcode = (!empty($request->get('location_code')))?$request->get('location_code'):'';
  2074.             if($locationcode == "")
  2075.             {
  2076.                 $data "Location Code is mandatory";
  2077.             } else {
  2078.                 $getlocationInfo DataObject\Locations::getBylocation_code($locationcode1);
  2079.                 $log_data $api_log_info." | getlocationInfo :".json_encode($getlocationInfo);
  2080.                 SELF::createApiLog($log_data);
  2081.                 if((!empty($getlocationInfo))){
  2082.                     $loc_name = (!empty($getlocationInfo->getlocation_name()))?$getlocationInfo->getlocation_name():'';
  2083.                     $loc_code = (!empty($getlocationInfo->getlocation_code()))?$getlocationInfo->getlocation_code():'';
  2084.                     $log_data $api_log_info." | loc_name :".json_encode($loc_name)." | loc_code :".json_encode($loc_code);
  2085.                     SELF::createApiLog($log_data);
  2086.                     $faqType = (!empty($request->get('type')) && $request->get('type') == 'All')?'':((!empty($request->get('type')) && $request->get('type') != 'All')?$request->get('type'):'General');
  2087.                     $log_data $api_log_info." | locationcode:".json_encode($locationcode)." | faqType:".json_encode($faqType);
  2088.                     SELF::createApiLog($log_data);
  2089.                     $faqTypes_list = ['','All','General''Loyalty'];
  2090.                     if(!in_array($faqType$faqTypes_list)){
  2091.                         $data "You are entered Type is Invalid, Please try again";
  2092.                         $return_data = ["success" => true"data" => $data];
  2093.                         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  2094.                         SELF::createApiLog($log_data);
  2095.                         
  2096.                         return $this->json(["success" => true"data" => $data]);
  2097.                     }
  2098.             
  2099.                     $entries = new DataObject\ItcAddFaq\Listing();
  2100.                     $whr_condition " faqQuestion!= '' ";
  2101.                     if($locationcode != '')
  2102.                     $whr_condition .= " AND location_code= '".$loc_name."' ";
  2103.                     if($faqType != '')
  2104.                     $whr_condition .= " AND faqType= '".$faqType."' ";
  2105.                     // if($locationcode != '')
  2106.                     // $entries->setCondition("location_name = :location_name", ["location_name" => $locationcode]);
  2107.                     // if($faqType != '')
  2108.                     // $entries->setCondition("faqType = :faqType", ["faqType" => $faqType]);
  2109.                     $entries->setCondition($whr_condition);
  2110.                     $entries->load();
  2111.                     $log_data $api_log_info." | faq entries count :".json_encode(count($entries));
  2112.                     SELF::createApiLog($log_data);
  2113.                     $data = (count($entries)>0)?array():"No data found";
  2114.                     foreach($entries as $key => $entrie){
  2115.                         $log_data $api_log_info." | faq key :".json_encode($key)." | faq entrie :".json_encode($entrie);
  2116.                         SELF::createApiLog($log_data);
  2117.             
  2118.                         if($entrie->getlocation_code()){
  2119.                             $locationInfo DataObject\Locations::getBylocation_name($entrie->getlocation_code(), 1);
  2120.                             $log_data $api_log_info." | locationInfo :".json_encode($locationInfo);
  2121.                             SELF::createApiLog($log_data);
  2122.                             
  2123.                             $loc_name = (!empty($locationInfo->getlocation_name()))?$locationInfo->getlocation_name():'';
  2124.                             $loc_code = (!empty($locationInfo->getlocation_code()))?$locationInfo->getlocation_code():'';
  2125.                             $log_data $api_log_info." | loc_name :".json_encode($loc_name)." | loc_code :".json_encode($loc_code);
  2126.                             SELF::createApiLog($log_data);
  2127.                         }
  2128.                         $data[] = array("faqId" => $entrie->getfaqId(),
  2129.                                 "location_code" => $loc_code,
  2130.                                 "location_name" => $loc_name,
  2131.                                 "faqQuestion" => $entrie->getfaqQuestion(),
  2132.                                 "faqAnswer" => $entrie->getfaqAnswer(),
  2133.                                 "Type" => $entrie->getfaqType(),
  2134.                         );
  2135.                         $log_data $api_log_info." | data :".json_encode($data);
  2136.                         SELF::createApiLog($log_data);
  2137.                     }
  2138.                 } else {
  2139.                     $data "Invalid Location Code, Please enter valid Location Code";
  2140.                     $log_data $api_log_info." | data :".json_encode($data);
  2141.                     SELF::createApiLog($log_data);
  2142.                 }
  2143.             }
  2144.         }
  2145.         $return_data = ["success" => true"data" => $data];
  2146.         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  2147.         SELF::createApiLog($log_data);
  2148.         
  2149.         return $this->json(["success" => true"data" => $data]);
  2150.         
  2151.      }
  2152.      /**
  2153.      * @param Request $request
  2154.      * 
  2155.      * @Route("/faqApi",methods={"POST"})
  2156.      * 
  2157.      * @return Response
  2158.      * 
  2159.      */
  2160.      public function faqApiAction(Request $request)
  2161.      {
  2162.         $api_log_info "API:Get Faq List by locationcode with or without type - ".date("YmdHis")." ".time();
  2163.         $log_data "Started - ".$api_log_info;
  2164.         SELF::createApiLog($log_data);
  2165.         $data SELF::verifyauthToken($api_log_info);
  2166.         $log_data $api_log_info." | data:".json_encode($data);
  2167.         SELF::createApiLog($log_data);
  2168.         if($data == "No data found")
  2169.         {
  2170.             $locationcode = (!empty($request->get('location_code')))?$request->get('location_code'):'';
  2171.             // if($locationcode == "")
  2172.             // {
  2173.             //     $data = "Location Code is mandatory";
  2174.             // } else {
  2175.                 $getlocationInfo = (isset($locationcode) && $locationcode!='')?DataObject\Locations::getBylocation_code($locationcode1):[];
  2176.                 $log_data $api_log_info." | getlocationInfo :".json_encode($getlocationInfo);
  2177.                 SELF::createApiLog($log_data);
  2178.                 // if((!empty($getlocationInfo))){
  2179.                     $loc_name = (!empty($getlocationInfo) && !empty($getlocationInfo->getlocation_name()))?$getlocationInfo->getlocation_name():'';
  2180.                     $loc_code = (!empty($getlocationInfo) && !empty($getlocationInfo->getlocation_code()))?$getlocationInfo->getlocation_code():'';
  2181.                     $log_data $api_log_info." | loc_name :".json_encode($loc_name)." | loc_code :".json_encode($loc_code);
  2182.                     SELF::createApiLog($log_data);
  2183.                     $faqType = (!empty($request->get('type')) && $request->get('type') == 'All')?'':((!empty($request->get('type')) && $request->get('type') != 'All')?$request->get('type'):'General');
  2184.                     $log_data $api_log_info." | locationcode:".json_encode($locationcode)." | faqType:".json_encode($faqType);
  2185.                     SELF::createApiLog($log_data);
  2186.                     $faqTypes_list = ['','All','General''Loyalty'];
  2187.                     if(!in_array($faqType$faqTypes_list)){
  2188.                         $data "You are entered Type is Invalid, Please try again";
  2189.                         $return_data = ["success" => true"data" => $data];
  2190.                         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  2191.                         SELF::createApiLog($log_data);
  2192.                         
  2193.                         return $this->json(["success" => true"data" => $data]);
  2194.                     }
  2195.             
  2196.                     $entries = new DataObject\ItcAddFaq\Listing();
  2197.                     $whr_condition " faqQuestion!= '' ";
  2198.                     if($locationcode != '')
  2199.                     $whr_condition .= " AND location_code= '".$loc_name."' ";
  2200.                     if($faqType != '')
  2201.                     $whr_condition .= " AND faqType= '".$faqType."' ";
  2202.                     // if($locationcode != '')
  2203.                     // $entries->setCondition("location_name = :location_name", ["location_name" => $locationcode]);
  2204.                     // if($faqType != '')
  2205.                     // $entries->setCondition("faqType = :faqType", ["faqType" => $faqType]);
  2206.                     $entries->setCondition($whr_condition);
  2207.                     $entries->load();
  2208.                     $log_data $api_log_info." | faq entries count :".json_encode(count($entries));
  2209.                     SELF::createApiLog($log_data);
  2210.                     $data = (count($entries)>0)?array():"No data found";
  2211.                     foreach($entries as $key => $entrie){
  2212.                         $log_data $api_log_info." | faq key :".json_encode($key)." | faq entrie :".json_encode($entrie);
  2213.                         SELF::createApiLog($log_data);
  2214.             
  2215.                         if($entrie->getlocation_code()){
  2216.                             $locationInfo DataObject\Locations::getBylocation_name($entrie->getlocation_code(), 1);
  2217.                             $log_data $api_log_info." | locationInfo :".json_encode($locationInfo);
  2218.                             SELF::createApiLog($log_data);
  2219.                             
  2220.                             $loc_name = (!empty($locationInfo->getlocation_name()))?$locationInfo->getlocation_name():'';
  2221.                             $loc_code = (!empty($locationInfo->getlocation_code()))?$locationInfo->getlocation_code():'';
  2222.                             $log_data $api_log_info." | loc_name :".json_encode($loc_name)." | loc_code :".json_encode($loc_code);
  2223.                             SELF::createApiLog($log_data);
  2224.                         }
  2225.                         $data[] = array("faqId" => $entrie->getfaqId(),
  2226.                                 "location_code" => $loc_code,
  2227.                                 "location_name" => $loc_name,
  2228.                                 "faqQuestion" => $entrie->getfaqQuestion(),
  2229.                                 "faqAnswer" => $entrie->getfaqAnswer(),
  2230.                                 "Type" => $entrie->getfaqType(),
  2231.                         );
  2232.                         $log_data $api_log_info." | data :".json_encode($data);
  2233.                         SELF::createApiLog($log_data);
  2234.                     }
  2235.                 // } else {
  2236.                 //     $data = "Invalid Location Code, Please enter valid Location Code";
  2237.                 //     $log_data = $api_log_info." | data :".json_encode($data);
  2238.                 //     SELF::createApiLog($log_data);
  2239.                 // }
  2240.             // }
  2241.         }
  2242.         $return_data = ["success" => true"data" => $data];
  2243.         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  2244.         SELF::createApiLog($log_data);
  2245.         
  2246.         return $this->json(["success" => true"data" => $data]);
  2247.         
  2248.      }
  2249.     /*------------------------------ End of Faq Related APIs -------------------------*/
  2250.     /*--------------------------------- Pincode Related APIs -----------------------------*/
  2251.     /**
  2252.      * @param Request $request
  2253.      * 
  2254.      * @Route("/wearhouseDetectionApi",methods={"POST"})
  2255.      * 
  2256.      * @return Response
  2257.      * 
  2258.      */
  2259.      public function wearhouseDetectionApiAction(Request $request)
  2260.      { 
  2261.         $api_log_info "API:Get Wearhouse data by Pincode - ".date("YmdHis")." ".time();
  2262.         $log_data "Started - ".$api_log_info;
  2263.         SELF::createApiLog($log_data);
  2264.         $message SELF::verifyauthToken();
  2265.         $log_data $api_log_info." | message:".json_encode($message);
  2266.         SELF::createApiLog($log_data);
  2267.  
  2268.         if($message == "No data found")
  2269.         {
  2270.             if($request->get('pincode')){
  2271.                 $pincode $request->get('pincode');
  2272.                 $log_data $api_log_info." | pincode:".json_encode($pincode);
  2273.                 SELF::createApiLog($log_data);
  2274.                 // $entries = new DataObject\ItcAddPincode\Listing();
  2275.                 // $entries->setCondition("pincode = :name", ["name" => $pincode]);
  2276.                 // $entries->load();
  2277.                 $getpincodeInfo DataObject\ItcAddPincode::getBypincode($pincode1);
  2278.                 $log_data $api_log_info." | getpincodeInfo :".json_encode($getpincodeInfo);
  2279.                 SELF::createApiLog($log_data);
  2280.                 if((!empty($getpincodeInfo))){
  2281.                     $loc_name $loc_code '';
  2282.                     $location_name = (!empty($getpincodeInfo->getlocation_code()))?$getpincodeInfo->getlocation_code():"";
  2283.                     $log_data $api_log_info." | location_name:".json_encode($location_name);
  2284.                     SELF::createApiLog($log_data);
  2285.                     if(!empty($location_name)){
  2286.                         $getlocationInfo DataObject\Locations::getBylocation_name($location_name1);
  2287.                         $log_data $api_log_info." | getlocationInfo :".json_encode($getlocationInfo);
  2288.                         SELF::createApiLog($log_data);
  2289.                         if((!empty($getlocationInfo))){
  2290.                             $loc_name = (!empty($getlocationInfo->getlocation_name()))?$getlocationInfo->getlocation_name():'';
  2291.                             $loc_code = (!empty($getlocationInfo->getlocation_code()))?$getlocationInfo->getlocation_code():'';
  2292.                         } 
  2293.                         $log_data $api_log_info." | loc_name :".json_encode($loc_name)." | loc_code :".json_encode($loc_code);
  2294.                         SELF::createApiLog($log_data);                     
  2295.                     }
  2296.                     $data = array("pincode" => $getpincodeInfo->getpincode(),
  2297.                                     "store_code" => $loc_code,
  2298.                                     "location_name" => $loc_name,
  2299.                                     "city_name" => $getpincodeInfo->getcity(),
  2300.                                     "state" => $getpincodeInfo->getstate(),
  2301.                                     "delivery_type" => $getpincodeInfo->getdeliverytype(),
  2302.                                     "is_shipping_applicable" => $getpincodeInfo->getis_shipping_applicable(),
  2303.                                     "merichakki_available" => $getpincodeInfo->getmerichakki_available(),
  2304.                                     "nammachakki_available" => $getpincodeInfo->getnammachakki_available(),
  2305.                                     "vin_instance" => $getpincodeInfo->getvin_instance(),
  2306.                                 );
  2307.                 } else {
  2308.                     $data "You are entered Pincode is Invalid, Please try again";
  2309.                 }
  2310.                 $log_data $api_log_info." | data :".json_encode($data);
  2311.                 SELF::createApiLog($log_data);  
  2312.             }elseif($request->get('city_name')){
  2313.                 $city $request->get('city_name');
  2314.                 $log_data $api_log_info." | city :".json_encode($city);
  2315.                 SELF::createApiLog($log_data);  
  2316.                 $entries = new DataObject\ItcAddPincode\Listing();
  2317.                 $entries->setCondition("city = :name OR location_code = :name", ["name" => $city,"location_code" => $city]);
  2318.                 $entries->setLimit(1);
  2319.                 $entries->load();
  2320.                 $log_data $api_log_info." | entries count :".json_encode(count($entries));
  2321.                 SELF::createApiLog($log_data);  
  2322.                 foreach($entries as $key => $entrie){
  2323.                     $log_data $api_log_info." | entrie :".json_encode($entrie);
  2324.                     SELF::createApiLog($log_data); 
  2325.                     $loc_name $loc_code '';
  2326.                     $location_name = (!empty($entrie->getlocation_code()))?$entrie->getlocation_code():"";
  2327.                     $log_data $api_log_info." | location_name:".json_encode($location_name);
  2328.                     SELF::createApiLog($log_data);
  2329.                     if(!empty($location_name)){
  2330.                         $getlocationInfo DataObject\Locations::getBylocation_name($location_name1);
  2331.                         $log_data $api_log_info." | getlocationInfo :".json_encode($getlocationInfo);
  2332.                         SELF::createApiLog($log_data);
  2333.                         if((!empty($getlocationInfo))){
  2334.                             $loc_name = (!empty($getlocationInfo->getlocation_name()))?$getlocationInfo->getlocation_name():'';
  2335.                             $loc_code = (!empty($getlocationInfo->getlocation_code()))?$getlocationInfo->getlocation_code():'';
  2336.                         } 
  2337.                         $log_data $api_log_info." | loc_name :".json_encode($loc_name)." | loc_code :".json_encode($loc_code);
  2338.                         SELF::createApiLog($log_data);                     
  2339.                     }
  2340.                     $data = array("pincode" => $entrie->getpincode(),
  2341.                                     "store_code" => $loc_code,
  2342.                                     "location_name" => $loc_name,
  2343.                                     "city_name" => $entrie->getcity(),
  2344.                                     "state" => $entrie->getstate(),
  2345.                                     "delivery_type" => $entrie->getdeliverytype(),
  2346.                                     "is_shipping_applicable" => $entrie->getis_shipping_applicable(),
  2347.                                     "merichakki_available" => $entrie->getmerichakki_available(),
  2348.                                     "nammachakki_available" => $entrie->getnammachakki_available(),
  2349.                                     "vin_instance" => $entrie->getvin_instance(),
  2350.                                 );
  2351.                 }
  2352.             }  else {
  2353.                 $data "Pincode is mandatory";
  2354.             }      
  2355.         } 
  2356.         else
  2357.             $data[] = ['message'=>$message];
  2358.         if(!empty($data)){
  2359.             $success = (empty($data['pincode'])) ? false true;
  2360.             if ($success) {
  2361.                 return $this->json(["success" => $success"data" => $data]);
  2362.             } else {
  2363.                 return $this->json(["success" => $success'message' => $data]);
  2364.             }
  2365.         }else{
  2366.             return $this->json(["success" => false"message" => "Service not available"]);
  2367.         }
  2368.       
  2369.      }
  2370.     /*------------------------------ End of Pincode Related APIs -------------------------*/
  2371.     /*---------------------------------- Voucher Related APIs ----------------------------*/
  2372.     /**
  2373.      * @Route("api/getvouchersdata", methods={"POST"})
  2374.      */
  2375.     public function getvouchersdataAction(Request $request)
  2376.     {
  2377.         $api_log_info "API:Get Vouchers list by multiple voucher codes - ".date("YmdHis")." ".time();
  2378.         $log_data "Started - ".$api_log_info;
  2379.         SELF::createApiLog($log_data);
  2380.         $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  2381.         $log_data $api_log_info." | reqparams:".json_encode($reqparams);
  2382.         SELF::createApiLog($log_data);
  2383.         $vouchercodes = (isset($reqparams['vouchercodes']))?$reqparams['vouchercodes']:'';
  2384.         $vouchertype = (isset($reqparams['vouchertype']))?$reqparams['vouchertype']:'';
  2385.         $log_data $api_log_info." | vouchercodes:".json_encode($vouchercodes)." | vouchertype:".json_encode($vouchertype);
  2386.         SELF::createApiLog($log_data);
  2387.         // $factorycode = $request->get('factorycode');
  2388.         if(($vouchercodes == "" || !is_array($vouchercodes)) && ($vouchertype == '' || ($vouchertype && !in_array($vouchertype, ["Master""all"]))))
  2389.         {
  2390.             
  2391.             $data "Voucher Code(s) OR Voucher Type is(are) mandatory, Voucher Type must be like Master OR all!";
  2392.             $log_data $api_log_info." | data:".json_encode($data);
  2393.             SELF::createApiLog($log_data);
  2394.         } else 
  2395.         {
  2396.             // die;
  2397.             $data SELF::verifyauthToken($api_log_info);
  2398.             $log_data $api_log_info." | data:".json_encode($data);
  2399.             SELF::createApiLog($log_data);
  2400.             if($data == "No data found")
  2401.             {
  2402.                 $vouchertype = ($vouchertype == 'all')?'Voucher':$vouchertype;
  2403.                 /*---- Get Master Voucher data by Master Voucher Code ---------*/
  2404.                 $master_voucher "Master_Voucher";
  2405.                 $masterVoucherData DataObject\Vouchers::getByvoucher_code($master_voucher1);
  2406.                 
  2407.                 $projectUrl  = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' 'https://' 'http://';
  2408.                 $projectUrl .= $_SERVER['SERVER_NAME'];
  2409.                 $log_data $api_log_info." | projectUrl:".json_encode($projectUrl);
  2410.                 SELF::createApiLog($log_data);
  2411.                 /*---- Check Factory by Code ---------*/
  2412.                 $vouchersData = new DataObject\Vouchers\Listing();
  2413.                 if($vouchercodes)
  2414.                 $vouchersData->setCondition("voucher_code IN (?)", [$vouchercodes]);
  2415.                 else if($vouchertype)
  2416.                 $vouchersData->setCondition("voucher_type IN (?)", [$vouchertype]);
  2417.                 $vouchersData->load();
  2418.                 $log_data $api_log_info." | vouchersData count:".json_encode(count($vouchersData));
  2419.                 SELF::createApiLog($log_data);
  2420.                 if(!empty($vouchersData) && count($vouchersData)>0){
  2421.                     $data = [];
  2422.                     foreach($vouchersData as $voucherData){
  2423.                         $log_data $api_log_info." | voucherData:".json_encode($voucherData);
  2424.                         SELF::createApiLog($log_data);
  2425.                         $voucher_logo_path = ($voucherData->getvoucher_type() == "Master")?$masterVoucherData->getvoucher_logo():$voucherData->getvoucher_logo();
  2426.                         $voucher_logo_path $projectUrl."/uploads/".$voucher_logo_path;
  2427.                         $voucher_background_image_path $projectUrl."/uploads/".($voucherData->getvoucher_type() == "Master")?$masterVoucherData->getvoucher_background_image():$voucherData->getvoucher_background_image();
  2428.                         $voucher_background_image_path $projectUrl."/uploads/".$voucher_background_image_path;
  2429.                         $curdata = array(
  2430.                             "id" => $voucherData->getId(),
  2431.                             "voucher_code" => $voucherData->getvoucher_code(),
  2432.                             "about_offer" => ($voucherData->getvoucher_type() == "Master")?$masterVoucherData->getabout_offer():$voucherData->getabout_offer(),
  2433.                             "avail_offer" => ($voucherData->getvoucher_type() == "Master")?$masterVoucherData->getavail_offer():$voucherData->getavail_offer(),
  2434.                             "voucher_logo_path" => $voucher_logo_path,
  2435.                             "voucher_background_image_path" => $voucher_background_image_path);
  2436.                         $log_data $api_log_info." | curdata:".json_encode($curdata);
  2437.                         SELF::createApiLog($log_data);
  2438.                         array_push($data$curdata);
  2439.                     }
  2440.                 } else {
  2441.                     $data "No data found!";
  2442.                     $log_data $api_log_info." | data:".json_encode($data);
  2443.                     SELF::createApiLog($log_data);
  2444.                 }
  2445.             }
  2446.         }
  2447.         $return_data = ["success" => true"data" => $data];
  2448.         $log_data "Ended - ".$api_log_info." | return_data:".json_encode($return_data);
  2449.         SELF::createApiLog($log_data);
  2450.         return $this->json(["success" => true"data" => $data]);
  2451.     }
  2452.     /*------------------------------ End of Voucher Related APIs -------------------------*/
  2453.     /*---------------------------------- Log Related APIs ----------------------------*/
  2454.     /**
  2455.      * @Route("/api/log_info/{date?}")
  2456.      */
  2457.     public function log_infoAction($date)
  2458.     {
  2459.         // $date = ($date == '')?date("Y-m-d", strtotime("-1 day")):$date;
  2460.         $date = ($date == '')?date("Y-m-d"):$date;
  2461.         if($date == '')
  2462.         {
  2463.             $data "Date is mandatory!";
  2464.         } else {
  2465.             $file '../var/log/slot-api-log_'.$date.'.txt';
  2466.             if(file_exists($file)){
  2467.                 $myfile fopen($file"r") or die("Unable to open file!");
  2468.                 $data fread($myfile,filesize($file));
  2469.                 fclose($myfile);
  2470.             } else {
  2471.                 $data "The file is not exited!";
  2472.             }
  2473.         }
  2474.         return $this->json(["success" => true"date" => $date"data" => $data]);
  2475.     }
  2476.     /**
  2477.      * @Route("/api/log_info_data")
  2478.      */
  2479.     public function log_info_dataAction(Request $requet)
  2480.     {
  2481.         $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  2482.         $date = (isset($reqparams['date']))?$reqparams['date']:'';
  2483.         $from_line = (isset($reqparams['from_line']))?$reqparams['from_line']:'';
  2484.         $to_line = (isset($reqparams['to_line']))?$reqparams['to_line']:'';
  2485.         $date = ($date == '')?date("Y-m-d"):$date;
  2486.         if($date == '' || $from_line == '' || $to_line == '')
  2487.         {
  2488.             $data "Date, from_line and to_line are mandatory!";
  2489.         } else {
  2490.             $file '../var/log/slot-api-log_'.$date.'.txt';
  2491.             if(file_exists($file)){
  2492.                 $splitdata array_slice(file($file), $from_line$to_line);
  2493.                 echo $data implode(''$splitdata); die;
  2494.             } else {
  2495.                 $data "The file is not exited!";
  2496.             }
  2497.         }
  2498.         return $this->json(["success" => true"date" => $date"data" => $data]);
  2499.     }
  2500.     /**
  2501.      * @Route("/api/delete_log_file/{date}")
  2502.      */
  2503.     public function delete_log_fileAction($date)
  2504.     {
  2505.         if($date == '')
  2506.         {
  2507.             $data "Date is mandatory!";
  2508.         } else {
  2509.             $message SELF::verifyauthToken();
  2510.         
  2511.             if($message == "No data found")
  2512.             {
  2513.                 $file '../var/log/slot-api-log_'.$date.'.txt';
  2514.                 if(file_exists($file)){
  2515.                     unlink($file);
  2516.                     $data "Deleted the file successfully!";
  2517.                 } else {
  2518.                     $data "The file is not exited!";
  2519.                 }
  2520.             }else $data[] = ['message'=>$message];
  2521.         }
  2522.         return $this->json(["success" => true"date" => $date"data" => $data]);
  2523.     }
  2524.     /**
  2525.      * @Route("/api/delete_log_files")
  2526.      */
  2527.     public function delete_log_filesAction(Request $request)
  2528.     {
  2529.         $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  2530.         $fromdate = (isset($reqparams['fromdate']))?$reqparams['fromdate']:'';
  2531.         $todate = (isset($reqparams['todate']))?$reqparams['todate']:'';
  2532.         if($fromdate == '' || $todate == '')
  2533.         {
  2534.             $data "From Date and To Date are mandatory!";
  2535.         } else {
  2536.             $message SELF::verifyauthToken();
  2537.         
  2538.             if($message == "No data found")
  2539.             {
  2540.                 $rangeDates SELF::getDatesFromRange($fromdate$todate);
  2541.                 // echo 'rangeDates:<pre>';
  2542.                 // print_r($rangeDates); die;
  2543.                 foreach($rangeDates as $rangeDateInfo){
  2544.                     $file '../var/log/slot-api-log_'.$rangeDateInfo.'.txt';
  2545.                     if(file_exists($file)){
  2546.                         unlink($file);
  2547.                         $data "Deleted the file successfully!";
  2548.                     } else {
  2549.                         $data = (isset($data) && $data == "Deleted the file successfully!")?$data:"The file is not exited!";
  2550.                     }
  2551.                 }
  2552.             }else $data[] = ['message'=>$message];
  2553.         }
  2554.         return $this->json(["success" => true"fromdate" => $fromdate"todate" => $todate"data" => $data]);
  2555.     }
  2556.     /**
  2557.      * @Route("/api/get_log_files")
  2558.      */
  2559.     public function get_log_filesAction(Request $request)
  2560.     {
  2561.         $reqparams = (array) json_decode(file_get_contents('php://input'), TRUE);
  2562.         $fromdate = (isset($reqparams['fromdate']))?$reqparams['fromdate']:'';
  2563.         $todate = (isset($reqparams['todate']))?$reqparams['todate']:'';
  2564.         $filenames = [];
  2565.         if($fromdate == '' || $todate == '')
  2566.         {
  2567.             $data "From Date and To Date are mandatory!";
  2568.         } else {
  2569.             $message SELF::verifyauthToken();
  2570.         
  2571.             if($message == "No data found")
  2572.             {
  2573.                 $rangeDates SELF::getDatesFromRange($fromdate$todate);
  2574.                 // echo 'rangeDates:<pre>';
  2575.                 // print_r($rangeDates); die;
  2576.                 foreach($rangeDates as $rangeDateInfo){
  2577.                     $file '../var/log/slot-api-log_'.$rangeDateInfo.'.txt';
  2578.                     if(file_exists($file)){
  2579.                         array_push($filenames'slot-api-log_'.$rangeDateInfo.'.txt');
  2580.                     } else {
  2581.                         $msg = (!empty($filenames))?'':"The file is not exited!";
  2582.                     }
  2583.                 }
  2584.                 $data = (!empty($filenames))?$filenames:$msg;
  2585.             }else $data[] = ['message'=>$message];
  2586.         }
  2587.         return $this->json(["success" => true"fromdate" => $fromdate"todate" => $todate"data" => $data]);
  2588.     }
  2589.     /*------------------------------ End of Log Related APIs -------------------------*/
  2590.     /**
  2591.      * @Route("/location/locationslist")
  2592.      */
  2593.     public function locationslist()
  2594.     {
  2595.         $log_data "Started - API:Get All Locations";
  2596.         SELF::createApiLog($log_data);
  2597.         $message SELF::verifyauthToken();
  2598.         $log_data "API:Get All Locations | message:".json_encode($message);
  2599.         SELF::createApiLog($log_data);
  2600.         if($message == "No data found")
  2601.         {
  2602.             $locationsList DataObject\Locations::getList();
  2603.             $locationsList->load();
  2604.             $log_data "API:Get All Locations | locationsList count :".json_encode(count($locationsList));
  2605.             SELF::createApiLog($log_data);
  2606.             if(count($locationsList) > 0){
  2607.                 foreach ($locationsList as $key => $location) {
  2608.                     $log_data "API:Get All Locations | location :".json_encode($location);
  2609.                     SELF::createApiLog($log_data);
  2610.                     $data[] = array(
  2611.                         "Id" => $location->getId(),
  2612.                         "location_name" => $location->getLocation_name(),
  2613.                         "location_code" => $location->getLocation_code());
  2614.                     $log_data "API:Get All Locations | data :".json_encode($data);
  2615.                     SELF::createApiLog($log_data);
  2616.                 }
  2617.             } else $data[] = ['message'=>$message];
  2618.         } else $data[] = ['message'=>$message];
  2619.         $log_data "Ended - API:Get All Locations | data :".json_encode($data);
  2620.         SELF::createApiLog($log_data);
  2621.         
  2622.         return $this->json(["success" => true"data" => $data]);
  2623.     }
  2624.     /*--------------- Authentication related methods ----------------*/
  2625.     public function generateAuthToken($userInfo=[])
  2626.     {
  2627.         /*------------- Generate MDF encode --------------*/
  2628.         $generateAuthToken md5(time());
  2629.         $jwtdata = array(
  2630.             "generateAuthToken" => $generateAuthToken
  2631.         );
  2632.         /*------------- Generate JWT Token ---------------*/
  2633.         $jwt_check 0;
  2634.         if(!empty($userInfo)){
  2635.             $id $userInfo['id'];//1024;
  2636.             $firstname $userInfo['firstname'];//'Tex';
  2637.             $lastname $userInfo['lastname'];//'Hardrock';
  2638.             $email $userInfo['email'];//'dino@stone.age';
  2639.             $secret_key "951e345a17ab26f80ec0e16b1d2a0c2a";
  2640.             $issuer_claim "pimcore6.local"// this can be the servername
  2641.             $audience_claim "Babu";
  2642.             $issuedat_claim time(); // issued at
  2643.             $notbefore_claim $issuedat_claim 10//not before in seconds
  2644.             $expire_claim $issuedat_claim 60*5// expire time in seconds
  2645.             $token = array(
  2646.                 "iss" => $issuer_claim,
  2647.                 "aud" => $audience_claim,
  2648.                 "iat" => $issuedat_claim,
  2649.                 "nbf" => $notbefore_claim,
  2650.                 "exp" => $expire_claim,
  2651.                 "data" => array(
  2652.                     "id" => $id,
  2653.                     "firstname" => $firstname,
  2654.                     "lastname" => $lastname,
  2655.                     "email" => $email
  2656.             ));
  2657.             $jwt JWT::encode($token$secret_key'HS256');
  2658.             
  2659.             $jwtdata = array(
  2660.                 "generateAuthToken" => $generateAuthToken,
  2661.                 "jwt" => $jwt,
  2662.                 "email" => $email,
  2663.                 "expireAt" => $expire_claim
  2664.             );
  2665.         }
  2666.         return $jwtdata;
  2667.     }
  2668.     public function verifyauthToken1()
  2669.     {
  2670.         $message "No data found"$tokenCheck 0;
  2671.         $headers=array();
  2672.         foreach (getallheaders() as $name => $value) {
  2673.             $headers[$name] = $value;
  2674.             if($name == 'Authtoken'$tokenCheck 1;
  2675.         }
  2676.         if($tokenCheck == 0){
  2677.             $message "Authentication Token is missing";;
  2678.         } else {
  2679.             $Authtoken $headers['Authtoken'];
  2680.         
  2681.             $dbConnection \Pimcore\Db::get();
  2682.             $authTokencheck $dbConnection->fetchOne("SELECT id FROM users WHERE authToken = '".$Authtoken."' ");
  2683.             if(empty($authTokencheck)){
  2684.                 $message "Authentication Token is mismatch";
  2685.             } else {
  2686.             }
  2687.         }
  2688.         return $message;
  2689.     }
  2690.     public function verifyauthToken2()
  2691.     {
  2692.         $api_key 'api-key';
  2693.         $api_key_value 'cGltY29yZWFwaWtleXZhbHVl';//base64encode('pimcoreapikeyvalue);
  2694.         $message "No data found"$tokenCheck 0$apikeyCheck 0$jwtCheck 0;$tokenMsg ''$apikeyMsg ''$jwtMsg '';
  2695.         $headers=array();
  2696.         foreach (getallheaders() as $name => $value) {
  2697.             $headers[$name] = $value;
  2698.             if($name == 'Authtoken'$tokenCheck 1;
  2699.             if($name == 'Api-Key'$apikeyCheck 1;
  2700.             if($name == 'Authorization'$jwtCheck 1;
  2701.         }
  2702.         // echo 'arr:<pre>';
  2703.         // print_r($headers); 
  2704.         // die;
  2705.         if($tokenCheck == && $apikeyCheck == && $jwtCheck == 0){
  2706.             $message "Fill any one of the Authentication Token, Api-Key Or JWT token!";;
  2707.         } else {
  2708.             $tokenCheck_valid 0$apikeyCheck_valid 0$jwtTokenCheck_valid 0;
  2709.             /*--------------------- Validating Auth Token -----------------*/
  2710.             if($tokenCheck == 1)
  2711.             {
  2712.                 $Authtoken $headers['Authtoken'];
  2713.         
  2714.                 $dbConnection \Pimcore\Db::get();
  2715.                 $authTokencheck $dbConnection->fetchOne("SELECT id FROM users WHERE authToken = '".$Authtoken."' ");
  2716.                 if(empty($authTokencheck)){
  2717.                     $tokenMsg "Authentication Token is mismatch";
  2718.                 } else {
  2719.                     $tokenCheck_valid 1;
  2720.                 }
  2721.             }
  2722.             /*--------------------- Validating Api Key -----------------*/
  2723.             if($apikeyCheck == 1)
  2724.             {
  2725.                 $AuthApikey $headers['Api-Key'];
  2726.                 if(empty($AuthApikey)){
  2727.                     $apikeyMsg "Key is mismatch";
  2728.                 } else if($AuthApikey != $api_key_value){
  2729.                     $apikeyMsg "key is mismatch";
  2730.                 } else {
  2731.                     $apikeyCheck_valid 1;
  2732.                 }
  2733.             }
  2734.             /*--------------------- Validating JWT Token -----------------*/
  2735.             if($jwtCheck == 1)
  2736.             {
  2737.                 $secret_key "951e345a17ab26f80ec0e16b1d2a0c2a";
  2738.                 $jwt null;
  2739.                 $authHeader $_SERVER['HTTP_AUTHORIZATION'];
  2740.                 $arr explode(" "$authHeader);
  2741.                 $jwt $arr[1];
  2742.                 if($jwt){
  2743.                     try {
  2744.                         $decoded JWT::decode($jwt, new Key($secret_key'HS256'));
  2745.                         $jwtTokenCheck_valid 1;
  2746.                     }catch (ExpiredException $e){
  2747.                         $jwtMsg "Expired JWT Token!";//$e->getMessage();
  2748.                     }catch (Exception $e){
  2749.                         $jwtTokenCheck_valid 0;
  2750.                         $jwtMsg "Expired JWT Token!";//$e->getMessage();
  2751.                     }
  2752.                 } else {
  2753.                     $jwtMsg "JWT Token is missing";
  2754.                 }
  2755.             }
  2756.             $message '';
  2757.             if($tokenMsg != '' || $apikeyMsg != '' || $jwtMsg != '')
  2758.             {
  2759.                 $message = ($tokenMsg != '')?"Token Message:".$message.$tokenMsg:$message;
  2760.                 $message = ($apikeyMsg != '')?"".$message." | Api-Key Message:".$apikeyMsg:$message;
  2761.                 $message = ($jwtMsg != '')?"".$message." | JWT Message:".$jwtMsg:$message;
  2762.             }
  2763.             $message = ($tokenCheck_valid == || $apikeyCheck_valid == || $jwtTokenCheck_valid == 1)?"No data found":$message;
  2764.         }
  2765.         return $message;
  2766.     }
  2767.     public function verifyauthToken($api_log_info='')
  2768.     {        
  2769.         $start_method_log_info "Verify Auth Token Method";
  2770.         $api_log_method_info = (!empty($api_log_info))?$api_log_info." | Started - ".$start_method_log_info:"Started - ".$start_method_log_info;
  2771.         $log_data $api_log_method_info;
  2772.         SELF::createApiLog($log_data);
  2773.         $api_log_method_info = (!empty($api_log_info))?$api_log_info." | ".$start_method_log_info:$start_method_log_info;
  2774.         $api_key 'api-key';
  2775.         $api_key_value 'cGltY29yZWFwaWtleXZhbHVl';//base64encode('pimcoreapikeyvalue);
  2776.         $message "No data found"$apikeyCheck 0$apikeyMsg '';
  2777.         $headers=array();
  2778.         foreach (getallheaders() as $name => $value) {
  2779.             $headers[$name] = $value;
  2780.             if($name == 'Api-Key'$apikeyCheck 1;
  2781.         }
  2782.         
  2783.         if($apikeyCheck == 0){
  2784.             $message "Api-Key is mandatory!";;
  2785.         } else {
  2786.             $apikeyCheck_valid 0;
  2787.             /*--------------------- Validating Api Key -----------------*/
  2788.             if($apikeyCheck == 1)
  2789.             {
  2790.                 $AuthApikey $headers['Api-Key'];
  2791.                 if(empty($AuthApikey)){
  2792.                     $message "Key is empty, Api-Key is mandatory";
  2793.                 } else if($AuthApikey != $api_key_value){
  2794.                     $message "key is mismatch";
  2795.                 } else {
  2796.                     $apikeyCheck_valid 1;
  2797.                 }
  2798.             }
  2799.         }
  2800.         $apikeyCheck_valid 1;
  2801.         $message "No data found";
  2802.         $api_log_method_info = (!empty($api_log_info))?$api_log_info." | Ended - ".$start_method_log_info:"Ended - ".$start_method_log_info;
  2803.         $log_data $api_log_method_info." | message:".$message;
  2804.         SELF::createApiLog($log_data);
  2805.         return $message;
  2806.     }
  2807.     /*--------------- End of Authentication related methods ------------*/
  2808.     /*-------------------------- Sub methods ---------------------------*/
  2809.     public function generateObjFolder($folderName,$location_code){
  2810.         $yr date("Y");
  2811.         $mt date("M");
  2812.         $dy date("d");
  2813.         $path "/".$folderName."/".$yr."/".$mt."/".$dy;
  2814.         $path "/".$folderName."/".$location_code;
  2815.         $object DataObject::getByPath($path);
  2816.         if(!$object){
  2817.             $path1 "/".$folderName."/".$yr."/".$mt;
  2818.             $object1 DataObject::getByPath($path1);
  2819.             if(!$object1){
  2820.                 $path2 "/".$folderName."/".$yr;
  2821.                 $object2 DataObject::getByPath($path2);                
  2822.                 if(!$object2){
  2823.                     $path3 "/".$folderName;
  2824.                     $object3 DataObject::getByPath($path3);                
  2825.                     if(!$object3){
  2826.                         $createAssetFolder DoService::createFolderByPath($path3);
  2827.                         $createAssetFolder DoService::createFolderByPath($path2);
  2828.                         $createAssetFolder DoService::createFolderByPath($path1);
  2829.                         $createAssetFolder DoService::createFolderByPath($path);
  2830.                         $objParentId $createAssetFolder->getId();
  2831.                     }else {
  2832.                         $createAssetFolder DoService::createFolderByPath($path2);
  2833.                         $createAssetFolder DoService::createFolderByPath($path1);
  2834.                         $createAssetFolder DoService::createFolderByPath($path);
  2835.                         $objParentId $createAssetFolder->getId();
  2836.                     }
  2837.                 }else {
  2838.                     $createAssetFolder DoService::createFolderByPath($path1);
  2839.                     $createAssetFolder DoService::createFolderByPath($path);
  2840.                     $objParentId $createAssetFolder->getId();
  2841.                 }
  2842.             } else {
  2843.                 $createAssetFolder DoService::createFolderByPath($path);
  2844.                 $objParentId $createAssetFolder->getId();
  2845.             }
  2846.         } else
  2847.         $objParentId $object->getId();
  2848.         return $objParentId;
  2849.     }
  2850.     public function generateSlotObjFolder($folderName,$delivery_mode,$location_code){
  2851.         $yr date("Y");
  2852.         $mt date("M");
  2853.         $dy date("d");
  2854.         $path "/".$folderName."/".$delivery_mode."/".$location_code;//."/".$date.'-'.$location_code;
  2855.         $object DataObject::getByPath($path);
  2856.         if(!$object){
  2857.             $path1 "/".$folderName."/".$delivery_mode;//."/".$location_code."/".$date;
  2858.             $object1 DataObject::getByPath($path1);
  2859.             if(!$object1){
  2860.                 $path2 "/".$folderName;//."/".$delivery_mode."/".$location_code;
  2861.                 $object2 DataObject::getByPath($path2);                
  2862.                 if(!$object2){
  2863.                     $createAssetFolder DoService::createFolderByPath($path2);
  2864.                     $createAssetFolder DoService::createFolderByPath($path1);
  2865.                     $createAssetFolder DoService::createFolderByPath($path);
  2866.                     $objParentId $createAssetFolder->getId();
  2867.                 }else {
  2868.                     $createAssetFolder DoService::createFolderByPath($path1);
  2869.                     $createAssetFolder DoService::createFolderByPath($path);
  2870.                     $objParentId $createAssetFolder->getId();
  2871.                 }
  2872.             } else {
  2873.                 $createAssetFolder DoService::createFolderByPath($path);
  2874.                 $objParentId $createAssetFolder->getId();
  2875.             }
  2876.         } else
  2877.         $objParentId $object->getId();
  2878.         return $objParentId;
  2879.     }
  2880.     public function getWeekDates($holidaysList$todaydate$delSlotTimesAvailibility){
  2881.         $jj=0$weekdates = [];
  2882.         $slot_prepare_days $delSlotTimesAvailibility['slot_prepare_days'];
  2883.         $slot_generate_days $delSlotTimesAvailibility['slot_generate_days'];
  2884.         $saturday_slot_availability $delSlotTimesAvailibility['saturday_slot_availability'];
  2885.         $sunday_slot_availability $delSlotTimesAvailibility['sunday_slot_availability'];
  2886.         $todaydate date('Y-m-d'strtotime($todaydate ' +'.$slot_prepare_days.' day'));
  2887.         $totDays $slot_generate_days+7;
  2888.         for($ii=1$ii<$totDays$ii++)
  2889.         {
  2890.             if($jj >= $slot_generate_days) break;
  2891.             if(empty($holidaysList) || !in_array($todaydate$holidaysList)){
  2892.                 $weekDay date('w'strtotime($todaydate));
  2893.                 if(($weekDay == && $sunday_slot_availability == 'Yes') || ($weekDay == && $saturday_slot_availability == 'Yes') || !in_array($weekDay, [0,6]))
  2894.                 {
  2895.                     $weekdates[] = $todaydate;
  2896.                     $jj=$jj+1;
  2897.                 }
  2898.             }
  2899.             $todaydate date('Y-m-d'strtotime($todaydate ' +1 day'));
  2900.         }
  2901.         // echo '<pre>'; print_r($weekdates); die;
  2902.         return $weekdates;
  2903.     }
  2904.     public function getSettingInfo($api_log_info='')
  2905.     {
  2906.         $start_method_log_info "Setting info Method";
  2907.         $api_log_method_info = (!empty($api_log_info))?$api_log_info." | Started - ".$start_method_log_info:"Started - ".$start_method_log_info;
  2908.         $log_data $api_log_method_info;
  2909.         SELF::createApiLog($log_data);
  2910.         $api_log_method_info = (!empty($api_log_info))?$api_log_info." | ".$start_method_log_info:$start_method_log_info;
  2911.         /*------ Get Settings Class data --------*/
  2912.         $dbConnection \Pimcore\Db::get();
  2913.         $settingsClassId $dbConnection->fetchOne(" SELECT id FROM classes WHERE LOWER(name) = 'Settings' ");
  2914.         $settingsObject "object_".$settingsClassId;
  2915.         
  2916.         $log_data $api_log_method_info." | settingsObject:".json_encode($settingsObject);
  2917.         SELF::createApiLog($log_data);
  2918.         
  2919.         $settingsId $dbConnection->fetchOne(" select * from ".$settingsObject." WHERE setting_flag = 1");
  2920.         
  2921.         $log_data $api_log_method_info." | settingsId:".json_encode($settingsId);
  2922.         SELF::createApiLog($log_data);
  2923.         /*----- End of Get Settings Class data ---------*/
  2924.         /*--------------- Settings info ----------------*/
  2925.         $settingsInfo DataObject\Settings::getById($settingsId);
  2926.         
  2927.         $log_data $api_log_method_info." | settingsInfo:".json_encode($settingsInfo);
  2928.         SELF::createApiLog($log_data);
  2929.         $settingDataId $settingsInfo->getId();
  2930.         $setting_deliveryModes $settingsInfo->getdelivery_modes();
  2931.         $setting_slot_time_flag = (!empty($settingsInfo->getslottime()))?$settingsInfo->getslottime():"18:00";
  2932.         $stg_deliveryslot_config_is_upcountry_configuration_applicable = ($settingsInfo->getdeliveryslot_config_is_upcountry_configuration_applicable())?$settingsInfo->getdeliveryslot_config_is_upcountry_configuration_applicable():'No';
  2933.         $stg_delslot_normalloc_morethan_fromtime = ($settingsInfo->getdelslot_normalloc_morethan_fromtime())?$settingsInfo->getdelslot_normalloc_morethan_fromtime():"00:00";
  2934.         $stg_delslot_normalloc_lessthaneq_totime = ($settingsInfo->getdelslot_normalloc_lessthaneq_totime())?$settingsInfo->getdelslot_normalloc_lessthaneq_totime():"18:00";
  2935.         $stg_delslot_normalloc_bw_from_to_time_extra_generate_slotdays = ($settingsInfo->getdelslot_normalloc_bw_from_to_time_extra_generate_slotdays())?$settingsInfo->getdelslot_normalloc_bw_from_to_time_extra_generate_slotdays():1;
  2936.         $stg_delslot_normalloc_after_totime_extra_generate_slotdays = ($settingsInfo->getdelslot_normalloc_after_totime_extra_generate_slotdays())?$settingsInfo->getdelslot_normalloc_after_totime_extra_generate_slotdays():2;
  2937.         $stg_normalloc_slot_generate_days = ($stg_delslot_normalloc_after_totime_extra_generate_slotdays>$stg_delslot_normalloc_bw_from_to_time_extra_generate_slotdays)?$stg_delslot_normalloc_after_totime_extra_generate_slotdays:$stg_delslot_normalloc_bw_from_to_time_extra_generate_slotdays;
  2938.         $stg_delslot_upcountryloc_morethan_fromtime = ($settingsInfo->getdelslot_upcountryloc_morethan_fromtime())?$settingsInfo->getdelslot_upcountryloc_morethan_fromtime():"00:00";
  2939.         $stg_delslot_upcountryloc_lessthaneq_totime = ($settingsInfo->getdelslot_upcountryloc_lessthaneq_totime())?$settingsInfo->getdelslot_upcountryloc_lessthaneq_totime():"11:00";
  2940.         $stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays = ($settingsInfo->getdelslot_upcountryloc_bw_from_to_time_extra_generate_slotdays())?$settingsInfo->getdelslot_upcountryloc_bw_from_to_time_extra_generate_slotdays():4;
  2941.         $stg_delslot_upcountryloc_after_totime_extra_generate_slotdays = ($settingsInfo->getdelslot_upcountryloc_after_totime_extra_generate_slotdays())?$settingsInfo->getdelslot_upcountryloc_after_totime_extra_generate_slotdays():5;
  2942.         $stg_upcountryloc_slot_generate_days = ($stg_delslot_upcountryloc_after_totime_extra_generate_slotdays>$stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays)?$stg_delslot_upcountryloc_after_totime_extra_generate_slotdays:$stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays;
  2943.         $stg_is_deliveryfee_config_applicable $settingsInfo->getis_deliveryfee_config_applicable();
  2944.         $stg_deliveryfee_config $settingsInfo->getdeliveryfee_config();
  2945.         $stg_deliveryfee_config $settingsInfo->getdeliveryfee_config();
  2946.         $stg_deliveryfee_config_location_lessthan_charge $settingsInfo->getdeliveryfee_config_location_lessthan_charge();
  2947.         $stg_deliveryfee_config_location_greaterthanequal_charge $settingsInfo->getdeliveryfee_config_location_greaterthanequal_charge();
  2948.         $stg_deliveryfee_config_upcountry_lessthan_charge $settingsInfo->getdeliveryfee_config_upcountry_lessthan_charge();
  2949.         $stg_deliveryfee_config_upcountry_greaterthanequal_charge $settingsInfo->getdeliveryfee_config_upcountry_greaterthanequal_charge();
  2950.         /*----------- End of Settings Info -------------*/
  2951.         $settingsdata = ['settingDataId'=>$settingDataId,
  2952.                         'setting_deliveryModes'=>$setting_deliveryModes,
  2953.                         'setting_slot_time_flag'=>$setting_slot_time_flag,
  2954.                         'stg_deliveryslot_config_is_upcountry_configuration_applicable'=>$stg_deliveryslot_config_is_upcountry_configuration_applicable,
  2955.                         'stg_delslot_normalloc_morethan_fromtime'=>$stg_delslot_normalloc_morethan_fromtime,
  2956.                         'stg_delslot_normalloc_lessthaneq_totime'=>$stg_delslot_normalloc_lessthaneq_totime,
  2957.                         'stg_delslot_normalloc_bw_from_to_time_extra_generate_slotdays'=>$stg_delslot_normalloc_bw_from_to_time_extra_generate_slotdays,
  2958.                         'stg_delslot_normalloc_after_totime_extra_generate_slotdays'=>$stg_delslot_normalloc_after_totime_extra_generate_slotdays,
  2959.                         'stg_normalloc_slot_generate_days'=>$stg_normalloc_slot_generate_days,
  2960.                         'stg_delslot_upcountryloc_morethan_fromtime'=>$stg_delslot_upcountryloc_morethan_fromtime,
  2961.                         'stg_delslot_upcountryloc_lessthaneq_totime'=>$stg_delslot_upcountryloc_lessthaneq_totime,
  2962.                         'stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays'=>$stg_delslot_upcountryloc_bw_from_to_time_extra_generate_slotdays,
  2963.                         'stg_delslot_upcountryloc_after_totime_extra_generate_slotdays'=>$stg_delslot_upcountryloc_after_totime_extra_generate_slotdays,
  2964.                         'stg_upcountryloc_slot_generate_days'=>$stg_upcountryloc_slot_generate_days,
  2965.                         'stg_is_deliveryfee_config_applicable'=>$stg_is_deliveryfee_config_applicable,
  2966.                         'stg_deliveryfee_config'=>$stg_deliveryfee_config,
  2967.                         'stg_deliveryfee_config_location_lessthan_charge'=>$stg_deliveryfee_config_location_lessthan_charge,
  2968.                         'stg_deliveryfee_config_location_greaterthanequal_charge'=>$stg_deliveryfee_config_location_greaterthanequal_charge,
  2969.                         'stg_deliveryfee_config_upcountry_lessthan_charge'=>$stg_deliveryfee_config_upcountry_lessthan_charge,
  2970.                         'stg_deliveryfee_config_upcountry_greaterthanequal_charge'=>$stg_deliveryfee_config_upcountry_greaterthanequal_charge,
  2971.                         ];
  2972.         
  2973.         $api_log_method_info = (!empty($api_log_info))?$api_log_info." | Ended - ".$start_method_log_info:"Ended - ".$start_method_log_info;
  2974.         $log_data $api_log_method_info." | settingsdata:".json_encode($settingsdata);
  2975.         SELF::createApiLog($log_data);
  2976.         
  2977.         return $settingsdata;
  2978.     }
  2979.     function getDatesFromRange($start$end$dateformat="Y-m-d"){
  2980.         $dates = array($start);
  2981.         while(end($dates) < $end){
  2982.             $dates[] = date($dateformatstrtotime(end($dates).' +1 day'));
  2983.         }
  2984.         return $dates;
  2985.     }
  2986.     public function getSlotTimeDates($slot_generate_days$todaydate){
  2987.         $jj=0$weekdates = [];
  2988.         for($ii=1$ii<15$ii++)
  2989.         {
  2990.             if($jj >= 7) break;
  2991.             if(empty($holidaysList) || !in_array($todaydate$holidaysList)){
  2992.                 $weekdates[] = $todaydate;
  2993.                 $jj=$jj+1;
  2994.             }
  2995.             $todaydate date('Y-m-d'strtotime($todaydate ' +1 day'));
  2996.         }
  2997.         // echo '<pre>'; print_r($weekdates); die;
  2998.         return $weekdates;
  2999.     }
  3000.     public function getWorkingDate($slot_generate_days$todaydate){
  3001.         $jj=0$weekdates = [];
  3002.         for($ii=1$ii<$slot_generate_days$ii++)
  3003.         {
  3004.             if(empty($holidaysList) || !in_array($todaydate$holidaysList)){
  3005.                 $weekdates[] = $todaydate;
  3006.                 $jj=$jj+1;
  3007.             }
  3008.             $todaydate date('Y-m-d'strtotime($todaydate ' +1 day'));
  3009.         }
  3010.         // echo '<pre>'; print_r($weekdates); die;
  3011.         return $weekdates;
  3012.     }
  3013.     public function createApiLog($content)
  3014.     {
  3015.         $file '../var/log/slot-api-log_'.date("Y-m-d").'.txt';
  3016.         // chmod($file, 0755);
  3017.         // if(!is_file($file)){
  3018.             // $contents = 'This is a test!';           // Some simple example content.
  3019.             // file_put_contents($file, $content);     // Save our content to the file.
  3020.             file_put_contents($filedate("Y-m-d H:i:s")." | ".$content."\n"FILE_APPEND);
  3021.             chmod($file0755);
  3022.         // }
  3023.     }
  3024.     /*----------------------- End of Sub methods -----------------------*/
  3025.     
  3026. }