src/ApplicationBundle/Controller/PublicPagesController.php line 4736

Open in your IDE?
  1. <?php
  2. namespace ApplicationBundle\Controller;
  3. use ApplicationBundle\Constants\EmployeeConstant;
  4. use ApplicationBundle\Constants\GeneralConstant;
  5. use ApplicationBundle\Constants\HumanResourceConstant;
  6. use ApplicationBundle\Entity\ApplicantDetails;
  7. use ApplicationBundle\Entity\Employee;
  8. use ApplicationBundle\Entity\EmployeeDetails;
  9. use ApplicationBundle\Entity\SysDepartment;
  10. use ApplicationBundle\Entity\SysUser;
  11. use ApplicationBundle\Interfaces\LoginInterface;
  12. use ApplicationBundle\Modules\Authentication\Constants\UserConstants; use ApplicationBundle\Modules\Api\Constants\ApiConstants;
  13. use ApplicationBundle\Modules\HumanResource\HumanResource;
  14. use ApplicationBundle\Modules\System\MiscActions;
  15. use ApplicationBundle\Modules\System\System;
  16. use ApplicationBundle\Modules\User\Company;
  17. use ApplicationBundle\Modules\User\Position;
  18. use ApplicationBundle\Modules\User\Users;
  19. use CompanyGroupBundle\Entity\EmsSite;
  20. use CompanyGroupBundle\Entity\EntityApplicantDetails;
  21. use CompanyGroupBundle\Modules\UserEntity\EntityUserM;
  22. use Endroid\QrCode\Builder\BuilderInterface;
  23. use Endroid\QrCodeBundle\Response\QrCodeResponse;
  24. use Google_Client;
  25. use Google_Service_Oauth2;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Symfony\Component\HttpFoundation\Response;
  29. use Symfony\Component\Routing\Generator\UrlGenerator;
  30. // honeyBee web routing controller
  31. class PublicPagesController extends GenericController implements LoginInterface
  32. {
  33.     // HoneybeeWeb upto this
  34.     public function GetApplicantDataForErpAction(Request $request)
  35.     {
  36.         $applicantId $request->request->get('applicantId');
  37.         if (!$applicantId) {
  38.             return new JsonResponse([
  39.                 'status' => 'error',
  40.                 'message' => 'Missing applicantId in request.'
  41.             ]);
  42.         }
  43.         $em_goc $this->getDoctrine()->getManager('company_group');
  44.         $entityApplicant $em_goc->getRepository("CompanyGroupBundle\\Entity\\EntityApplicantDetails")
  45.             ->findOneBy(['applicantId' => $applicantId]);
  46.         if (!$entityApplicant) {
  47.             return new JsonResponse([
  48.                 'status' => 'error',
  49.                 'message' => 'Applicant not found.'
  50.             ]);
  51.         }
  52.         return new JsonResponse([
  53.             'status' => 'success',
  54.             'centralData' => [
  55.                 'globalId' => $entityApplicant->getApplicantId(),
  56.                 'username' => $entityApplicant->getUsername(),
  57.                 'email' => $entityApplicant->getEmail(),
  58.                 'firstname' => $entityApplicant->getFirstname(),
  59.                 'lastname' => $entityApplicant->getLastname(),
  60.                 'image' => $entityApplicant->getImage(),
  61.                 'phone' => $entityApplicant->getPhone(),
  62.                 'address' => $entityApplicant->getPermAddr()
  63.             ]
  64.         ]);
  65.     }
  66.     public function ReturnJsonForListenerAction(Request $request$dataStr '')
  67.     {
  68.         $session $request->getSession();
  69.         $dataStrFromSess $session->get('jsonStrForListenerData');
  70.         $dataJson json_decode($dataStrFromSesstrue);
  71.         $session->set('jsonStrForListenerData'null);
  72.         if ($dataJson == null$dataJson = [];
  73.         return new JsonResponse($dataJson);
  74.     }
  75.     public function ZktEcoHandshakeAction(Request $request): Response
  76.     {
  77.         // ZKTeco sends heartbeat GET without POST body
  78.         ob_clean();
  79.         // Get device
  80.         $deviceSN $request->get('SN''');
  81.         if ($request->getMethod() === "GET") {
  82.         } else {
  83.             $em_goc $this->getDoctrine()->getManager('company_group');
  84.             $em $this->getDoctrine()->getManager();
  85.             $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  86.             $device $em_goc->getRepository('CompanyGroupBundle\\Entity\\Device')->findOneBy([
  87.                 'deviceSerial' => $deviceSN
  88.             ]);
  89.             // ZKTeco sends logs via POST
  90.             $content $request->getContent();
  91.             // Example: OP=ATTLOG&PIN=25&Time=2025-11-27%2012%3A20%3A33&...
  92.             parse_str($content$data); // Convert POST body to array
  93.             if ($request->get('table''') === 'ATTLOG') {
  94.                 if ($device) {
  95.                     $app $em_goc->getRepository('CompanyGroupBundle\\Entity\\CompanyGroup')->findOneBy([
  96.                         'appId' => $device->getAppId()
  97.                     ]);
  98.                     if ($app)   //can go local
  99.                     {
  100.                         $goc = [
  101.                             'dbName' => $app->getDbName(),
  102.                             'dbUser' => $app->getDbUser(),
  103.                             'dbPass' => $app->getDbPass(),
  104.                             'dbHost' => $app->getDbHost(),
  105.                             'serverAddress' => $app->getCompanyGroupServerAddress(),
  106.                             'port' => $app->getCompanyGroupServerPort() ?: 80,
  107.                             'appId' => $app->getAppId(),
  108. //                                 'serverId' => $entry->getServerId(),
  109.                         ];
  110.                         $connector $this->container->get('application_connector');
  111.                         $connector->resetConnection(
  112.                             'default',
  113.                             $goc['dbName'],
  114.                             $goc['dbUser'],
  115.                             $goc['dbPass'],
  116.                             $goc['dbHost'],
  117.                             $reset true
  118.                         );
  119.                         $em $this->getDoctrine()->getManager();
  120.                         $options = array(
  121.                             'notification_enabled' => $this->container->getParameter('notification_enabled'),
  122.                             'notification_server' => $this->container->getParameter('notification_server'),
  123.                         );
  124. //                    if($device->getDeviceMarker()=='_ZKTECO_GEN_')
  125.                         if (1) {
  126.                             $raw trim($request->getContent());
  127.                             // Multiple lines? split them
  128.                             $lines preg_split('/\r\n|\r|\n/'$raw);
  129.                             foreach ($lines as $line) {
  130.                                 $line trim($line);
  131.                                 if ($line === "") continue;
  132.                                 // Split on ANY whitespace
  133.                                 $parts preg_split('/\s+/'$line);
  134.                                 if (count($parts) < 3) {
  135.                                     continue; // invalid line
  136.                                 }
  137.                                 $pin $parts[0];
  138.                                 $date $parts[1];
  139.                                 $time $parts[2];
  140.                                 $verify $parts[3] ?? null;
  141.                                 $status $parts[4] ?? null;
  142.                                 $workcode $parts[5] ?? null;
  143.                                 $timestamp = new \DateTime("$date $time ".$device->getTimezoneStr());
  144.                                 $empId $pin;
  145.                                 $userId 0;
  146.                                 $today = new \DateTime();
  147. //                                $dtTs = $today->format('U');
  148.                             $dtTs $timestamp->format('U');
  149.                                 $appId $app->getAppId();
  150.                                 $statusToMarker = array(
  151.                                     => HumanResourceConstant::ATTENDANCE_MARKER_CLOCK_IN,
  152.                                     => HumanResourceConstant::ATTENDANCE_MARKER_CLOCK_OUT,
  153.                                     => HumanResourceConstant::ATTENDANCE_MARKER_GENERAL_TRACKING,
  154.                                     => HumanResourceConstant::ATTENDANCE_MARKER_GENERAL_TRACKING,
  155.                                     => HumanResourceConstant::ATTENDANCE_MARKER_CLOCK_OUT,
  156.                                     => HumanResourceConstant::ATTENDANCE_MARKER_CLOCK_OUT,
  157.                                 );
  158.                                 $employee $em->getRepository(Employee::class)->createQueryBuilder('A')
  159.                                     ->where("  A.idsByDevice like '" $device->getDeviceSerial() . "_" $pin "' or " .
  160.                                         "  A.idsByDevice like '%," $device->getDeviceSerial() . "_" $pin ",%' or " .
  161.                                         "  A.idsByDevice like '" $device->getDeviceSerial() . "_" $pin ",%' or " .
  162.                                         "  A.idsByDevice like '%," $device->getDeviceSerial() . "_" $pin "'"
  163.                                     )
  164.                                     ->getQuery()
  165.                                     ->setMaxResults(1)
  166.                                     ->getResult();
  167.                                 if (!empty($employee))
  168.                                     $empId $employee[0]->getEmployeeId();
  169.                                 if ($device->getClockInDetection() == 1)
  170.                                     $markerId $statusToMarker[$status];
  171.                                 else
  172.                                     $markerId HumanResourceConstant::ATTENDANCE_MARKER_START_WORKING_FORCED;
  173.                                 $response MiscActions::autoAttendanceGeneral($em$empId$userId$appId$dtTs$options0$markerId);
  174.                             }
  175.                         }
  176.                     } else if ($systemType == '_CENTRAL_') {
  177.                     } else {
  178.                     }
  179. //                    return new Response('OK', 200, [
  180. //                        "Content-Type" => "text/plain; charset=ascii"
  181. //                    ]);
  182.                 }
  183. //            MiscActions::ProcessQrData($em_goc, $em, $data);
  184.                 /// get the app id
  185.                 ///  if in same server then connect to that app dbase and find employee id
  186.                 // Save attendance log
  187.                 // $data['PIN']
  188.                 // $data['Time']
  189.                 // $data['WorkCode'] (optional)
  190.                 // Example saving logic here…
  191.             }
  192.             return new Response("OK"200, [
  193.                 "Content-Type" => "text/plain; charset=ascii"
  194.             ]);
  195.         }
  196.         // Define the desired TimeZone (360 minutes for UTC+06:00)
  197.         $timeZoneMinutes "+06:00";
  198. // Get the current time on your server and format it for the device
  199.         $currentTime date('Y-m-dTH:i:s');
  200.         if ($request->get('options''') == 'all')
  201.             $r "GET OPTION FROM: $deviceSN\r\n" .
  202.                 "Stamp=9999\r\n" .
  203.                 "OpStamp=" time() . "\r\n" .
  204.                 "ErrorDelay=60\r\n" .
  205.                 "Delay=30\r\n" .
  206.                 "ResLogDay=18250\r\n" .
  207.                 "ResLogDelCount=10000\r\n" .
  208.                 "ResLogCount=50000\r\n" .
  209.                 "TransTimes=00:00;14:05\r\n" .
  210.                 "TransInterval=1\r\n" .
  211.                 "SyncTime=3600\r\n" .
  212.                 "TransFlag=1111000000\r\n" .
  213. //            "Time=$currentTime\r\n" .
  214.                 "TimeZone=$timeZoneMinutes\r\n" .
  215.                 "Realtime=1\r\n" .
  216.                 "Encrypt=0";
  217. //        return $r;
  218.         else if ($request->get('type''') == 'time') {
  219.             $r "Time=" $currentTime $timeZoneMinutes;
  220.         } else
  221.             $r "OK\r\n";
  222. //        $r .= "C:SET OPTION TimeZone $timeZoneMinutes\r\n";
  223. //        $r .= "C:SET TIME " . $currentTime . "\r\n";
  224.         return new Response($r200, [
  225.             "Content-Type" => "text/plain; charset=ascii"
  226.         ]);
  227. //        return new Response('OK', 200, [
  228. //            "Content-Type" => "text/plain; charset=ascii"
  229. //        ]);
  230.         /*        $xml = '<?xml version="1.0" encoding="UTF-8"?><Response><Status>OK</Status></Response>';*/
  231. //
  232. //        return new Response(
  233. //            $xml,
  234. //            Response::HTTP_OK,
  235. //            [
  236. //                'Content-Type' => 'application/xml; charset=UTF-8'
  237. //            ]
  238. //        );
  239.     }
  240.     public function ZktEcoGetRequestAction(Request $request): Response
  241.     {
  242.         ob_clean();
  243.         return new Response('OK'200, [
  244.             "Content-Type" => "text/plain; charset=ascii"
  245.         ]);
  246.         $deviceSN $request->get('SN''');
  247.         $em_goc $this->getDoctrine()->getManager('company_group');
  248.         $em $this->getDoctrine()->getManager();
  249.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  250.         $device $em_goc->getRepository('CompanyGroupBundle\\Entity\\Device')->findOneBy([
  251.             'deviceSerial' => $deviceSN
  252.         ]);
  253.         // Default timezone (fallback)
  254.         $tzString 'UTC';
  255.         if ($device && $device->getTimezoneStr()) {
  256.             $tzString $device->getTimezoneStr();
  257.         }
  258.         // Format correct time
  259.         $tz = new \DateTimeZone($tzString);
  260.         $now = new \DateTime('now'$tz);
  261.         $formatted $now->format('Y-m-d H:i:s');
  262.         // Define the desired TimeZone (360 minutes for UTC+06:00)
  263.         $timeZoneMinutes 360;
  264. // Get the current time on your server and format it for the device
  265.         $currentTime $now->format('U');
  266. //        $now->modify('-5 days');
  267.         $r "";
  268. //        $r = "OK\r\n";
  269. //        $r .= "C:SET OPTION TimeZone $timeZoneMinutes\r\n";
  270. //        $r .= "C:SET TIME " . $currentTime . "\r\n";
  271.         $r .= "C:401:SET OPTIONS " .
  272.             "DateTime=" $now->format('U') .
  273. //         "DateTime=1764929449" .
  274. //            "\r\n".
  275. //            ",".
  276. //            "ServerTZ=" . $tzString.
  277.             "\r\n";
  278.         return new Response($r200, [
  279.             "Content-Type" => "text/plain; charset=ascii"
  280.         ]);
  281.         // ZKTeco TIME sync command
  282.         $cmd "SET TIME=" $formatted "\n";
  283.         $cmd "CMD=SET OPTIONS&DateTime=" $now->format('U') . '&TZ=' $tzString;
  284.         return new Response('OK'200, [
  285.             "Content-Type" => "text/plain; charset=ascii"
  286.         ]);
  287. //        return new Response($cmd, 200, [
  288. //            "Content-Type" => "text/plain; charset=ascii"
  289. //        ]);
  290. //        return new Response('', 200, [
  291. //            "Content-Type" => "text/plain; charset=ascii"
  292. //        ]);
  293.     }
  294.     public function ZktEcoDeviceCmdAction(Request $request): Response
  295.     {
  296.         ob_clean();
  297.         // Device is asking for commands â†’ return OK only
  298.         $responseString "OK";
  299.         $response = new Response($responseString);
  300.         return $response;
  301.     }
  302.     public function ZktEcoRtDataAction(Request $request): Response
  303.     {
  304.         $type $request->query->get('type');
  305.         $sn $request->query->get('SN');
  306.         // If device is asking for time
  307. //        if ($type === 'time')
  308.         if (0) {
  309.             // Example: Bangladesh time
  310.             ob_clean();
  311.             $deviceSN $request->get('SN''');
  312.             $em_goc $this->getDoctrine()->getManager('company_group');
  313.             $em $this->getDoctrine()->getManager();
  314.             $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  315.             $device $em_goc->getRepository('CompanyGroupBundle\\Entity\\Device')->findOneBy([
  316.                 'deviceSerial' => $deviceSN
  317.             ]);
  318.             // Default timezone (fallback)
  319.             $tzString 'UTC';
  320.             if ($device && $device->getTimezoneStr()) {
  321.                 $tzString $device->getTimezoneStr();
  322.             }
  323.             // Format correct time
  324.             $tz = new \DateTimeZone($tzString);
  325.             $now = new \DateTime('now'$tz);
  326.             $formatted $now->format('Y-m-d H:i:s');
  327.             // Define the desired TimeZone (360 minutes for UTC+06:00)
  328.             $timeZoneMinutes 360;
  329. // Get the current time on your server and format it for the device
  330.             $currentTime $now->format('U');
  331.             $r "";
  332. //        $r = "OK\r\n";
  333. //        $r .= "C:SET OPTION TimeZone $timeZoneMinutes\r\n";
  334. //        $r .= "C:SET TIME " . $currentTime . "\r\n";
  335.             $r .= "DateTime=" $now->format('U') .
  336. //         "DateTime=1764929449" .
  337. //            "\r\n".
  338. //                ",".
  339. //                "ServerTZ=" . $tzString.
  340.                 "";
  341.             return new Response($r200, [
  342.                 "Content-Type" => "text/plain; charset=ascii"
  343.             ]);
  344.         }
  345.         // Default fallback for other rtdata
  346.         return new Response('OK'200, ['Content-Type' => 'text/plain']);
  347.     }
  348.     public function ScanQrAction(Request $request$version '')
  349.     {
  350.         $session $request->getSession();
  351.         $firstData $request->getContent();
  352.         $data json_decode($firstDatatrue);
  353.         $appId = [];
  354.         if (json_last_error() === JSON_ERROR_NONE) {
  355.             // JSON is valid
  356.             if (isset($data['appId']))
  357.                 $appId $data['appId'];
  358.         } else
  359.             $data $firstData;
  360.         $em_goc $this->getDoctrine()->getManager('company_group');
  361.         $em $this->getDoctrine()->getManager();
  362.         if ($appId != 0) {
  363.             $companies $em_goc->getRepository('CompanyGroupBundle\\Entity\\CompanyGroup')->findBy([
  364.                 'appId' => $appId
  365.             ]);
  366.             foreach ($companies as $entry) {
  367.                 $goc = [
  368.                     'dbName' => $entry->getDbName(),
  369.                     'dbUser' => $entry->getDbUser(),
  370.                     'dbPass' => $entry->getDbPass(),
  371.                     'dbHost' => $entry->getDbHost(),
  372.                     'serverAddress' => $entry->getCompanyGroupServerAddress(),
  373.                     'port' => $entry->getCompanyGroupServerPort() ?: 80,
  374.                     'appId' => $entry->getAppId(),
  375. //                                 'serverId' => $entry->getServerId(),
  376.                 ];
  377.                 $connector $this->container->get('application_connector');
  378.                 $connector->resetConnection(
  379.                     'default',
  380.                     $goc['dbName'],
  381.                     $goc['dbUser'],
  382.                     $goc['dbPass'],
  383.                     $goc['dbHost'],
  384.                     $reset true
  385.                 );
  386.                 $em $this->getDoctrine()->getManager();
  387.             }
  388.         }
  389.         MiscActions::ProcessQrData($em_goc$em$data);
  390.         return new JsonResponse(
  391.             array(
  392.                 'postData' => $request->request->all(),
  393.                 'getData' => $request->query->all(),
  394.                 'contentData' => $request->getContent(),
  395.             )
  396.         );
  397.     }
  398.     public function GetGlobalIdFromEmployeeIdAction(Request $request$version '')
  399.     {
  400.         $session $request->getSession();
  401.         $appId $request->request->get('appId'0);
  402.         $empId $request->request->get('employeeId'0);
  403.         $em_goc $this->getDoctrine()->getManager('company_group');
  404.         $em $this->getDoctrine()->getManager();
  405.         if ($appId != 0) {
  406.             $entry $em_goc->getRepository('CompanyGroupBundle\\Entity\\CompanyGroup')->findOneBy([
  407.                 'appId' => $appId
  408.             ]);
  409.             $goc = [
  410.                 'dbName' => $entry->getDbName(),
  411.                 'dbUser' => $entry->getDbUser(),
  412.                 'dbPass' => $entry->getDbPass(),
  413.                 'dbHost' => $entry->getDbHost(),
  414.                 'serverAddress' => $entry->getCompanyGroupServerAddress(),
  415.                 'port' => $entry->getCompanyGroupServerPort() ?: 80,
  416.                 'appId' => $entry->getAppId(),
  417. //                                 'serverId' => $entry->getServerId(),
  418.             ];
  419.             $connector $this->container->get('application_connector');
  420.             $connector->resetConnection(
  421.                 'default',
  422.                 $goc['dbName'],
  423.                 $goc['dbUser'],
  424.                 $goc['dbPass'],
  425.                 $goc['dbHost'],
  426.                 $reset true
  427.             );
  428.             $em $this->getDoctrine()->getManager();
  429.             $employee $this->getDoctrine()->getManager()
  430.                 ->getRepository("ApplicationBundle\\Entity\\Employee")
  431.                 ->findOneBy(array(
  432.                     'employeeId' => $empId
  433.                 ));
  434.             if ($employee) {
  435.                 $user $this->getDoctrine()->getManager()
  436.                     ->getRepository("ApplicationBundle\\Entity\\SysUser")
  437.                     ->findOneBy(array(
  438.                         'userId' => $employee->getUserId()
  439.                     ));
  440.                 if ($user)
  441.                     return new JsonResponse(array('globalId' => $user->getGlobalId()));
  442.             }
  443.         }
  444.         return new JsonResponse(array('globalId' => 0));
  445.     }
  446.     public function VerifyEmailForAppAction(Request $request$encData ''$remoteVerify 0)
  447.     {
  448.         //        $userCategory=$request->request->has('userCategory');
  449.         $encryptedData = [];
  450.         $errorField '';
  451.         $message '';
  452.         $userType '';
  453.         $otpExpireSecond 180;
  454.         $otpExpireTs 0;
  455.         $otp '';
  456.         $otpActionId $request->request->get('otpAction'UserConstants::OTP_ACTION_CONFIRM_EMAIL);
  457.         if ($encData != '')
  458.             $encryptedData json_decode($this->get('url_encryptor')->decrypt($encData), true);
  459.         //        $encryptedData = $this->get('url_encryptor')->decrypt($encData);
  460.         $userCategory '_BUDDYBEE_USER_';
  461.         if (isset($encryptedData['userCategory']))
  462.             $userCategory $encryptedData['userCategory'];
  463.         else
  464.             $userCategory $request->request->get('userCategory''_BUDDYBEE_USER_');
  465.         $em $this->getDoctrine()->getManager('company_group');
  466.         $em_goc $this->getDoctrine()->getManager('company_group');
  467.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  468.         $ownServerId $this->container->hasParameter('server_id') ? $this->container->getParameter('server_id') : '_NONE_';
  469.         $twig_file '@Authentication/pages/views/find_account_buddybee.html.twig';
  470.         $twigData = [];
  471.         $email_twig_file 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  472.         $email_address $request->request->get('email''');
  473.         $email_twig_data = [];
  474.         $appendCode $request->request->get('appendCode'$request->query->get('appendCode'''));
  475.         if ($request->isMethod('POST')) {
  476.             //set an otp and its expire and send mail
  477.             $email_address $request->request->get('email');
  478.             $userObj null;
  479.             $userData = [];
  480.             {
  481.                 $userType UserConstants::USER_TYPE_APPLICANT;
  482.                 $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  483.                     array(
  484.                         'email' => $email_address
  485.                     )
  486.                 );
  487.                 if ($userObj) {
  488.                 } else {
  489.                     $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  490.                         array(
  491.                             'oAuthEmail' => $email_address
  492.                         )
  493.                     );
  494.                     if ($userObj) {
  495.                     } else {
  496.                         $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  497.                             array(
  498.                                 'username' => $email_address
  499.                             )
  500.                         );
  501.                     }
  502.                 }
  503.                 if ($userObj) {
  504.                     $email_address $userObj->getEmail();
  505.                     if ($email_address == null || $email_address == '')
  506.                         $email_address $userObj->getOAuthEmail();
  507.                     //                    triggerResetPassword:
  508. //                    type: integer
  509. //                          nullable: true
  510.                     $otpData MiscActions::GenerateOtp($otpExpireSecond);
  511.                     $otp $otpData['otp'];
  512.                     $otpExpireTs $otpData['expireTs'];
  513.                     $userObj->setOtp($otpData['otp']);
  514.                     $userObj->setOtpActionId($otpActionId);
  515.                     $userObj->setOtpExpireTs($otpData['expireTs']);
  516.                     $em_goc->flush();
  517.                     $userData = array(
  518.                         'id' => $userObj->getApplicantId(),
  519.                         'email' => $email_address,
  520.                         'appId' => 0,
  521.                         'image' => $userObj->getImage(),
  522.                         'firstName' => $userObj->getFirstname(),
  523.                         'lastName' => $userObj->getLastname(),
  524.                         'phone' => $userObj->getPhone(),
  525. //                        'appId'=>$userObj->getUserAppId(),
  526.                     );
  527.                     $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  528.                     $email_twig_data = [
  529.                         'page_title' => 'Find Account',
  530.                         'encryptedData' => $encryptedData,
  531.                         'message' => $message,
  532.                         'userType' => $userType,
  533.                         'errorField' => $errorField,
  534.                         'otp' => $otpData['otp'],
  535.                         'otpExpireSecond' => $otpExpireSecond,
  536.                         'otpActionId' => $otpActionId,
  537.                         'otpActionTitle' => UserConstants::$OTP_ACTION_DATA[$otpActionId]['actionTitle'],
  538.                         'otpActionDescForMail' => UserConstants::$OTP_ACTION_DATA[$otpActionId]['actionDescForMail'],
  539.                         'otpExpireTs' => $otpData['expireTs'],
  540.                         'systemType' => $systemType,
  541.                         'userCategory' => $userCategory,
  542.                         'userData' => $userData
  543.                     ];
  544.                     $email_twig_data['success'] = true;
  545.                 } else {
  546.                     $message "Oops! Could not find your account";
  547.                     $email_twig_data['success'] = false;
  548.                 }
  549.             }
  550.             if ($email_twig_data['success'] == true && GeneralConstant::EMAIL_ENABLED == 1) {
  551.                 $bodyHtml '';
  552.                 $bodyTemplate $email_twig_file;
  553.                 $bodyData $email_twig_data;
  554.                 $attachments = [];
  555.                 $forwardToMailAddress $email_address;
  556. //                    $upl_dir = $this->container->getParameter('kernel.root_dir') . '/../web/uploads/temp/' . 'ledger' . '.pdf'
  557.                 $new_mail $this->get('mail_module');
  558.                 $new_mail->sendMyMail(array(
  559.                     'senderHash' => '_CUSTOM_',
  560.                     //                        'senderHash'=>'_CUSTOM_',
  561.                     'forwardToMailAddress' => $forwardToMailAddress,
  562.                     'subject' => 'Account Verification',
  563. //                        'fileName' => 'Order#' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.pdf',
  564.                     'attachments' => $attachments,
  565.                     'toAddress' => $forwardToMailAddress,
  566.                     'fromAddress' => 'accounts@ourhoneybee.eu',
  567.                     'userName' => 'accounts@ourhoneybee.eu',
  568.                     'password' => 'Honeybee@0112',
  569.                     'smtpServer' => 'smtp.hostinger.com',
  570.                     'smtpPort' => 465,
  571. //                            'emailBody' => $bodyHtml,
  572.                     'mailTemplate' => $bodyTemplate,
  573.                     'templateData' => $bodyData,
  574. //                        'embedCompanyImage' => 1,
  575. //                        'companyId' => $companyId,
  576. //                        'companyImagePath' => $company_data->getImage()
  577.                 ));
  578.             }
  579.             if ($email_twig_data['success'] == true && GeneralConstant::NOTIFICATION_ENABLED == && $userData['phone'] != '' && $userData['phone'] != null) {
  580.                 if ($systemType == '_BUDDYBEE_') {
  581.                     $searchVal = ['_OTP_''_EXPIRE_MINUTES_''_APPEND_CODE_'];
  582.                     $replaceVal = [$otpfloor($otpExpireSecond 60), $appendCode];
  583.                     $msg 'Use OTP _OTP_ for BuddyBee. Your OTP will expire in _EXPIRE_MINUTES_ minutes
  584.                      _APPEND_CODE_';
  585.                     $msg str_replace($searchVal$replaceVal$msg);
  586.                     $emitMarker '_SEND_TEXT_TO_MOBILE_';
  587.                     $sendType 'all';
  588.                     $socketUserIds = [];
  589.                     System::SendSmsBySocket($this->container->getParameter('notification_enabled'), $msg$userData['phone'], $emitMarker$sendType$socketUserIds);
  590.                 } else {
  591.                 }
  592.             }
  593.             $encData = array(
  594.                 "userType" => $userType,
  595.                 "otp" => '',
  596. //                "otp"=>$otp,
  597.                 "otpExpireTs" => $otpExpireTs,
  598.                 "otpActionId" => $otpActionId,
  599.                 "userCategory" => $userCategory,
  600.                 "userId" => $userData['id'],
  601.                 "systemType" => $systemType,
  602.                 "email" => $email_address,
  603.             );
  604.             $encDataStr $this->get('url_encryptor')->encrypt(json_encode($encData));
  605.             $response = new JsonResponse(array(
  606.                     'templateData' => $twigData,
  607.                     'message' => $message,
  608.                     "otp" => '',
  609. //                        "otp" => $otp,
  610.                     "encData" => $encDataStr,
  611.                     "otpExpireTs" => $otpExpireTs,
  612. //                        'actionData' => $email_twig_data,
  613.                     'success' => isset($email_twig_data['success']) ? $email_twig_data['success'] : false,
  614.                 )
  615.             );
  616.             $response->headers->set('Access-Control-Allow-Origin''*');
  617.             return $response;
  618.         }
  619.     }
  620.     public function EmployeeAddUsingQrCodeErpServerAction(Request $request)
  621.     {
  622.         $em_goc $this->getDoctrine()->getManager('company_group');
  623.         $app $em_goc->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  624.             ->findOneBy(
  625.                 array(
  626.                     'appId' => $request->request->get('appId'),
  627.                 )
  628.             );
  629.         $connector $this->container->get('application_connector');
  630.         $connector->resetConnection(
  631.             'default',
  632.             $app->getDbName(),
  633.             $app->getDbUser(),
  634.             $app->getDbPass(),
  635.             $app->getDbHost(),
  636.             true
  637.         );
  638.         $em $this->getDoctrine()->getManager();
  639.         $user $em->getRepository('ApplicationBundle\\Entity\\SysUser')
  640.             ->findOneBy(
  641.                 array(
  642.                     'globalId' => $request->request->get('globalId'),
  643.                 )
  644.             );
  645.         if (!$user)
  646.             $user = new SysUser();
  647.         $user->setGlobalId($request->request->get('globalId'));
  648.         $user->setUsername($request->request->get('username'));
  649.         $user->setEmail($request->request->get('email'));
  650.         $user->setName($request->request->get('firstname'));
  651.         $user->setUserType($request->request->get('userType'));
  652.         $user->setUserAppId($request->request->get('appId'));
  653.         $user->setUserCompanyId(1);
  654.         $user->setStatus(1);
  655.         $user->setDefaultRoute('');
  656.         $em->persist($user);
  657.         $em->flush();
  658.         $employee $em->getRepository('ApplicationBundle\\Entity\\Employee')
  659.             ->findOneBy(
  660.                 array(
  661.                     'userId' => $user->getUserId(),
  662.                 )
  663.             );
  664.         if (!$employee) {
  665.             $employee = new Employee();
  666.             if ($request->request->get('email') && $request->request->get('firstname') && $request->request->get('lastname')) {
  667.                 $employee->setEmail($request->request->get('email'));
  668.                 $employee->setFirstName($request->request->get('firstname'));
  669.                 $employee->setLastName($request->request->get('lastname'));
  670.                 $employee->setCompanyId($request->request->get('companyId'));
  671.                 $employee->setStatus(1);
  672.                 $employee->setUserId($user->getUserId());
  673.                 $em->persist($employee);
  674.                 $em->flush();
  675.             } else {
  676.                 return new JsonResponse([
  677.                     'status' => 'error',
  678.                     'message' => 'Missing employee data',
  679.                 ]);
  680.             }
  681.         }
  682.         $employeeDetails $em->getRepository('ApplicationBundle\\Entity\\EmployeeDetails')
  683.             ->findOneBy(
  684.                 array(
  685.                     'userId' => $user->getUserId(),
  686.                 )
  687.             );
  688.         if (!$employeeDetails) {
  689.             $employeeDetails = new EmployeeDetails();
  690.             if ($request->request->get('email') && $request->request->get('firstname') && $request->request->get('lastname')) {
  691.                 $employeeDetails->setId($employee->getEmployeeId());
  692.                 $employeeDetails->setEmail($request->request->get('email'));
  693.                 $employeeDetails->setFirstname($request->request->get('firstname'));
  694.                 $employeeDetails->setLastname($request->request->get('lastname'));
  695.                 $employeeDetails->setUsername($request->request->get('username'));
  696.                 $employeeDetails->setUserId($employee->getUserId());
  697.                 $employeeDetails->setEmpStatus(1);
  698.                 $em->persist($employeeDetails);
  699.                 $em->flush();
  700.             } else {
  701.                 return new JsonResponse([
  702.                     'status' => 'error',
  703.                     'message' => 'Missing employee data',
  704.                 ]);
  705.             }
  706.         }
  707.         return new JsonResponse([
  708.             'status' => 'success',
  709.             'message' => 'Employee Added Successfully',
  710.         ]);
  711.     }
  712.     public function GetEmployeeDataByAppAction(Request $request$id 0)
  713.     {
  714.         $session $request->getSession();
  715.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  716.         $globalId $request->get('globalId'0);
  717.         $appId $request->get('appId'0);
  718.         $userId $request->get('userId'0);
  719.         $employeeId 0;
  720.         $gocDataList = [];
  721.         $gocDataListByAppId = [];
  722.         $appIds $request->get('appIds'$appId);
  723.         $userIds $request->get('userIds'$userId);
  724.         $em $this->getDoctrine()->getManager('company_group');
  725.         $em->getConnection()->connect();
  726.         $connected $em->getConnection()->isConnected();
  727.         $returnData = [];
  728.         if ($connected) {
  729.             $findByQuery = array(
  730.                 'active' => 1
  731.             );
  732.             if ($appIds !== '_UNSET_')
  733.                 $findByQuery['appId'] = $appIds;
  734.             $gocList $this->getDoctrine()->getManager('company_group')
  735.                 ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  736.                 ->findBy($findByQuery);
  737.             foreach ($gocList as $entry) {
  738.                 $d = array(
  739.                     'name' => $entry->getName(),
  740.                     'id' => $entry->getId(),
  741.                     'image' => $entry->getImage(),
  742.                     'companyGroupHash' => $entry->getCompanyGroupHash(),
  743.                     'dbName' => $entry->getDbName(),
  744.                     'dbUser' => $entry->getDbUser(),
  745.                     'dbPass' => $entry->getDbPass(),
  746.                     'dbHost' => $entry->getDbHost(),
  747.                     'appId' => $entry->getAppId(),
  748.                     'companyRemaining' => $entry->getCompanyRemaining(),
  749.                     'companyAllowed' => $entry->getCompanyAllowed(),
  750.                 );
  751.                 $gocDataList[$entry->getId()] = $d;
  752.                 $gocDataListByAppId[$entry->getAppId()] = $d;
  753.             }
  754.             $connector $this->container->get('application_connector');
  755.             $connector->resetConnection(
  756.                 'default',
  757.                 $gocDataListByAppId[$appId]['dbName'],
  758.                 $gocDataListByAppId[$appId]['dbUser'],
  759.                 $gocDataListByAppId[$appId]['dbPass'],
  760.                 $gocDataListByAppId[$appId]['dbHost'],
  761.                 $reset true);
  762.             $em $this->getDoctrine()->getManager();
  763.             $user $em
  764.                 ->getRepository('ApplicationBundle\\Entity\\SysUser')
  765.                 ->findOneBy(
  766.                     array(
  767.                         'globalId' => $globalId
  768.                     )
  769.                 );
  770.             if ($user) {
  771.                 $employee $em
  772.                     ->getRepository('ApplicationBundle\\Entity\\Employee')
  773.                     ->findOneBy(
  774.                         array(
  775.                             'userId' => $user->getUserId()
  776.                         )
  777.                     );
  778.                 if ($employee) {
  779.                     $employeeDetails $em
  780.                         ->getRepository('ApplicationBundle\\Entity\\EmployeeDetails')
  781.                         ->findOneBy(
  782.                             array(
  783.                                 'id' => $employee->getEmployeeId()
  784.                             )
  785.                         );
  786.                     if ($employeeDetails) {
  787.                         $department $em->getRepository('ApplicationBundle\\Entity\\SysDepartment')->findOneBy(
  788.                             array(
  789.                                 'departmentId' => $employee->getDepartmentId()
  790.                             )
  791.                         );
  792.                         if ($department)
  793.                             $returnData['department'] = $department->getDepartmentName();
  794.                         else
  795.                             $returnData['department'] = '';
  796.                         $position $em->getRepository('ApplicationBundle\\Entity\\SysDepartmentPosition')->findOneBy(
  797.                             array(
  798.                                 'positionId' => $employee->getPositionId()
  799.                             )
  800.                         );
  801.                         if ($position)
  802.                             $returnData['position'] = $position->getPositionName();
  803.                         else
  804.                             $returnData['position'] = '';
  805.                         $branch $em->getRepository('ApplicationBundle\\Entity\\Branch')->findOneBy(
  806.                             array(
  807.                                 'branchId' => $employee->getBranchId()
  808.                             )
  809.                         );
  810.                         if ($branch)
  811.                             $returnData['branch'] = $branch->getName();
  812.                         else
  813.                             $returnData['branch'] = '';
  814.                         $supervisor $em->getRepository('ApplicationBundle\\Entity\\SysUser')->findOneBy(
  815.                             array(
  816.                                 'userId' => $employee->getSupervisorId()
  817.                             )
  818.                         );
  819.                         if ($supervisor)
  820.                             $returnData['supervisor'] = $supervisor->getName();
  821.                         else
  822.                             $returnData['supervisor'] = '';
  823.                         $returnData['joiningDate'] = $employeeDetails->getJoiningDate()->format('F d, Y');
  824.                         $returnData['employeeId'] = 'E' str_pad($appId5'0'STR_PAD_LEFT) . str_pad($employee->getEmployeeId(), 8'0'STR_PAD_LEFT);
  825.                         $returnData['employeeCode'] = $employeeDetails->getEmpCode() ?? '';
  826.                         $returnData['employmentType'] = EmployeeConstant::$employeeType[$employeeDetails->getEmpType()] ?? '';
  827.                         $returnData['appId'] = $appId;
  828.                         $returnData['appName'] = $gocDataListByAppId[$appId]['name'];
  829.                         $returnData['appImage'] = $gocDataListByAppId[$appId]['image'];
  830.                     }
  831.                 }
  832.             }
  833.         }
  834.         return new JsonResponse(array(
  835.             'success' => !empty($returnData),
  836.             'returnData' => $returnData,
  837.         ));
  838.     }
  839.     public function PublicProfilePageAction(Request $request$id 0)
  840.     {
  841.         $em $this->getDoctrine()->getManager();
  842.         $session $request->getSession();
  843.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  844.         $globalId 0;
  845.         $appId 0;
  846.         $employeeId 0;
  847.         if ($systemType == '_CENTRAL_') {
  848.             if (strpos($id'E') !== false) {
  849.             }
  850.             $urlToCall GeneralConstant::HONEYBEE_CENTRAL_SERVER '/employee/profile/' $id '?returnJson=1';
  851.             $curl curl_init();
  852.             curl_setopt_array($curl, array(
  853.                 CURLOPT_RETURNTRANSFER => 1,
  854.                 CURLOPT_POST => 0,
  855.                 CURLOPT_URL => $urlToCall,
  856.                 CURLOPT_CONNECTTIMEOUT => 10,
  857.                 CURLOPT_SSL_VERIFYPEER => false,
  858.                 CURLOPT_SSL_VERIFYHOST => false,
  859.                 CURLOPT_HTTPHEADER => array(),
  860.                 CURLOPT_POSTFIELDS => []
  861.             ));
  862.             $retData curl_exec($curl);
  863.             $errData curl_error($curl);
  864.             curl_close($curl);
  865.             $data $em->getRepository(EntityApplicantDetails::class)->find($id);
  866.             return $this->render('@HoneybeeWeb/pages/public_profile.html.twig', array(
  867.                 'page_title' => 'Employee Profile',
  868.                 'details' => $data,
  869.                 'genderList' => EmployeeConstant::$sex,
  870.                 'bloodGroupList' => EmployeeConstant::$BloodGroup,
  871.             ));
  872.         } else if ($systemType == '_ERP_') {
  873.             if (strpos($id'E') !== false) {
  874.             }
  875.             $employee $em->getRepository('ApplicationBundle\\Entity\\Employee')->findOneBy(
  876.                 array(
  877.                     'employeeId' => $id
  878.                 ));
  879.             if ($employee) {
  880.                 $user $em->getRepository('ApplicationBundle\\Entity\\SysUser')->findOneBy(
  881.                     array(
  882.                         'userId' => $employee->getUserId()
  883.                     ));
  884.                 if ($user)
  885.                     $globalId $user->getGlobalId();
  886.             }
  887.             if ($request->query->get('returnJson'0) == 1)
  888.                 return new JsonResponse(array(
  889.                     'globalId' => $globalId
  890.                 ));
  891.             else {
  892.                 if ($globalId == || $globalId == null) {
  893.                     return $this->redirectToRoute('permission_denied_page');
  894.                 } else {
  895.                     return $this->redirect(GeneralConstant::HONEYBEE_CENTRAL_SERVER '/profile/public/' $globalId);
  896.                 }
  897.             }
  898.         }
  899.     }
  900.     public function GenerateQrAction(Request $request$url '')
  901.     {
  902.         $em_goc $this->getDoctrine()->getManager('company_group');
  903.         $em_goc->getConnection()->connect();
  904.         $customQrUrl $request->query->get('url'$url);
  905.         $company $request->query->get('company');
  906.         $appid $request->query->get('appid');
  907.         $companyId $request->query->get('companyId');
  908.         $userType $request->query->get('userType');
  909.         $absoluteUrl $this->generateUrl('dashboard', [], UrlGenerator::ABSOLUTE_URL);
  910.         $companyDetails $em_goc->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")->findOneBy(
  911.             array(
  912.                 'appId' => $appid
  913.             ));
  914. //        $companyImage = rtrim($absoluteUrl, '/') . '/' . ltrim($companyDetails->getImage(), '/');
  915.         $companyImage $companyDetails->getImage();
  916.         if ($companyImage) {
  917.             $companyImage rtrim($absoluteUrl'/') . '/' ltrim($companyImage'/');
  918.         } else {
  919.             $companyImage '';
  920.         }
  921.         $userTypeNames = [
  922.             => 'Admin',
  923.             => 'User',
  924.             => 'Management',
  925.         ];
  926.         $userTypeName = isset($userTypeNames[$userType]) ? $userTypeNames[$userType] : 'Unknown';
  927.         $finalUrl $customQrUrl == '' "https://ourhoneybee.eu/add_employee_by_qr?company=" urlencode($company) .
  928.             "&appid=" urlencode($appid) .
  929.             "&companyId=" urlencode($companyId) .
  930.             "&companyImage=" urlencode($companyImage) .
  931.             "&userType=" urlencode($userType) : $customQrUrl;
  932.         if ($request->get('htmlView'0) == 1) {
  933.             return $this->render('@Application/inc/snippets/qr_div.html.twig',
  934.                 array(
  935.                     'page_title' => 'Bee Codes',
  936. //                'export'=>'pdf,print',
  937.                     'data' => [],
  938.                     'isHtml' => $request->get('htmlView'0),
  939.                     'customQrUrl' => $customQrUrl,
  940.                     'url' => $finalUrl
  941.                 )
  942.             );
  943.         } else {
  944.             $html $this->renderView('@Application/inc/snippets/qr_div.html.twig',
  945.                 array(
  946.                     'page_title' => 'Bee Codes',
  947. //                'export'=>'pdf,print',
  948.                     'data' => [],
  949.                     'isHtml' => $request->get('htmlView'0),
  950.                     'customQrUrl' => $customQrUrl,
  951.                     'url' => $finalUrl
  952.                 )
  953.             );
  954.             return new JsonResponse(array(
  955.                 'html' => $html,
  956.                 'customQrUrl' => $customQrUrl,
  957.                 'url' => $finalUrl,
  958.                 'companyImage' => $companyImage,
  959.                 'userTypeName' => $userTypeName,
  960.             ));
  961.         }
  962.     }
  963.     public function NewPasswordAction(Request $request$encData '')
  964.     {
  965.         //        $userCategory=$request->request->has('userCategory');
  966.         $encryptedData = [];
  967.         $errorField '';
  968.         $message '';
  969.         $userType '';
  970.         $otpExpireSecond 180;
  971.         $session $request->getSession();
  972.         if ($encData != '')
  973.             $encryptedData json_decode($this->get('url_encryptor')->decrypt($encData), true);
  974.         //        $encryptedData = $this->get('url_encryptor')->decrypt($encData);
  975.         $otp = isset($encryptedData['otp']) ? $encryptedData['otp'] : 0;
  976.         $password = isset($encryptedData['password']) ? $encryptedData['password'] : 0;
  977.         $otpActionId = isset($encryptedData['otpActionId']) ? $encryptedData['otpActionId'] : 0;
  978.         $userId = isset($encryptedData['userId']) ? $encryptedData['userId'] : $session->get(UserConstants::USER_ID);
  979.         $userCategory = isset($encryptedData['userCategory']) ? $encryptedData['userCategory'] : '_BUDDYBEE_USER_';
  980.         //        $em = $this->getDoctrine()->getManager('company_group');
  981.         $em_goc $this->getDoctrine()->getManager('company_group');
  982.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  983.         $twig_file 'ApplicationBundle:pages/login:find_account_buddybee.html.twig';
  984.         $twigData = [];
  985.         $email_twig_file 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  986.         $email_twig_data = [];
  987.         if ($request->isMethod('POST')) {
  988.             $otp $request->request->get('otp'$otp);
  989.             $password $request->request->get('password'$password);
  990.             $otpActionId $request->request->get('otpActionId'$otpActionId);
  991.             $userId $request->request->get('userId'$userId);
  992.             $userCategory $request->request->get('userCategory'$userCategory);
  993.             $email_address $request->request->get('email');
  994.             if ($systemType == '_ERP_') {
  995.                 $gocId $session->get(UserConstants::USER_GOC_ID);
  996.                 if ($gocId != && $gocId != "") {
  997.                     $gocDbName $session->get(UserConstants::USER_DB_NAME);
  998.                     $gocDbUser $session->get(UserConstants::USER_DB_USER);
  999.                     $gocDbPass $session->get(UserConstants::USER_DB_PASS);
  1000.                     $gocDbHost $session->get(UserConstants::USER_DB_HOST);
  1001.                     //                        $connector = $this->container->get('application_connector');
  1002.                     $connector $this->container->get('application_connector');
  1003.                     $connector->resetConnection(
  1004.                         'default',
  1005.                         $gocDbName,
  1006.                         $gocDbUser,
  1007.                         $gocDbPass,
  1008.                         $gocDbHost,
  1009.                         $reset false);
  1010.                 }
  1011.                 $em $this->getDoctrine()->getManager();
  1012.                 if ($userCategory == '_APPLICANT_') {
  1013.                     $userType UserConstants::USER_TYPE_APPLICANT;
  1014.                     $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  1015.                         array(
  1016.                             'applicantId' => $userId
  1017.                         )
  1018.                     );
  1019.                     if ($userObj) {
  1020.                         if ($userObj->getTriggerResetPassword() == 1) {
  1021.                             $encodedPassword $this->container->get('sha256salted_encoder')->encodePassword($password$userObj->getSalt());
  1022.                             $userObj->setPassword($encodedPassword);
  1023.                             $userObj->setTempPassword('');
  1024.                             $userObj->setTriggerResetPassword(0);
  1025.                             $em_goc->flush();
  1026.                             $email_twig_data['success'] = true;
  1027.                             $message "";
  1028.                             $userData = array(
  1029.                                 'id' => $userObj->getApplicantId(),
  1030.                                 'email' => $email_address,
  1031.                                 'appId' => 0,
  1032.                                 'image' => $userObj->getImage(),
  1033.                                 'firstName' => $userObj->getFirstname(),
  1034.                                 'lastName' => $userObj->getLastname(),
  1035.                                 //                        'appId'=>$userObj->getUserAppId(),
  1036.                             );
  1037.                         } else {
  1038.                             $message "Action not allowed!";
  1039.                             $email_twig_data['success'] = false;
  1040.                         }
  1041.                     } else {
  1042.                         $message "Account not found!";
  1043.                         $email_twig_data['success'] = false;
  1044.                     }
  1045.                 } else {
  1046.                     $userType $session->get(UserConstants::USER_TYPE);
  1047.                     $userObj $em->getRepository('ApplicationBundle\\Entity\\SysUser')->findOneBy(
  1048.                         array(
  1049.                             'userId' => $userId
  1050.                         )
  1051.                     );
  1052.                     if ($userObj) {
  1053.                         if ($userObj->getTriggerResetPassword() == 1) {
  1054.                             $encodedPassword $this->container->get('sha256salted_encoder')->encodePassword($password$userObj->getSalt());
  1055.                             $userObj->setPassword($encodedPassword);
  1056.                             $userObj->setTempPassword('');
  1057.                             $userObj->setTriggerResetPassword(0);
  1058.                             $em->flush();
  1059.                             $email_twig_data['success'] = true;
  1060.                             $message "";
  1061.                         } else {
  1062.                             $message "Action not allowed!";
  1063.                             $email_twig_data['success'] = false;
  1064.                         }
  1065.                     } else {
  1066.                         $message "Account not found!";
  1067.                         $email_twig_data['success'] = false;
  1068.                     }
  1069.                 }
  1070.                 if ($request->request->has('remoteVerify') || $request->request->has('returnJson') || $request->query->has('returnJson')) {
  1071.                     $response = new JsonResponse(array(
  1072.                             'templateData' => $twigData,
  1073.                             'message' => $message,
  1074.                             'actionData' => $email_twig_data,
  1075.                             'success' => isset($email_twig_data['success']) ? $email_twig_data['success'] : false,
  1076.                         )
  1077.                     );
  1078.                     $response->headers->set('Access-Control-Allow-Origin''*');
  1079.                     return $response;
  1080.                 } else if ($email_twig_data['success'] == true) {
  1081.                     //                    $twig_file = '@Authentication/pages/views/reset_password_success_buddybee.html.twig';
  1082.                     //                    $twigData = [
  1083.                     //                        'page_title' => 'Reset Successful',
  1084.                     //                        'encryptedData' => $encryptedData,
  1085.                     //                        'message' => $message,
  1086.                     //                        'userType' => $userType,
  1087.                     //                        'errorField' => $errorField,
  1088.                     //
  1089.                     //                    ];
  1090.                     //                    return $this->render(
  1091.                     //                        $twig_file,
  1092.                     //                        $twigData
  1093.                     //                    );
  1094.                     return $this->redirectToRoute('dashboard');
  1095.                 }
  1096.             } else if ($systemType == '_BUDDYBEE_') {
  1097.                 $userType UserConstants::USER_TYPE_APPLICANT;
  1098.                 $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  1099.                     array(
  1100.                         'applicantId' => $userId
  1101.                     )
  1102.                 );
  1103.                 if ($userObj) {
  1104.                     if ($userObj->getTriggerResetPassword() == 1) {
  1105.                         $encodedPassword $this->container->get('sha256salted_encoder')->encodePassword($password$userObj->getSalt());
  1106.                         $userObj->setPassword($encodedPassword);
  1107.                         $userObj->setTempPassword('');
  1108.                         $userObj->setTriggerResetPassword(0);
  1109.                         $em_goc->flush();
  1110.                         $email_twig_data['success'] = true;
  1111.                         $message "";
  1112.                         $userData = array(
  1113.                             'id' => $userObj->getApplicantId(),
  1114.                             'email' => $email_address,
  1115.                             'appId' => 0,
  1116.                             'image' => $userObj->getImage(),
  1117.                             'firstName' => $userObj->getFirstname(),
  1118.                             'lastName' => $userObj->getLastname(),
  1119.                             //                        'appId'=>$userObj->getUserAppId(),
  1120.                         );
  1121.                     } else {
  1122.                         $message "Action not allowed!";
  1123.                         $email_twig_data['success'] = false;
  1124.                     }
  1125.                 } else {
  1126.                     $message "Account not found!";
  1127.                     $email_twig_data['success'] = false;
  1128.                 }
  1129.             } else if ($systemType == '_CENTRAL_') {
  1130.                 $userType UserConstants::USER_TYPE_APPLICANT;
  1131.                 $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  1132.                     array(
  1133.                         'applicantId' => $userId
  1134.                     )
  1135.                 );
  1136.                 if ($userObj) {
  1137.                     if ($userObj->getTriggerResetPassword() == 1) {
  1138.                         $encodedPassword $this->container->get('sha256salted_encoder')->encodePassword($password$userObj->getSalt());
  1139.                         $userObj->setPassword($encodedPassword);
  1140.                         $userObj->setTempPassword('');
  1141.                         $userObj->setTriggerResetPassword(0);
  1142.                         $em_goc->flush();
  1143.                         $email_twig_data['success'] = true;
  1144.                         $message "";
  1145.                         $userData = array(
  1146.                             'id' => $userObj->getApplicantId(),
  1147.                             'email' => $email_address,
  1148.                             'appId' => 0,
  1149.                             'image' => $userObj->getImage(),
  1150.                             'firstName' => $userObj->getFirstname(),
  1151.                             'lastName' => $userObj->getLastname(),
  1152.                             //                        'appId'=>$userObj->getUserAppId(),
  1153.                         );
  1154.                     } else {
  1155.                         $message "Action not allowed!";
  1156.                         $email_twig_data['success'] = false;
  1157.                     }
  1158.                 } else {
  1159.                     $message "Account not found!";
  1160.                     $email_twig_data['success'] = false;
  1161.                 }
  1162.             }
  1163.             if ($request->request->has('remoteVerify') || $request->request->has('returnJson') || $request->query->has('returnJson')) {
  1164.                 $response = new JsonResponse(array(
  1165.                         'templateData' => $twigData,
  1166.                         'message' => $message,
  1167.                         'actionData' => $email_twig_data,
  1168.                         'success' => isset($email_twig_data['success']) ? $email_twig_data['success'] : false,
  1169.                     )
  1170.                 );
  1171.                 $response->headers->set('Access-Control-Allow-Origin''*');
  1172.                 return $response;
  1173.             } else if ($email_twig_data['success'] == true) {
  1174.                 if ($systemType == '_ERP_'$twig_file '@Authentication/pages/views/reset_password_success_central.html.twig';
  1175.                 else if ($systemType == '_BUDDYBEE_'$twig_file '@Authentication/pages/views/reset_password_success_buddybee.html.twig';
  1176.                 else if ($systemType == '_CENTRAL_'$twig_file '@Authentication/pages/views/reset_password_success_central.html.twig';
  1177.                 $twigData = [
  1178.                     'page_title' => 'Reset Successful',
  1179.                     'encryptedData' => $encryptedData,
  1180.                     'message' => $message,
  1181.                     'userType' => $userType,
  1182.                     'errorField' => $errorField,
  1183.                 ];
  1184.                 return $this->render(
  1185.                     $twig_file,
  1186.                     $twigData
  1187.                 );
  1188.             }
  1189.         }
  1190.         if ($systemType == '_ERP_') {
  1191.             if ($userCategory == '_APPLICANT_') {
  1192.                 $userType $session->get(UserConstants::USER_TYPE);
  1193.                 $twig_file 'ApplicationBundle:pages/login:find_account_buddybee.html.twig';
  1194.                 $twigData = [
  1195.                     'page_title' => 'Find Account',
  1196.                     'encryptedData' => $encryptedData,
  1197.                     'message' => $message,
  1198.                     'userType' => $userType,
  1199.                     'errorField' => $errorField,
  1200.                 ];
  1201.             } else {
  1202.                 $userType $session->get(UserConstants::USER_TYPE);
  1203.                 $twig_file 'ApplicationBundle:pages/login:reset_password_erp.html.twig';
  1204.                 $twigData = [
  1205.                     'page_title' => 'Reset Password',
  1206.                     'encryptedData' => $encryptedData,
  1207.                     'message' => $message,
  1208.                     'userType' => $userType,
  1209.                     'errorField' => $errorField,
  1210.                 ];
  1211.             }
  1212.         } else if ($systemType == '_BUDDYBEE_') {
  1213.             $userType UserConstants::USER_TYPE_APPLICANT;
  1214.             $twig_file '@Authentication/pages/views/reset_new_password_buddybee.html.twig';
  1215.             $twigData = [
  1216.                 'page_title' => 'Reset Password',
  1217.                 'encryptedData' => $encryptedData,
  1218.                 'message' => $message,
  1219.                 'userType' => $userType,
  1220.                 'errorField' => $errorField,
  1221.             ];
  1222.         } else if ($systemType == '_CENTRAL_') {
  1223.             $userType UserConstants::USER_TYPE_APPLICANT;
  1224.             $twig_file '@Authentication/pages/views/reset_new_password_central.html.twig';
  1225.             $twigData = [
  1226.                 'page_title' => 'Reset Password',
  1227.                 'encryptedData' => $encryptedData,
  1228.                 'message' => $message,
  1229.                 'userType' => $userType,
  1230.                 'errorField' => $errorField,
  1231.             ];
  1232.         }
  1233.         if ($request->request->has('remoteVerify') || $request->request->has('returnJson') || $request->query->has('returnJson')) {
  1234.             if ($userId != && $userId != null) {
  1235.                 $response = new JsonResponse(array(
  1236.                         'templateData' => $twigData,
  1237.                         'message' => $message,
  1238.                         'actionData' => $email_twig_data,
  1239.                         'success' => isset($email_twig_data['success']) ? $email_twig_data['success'] : false,
  1240.                     )
  1241.                 );
  1242.             } else {
  1243.                 $response = new JsonResponse(array(
  1244.                         'templateData' => [],
  1245.                         'message' => 'Unauthorized',
  1246.                         'actionData' => [],
  1247.                         'success' => false,
  1248.                     )
  1249.                 );
  1250.             }
  1251.             $response->headers->set('Access-Control-Allow-Origin''*');
  1252.             return $response;
  1253.         } else {
  1254.             if ($userId != && $userId != null) {
  1255.                 return $this->render(
  1256.                     $twig_file,
  1257.                     $twigData
  1258.                 );
  1259.             } else
  1260.                 return $this->render('@Buddybee/pages/404NotFound.html.twig', array(
  1261.                     'page_title' => '404 Not Found',
  1262.                 ));
  1263.         }
  1264.     }
  1265.     public function SalaryCertificateViewAction(Request $request$id)
  1266.     {
  1267.         if (!is_numeric($id)) {
  1268.             $idData json_decode($this->get('url_encryptor')->decrypt($id), true);
  1269.         } else {
  1270.             $idData = array(
  1271.                 'id' => $id,
  1272.                 'appId' => $request->get('appId'),
  1273.             );
  1274.         }
  1275.         $id $idData['id'];
  1276.         $printDate = isset($idData['dt']) ? new \DateTime($idData['dt']) : new \DateTime();
  1277.         $em $this->getDoctrine()->getManager('company_group');
  1278.         $em->getConnection()->connect();
  1279.         $connected $em->getConnection()->isConnected();
  1280.         if ($connected)
  1281.             $goc $this->getDoctrine()->getManager('company_group')
  1282.                 ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1283.                 ->findOneBy(
  1284.                     array(
  1285.                         'appId' => $idData['appId']
  1286.                     )
  1287.                 );
  1288.         $connector $this->container->get('application_connector');
  1289.         $connector->resetConnection(
  1290.             'default',
  1291.             $goc->getDbName(),
  1292.             $goc->getDbUser(),
  1293.             $goc->getDbPass(),
  1294.             $goc->getDbHost(),
  1295.             $reset true);
  1296.         $em $this->getDoctrine()->getManager();
  1297.         $employee $em
  1298.             ->getRepository("ApplicationBundle\\Entity\\Employee")
  1299.             ->findOneBy(
  1300.                 array(
  1301.                     'employeeId' => $idData['id']
  1302.                 )
  1303.             );
  1304.         $employeeDetails $em
  1305.             ->getRepository("ApplicationBundle\\Entity\\EmployeeDetails")
  1306.             ->findOneBy(
  1307.                 array(
  1308.                     'id' => $idData['id']
  1309.                 )
  1310.             );
  1311.         $earningValues = [];
  1312. //        $deductionValues=[];
  1313. //        $facilityValues=[];
  1314.         for ($j 0$j 10$j++) {
  1315.             if ($employeeDetails->{'getEar' . ($j 1)}() != && $employeeDetails->{'getEar' . ($j 1)}() != null && $employeeDetails->{'getEar' . ($j 1)}() != '')
  1316.                 $earningValues[$j 1] = $employeeDetails->{'getEar' . ($j 1)}();
  1317.         }
  1318. //        for($j=0;$j<10;$j++){
  1319. //            if($employeeDetails->{'getFac'.($j+1)}()!=0 && $payslip->{'getFac'.($j+1)}()!=null && $payslip->{'getFac'.($j+1)}()!='')
  1320. //                $facilityValues[$j+1]=$payslip->{'getFac'.($j+1)}();
  1321. //
  1322. //        }
  1323. //        for($j=0;$j<10;$j++){
  1324. //            if($employeeDetails->{'getDed'.($j+1)}()!=0 && $payslip->{'getDed'.($j+1)}()!=null && $payslip->{'getDed'.($j+1)}()!='')
  1325. //                $deductionValues[$j+1]=$payslip->{'getDed'.($j+1)}();
  1326. //        }
  1327.         $dept $em
  1328.             ->getRepository("ApplicationBundle\\Entity\\SysDepartment")
  1329.             ->findOneBy(
  1330.                 array(
  1331.                     'departmentId' => $employeeDetails->getDept()
  1332.                 )
  1333.             );
  1334.         $desg $em
  1335.             ->getRepository("ApplicationBundle\\Entity\\SysDepartmentPosition")
  1336.             ->findOneBy(
  1337.                 array(
  1338.                     'positionId' => $employeeDetails->getDesg()
  1339.                 )
  1340.             );
  1341.         $authorizations = [
  1342.             [
  1343.                 'auth' => 1,
  1344.                 'auth_type' => 'Authorized By',
  1345.                 'name' => 'Arif Hossain',
  1346.                 'designation' => 'Accounts Manager',
  1347.                 'signature' => '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'
  1348.             ],
  1349.             [
  1350.                 'auth' => 1,
  1351.                 'auth_type' => 'Verified By',
  1352.                 'name' => 'Emrul Hasan',
  1353.                 'designation' => 'Managing Director',
  1354.                 'signature' => 'iVBORw0KGgoAAAANSUhEUgAAAMgAAAAxCAIAAAAQp3EYAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nGW9eZhd1XUnuoZ9zr01qqo0oREJBIhRYMDMQzAYDBjj2Q527Dh2nMRxkk5i56Wf87q/5Hvd/b186ffyknTbbg+J7dhx7HiKx2AMGMwoQAKEEJqlKqlKNY/33nP2Wuv9sfY5Vc67f/CVLvfec/bea/yt31oHF+ZLADAzRDRTAGRmETEzZmZGUVM1ZirLkjkgIiLEKACAiESECIioaqoRCbMsiJgpqAoxIpKpAfj3QEQAgJnUQFX9R8wMwFQNEZkJABFAVZkJEVXVv4wI/pnqK4gIqmAmzCSiSGgAKmAGgf3/GgASQYyqqkhERABmBgCACCIKAFlgM4tRQmAR9d0Q1SzLfFsQIEZhpigaAqsqAGaB/SbNTERVjYjVFBGJEADAQFV8i8yMiESEKPgN+Cr8k2ZpK/wsiFDVEMEMzCBGgbRkYGYAYCJVRQQi8t1DBFUkwijqP2JmhOhfMTO/E1+vf6s6O4hRAQgJAYwIAAEBJIoZAKCZIREz+Q6AATOK1LdnIVCMqmbMpGqEQAQ4P1esWA8RISKKqC/bzIh9DSQiLkmqqqrM7D/t8sHMAL5CUtUYhZk5oBmoGCICGELacUnnAfW1EAEAXIJVTUVcgFwOENMK/QCYCQBUgchFB9KdmCKRKfqelmXJrhwIMUYzI+ZKHA0AfNWqSoh+YIhQltF3QdOBuYwAIhoYEcaoABACq9Q3YzGKGSASoPmKiJCJ/BLM6CcKAETsQlNtuyuMIAIRu/T4bri+q6qIqZmqmlme5wBAlZz5h317Y1QiQnIlV8R0A8yoCgDmO6yqRMjMZlDrs4GLsgEYMYIZIfmeqyVFVNUQGAxqkaqNAhGpgR+uqpoqtpZiWgu55IKqqohvdL1ElyczYyYXfLclLgf+t79fyRwCmIHmeaZiACCigdlXJaIcWNX8XP1atZr6lvpJhMAA1QYimKmqMAcAA0AAXxskCSCIoiqmCkwYQroft5ciAkmADABFxG0zEYLVeuUm0Pc6bToRpW1JJhayLMQyfR0RiQCRzCxGxWpzCTEErre+dguI5LtR2So/cvO99eUQAYCbaopR3AipapYF3wo/oNoW+u7FKCIGAMQEAITpRyo9tLQJ1YuIzNQMmDmK35sRIRKYKiG5vQQANVsp8YRUX9SdFSIgoX+eCUUU5+cKNyFY2Q0zYyI/N1nhrTiJhdtXLMuSiCpTvKx/Lihm6qfuNomZibASfHM99YMUSTe9QgXRD5v8XkFFNISQVommapz21J0KxCiB2RDAwAzNDBEIsSijqbo8mSpg+g1fjptkX7aagRkSpf+CKz35utxHu5cEgBhLInZ7EEUQgZCIOZaRmIgQwF2hEaHvYe0czYAIiTAtHBERiCxGcSNBiIpGSBIjAJqBqLpWu4gjAhP7ARFTdV4WoyCQXwRc7QBW2v76FwAACcsyWm0FcNmQi8YQQpItd4WVuvvZuSFwpbLKtIbAKVBxlZiZabsi1lLs9+G21G+l9pIi4qKTZZnHYbVCS2XkfAtct5bjlWUNwxgjAIQQqlsCqlxGjJGIQiAzwErJkJPDAgBTt+GqolVABoZJLs3AFJhJRES1NtrVuqAsoy+zNja4wiS7nFVhlqoJgpveZBr9M1WEkSxT/XX3vG4G8jwTsRgjLsdGJKJZ4Ep9wCpzS4RqkYjLUpCQDZSRCdGSl6h9AoC5u1xxLhgCl2WstJescppYvfxv3/ZasGpljjGGEJg5BSGVGqia+xYiqpXKNZaZAFJoVNkUc0tcXRdwYmKBUiSIMUYPSpIxp+WP+sZpFc/6l4sibWV1NxRC8IBDREII9Y+4BTazEELtVRFRJCbLVZ2rf0VV3aqZGXElhQYAWHthInJNNdB/Z+3KMiKwmcYodVBIRL6JkDKDZIBd3Gspqb2zgQTO3VgAmGu2x2qNRsPFyEUnhFBrRb0Et4h+P3VIV+8nmMclbsI9y0FVNZFicSnv6YEs5BR8J+ssx3/TV+T3s1L//U2/w8q3oJmJSJ7n7mEqAQVffv2b/nmrXpWrkRCCh+0i4kfp27jy6lV25ZkcJo2dmFhwCahNi599jNGX1Gw2/WtFkcJ8X0Mtdiv3q1aIWpz9IGv98FWFwO4sVLXVanV3d0OVPfgC6mUAgGiZ5xmimzEk4jrW8RQBUF1wibDT6eR5rmoS1ay2i9DpdPzv2gD76nzJqtpoNFxuKn3AKGXg3HdMJLpW+I3VxxkCxyi+uSGE2kTpckaZXn5p315AMDUXgmUPhaYaf/iNb7782NMXXXP1fe9/wMy0shP1brja17/p13LhdmOZIu4V3rOWoVpzUgC94m8iKoqiDg9WbpTvSa2fHrS5gVyZ1/+7b+HsbKeWktrwmFlK4BFrpVTVGGOWBVUryk6z0XTLaWbuGf1effeLoujq6vKr1uupjTNW0omIZYy1S6oPLKmvmZtAQjSDEFjUVh4tABBTVNGymDx16vHv/gAApbv7HR98P1YZVn0q/s+yLJvNpt+hv5nneR1G+Ma5CIoIgDFn1Tlao9FYeWBmmue5u1dcTtMMIAE3vpOiYqgBM1UFEOkUobuLiTWKQZVliwDj0Vf2/91//cv+Zk/e0/1nf/OXagiWtPSXdq+KVQDARbOWtsr3rchXqgP1yKG2nX6+fud1HlN9GGKUPM/MdKViuGGuTa/fQG0aXW0Qk3kOuJxpY71BtZGsU7YVPw1ZluUNjtEzRGZG38TaBjBzs9l0E+r3ykRRpDbOiB7MkpllWfAQlhBFxS2Zb5yqMlHt7/3YQghEYEaG1Qol/vTb3z3w86cXpZiYmVu/Y0dgFgCEXzLADhDkee6imWWZ6+K/OzB/p94+ZnJRq/1p7TIQ2V1tLZe1XwghL8vSXV6e5W6iUMp/+PSnRw+ffPdvfuicS3YSc320FAKgvrL3pfbcYmuh1W+D4EqV8hysgzlPg1StNsC1svonAcAsnXGWZZXjI4eBHPpSNVXLQqhRt7KMtSSYWQgOcaVEpLZMsOLlErkykFDVPM+JXKkQETy9RK4y4CwED1mZKMs8smMPoSrJs8BceeLaQnKeZR6iB2YEyALnWQhMAOA/riJMZGqqlhQRgCkhogiIAIGJEAixxi2JMMU6ZoRgCh5cm5SLk1O/+P6DB555cVyLnz/z3KHT42dfsFPNmHilZmdZEFFirpNJP6Qsy0L1Zm1Ha8uNVTDnShUCsws1YhaYqmP0pfkGVt5EsxACU5ZlhEhopuV//y//9cUnnu7G7BcPPYIGhJRlwXWdmVXk0IHXEGCxtXRmcmJ+YcFB19pgrLAT6LbKL1rdfMpg6xCqFjm/invN+mOYfs1EVEQbjawWlzznkBFgjS8sm3wXFjBjwjzjZjNvNPIsC4GZiZqN3I+eA4VaD0QiERPXRiWFhESkKgDg6VKyltUimRkgZVhgVsaYZZlvrqOCZg4YJnTefy0EX3Ty9I46IiISOJhRlpKcIGENiqqaB2eIoKplu/PMY0+8+PRzw6OnDr52mCMOnLXlultvvfOeuz2pDIGzwAmJrhIrBMiyzMwcdxER35bkwqr80dSQqdIZCRwqAEHVNCBX2D2amYERk0RxqIyIHP4QSblblGJ+Zm740PE8NI6PjhyZPvOrMeZ5cLTazMqybC+1Dx88BABidu999/X397tnq6PpCmtIeD1zJlHqFEFVRaRSk/QtF7KyjCEwM9Z5fQgkYgDmgIWqStQ8C2qGCOJAqONNkmSrzv8Q0SM/VUCHJJkAHYY1IlRTM1uOZ92dxRipivXMTEWoUhe3MfXxgGMfK4oGiNBo5HVUbub3YkQJxcEKc3MktvJuUJbJT6sJIKJ5NOBRlIXgeaURAIgqgUZdmpn658996cyZyUOnR84MnwjUiKH5tne985qbrh4a6HEplFKYmRAQUVSZHF9WR57czvs/a0Vy38FEpQpYlW05dmWWARAJmVlVokn2zOsHHlGJZFlAZAQ0s6IosiwDDKgmZczXrF0YG1+7+SwFNFEkNx6IhM/tfr5YaBFoaHZfcuVVYhD+f9l+pYc1oM+1g3bgGhGJTFXAAAEdZ2ZiqMweM8ZYmjmca8ysEr2MBmCBUVVNwRKMlyIcM2MOqiZRqmAAEEFFAyfUw90roqmiGYS6UJNyQwARCSGVazzlMTPPMB2xVFVCd6Ipm61X65l5CFxDIP6Oy5Ml1D/BsI5gxegLc+ASY6EhcB1Y+J663VJEAIhziw//4IcvP7Pn1OjpQydPrN+4pXvVhtXr177pLXdfe8Pre3u7kKDC4usgIPk4QFgZwGKyLrFO6IqiEJESMc9zrQFJwlLEzCZPnjr44otCeOvddwGRWhVsValPlWR5tJCiHCIE0UOvvRZCGJ+abQyuft+Hfz0aZABYZeJmtnZo0CW5p7f3vAsvgARxuTsGj9iyLKvKjmhVjFnD8Z44+pH5/wqBEQkMzdSSnmCeZ340Vc64fHCOx9ZhEyR4kqoCDmQZqyYbVvkTN+Tp3FXNQ4RQi39KdhDVrK4x1xfwGIU5eAAIBkgIamVZrgAUUhi4Eiyti8f+Acc4auXzg7eEZDpITmUhXiKoRRYRiCAWxYtPPfPCL545fujI9OzS7NJc/6pVi2V5+fVXvutX371hw3o0DSEzJaTkO+qYNy3ErCzFEUWo8n/X+zoAX4bHVtwkmknZ/vLf/c++rOfk5Niuq67uX7vaKmFCXT4nAEi4TBWRmCGUcmT/AetIW8rf/Y+f3LR9KwOXUQKTSPSbzDMWkQi8deP6vJmhgGKC9KrsGGrLURkgq+voNYJQgzVuRZhQNUVmVTTiy/QKjKt3ShhrsNrBsCwLLmq1C/aoayUVoA686mNSFUQKouoFjaLTaVSQlTvsym1nbv1crd3wmmoZXSGw3W57xu5OrQbcXFiYmchLY1RGVRWoQjdAlCq9d7ttBkVZ+rcYiQgNFATU7NCrrz7+w387su/A8NQk5E0rpbPUXrVp3W//b584Z9vWPM8RDJDAUFUAsLaCVQCO9V2VZXQMyY+qKIpGI0cMbn2t2sg6FWKkiPKNL391avTM6QjNwf7G0CpDBPullNtDJc/JPQxV1ShmqicPHXr2sSenlhauvOWWjZvWMQKoRFVED97ZTPe9vC9whpRfc8N1aIZIBolBsBLVi1EQAJkwYZXJPok4JAbMlGVUltE5E8gIIESMaHXBnohiNGJQAwQoo5LnTZXwIdaWrKYj1HVjdztWvYmY6u6ePjv6D6HGhDiknfU1eLSxUpjq+JGIFEBF/EZrHKiOIj15ZKIYI4C51bAVeFKoTDozO+7lYZCnvk6AAQJDALPCOo985ycHdr904NUD7Ty/8+0PnDh+6JGfPfTRj/3mNTdd1z80ECjzUMOr1L4jlQNNsYKIhRDKsrQU1ZU1jiAizmioopAEvtRxsUgkxumxiXYRp+cXb7/1RiQ2hRhLq2D6hYWFrq6uOiJxW+v7piIPfud7rbmFfGDgDffcmWdBRbMsC1lwPxglmllXoyuE0C7j0Jo1MZZEwapzrWtzXjAlZs/NvLLkDihlzQBlGZkpy4IqiEUT5ywgEbtFKUupcinwfIWZzFJlgoirY0o+14Nj17gYlchpSP4jXFfMKs8LqhCjBKgKZ342jUbDtbleTO3UKrdlqlqWpVVIa/3fOqZxxWVCZvKsJxlMNTOs6nRuXdPeaSqKqZtGMzUQEBs+ePh7//TP7fl4bHRsyxWX3veu97z6yr7eob5Pf+kLa9atRRBQBVrGOc1MTau8IiUB/n5RFH7wRVGEEFzXXR/cebltXvabladTk8780uFXXiMOHZFzL7mYlaJKLVW+b1Cl+kkCACgwAex57oVDBw5OLS7ddf+bN2/dkudZXU1y1RJRMJ2fncuyTBgvuGgnUDIvVDm4CnIDInYiQx0jroCpQ+XdEj/Ms11EFFGXQlWvpqfA2j/JzFQBK4nXJDVwCLUH9Eih8sge/BlzzdHAFeJIwUXKLYd/x68aYwzMtWDZihci1h+upDtZwto1oFN7DGq6VVlGXBEVAiR/7xC5qqipijqpgQmlkIe+/4PHf/jg+Pi09fY98Jsf3rj1rIHBvm1vvBUZmJgJRUgBUaVO0IhQK5JJRVxIIqJV2Olwg1e7XBM8cRERL6u5raqLa0S874W9PXn3RGthaP36i664VGIsJXrU7L9sVVW4hqcJScHKonjy8V8sqQ1u2XznPXc2MqwjOb+620tkHDlxMsbY1dff3duLkCrfiUGQZEVUMQvovCuvhTvPZ2UWVYEyAAAShbiuwpmvsQIlqShKDpxlLGJU0RTqbaygvWU6kxfQqh1Fqxh/7hkrsNeBJFgOLCoSFVDlQhExzzKtUsLarViijkRLLERkDnXwi6koiyIGakSMBGpASEwASJ0ixighYwQQUQSFxO4AJDQGk/L4kWPf/8a3D710IAJee+8dt9x6k1EoomaUmZQBs1h2OAd2Z2cYKHFZYTmT0lr0XfUNwAugjsW7qa5RhhijS5IfdmU4zcy0jCePHV/oLJVF5463v52NIBgZ1uh2rdZ15ODuQVgPvLTnxOEjsYA3vPnWrq4uAKpColQBQ8TApACv7TuU9/XuuvKywIxAUWMdV9VcEiIyMEA0gCjGhGXptgfdLCV51USWMvTqJEdxF8aORnis5iZQolYXsjq0Z4YalK0pKm60qizIADBGU60sGtYBPsYoCfldkXxylYZUHJjKV/ou176v0Wj4GTiSWWttFf7HEJgzUjWH3QBNBRGNkDg4rUrBLCKoKhuCWCyWOq327p898tLju1tFyQE2DA7NDZ/6p09/vizj2g0bLBZE1mm186yr2dV13mUXXX7jNRy6XIiQXF8cZF2mMECV0sOKqMUTeH/Vnn1lblVLADM9++zuVrvT3btq7drVZmJGjUbDxbR2K7Vrc4MgqqT61CO/iJ0yEtx4y80qIimbobo2lxxC0W40s/HJ6bUbN6+Mq3xXPc+AVNoPFRSeRFkTh7si9oBVtCqFVG7Xyic6D5ZqmmHNrPTYtAIaVZXqMLEONx0GquUMQM0SGMuMTptRRQBjCsENjKM4boeyLBDW8FJaTx3ju6lst9uu93meq2pd80pxElOjGUytzrw8RytMApAUnbmpqfbiUrvVmp6anps8Qwqv7n1FCpnvLOJia3J+5vTEVCmQ9XQdOnkiC3mAACCNo8cQMrNyaWFpaHBoVW/36ZPDL+1+/tf/+A8hkXa4NpyJquX1+WqPtKr61SKl1au+/xX5V9qT8dOjncUlARzcuOHSXRfneShjdDi7Llf78deG38xUykOv7N/z9POzi4u33P+Wvv5+rrgxVaib4hBA3PPs87Pz0yZy+dVX1fdWK2od69S2tkJJrAqhEuHY8W0nEjoK7TtDCJbQNcMURLpTNlWri8tV1R5dzjzHrE3XCnu27BMQ0czzgLqkbYQQ6hCkjtljFELPEZYzxJom5nuRCqtgUSIhqqcehMhIZhqlbRYITaXodKQsZyfGJ0ZHpybnxkfHlmamR46faObN2bm5dqtdSFkWRUvKTtmBpWKy3ZpvddZt2XLjbXeAZdt3nN/VDBal6HQ6ZWt6bnphYX7nzgvGxk4//N0fLbXaU3OzkxNn1qxfn1JaJACIqkzLdXFTKIvS99TQQhYSBxAAiHmF/XDzw8wGlmdZUUQkmp2eLotyqSgu3nVp5ugiUoXcYIzR9d43UCQSMyHFdvurX/j7LGs0V+XveMfbDEFEYlmGkAEgMWFFSiHmw4cOTc/MbDtvR19/NxGICBIBAhMyYlGWBhg8GrFUUQUzAhJVAyNOtgorEETEEsMCHVqLqfBSUVfMEs80RUBIohaCM+E8wEpCpqrOLkSEukgFAKbeD4Bm7mdTeSAElAihTm3q1MzMuKqcE5GXfmDFy8zALGRZVFGv5BEguOuGkZPD02fGm2Rjp0YP7ds/MzU1MzNDhkWnAxQm51sF5nMLi3kDhjass56evNFcNzh0dP/+dku6mt07zr/kml+5ZdOWrX29zdWrhxqNvLe7++TJE0NDQ1meg5OsRbI8mzg6fHDPSwMb165du05TVoICAgKiYJr8CCAqghECGGQBzDSWrcVFAuwa6FdiVOt0Or7YmsaoqlE1liKoj/7s4Xa7HfLs+huva+Q5VGBE7SaqeA5CyA0kSskqX/vsF4qZpfHZuU/+n/85a5JTYDBgaWUsyoyDIYYsMOHC3OyRA4d6s67zzj9vfPjUFOHS0nynvbQ4M2tRR46fPGvTppvuvVeYyACjhhAwQTmIhGpKyoEJDC2h7OohCXihyZMkhIoK5bixQxYACb4GABA1r+asSA4QIHGO66DQrSkul3HZYyEAd03AAUKd9zkW+u8ESFWRSCTWAQd6lwFjK3Y4MBmQyvTkRFd388kHHxw7OTo2MjY/NzO3uNTqQHuxZWjzRfvcCy4864It23dsFpVNmzcRhTXr1vWs6i2LIkP4p8//A0gkwhvfeu87f/VdjSxTcajNVUe3bTvbjXCM0mg0RGLRak9OTkjG3UODbbCMKGokQCLgwBat5i6bV47RMiZGbM3M/ujb3z155GjH6D2/8b7N554jAM6lqQWFmVBRYkSm7oxGDh9Tg0uuunztWWvctolICFklt8vdWiKxlMgEe59+ds/TuzsC9/3qO7fv3N5gsqhLCwsL87Mjx0605heHT5wgMkQsO51TwyMjh4/2Mj736MMHn3lWxQSpNMjBuppded585uk9O3ZdsX7HNojSCJlWgB+Yjg+f7h1c1ejtLYpE/lZTiwIKD//bT+enZ+5559soyz349KqDqtXgBSRWN1QkCSMEpFQdYqaylMSEEy+ZQoxmChwQ0eoacQW9Yur5MVzm6aYctK4GVrKZqMAiSGhgEoUDgxZL09OjJ4ZHDh99de/e2YXFyekFIDszPjOwen2zO6zauPn8Hefv2HnBheef3d/bS5wRByRTUUY006hqUh47fvibn//KxPgU5Y3f+p3fef0N14SMUZUoGFjIyAPeELydhpqN3MCY6Lknnxg/fboo9a577pk6ORwXW/NzM4q4dsNZG7dvQySJpZd33VAHhM78wuMPPvTMY09MnpmcWlhs9Kza/+pr67eeTZQhpm4233SzimjG8OxTj4+cPLnUkWtuuK5styzkNX1DVVzQOTA5DZ8sI5yfnX3swUcWpme02Th16OALP/nx0WPDoydOnzk9yhkXRekdmksdiYAKNrcwJ3EJIVxw6a7RM5Ndzeb6gf7J0yN5yI8Mj+x43eUf/cQfDG5Yp+0iNBoCXiM0ifEz/9dfnXjlwFnbtn70T/+4u6/fj1Igzk1PfecrXzt1+FirKLacd86uq68C9JAmFEVZR5MAOjs7PTAwRMSqEEUoICCBgYghmJdWzaCq9oCXQSl4UE+Vf1SP8Cov6XXDEDzqxETSRWbmQKZmCuKQrggzipSICBKPHjy4b/fuAy/un59dXGi1RicnlJqXXH759vO2bznn7K3bt/b3dnd1NQMHAAwBuWrsUcE8DyIxGrHp04889uPv/eDk8dNdq9d8+OMf3XnRhYGIgBScmUVF4WQKNDMEkqiYIyDEhYUHv/ejRt5YmB9/6Fvfbs+0DK0V26bav2rVb/3pH548fPS1F/bOt5YwZEx8211vnFua+7dv/+jogUOT84va7H7H77w/GPWv7uNAoAYKaqYqgBiIGdBKKRCY8eVnXgZuDJ3Vc/FluzjkjUaesnSni4CZiUkKhAFhcnj4s3/zt9NHhwuIGwbP2r/n5Zef22sUZhdmO0Kbt2xfvWlwYPXglk2b1248a93mTWT62b/+6+NHj7zzgQduuPmmiFAsLDz+ox+35ydPjE/vuu2WD33kQ729PRmHjEg0YshNTcV2P71737N71q8eOD18en5uKe/q8TBLVB7/wYOH9+6n0Dg+Nj09s4BAIpq4BUQIGEVR9egr+7/xD1/52J/9Se/AYIZEeRATU0UD9LySgAzBMAIEWk4eV7CRsXKyXIfzieDklSNa0XFAFdRhbr1MivbCyPETYydP7N/zwujw6PxsqxMD5bx2y4aBVX3vu/0NF168kxlj0UFiACTALAtZlqW01tQrTUQYYxklgsg/f+6Lzz/29HzU6++/6x0PvCenrAvJEtQmzIDIXoRhwkKFmNCokJKL+OXPfL6YnYEYt5+z4+nn9jZ7V5Umvb3d82fGmydPffXTXxw7PT52ZpobTVMl1d1P7x5aveb0ydPji6033X//m99yd29/FzHNz0wdevnlqbHTjWaGFBbbbRRcvW7d4Pq1g2vWmnG51Hl+9wsmsHXzlkYjazRyh+kdR4Wq8JXgAEQz/ern/v7wK4esXYwtzM6JXXr19VvOveCC8869+OIdSKRqWSMEr+owixTTZ8ZOHz9KlL/p3ruB1IrO3/7fnx89PnqmtXDTm970zve+fW56bGZkccdFl5ZgOeVkKKbMtP6s9dNFO7R5zYZ1vQM9WJFXF6enH3/s52A2Mnr6iptuvfGWW1QlhCzxTRC8hlMW7X/44pd7I/7933z6Y//7J0pmFujMzT31yGMnXjxgCG/8wLvWb94oaqYWOKt7tX+ZNJtIMt45XHFSTESCA/+WONFc4cgaGEHFivKnP/rJ8KsHjh04trAoC0UrBrzg0iuuvfnayy6/tK+7CxQMATGimaExKCFTloGBW10wdEcGAICAptBq/8vXv7H7uT0ji4sf+O2P3HLj9aRUFgUP9AKyqoaQOZmiysmLEAjUqJRXdz+/75nnWuOT07NzI1OzG/Oea99w+zU3XNu/ZlAXFv/qL/4bR9n7/Isjk7Mf/IOPn3P+uYMD/UM9PZ/5f//Hq/sOrN929m9/8Nc2bFjf051liE88/MjBfQdee+ml2dkpMxgYGFhcXIoRNKO7337f3fffV6qePHyk02q1RK65/rq8EdzuepXCN63GGvI87xRFp906efgEGI1Mz6696KLf/MhHL7/sokaDmTt4akcAABvcSURBVDgElNgpishEDQ7KFo0sxn/71x8Ha1x54zV5I7NO6zN/+5mJqbmFwJ/48z+LnfkzJ47/0+e/sqqr+6Z7Zq++5tpImAXXvXJgcFX/0Jq+1asX262uZhemapvseXo3Uhifmepfv+4t73pzyJCZPHV1rBhMRUTFMGvsP3xwE22xKHt2PxsED+9/be9zL5Rm/c2e7332H9/2kfet27zRmACRKsdXlX1wZUSv6pmm15qQmUNd/gPvoEUsS2HWseEzjz30s4OvHDxzanxmabFv/Zorbr366quvPP+8cxgDE0ZQUQlZULMYwSA08gAqKqIqgdhL0aqCBoysoIhw8OX9X/rs5ySCUONT/+0vtm07mwObYVeeiyixY/7abndCCBJLIFCNnfnWc088vffZ58fHRkdPHB+dnIxZz0133PWuB97T1d3o7Q6llQ89+kgzC6cmp9dv3vzJv/j9q6++PARCtNFToyHkQ2vXffTjv71+wxo2jRIFaKFdHho5VXZ3d/f0NvIeEDlvx5qO2WVX7PqVO24GJrZ44vAREYEQzr/4IkBFYEBUEQ7BK/lFUTrkXBYFBpoZn5iYmFxoFdfc+isf+NhvnrV6iAMRETO12wVxaHZ3q0i7LA0hy7JObO/ZvbvZ2/2eD7yn02p95i//++iRkZmi/MgffXzDmoFnn3xtZPTFbFX/a0eOHfnb//XNz/zDG++/++obrx9avx6zfN8r+0ltbvL0mo1rCSmqIFGM5XNPPbOw0GqLvfutb8X2/PzERKvV7l+9utHdTalrHEPGJtbTaDaa3eOTMz/75r8++sjDnU45MjqxqLBqcHBy+th5W7Z86X987kMf/2jvurXMhJqQM6z6hJkTDdXLhf6q6tAaPM0JIRRlGdtlxjB5auTFZ/c88+QzZyanp+fnL7rssg+/990DA/39vd1ZljEnjjgrpNkEokwEoGCJQ++iHWPJzGAqQKJKJodeOfAv//j1qel56O75vU/+0dCanoxZRbq6miJiFfcjBNZoKhJj8diPfzJ64nRf/6r5paV9rx6YGT9jyKF/7W133H7f/feuXtObN5oxth/6xveef+qF8cnZbRdd9NHf/9j5552TBfI0Lcsb5+zYdssdN2/atIaITTHnUJblLbffdu2tN0fTLBDEjofkElXVYlmgEKg+8+RTza5mb3fP4KpVzZCBgleHvHTVarWxohjledaOnX/9+je6+/uWbPHq665dOzSUfB+y77iZFZ12CKHRzEUEND7y4EPajjsv39XX0zc1OnbwyFEp49BQ//G9L/zwK69CV/PcnRf87h88cPzk8d1PPPXojx/8+pf+5btf/+41t938zve/NzeEGDtLrcvfepdIBGITnZ2YOHHw5PiZ0zt3XTwzOvzw3r2T05NTE1Nbtm6+8vprrnnDLdDIUACMAGx6YryUYsvQxpf3vnxy+MzU3Nylr7/mrQ+8b2D1wN7nn//WV7/WDPTVL3z5I5/8QyAA+CXClpnFmLjBZsvjKlI1GinUtY6M4eW9L3z3a98aOz2+atOWbTsvWg9y31vuWzWwCqgIlDFkxCjiAz/SuA4zqBjuXCPabgIdWc44CKpK+dRPHvnXb31nfql91jnbP/7H/6HZFZCQKUPIEDFzQLyC78g0Gs9NzD3ynZ9s27Hz9NSJo0ePzk1OUci6BzfecMev3H//nX29XaKWZXmntfjQT34+NjYxsGHjJ/7jn6xe10fg/B8kojVr19x53915xmbLzNosywCkNzQAkBiJulOBhVLdFxCLTvvY0SMaYdd1V2ddjbLUHAlDCi+8wpggmBDaZWv8xMjeF15e6nS27zx/bnE+D8wh+OU8PQohhOB0MQCAdqv15EOPLZTy3t/4tazZve+VA/Nzi4N9vXPjU9/+l+82hta+9wMfuO22m7q6wtDQhbsuu/jXPvyBY8dOYAEnTw2fODV6+PDhdtTuRk+ed3PIAfHoocOP/PiniwuLqwb6Dh44uPfFQ7ted1l3Tx+VMtfp/PThh7fsPH/j2VtUwbHT+cXFYmlubLize3x2x66rfvfX3rt126au7mYjp00bbt+wfs3n/uqv5+fnnRVCqWzloIFU5iNx3h3F8KBe1QAxQMUSefxnj37+//m7/lXretaffcMbbrr8ysu6GvlAb58qInWZKTGWZd1JvMx/rQv7K3ggiTeCiApGIk/++MFvf+Ub0wudG+687T0ffH+jmQd2Py3O8HewAythNSIUGzkxkg8NnpofP/zaIVDkZt/Qhg0f/8TH161f1wikgiqmFLt6etbtvHD7FV3veedb160bpECClnGaraCq3Y1gBkCkiXNhRJRl6GOPUmtQWO7ndkzr1ZdekljOLSyde/65iICUAZnV7eor2ua0FCR6/KFH82bPwLp1f/rn/8lMO+12T19fXZwWkYoRlSjCLzz97OLc0i133bG2f5DycNsdb9z3ysHHH3780l2XXH3Btvveen9/Xx8xqlngrNPp5IEuuGB7oLDzigtE9PD+19rSIYibt27yBoONW7b0rV4zUXTODM+8/trr7n/HfZdfdUl3s6kAnDMhMBACRDMDnJubOzUyvLjYPrMod7/tnW9/59t6B7qazUZwhJXhqqt2fa2nu5nljUbTh8z4mCeP1dDz4IqTsxL+9ApiIGIA0Fia2OCazdzb/xsf+8DWzRuyLENCIib2UB+JkTmLMcG0bhK907yKYQGxMpio3jvUXlr6xhf//plHn2hr9rYPPXDn3XeGLFQsCq+kYqgaS9QHwhAamoqs6h98cf9rQTvd3b2Rsyuuvup9v/5Ab393nucM3rSDRBCI/uxTf1K0isCO9xGCqQhUXZpe71YxDowIUYQQOZA3mSQNUUBkMfW4U0V+9J3vSwc3bd128y23MgZQjWocAiEBoaaKBYXAhnZk74GXnt2zsLBw6523N5rMEDSGRDkHiDE2mw0ANDUAbZWtPOOf/ejBxRjvvf/+RiMHUugKf/DJ3/ud3/8tM2w0QiAGNORgGlvtVnt+4Qff/Fajt2fdxo033HozUwgBGxTaZexudAOaI+33vf0t97zlnqIoDTAEbOQZAiCRKSAhIKqpq9Dg6sG3f+DXDh46cf/b3rL9nK0AxoQWBUJmgAxAgbadt/0Nd9zOTKAAqCE4HxCxglWtmiFQG7AKJtXg+mqEjz7+9AWXX3bX/XduPnsziE9oCWaK4I3n7DVKxJRjO5ZTE6EQMXXBIyFYFI0aYbH1gy99df9zLxXNnv/wp3909tYtVbdf6mJgZtNU942xDBk79UtEgHDrju2/8TsfOXLsOIdw8SW7du26JATzTkApvaiXCsY5c2g21DTLsqrnJDUCObHMr2um7nZT9VcAACjlwqZimFotrNNuLy20C4TX33oTeJdlRVNaRpnNyR9AZk899kQp0jXYf+fb3tygDALPtGfLifk1a9YioiMvIQQOJGLdjeb46dHh0fH3ffiDAwP9BtEpVjkhY55leVmWPkZGywix/NrnPj98+NDhg8cvuOL119/5RshCQFq7dk1OIXTlM9MzEiOHCrYlyBvBSYtW4UcAUMboWHllFOwd73lHUcSa0Jeq+GDscK/o+z/y60Pr1hgB+kw3TIYDEmXeII1JYiJwCk1VQIcQy0iEBnbZlZdv33buls3rmQiIse4U8LFaagoaVpQUiyLWlXyr6BmpGReBDE8dOvrlT392anyyCPmn/uI/b9i4HleMOqm7GBBNTQEgZFQD/UwsomJ6252331wWKjHPsxA4y5upAkpWoylM0ClKRMrygGgisWa/ACAYqoAP5Kk7JKiaB+Q3D87NAhNzkqB0Wp3jx06Gvp5bb79dVYCX7xwqFkBN8WPCV/e/Nnzq9J1vffOJQ/v3PbPngksvhma+47wL6gYh57IqmEosivLvv/DlO+69+9bbf4UIovdMJx/N3vsPAIgUAj726GMHXjneLvW3PvH7F121qz27dHLPvtdeefWZp5/p7e8fmZy48NKLmUMtHFxJkiXWkIiYj5Op4sik0kzY1ZVXuFTdJeHMQWDmNWetK2LZMEJapr27fa86OFzZoAoh3OUoEYSK8WhvuueOxfkltmBRkEirbkEnPZtZHrIoomqpqzWwikpFsYXq82YqEve98Nx3vvi1qbnFdqPn//jzT61ZtzoS5lXPtg+jMq95LVP0yT00mhGHQEwoCKYZm4GHhmVZ+oedTRtj9N7ARiO3uqvIjKveWj9RUzdXPjWvoo2smNsWY2RCDKjRAwgbGxtbKorXX/L6gf4+xhT5iUpdiU33QFSWZVSdmptvdHW/unffz3/44DkXXbhx587X7bqwkTcI06AvrxkzEwc+cfTo/e9+x7aztxGbiCBnBIqEKikApuV2ZV3qdMYmJs9a3f/Cz5984edPTIyNr1u95tDx4+Nzc0uF/Nbv/27e3QXVHqpqnjfKWPryENNUBLX67AUBmUNirANmmRfRPXyERPNypqgBh8zf8vZMTeWdNCYN0VnwRATEkIa9AZopzs6WFe8Hqhr1MlWIyBcJTs2pRbUqNgEARFEir+UZEFtZ7H/++e997V+OnDp10ete//4PfbCnv6eZZ0wIZs4090DFFMxQTDE5LjDvn0gBPJiZqZLPpASQGCsedz25hFUVyae7hLpdjtN4yLq7Uj1PttTul7IbqmKsmuLhbaG+CWNjo4ODg0TszH3nBkJFzQsrJhKq2U9+8OA/fvEr69cNve8jH7nk0gu8fp5lLBHIZ+TV/DvvHBFxuo7Xg8vCUdZMqwlViEgBRSRGe+znTz//3PNHDx9oclbGcn5uYduO8zdt237vPXesXjMQgl/IZ5mYaI0qWWAw9ZYfQIKyjHmexWi1XoGPa0MC0LohjJhMDRCyRPY0F3HyEa8GTM6IUDBbmFvoLLUklvMzk2dtPbt79RB7CW5hQSoCfLqdeoAYpLO2uimRiM1nLkCqWxuAjydU1SwjQ3zypw8/+PVvDY+eue6+e++6767B/l7mnBHrWMqLA+7OTaEQ8VmlKgpVEODMHBVF7/X2fldVH2IBK/odiAhQveEYK65j7Z3NUves746meZaJ8wk1g6OeNwQp3/FqtKpmWeZsEFdoV7C6lyGJo5RmPDk5093dlTeIkEAtZJlIZAqOWquqJVZdGuzGlOociMiUkIv6lig5DYqx7BRlpxRRxySFEbsaXQLSYGo0cg4IACpmZlkWRFLPoKNC9dwbYqwkOx2EqlRzaagazefmmMU0xS0SMwIgYAoqMj8ze/jAa2Mnh4eGBo4dOaKt8sihw+12x0xXD67GRvahP/69voEBA3Rat7MrfSIANxq5WyasPJebmbKIRImK5NXysiwRCcmprtRudQ7tffH7X/3m2OT0m97/7jfdezcTZT7iQ1P3f51RihigxVgQEUjRai3lWQaICqiixDQ7NT185Pi6s9av3bAhNBvRtCwiI1fc/GQAHPdqNpse7tTta+7iK7JUsk913gCwPA7JKh62GcQ0lcBqowiJeipV5L7MTqvblgLnMcrA0CozCwyEGXCa65KkGVOVzfMeIjJb7qVzkfaNddeRxudpwZwhAgcIBRBmHkeQQZ4FgaACphALy/MA5OoBUE0TrnphiAPVewWp2Wv5b6fhq2qMJREBgmlEA1JcmJs7duDgob37Wp32xOhYT0/PyMhIq9Vqt4qZxVZ338D4mbEYy05ZtmO5ecvmdX19M5MzXT19SCG4ISEOAE7as1iKJxRIpJI6aM0sb+SVMiESV17ZJ8lgjMXCxMS//uM/q8CVN1z7prvflAfiLAczBEMmIO/6MO/ARAZVm19YOj18anpy6pGfPnLutnNGT53IskzQLt51ybHDR5dmFpaWFrdt37p+7ept556z7bJLTBDAPIaoRo2Z99wSc83sJ/IZ4MmpOcmYCH1wNFYDGq0agVlFphSIl1vUCQhZNQ3ecLn0cJiQ1AFSDyrVEDBDAD8YU4f9vAbCTCKRCBt57reaTrfq9FdRRB+VhWriu6sKjG4LQQ1EgQKqGDMZQqkGSB5iq1pZCoeU8HMgiVopDBGnqYgm6oOgBcSbW0qVnFkhQgQmzrOwtLC4b+9Ls6Oji9OzIyOnhkdPmejs1FyniKfGTmShuVTCeRdffNn1V3f19gysGcpDNjMzOzg0NDk19dILe6fOjK7etFEAAgAuzPkEVWP2/FmrfVyGmLWaclbb//p/VWptsSj+y3/81OSpyWzt6k986k9WDw3W4QhUjokw+WxTDUgRzACiKqKWRXns6InFdmd2evrs7duPHzn61KOP9/f0nx4emV2c72XYsnb1dXfffuVNNy075kqGtGq68tjdHRkhO8RsZlm+nG9aRRCqrJ23CZAKeOedMydFIhJUvRhueAQAmVJ7BSKpVhNZQy5S9UWGyhR5M+ryiMA0zs8JlZgyD6qJlj6Jk6uZZE4X9npRPWsvhJB+DTEwe5nFg+jES/ZoyJbtk6+XmEANEaMqIXVikQU2NFSbOnV6fGxicW7m5T3Pnzoy3F4qZ9qLs1Mzi2Un6+nq6VvV1dWzddu22+95Q19XX//QauQMJXLw8kTdOacSjRn6V/V5uB6870zV1MARF0tauDyGD1JmDlB3faEPylKJ5rNMTh47NjFyplPaHbe/odloMBH45JHqZeb8aSUiNS3QRJUCZWSxLBs5nXvuptkzE6PtuaN7nhk5eWrqxNFZg7ITF9uLJ+cWXj188rI33lXXRvyGqkAQPMbSahIEVKPuPLrqdIpGI/co3m+bqyniriydjjAjVA6LfEYepk2A5YYfq3xiQu8SYRKUGdSAmGLVS+cwbD2goM54KDUcp6pAheEl+YNqTEbKrRCJqNls1O21dUSoZkRGnPL8WmeQgMGllh08U1UwUABEQ1QxRdCTh48dfGV/e3rhhSeeDXljbGzizPTEbHtJKQPmt77trefu3HHF664AMAUg5jxzlUFkkigrp9UTUbvd7m7mIQtoTlGHpOju2mMUSKjVsomiapiYamptAwCElIGXZUmKhvbwgz+bK4r1W7ZcfeN13V1dDmj4XEY185k+PnfATEGl016aPDM+MTZ68tjx2C6PvHa4aBetojM7Na1grU45MzPXiUWWd23ccs61b7zyhutfv+HsdRUn2MfdpKApliX/0tRXAsAsT8NqyDBArlrjWwligGoCsXNxwYwZUxhQabnP3pWqXRMRuZpVVLfE5XnmT47weaQe72s1BaUep4vVfNdaYyF1FaSpG7VVU4XUaFWF9t4pqr88i9bMvIOtPq8krOKElgzMG+p9CK8agnXap48cO/jq/qd//ChhmFlaODMzMytKZjsuvOS++++9/HWXrFq1CtF6evsQAAGzLACTmgYKUcRWJN1ZFsoy9ZZ2d3erCIBhgpM0OEiIy2xlqDMXX0PdjOur9dOKZUqJ8zw3VQEV4bKUzuxMrwqxmgIhhYzaS/MAdvr4CVMbPjYyPzO3tDQ7NjI8NjyxsLhYSuyUUkZZWFoEAAEd2LB17frBay/ftfXc88+Mnrnu2mt6u/MyllkIXV1d1XxEFNGQBTVvGQoxCofgzbNucH1QnrdAIVYPs5BU56oDcK9MIIH50zDIfAZzYJcArPmPIWBVZ0Uz63SKLOSIUBYeUVFRlESUheADXgBIRJkyQgasZwcrE0cRQEQCEfE/QxZEVLRuAEREjNWwnZAF1TRrSUQTEbSCzNWQOTM1QopRiAHQkLy9KwXmyAYi3//6t/Y+/IvpTjFy5oxl2fbzzrv9rjuvv+2mnjzvbmbu7rMsU10mFgAAAsZSNCCaZUmIyURFNcu8+U+8v8NZyYhgCukBAq4rte/L8+AjWYjQcdjqEQ9Vb3hMWguEBlDE4ucPPvqF//nZDauHGgHzjAZCo9nTF7p6Wp3Oxh3bT504cfrU6cXZ2TzvmpyZmlmYzZrdvb2r+vr6N527/XVXva6nq2vTxo2QZ1lXd19vIDMiCMTe3RRCVpvPGnxSVc+0q9L6L01dr0GHNLSJyXNDicnuckg9/laxPuosr874qCqM1T7L4XbPTBGSQ6zngdfWKAQ2XabCGchylUIrCm/AOmD1JnFvX3PFcCiHCIuiLMui0cwlKhF71wNW/Yme5oKBT/cDMIPlZ0E42imiCDY2NvG/Pv3Fo68eGVw3ePMbbnvd1Vc0Go1mM1fUgD6OmiqGQdpDqKYdgWdIVYkXEVVERb1HDVI6sjyJGQBwYb5U1doa1UdC1eAU31+u5ib6Sagk0pUhIVgRy/nZ+a9+6asP/dtPMyOUmKO1OkU06B8Y0mbe39+3enDo3HO3Z3nXhi1nrT5rzeaztzJCI28AKpF7IpLCAKzRAJVghkikYBpjHU4xs89OSvkzLM98kxWDViF1gqT4wyoaD4CPmUA/Raigo3pQbP1OHdAQoZepUgdw9TFHthIt08xWFKlSYGr13HNV82cmMACCUQXGpkqOiIQsMx9lQOxPl0BMD0ZAhE6nY6D+NAMHzVe2X4sYmPkcFGaX8jSnFNIDcEJRlCK275X9Xd09Z2/ZRISiMctyJCIkNBCNUAVMqhXUYunBFmZmCDXbIIQgUQjRwKiiH9fhuMsiLsyleqfXKZB8lKD5g77MHQWnY4hRshCQAAFFDYH80ESjCLRbnYnJqRPHhyfHJ84+Z4uBDQ0NNbLQtaoHiRkwD4GQQ8Zm4qPkVMW0glIgIUhRIiExIQdWM4bluu+yQviWMCwfuXdEwXIa64FjRcT2AMXbdn0aQPrDo/K0HWkQJgKCij8ipUqQyQ8BylJ8+RX8SKb++BoPqdOLOfi/QhZEIgAQphJCFcLW4/x8QZhnXD/OyJXDweSyLJCQsEatIcuCqZsSc3oBE4oYppYHq2dDJMQY/MkrEmMEyjmNixIE9PQtqnheGWNEpISQm4lEBAxZgGqKsYt12owqQARITxqrdRrnZ6Mb1DRRRGI9Xjv51yjE3r4o5nkA+cmRRDMzClzNPkgjeMsyNptpqFAdVGI1HthFEZxokGVu4RP9rcqVEMAnqHqWWlsF1z/PA1QFcHlODlUknMoAL8dR9V81aqVqqsnXV3NyrC77SLRqtIECJuiyMkiCyKbebqIhQ9M0hLMshdnTgDRboMYO/N5iaQDp7Os4T5cf5UJqy8NqRUQ0VURU1RPJLAuQBqUaEZZRKpzFK4P+FIxle+b1K7P0jA/fn/SEvURqSSAfc+YVYO/ncdkgQjMtiiIwh6xRk5LTRF9IhcJkriCtlBhVAVuLYl6u94qaz99Jg2kBDESU09RvMDAklGjmyZeRetN3GqMTHQA1MARGQH9yEDE5frPCljIkHoEGzqyaksUZe7UEDDj5EbEKprIKWHdT5JwIclZ0NYm/+m9SFVsug0LdXlIVCpeLPADgIzr9yGNZ4xFAvHJIgblxcjPpc+SR0LnK/pxEB18gzfO0OihxrY6xREp8B6vm/deCFaWslRARS58kjWamPtvSVSgwa7pVSFsHSEjenVszVOufcq2BiuEIUF8dEtoOsPL5BFV44EGh+EOXNI0qriDPFHBztUyf91txAAn/P8vdy+z0pwkWAAAAAElFTkSuQmCC'
  1355.             ],
  1356.             [
  1357.                 'auth' => 1,
  1358.                 'auth_type' => 'Approved By',
  1359.                 'name' => 'Khandoker Mozibul Yasser',
  1360.                 'designation' => 'Chairman',
  1361.                 'signature' => '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'
  1362.             ]
  1363.         ];
  1364.         //        $company_data = Company::getCompanyData($em, $this->getLoggedUserCompanyId($request));
  1365.         $company_data Company::getCompanyData($em1);
  1366.         $document_mark = array(
  1367.             'original' => '/images/Original-Stamp-PNG-Picture.png',
  1368.             'copy' => ''
  1369.         );
  1370.         if ($request->query->has('pdf') && $this->get('knp_snappy.pdf')) {
  1371.             $html $this->renderView(
  1372.                 '@Application/pages/human_resource/print/salary_certificate.html.twig',
  1373.                 array(
  1374.                     //full array here
  1375.                     'pdf' => true,
  1376.                     'page_title' => 'Salary Certificate',
  1377.                     'employee' => $employee,
  1378.                     'printDate' => $printDate,
  1379.                     'desg' => $desg,
  1380.                     'employeeDetails' => $employeeDetails,
  1381.                     'earningValues' => $earningValues,
  1382.                     'authorizations' => $authorizations,
  1383.                     'appId' => $idData['appId'],
  1384.                     'export' => 'pdf,print',
  1385.                     'document_mark_image' => $document_mark['original'],
  1386.                     'company_name' => $company_data->getName(),
  1387.                     'company_data' => $company_data,
  1388.                     'company_address' => $company_data->getAddress(),
  1389.                     'company_image' => $company_data->getImage(),
  1390.                     'invoice_footer' => $company_data->getInvoiceFooter(),
  1391.                     'page_header' => 'New Product',
  1392.                     'document_type' => 'Sales Bill',
  1393.                     'page_header_sub' => 'Add',
  1394.                     //                'type_list'=>$type_list,
  1395.                     //                'mis_data'=>$mis_data,
  1396.                     //                'mis_print'=>$mis_print,
  1397.                     'item_data' => [],
  1398.                     'received' => 2,
  1399.                     'return' => 1,
  1400.                     'total_w_vat' => 1,
  1401.                     'total_vat' => 1,
  1402.                     'total_wo_vat' => 1,
  1403.                     'invoice_id' => 'abcd1234',
  1404.                     'created_by' => 'created by',
  1405.                     'created_at' => '',
  1406.                     'red' => 0,
  1407.                 )
  1408.             );
  1409.             $pdf_response $this->get('knp_snappy.pdf')->getOutputFromHtml($html, array(
  1410.                 //                'orientation' => 'landscape',
  1411.                 //                'enable-javascript' => true,
  1412.                 //                'javascript-delay' => 1000,
  1413.                 'no-stop-slow-scripts' => false,
  1414.                 'no-background' => false,
  1415.                 'lowquality' => false,
  1416.                 'encoding' => 'utf-8',
  1417.                 //            'images' => true,
  1418.                 //            'cookie' => array(),
  1419.                 'dpi' => 300,
  1420.                 'image-dpi' => 300,
  1421.                 //                'enable-external-links' => true,
  1422.                 //                'enable-internal-links' => true
  1423.             ));
  1424.             return new Response(
  1425.                 $pdf_response,
  1426.                 200,
  1427.                 array(
  1428.                     'Content-Type' => 'application/pdf',
  1429.                     'Content-Disposition' => 'attachment; filename="salary_certificate_' $id '.pdf"'
  1430.                 )
  1431.             );
  1432.         }
  1433.         return $this->render(
  1434.             '@Application/pages/human_resource/print/salary_certificate.html.twig',
  1435.             array(
  1436.                 'page_title' => 'Salary Certificate ',
  1437.                 'employee' => $employee,
  1438.                 'printDate' => $printDate,
  1439.                 'employeeDetails' => $employeeDetails,
  1440.                 'earningValues' => $earningValues,
  1441.                 'desg' => $desg,
  1442.                 'authorizations' => $authorizations,
  1443.                 'appId' => $idData['appId'],
  1444.                 'export' => 'none',
  1445.                 'document_mark_image' => $document_mark['original'],
  1446.                 'company_name' => $company_data->getName(),
  1447.                 'company_data' => $company_data,
  1448.                 'company_address' => $company_data->getAddress(),
  1449.                 'company_image' => $company_data->getImage(),
  1450.                 'invoice_footer' => $company_data->getInvoiceFooter(),
  1451.                 'page_header' => 'New Product',
  1452.                 'document_type' => 'Sales Bill',
  1453.                 'page_header_sub' => 'Add',
  1454.                 //                'type_list'=>$type_list,
  1455.                 //                'mis_data'=>$mis_data,
  1456.                 //                'mis_print'=>$mis_print,
  1457.                 'item_data' => [],
  1458.                 'received' => 2,
  1459.                 'return' => 1,
  1460.                 'total_w_vat' => 1,
  1461.                 'total_vat' => 1,
  1462.                 'total_wo_vat' => 1,
  1463.                 'invoice_id' => 'abcd1234',
  1464.                 'created_by' => 'created by',
  1465.                 'created_at' => '',
  1466.                 'red' => 0,
  1467.             )
  1468.         );
  1469.     }
  1470.     public function sendSmsSocketAction(Request $request$id 0)
  1471.     {
  1472.         $msg $request->request->get('message'$request->query->get('message'''));
  1473.         $phoneNumber $request->request->get('phoneNumber'$request->query->get('phoneNumber'''));
  1474.         $emitMarker $request->request->get('emitMarker'$request->query->get('emitMarker''_SEND_TEXT_TO_MOBILE_'));
  1475.         $sendType $request->request->get('sendType'$request->query->get('sendType''all'));
  1476.         $socketUserIds $request->request->get('socketUserIds'$request->query->get('socketUserIds', []));
  1477.         if ($msg != '' && $phoneNumber != '') {
  1478.             $searchVal = [];
  1479.             $replaceVal = [];
  1480.             $msg str_replace($searchVal$replaceVal$msg);
  1481.             System::SendSmsBySocket($this->container->getParameter('notification_enabled'), $msg$phoneNumber$emitMarker$sendType$socketUserIds$deviceId "_DEFAULT_");
  1482. //            return 0;
  1483.         }
  1484.         if ($request->request->get('returnJson'$request->query->get('returnJson'0)) == 1) {
  1485.             return new JsonResponse(array(
  1486.                 'success' => true,
  1487.                 'message' => $msg,
  1488.                 'phoneNumber' => $phoneNumber,
  1489.                 'sendType' => $sendType,
  1490.                 'emitMarker' => $emitMarker,
  1491. //                        'documentHash' => $order->getDocumentHash(),
  1492. //                'documentId' => $receiptId,
  1493. //                'documentIdPadded' => str_pad($receiptId, 8, '0', STR_PAD_LEFT),
  1494. //
  1495. //                'viewUrl' => $url . "/" . $receiptId,
  1496.             ));
  1497.         } else return $this->render('@Buddybee/pages/send_text_by_socket.html.twig', array(
  1498.             'page_title' => 'Send Text',
  1499.             'message' => $msg,
  1500.             'phoneNumber' => $phoneNumber,
  1501.             'sendType' => $sendType,
  1502.             'emitMarker' => $emitMarker,
  1503.         ));
  1504.     }
  1505.     public function sendPushNotificationSocketAction(Request $request$id 0)
  1506.     {
  1507.         $tokens explode(','$request->query->get('tokens'''));
  1508.         $options $request->request->get('options', [
  1509.             'em' => null,
  1510.             'isBuddybee' => 1,
  1511.             'targetRoute' => 'consultancy_session',
  1512.             'targetUrl' => 'consultancy_session',
  1513.             'targetPath' => 'consultancy_session',
  1514.             'targetId' => 0,
  1515.             'meetingId' => 0,
  1516.             'userId' => 0,
  1517.             'applicantId' => 0,
  1518.             'taggedUserIds' => [],
  1519.             'type' => 0,
  1520.             'expireTs' => 0,
  1521.             'userIdPrefixForSocket' => 'BBEE_',
  1522.             'emitMarker' => '_SOCKET_NOTIFICATION_HERE_',
  1523.             'dataObj' => array(
  1524.                 'isBuddybee' => 1,
  1525.                 'targetRoute' => 'consultancy_session',
  1526.                 'targetUrl' => 'consultancy_session',
  1527.                 'targetPath' => 'consultancy_session',
  1528.                 'targetMobileAppPath' =>
  1529.                     isset(GeneralConstant::$MOBILE_APP_PATH_BY_ROUTING['consultancy_session']) ? GeneralConstant::$MOBILE_APP_PATH_BY_ROUTING['consultancy_session'] : '',
  1530.                 'targetId' => 0,
  1531.                 'meetingId' => 0,
  1532.                 'userId' => 0,
  1533.                 'applicantId' => 0,
  1534.                 'taggedUserIds' => [0],
  1535.             ),
  1536.             'firebasePushData' => array(
  1537.                 'notification' => array(
  1538.                     'title' => $request->query->get('title''TITLE HERE'),
  1539.                     'body' => $request->query->get('body''MY NOTIFICATION BODY')
  1540.                 ),
  1541.                 'data' => [
  1542. //                                'score' => '850',
  1543. //                                'time' => '2:45',
  1544.                     'route' => 'https://buddybee.eu/consultancy_session/1'
  1545.                 ],
  1546.                 'android' => [
  1547.                     'notification' => [
  1548.                         // icon: 'stock_ticker_update',
  1549.                         // color: '#7e55c3',
  1550.                         'imageUrl' => 'https://buddybee.eu/buddybee_assets/images/author-1.png'
  1551.                     ]
  1552.                 ],
  1553.                 'topic' => 'SESSION BOOKED',
  1554.                 'tokens' => $tokens,
  1555.             )
  1556.         ]);
  1557.         if (is_string($options)) $options json_decode($optionstrue);
  1558.         System::AddNewNotificationUpdated(
  1559.             $this->container->getParameter('notification_enabled'),
  1560.             $this->container->getParameter('notification_server'),
  1561.             0//appId
  1562.             0,//company Id
  1563.             '',
  1564.             GeneralConstant::NOTIFICATION_TYPE_ALERT,//type
  1565.             "",
  1566.             "Schedule Confirmed",
  1567.             'emit',
  1568.             0,
  1569.             1,
  1570.             $options
  1571.         );
  1572.         return new JsonResponse($options);
  1573.     }
  1574.     public function GetEntitySignatureAction(Request $request)
  1575.     {
  1576.         $details_ids = [];
  1577.         $em $this->getDoctrine()->getManager('company_group');
  1578.         $retData = [
  1579.             'success' => false,
  1580.         ];
  1581.         if ($request->isMethod('POST')) {
  1582.             $query_here $em->getRepository('CompanyGroupBundle\\Entity\\EntityEncryptedSignature')
  1583.                 ->findOneBy(
  1584.                     array(
  1585.                         'userId' => $request->request->get('userId'0)
  1586.                     )
  1587.                 );
  1588.             if ($query_here) {
  1589.                 $retData['success'] = true;
  1590.                 $retData['data'] = $query_here->getData();
  1591.             }
  1592.         }
  1593.         return new JsonResponse($retData);
  1594.     }
  1595.     public function SwitchAppAction(Request $request)
  1596.     {
  1597.         $details_ids = [];
  1598.         $em $this->getDoctrine()->getManager('company_group');
  1599. //        $this->get('url_encryptor')->decrypt($encData);
  1600.         $retData = [
  1601.             'success' => false,
  1602.                    ];
  1603.         return new JsonResponse($retData);
  1604.     }
  1605.     public function DebugTestAction(Request $request)
  1606.     {
  1607.         $details_ids = [];
  1608.         $em $this->getDoctrine()->getManager('company_group');
  1609.         $ggDT=array('pika'=>'chu');
  1610.         $encData=$request->get('encData',$this->get('url_encryptor')->encrypt(json_encode($ggDT)));
  1611. //        $this->get('url_encryptor')->decrypt($encData);
  1612.         $retData = [
  1613.             'success' => false,
  1614.             'test' => $this->get('url_encryptor')->decrypt($encData),
  1615.             'test1' => $this->get('url_encryptor')->decrypt('RmVlU0RBdnMrWnFySFU0UXZOeGZSRTNPL3h2dzN0aytlN2U2MjNBam16VlNtTUozZzU3VDc2K2lpYWc1THp5T0phQXI3RnMvRTRCNUxGQUp2dE1KeXdwTW0xV1lrMzlSMGFxVXVGQzZPVnliVTBJQw'),
  1616.             'test2' => json_decode($this->get('url_encryptor')->decrypt($encData),true),
  1617.         ];
  1618.         return new JsonResponse($retData);
  1619.     }
  1620.     public function ViewDocByGlobalIdAction(Request $request$trackingId ''$appMarker '')
  1621.     {
  1622. //        $em = $this->getDoctrine()->getManager();
  1623.         $globalIdStr $request->get('globalIdStr''');
  1624.         $globalIdData MiscActions::getExpandedDataFromGlobalId($globalIdStr);
  1625.         $routeName $request->attributes->get('_route');
  1626.         $pbcId 0;
  1627.         $goc 0;
  1628.         $appId 0//these we will need eventually
  1629.         $productByCodeData = [];
  1630.         $productByCodeDataObj = [];
  1631.         $productByData = [];
  1632.         $trackingData = [];
  1633.         $productName '';
  1634.         $em_goc $this->getDoctrine()->getManager('company_group');
  1635.         $em_goc->getConnection()->connect();
  1636.         $gocEnabled 0;
  1637.         if ($this->container->hasParameter('entity_group_enabled'))
  1638.             $gocEnabled $this->container->getParameter('entity_group_enabled');
  1639.         if ($gocEnabled == 1)
  1640.             $connected $em_goc->getConnection()->isConnected();
  1641.         else
  1642.             $connected false;
  1643.         $goc null;
  1644.         if ($connected) {
  1645.             if ($routeName == 'track_after_sales_service_product_serial_query') {
  1646.                 if ($appMarker != '') {
  1647.                     $goc $em_goc
  1648.                         ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1649.                         ->findOneBy(
  1650.                             array(
  1651.                                 'companyGroupHash' => $appMarker
  1652.                             )
  1653.                         );
  1654.                 }
  1655.             } else {
  1656. //                if($trackingId !='' && stripos($trackingId,'TR') !== false)
  1657. //                {
  1658. //                    $appId=substr($trackingId,2,5);
  1659. //                    $pbcId=substr($trackingId,7,8);
  1660. //                    if(!is_numeric($appId))
  1661. //                        $appId=0;
  1662. //                }
  1663.                 $goc $em_goc
  1664.                     ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1665.                     ->findOneBy(
  1666.                         array(
  1667.                             'appId' => $appId
  1668.                         )
  1669.                     );
  1670.             }
  1671.         }
  1672.         if ($goc) {
  1673.             $appId $goc->getAppId();
  1674.             $appMarker $goc->getCompanyGroupHash();
  1675.             $connector $this->container->get('application_connector');
  1676.             $connector->resetConnection(
  1677.                 'default',
  1678.                 $goc->getDbName(),
  1679.                 $goc->getDbUser(),
  1680.                 $goc->getDbPass(),
  1681.                 $goc->getDbHost(),
  1682.                 $reset true
  1683.             );
  1684.         }
  1685.         //now get related data if $goc exists
  1686.         $em $this->getDoctrine()->getManager();
  1687.         $responseData = [
  1688.             'page_title' => 'Entity Setup',
  1689.             'appId' => $appId,
  1690.             'appMarker' => $appMarker,
  1691.         ];
  1692.         return $this->render(
  1693. //            '@System/pages/public:entity_setup.html.twig',
  1694.             'ApplicationBundle:pages/central:setup_app.html.twig',
  1695.             $responseData
  1696.         );
  1697.     }
  1698.     public function EntitySetupAction(Request $request$trackingId ''$appMarker '')
  1699.     {
  1700. //        $em = $this->getDoctrine()->getManager();
  1701.         $routeName $request->attributes->get('_route');
  1702.         $pbcId 0;
  1703.         $goc 0;
  1704.         $appId 0//these we will need eventually
  1705.         $productByCodeData = [];
  1706.         $productByCodeDataObj = [];
  1707.         $productByData = [];
  1708.         $trackingData = [];
  1709.         $productName '';
  1710.         $em_goc $this->getDoctrine()->getManager('company_group');
  1711.         $em_goc->getConnection()->connect();
  1712.         $gocEnabled 0;
  1713.         if ($this->container->hasParameter('entity_group_enabled'))
  1714.             $gocEnabled $this->container->getParameter('entity_group_enabled');
  1715.         if ($gocEnabled == 1)
  1716.             $connected $em_goc->getConnection()->isConnected();
  1717.         else
  1718.             $connected false;
  1719.         $goc null;
  1720.         if ($connected) {
  1721.             if ($routeName == 'track_after_sales_service_product_serial_query') {
  1722.                 if ($appMarker != '') {
  1723.                     $goc $em_goc
  1724.                         ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1725.                         ->findOneBy(
  1726.                             array(
  1727.                                 'companyGroupHash' => $appMarker
  1728.                             )
  1729.                         );
  1730.                 }
  1731.             } else {
  1732. //                if($trackingId !='' && stripos($trackingId,'TR') !== false)
  1733. //                {
  1734. //                    $appId=substr($trackingId,2,5);
  1735. //                    $pbcId=substr($trackingId,7,8);
  1736. //                    if(!is_numeric($appId))
  1737. //                        $appId=0;
  1738. //                }
  1739.                 $goc $em_goc
  1740.                     ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1741.                     ->findOneBy(
  1742.                         array(
  1743.                             'appId' => $appId
  1744.                         )
  1745.                     );
  1746.             }
  1747.         }
  1748.         if ($goc) {
  1749.             $appId $goc->getAppId();
  1750.             $appMarker $goc->getCompanyGroupHash();
  1751.             $connector $this->container->get('application_connector');
  1752.             $connector->resetConnection(
  1753.                 'default',
  1754.                 $goc->getDbName(),
  1755.                 $goc->getDbUser(),
  1756.                 $goc->getDbPass(),
  1757.                 $goc->getDbHost(),
  1758.                 $reset true
  1759.             );
  1760.         }
  1761.         //now get related data if $goc exists
  1762.         $em $this->getDoctrine()->getManager();
  1763.         $responseData = [
  1764.             'page_title' => 'Entity Setup',
  1765.             'appId' => $appId,
  1766.             'appMarker' => $appMarker,
  1767.         ];
  1768.         return $this->render(
  1769. //            '@System/pages/public:entity_setup.html.twig',
  1770.             'ApplicationBundle:pages/central:setup_app.html.twig',
  1771.             $responseData
  1772.         );
  1773.     }
  1774.     public function AfterSalesServiceTrackingAction(Request $request$trackingId ''$appMarker '')
  1775.     {
  1776. //        $em = $this->getDoctrine()->getManager();
  1777.         $routeName $request->attributes->get('_route');
  1778.         $pbcId 0;
  1779.         $goc 0;
  1780.         $appId 0//these we will need eventually
  1781.         $productByCodeData = [];
  1782.         $productByCodeDataObj = [];
  1783.         $productByData = [];
  1784.         $trackingData = [];
  1785.         $productName '';
  1786.         $em_goc $this->getDoctrine()->getManager('company_group');
  1787.         $em_goc->getConnection()->connect();
  1788.         $gocEnabled 0;
  1789.         if ($this->container->hasParameter('entity_group_enabled'))
  1790.             $gocEnabled $this->container->getParameter('entity_group_enabled');
  1791.         if ($gocEnabled == 1)
  1792.             $connected $em_goc->getConnection()->isConnected();
  1793.         else
  1794.             $connected false;
  1795.         $goc null;
  1796.         if ($connected) {
  1797.             if ($routeName == 'track_after_sales_service_product_serial_query') {
  1798.                 if ($appMarker != '') {
  1799.                     $goc $em_goc
  1800.                         ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1801.                         ->findOneBy(
  1802.                             array(
  1803.                                 'companyGroupHash' => $appMarker
  1804.                             )
  1805.                         );
  1806.                 }
  1807.             } else {
  1808.                 if ($trackingId != '' && stripos($trackingId'TR') !== false) {
  1809.                     $appId substr($trackingId25);
  1810.                     $pbcId substr($trackingId78);
  1811.                     if (!is_numeric($appId))
  1812.                         $appId 0;
  1813.                 }
  1814.                 $goc $em_goc
  1815.                     ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1816.                     ->findOneBy(
  1817.                         array(
  1818.                             'appId' => $appId
  1819.                         )
  1820.                     );
  1821.             }
  1822.         }
  1823.         if ($goc) {
  1824.             $appId $goc->getAppId();
  1825.             $appMarker $goc->getCompanyGroupHash();
  1826.             $connector $this->container->get('application_connector');
  1827.             $connector->resetConnection(
  1828.                 'default',
  1829.                 $goc->getDbName(),
  1830.                 $goc->getDbUser(),
  1831.                 $goc->getDbPass(),
  1832.                 $goc->getDbHost(),
  1833.                 $reset true
  1834.             );
  1835.         }
  1836.         //now get related data if $goc exists
  1837.         $em $this->getDoctrine()->getManager();
  1838.         if ($trackingId != '') {
  1839.             if (is_numeric($trackingId)) {
  1840.                 $productByCodeDataQuery $em->getRepository('ApplicationBundle\\Entity\\ProductByCode')
  1841.                     ->createQueryBuilder('p')
  1842.                     ->where("( p.salesCode like '%$trackingId%'
  1843.                                     or p.imei1 like '%$trackingId%'
  1844.                                     or p.imei2 like '%$trackingId%'
  1845.                                     or p.imei3 like '%$trackingId%'
  1846.                                     or p.imei4 like '%$trackingId%'
  1847.                                     or p.serialNo like '%$trackingId%'
  1848.                                     )")
  1849.                     ->getQuery()
  1850.                     ->getResult();
  1851.                 if (!empty($productByCodeDataQuery))
  1852.                     $productByCodeData $productByCodeDataQuery[0];
  1853.             } else if ($pbcId != 0) {
  1854.                 $productByCodeData $em
  1855.                     ->getRepository("ApplicationBundle\\Entity\\ProductByCode")
  1856.                     ->findOneBy(
  1857.                         array(
  1858.                             'productByCodeId' => $pbcId
  1859.                         )
  1860.                     );
  1861.             } else {
  1862.                 $productByCodeData $em
  1863.                     ->getRepository("ApplicationBundle\\Entity\\ProductByCode")
  1864.                     ->findOneBy(
  1865.                         array(
  1866.                             'afterSalesTrackingId' => $trackingId
  1867.                         )
  1868.                     );
  1869.             }
  1870.         }
  1871.         if (!empty($productByCodeData)) {
  1872.             $productData $em
  1873.                 ->getRepository("ApplicationBundle\\Entity\\InvProducts")
  1874.                 ->findOneBy(
  1875.                     array(
  1876.                         'id' => $productByCodeData->getProductId()
  1877.                     )
  1878.                 );
  1879.             if ($productData) {
  1880.                 $productName $productData->getName();
  1881.             }
  1882.             $trackingData json_decode($productByCodeData->getAfterSalesServiceTrackingStatusData(), true);
  1883.             if ($trackingData == null)
  1884.                 $trackingData = [];
  1885.             $productByCodeDataObj['productByCodeId'] = $productByCodeData->getProductByCodeId();
  1886.             $productByCodeDataObj['salesCode'] = $productByCodeData->getSalesCode();
  1887.             $productByCodeDataObj['serialNo'] = $productByCodeData->getSerialNo();
  1888.             $productByCodeDataObj['imei1'] = $productByCodeData->getImei1();
  1889.             $productByCodeDataObj['imei2'] = $productByCodeData->getImei2();
  1890.             $productByCodeDataObj['imei3'] = $productByCodeData->getImei3();
  1891.             $productByCodeDataObj['imei4'] = $productByCodeData->getImei4();
  1892.         }
  1893.         $responseData = [
  1894.             'page_title' => 'Service Tracking',
  1895.             'productByCodeData' => $productByCodeData,
  1896.             'productByCodeDataObj' => $productByCodeDataObj,
  1897.             'trackingData' => $trackingData,
  1898.             'productName' => $productName,
  1899.             'appId' => $appId,
  1900.             'appMarker' => $appMarker,
  1901.             'trackingId' => $trackingId,
  1902.         ];
  1903.         return $this->render(
  1904.             '@Sales/pages/report/after_sales_service_tracking_public.html.twig',
  1905.             $responseData
  1906.         );
  1907.     }
  1908.     public function MeetingConfirmationAction(Request $request)
  1909.     {
  1910. //        $em = $this->getDoctrine()->getManager();
  1911.         $resMessage "";
  1912.         $resMessageType "";
  1913.         if ($request->query->get('appId') != && $request->query->get('appId') != "") {
  1914.             $em_goc $this->getDoctrine()->getManager('company_group');
  1915.             $em_goc->getConnection()->connect();
  1916.             $gocEnabled 0;
  1917.             if ($this->container->hasParameter('entity_group_enabled'))
  1918.                 $gocEnabled $this->container->getParameter('entity_group_enabled');
  1919.             if ($gocEnabled == 1)
  1920.                 $connected $em_goc->getConnection()->isConnected();
  1921.             else
  1922.                 $connected false;
  1923.             $goc false;
  1924.             if ($connected) {
  1925.                 $goc $em_goc
  1926.                     ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1927.                     ->findOneBy(
  1928.                         array(
  1929.                             'appId' => $request->query->get('appId')
  1930.                         )
  1931.                     );
  1932.             }
  1933.             if ($goc) {
  1934.                 $connector $this->container->get('application_connector');
  1935.                 $connector->resetConnection(
  1936.                     'default',
  1937.                     $goc->getDbName(),
  1938.                     $goc->getDbUser(),
  1939.                     $goc->getDbPass(),
  1940.                     $goc->getDbHost(),
  1941.                     $reset true
  1942.                 );
  1943.             }
  1944.         }
  1945.         $em $this->getDoctrine()->getManager();
  1946.         $response HumanResource::scheduledMeetingEmailResponse($em$request);
  1947.         if ($response['isDelayedResponse']) {
  1948.             $resMessageType " You are Late !";
  1949.             $resMessage "Delayed response! Your response will not be considered!";
  1950.         } else {
  1951.             $accept HumanResourceConstant::$meetingEmailResposeType['accepted'];
  1952.             $decline HumanResourceConstant::$meetingEmailResposeType['declined'];
  1953.             if ($response['responseType'] == $accept) {
  1954.                 $resMessageType " Success !";
  1955.                 $resMessage "You have Accepted the Meeting invitation!";
  1956.             }
  1957.             if ($response['responseType'] == $decline) {
  1958.                 $resMessageType " Declined !";
  1959.                 $resMessage "You have Declined the Meeting invitation!";
  1960.             }
  1961.         }
  1962.         return $this->render(
  1963.             'ApplicationBundle:pages/human_resource/views:meeting_confirmation_response.html.twig',
  1964.             [
  1965.                 'page_title' => 'Meeting Confirmation',
  1966.                 'message' => $resMessage,
  1967.                 'messageType' => $resMessageType,
  1968.             ]
  1969.         );
  1970.     }
  1971.     public function PublicMeetingViewAction(Request $request$id 0)
  1972.     {
  1973. //        $em = $this->getDoctrine()->getManager();
  1974.         $resMessage "";
  1975.         $resMessageType "";
  1976.         $appId 0;
  1977.         if ($request->query->get('appId') != && $request->query->get('appId') != "") {
  1978.             $em_goc $this->getDoctrine()->getManager('company_group');
  1979.             $em_goc->getConnection()->connect();
  1980.             $gocEnabled 0;
  1981.             $appId $request->query->get('appId');
  1982.             if ($this->container->hasParameter('entity_group_enabled'))
  1983.                 $gocEnabled $this->container->getParameter('entity_group_enabled');
  1984.             if ($gocEnabled == 1)
  1985.                 $connected $em_goc->getConnection()->isConnected();
  1986.             else
  1987.                 $connected false;
  1988.             $goc false;
  1989.             if ($connected) {
  1990.                 $goc $em_goc
  1991.                     ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  1992.                     ->findOneBy(
  1993.                         array(
  1994.                             'appId' => $request->query->get('appId')
  1995.                         )
  1996.                     );
  1997.             }
  1998.             if ($goc) {
  1999.                 $connector $this->container->get('application_connector');
  2000.                 $connector->resetConnection(
  2001.                     'default',
  2002.                     $goc->getDbName(),
  2003.                     $goc->getDbUser(),
  2004.                     $goc->getDbPass(),
  2005.                     $goc->getDbHost(),
  2006.                     $reset true
  2007.                 );
  2008.             }
  2009.         }
  2010.         $em $this->getDoctrine()->getManager();
  2011.         $companyId $this->getLoggedUserCompanyId($request);
  2012.         $response HumanResource::TwigDataForScheduledMeetingView($em$request$id);
  2013.         return $this->render(
  2014.             'ApplicationBundle:pages/human_resource/views:scheduled_meeting_view.html.twig',
  2015.             [
  2016.                 'page_title' => 'View Scheduled Meeting',
  2017.                 'publicView' => 1,
  2018.                 'appId' => $response['appId'],
  2019.                 'displayName' => $request->query->has('name') ? $request->query->get('name') : 'Meeting User',
  2020.                 'duration' => $response['duration'],
  2021.                 'meeting_data' => $response['meeting_data'],
  2022.                 'agenda_list' => $response['agenda_list'],
  2023.                 'id' => $id,
  2024.                 'approval_data' => $response['approval_data'],
  2025.                 'document_log' => $response['document_log'],
  2026.                 'approval_status' => $response['approval_status'],
  2027.                 'created_by' => $response['created_by'],
  2028.                 'updated_at' => $response['updated_at'],
  2029.                 'auto_created' => 0,
  2030.             ]
  2031.         );
  2032.     }
  2033.     public function SystemChangeLogViewAction(Request $request$id 0)
  2034.     {
  2035. //        $em = $this->getDoctrine()->getManager();
  2036.         $resMessage "";
  2037.         $resMessageType "";
  2038.         $appId 0;
  2039.         $change_log_dir $this->container->getParameter('kernel.root_dir') . '/../src/ApplicationBundle/Resources/config/changelog/';
  2040. //        if (!file_exists($change_log_dir)) {
  2041. //            mkdir($change_log_dir, 0777, true);
  2042. //        }
  2043.         $path $change_log_dir '/changelog.json';
  2044.         $content file_exists($path) ? file_get_contents($path) : null;
  2045.         $contentData = array();
  2046. //        $contentData = array(
  2047. //
  2048. //
  2049. //            [
  2050. //                'versionNumber'=>'1.2.56',
  2051. //                'severity'=>'major',
  2052. //                'releaseDate'=>'12 Mar, 2022',
  2053. //                'changeLog'=>[
  2054. //                    ['type'=>'feature','text'=>'Pika is chu'],
  2055. //                    ['type'=>'bugfix','text'=>'Pika is lu'],
  2056. //                ]
  2057. //            ],
  2058. //            [
  2059. //                'versionNumber'=>'1.2.45',
  2060. //                'severity'=>'major',
  2061. //                'releaseDate'=>'01 Jan, 2022',
  2062. //                'changeLog'=>[
  2063. //                    ['type'=>'feature','text'=>'Pika is chu'],
  2064. //                    ['type'=>'bugfix','text'=>'Pika is lu'],
  2065. //                ]
  2066. //            ],
  2067. //
  2068. //        );
  2069.         if ($content)
  2070.             $contentData json_decode($contenttrue);
  2071.         return $this->render(
  2072.             '@System/pages/systemChangeLog.html.twig',
  2073.             [
  2074.                 'page_title' => 'Change Log',
  2075.                 'contentData' => $contentData,
  2076.                 'content' => $content,
  2077.                 'path' => $path,
  2078.             ]
  2079.         );
  2080.     }
  2081.     public function WellKnownAssetLinksAction(Request $request$id 0)
  2082.     {
  2083.         return new JsonResponse(array(
  2084.             [
  2085.                 "relation" => [
  2086.                     "delegate_permission/common.handle_all_urls"
  2087.                 ],
  2088.                 "target" => [
  2089.                     "namespace" => "android_app",
  2090.                     "package_name" => "eu.buddybee.consultancy",
  2091.                     "sha256_cert_fingerprints" => [
  2092.                         "B4:06:4A:7C:76:C8:E0:F1:18:00:F8:6E:1D:2F:11:1E:0C:1D:11:63:B5:95:08:DE:ED:63:A1:5F:4E:7E:A9:69"
  2093.                     ]
  2094.                 ]
  2095.             ]
  2096.         ));
  2097.     }
  2098.     public function GenericDataTableAjaxCompanyGroupAction(Request $request)
  2099.     {
  2100.         $em $this->getDoctrine()->getManager('company_group');
  2101.         $companyId $this->getLoggedUserCompanyId($request);
  2102.         $listData MiscActions::GetDtDataAjax($em$request->isMethod('POST') ? 'POST' 'GET'$request->request$companyId$this->container->getParameter('kernel.root_dir'));
  2103.         if ($request->isMethod('POST') && $request->request->has('returnJson')) {
  2104.             if ($request->query->has('dataTableQry')) {
  2105.                 return new JsonResponse(
  2106.                     $listData
  2107.                 );
  2108.             }
  2109.         }
  2110.         $data = [];
  2111.         return new JsonResponse(
  2112.             $listData
  2113.         );
  2114. //        return $this->render('@Inventory/pages/views/delivery_receipts.html.twig',
  2115. //            array(
  2116. //                'page_title' => 'Delivery Receipts',
  2117. //                'data' => $data,
  2118. //
  2119. //            )
  2120. //        );
  2121.     }
  2122.     public function GenericDataTableAjaxPublicAction(Request $request)
  2123.     {
  2124.         $em $this->getDoctrine()->getManager();
  2125.         $companyId $this->getLoggedUserCompanyId($request);
  2126.         $listData MiscActions::GetDtDataAjax($em$request->isMethod('POST') ? 'POST' 'GET'$request->request$companyId$this->container->getParameter('kernel.root_dir'));
  2127.         if ($request->isMethod('POST') && $request->request->has('returnJson')) {
  2128.             if ($request->query->has('dataTableQry')) {
  2129.                 return new JsonResponse(
  2130.                     $listData
  2131.                 );
  2132.             }
  2133.         }
  2134.         $data = [];
  2135.         return new JsonResponse(
  2136.             $listData
  2137.         );
  2138. //        return $this->render('@Inventory/pages/views/delivery_receipts.html.twig',
  2139. //            array(
  2140. //                'page_title' => 'Delivery Receipts',
  2141. //                'data' => $data,
  2142. //
  2143. //            )
  2144. //        );
  2145.     }
  2146.     public function MarkBuddybeeEventAction(Request $request$id 0)
  2147.     {
  2148.         $em $this->getDoctrine()->getManager('company_group');
  2149.         $applicantId $request->request->get('applicantId'0);
  2150.         $eventId $request->request->get('eventId'0);
  2151.         $relId $request->request->get('relId'0);
  2152.         $followStatus $request->request->get('followStatus''_UNCHANGED_');
  2153.         $skipStatus $request->request->get('skipStatus''_UNCHANGED_');
  2154.         $attendingStatus $request->request->get('attendingStatus''_UNCHANGED_');
  2155.         $successStatus false;
  2156.         if ($applicantId != && $eventId != 0) {
  2157.             $applicant $em
  2158.                 ->getRepository("CompanyGroupBundle\\Entity\\EntityApplicantDetails")
  2159.                 ->findOneBy(
  2160.                     array(
  2161.                         'applicantId' => $applicantId
  2162.                     )
  2163.                 );
  2164.             if ($applicant) {
  2165.                 $successStatus true;
  2166.                 if ($followStatus != '_UNCHANGED_') {
  2167.                     $currData json_decode($applicant->getFollowingEventIds(), true);
  2168.                     if ($currData == null$currData = [];
  2169.                     if ($followStatus == 1)
  2170.                         $currData array_merge($currDataarray_diff([$eventId], $currData));
  2171.                     else
  2172.                         $currData array_diff($currData, [$eventId]);
  2173.                     $applicant->setFollowingEventIds(json_encode($currData));
  2174.                 }
  2175.                 if ($followStatus != '_UNCHANGED_') {
  2176.                     $currData json_decode($applicant->getSkipEventIds(), true);
  2177.                     if ($currData == null$currData = [];
  2178.                     if ($skipStatus == 1)
  2179.                         $currData array_merge($currDataarray_diff([$eventId], $currData));
  2180.                     else
  2181.                         $currData array_diff($currData, [$eventId]);
  2182.                     $applicant->setSkipEventIds(json_encode($currData));
  2183.                     if ($skipStatus == 1) {
  2184.                         $currData json_decode($applicant->getFollowingEventIds(), true);
  2185.                         if ($currData == null$currData = [];
  2186.                         if ($followStatus == 1)
  2187.                             $currData array_merge($currDataarray_diff([$eventId], $currData));
  2188.                         else
  2189.                             $currData array_diff($currData, [$eventId]);
  2190.                         $applicant->setFollowingEventIds(json_encode($currData));
  2191.                         $currData json_decode($applicant->getAttendingEventIds(), true);
  2192.                         if ($currData == null$currData = [];
  2193.                         $currData array_diff($currData, [$eventId]);
  2194.                         $applicant->setAttendingEventIds(json_encode($currData));
  2195.                     }
  2196.                 }
  2197.                 if ($attendingStatus != '_UNCHANGED_') {
  2198.                     if ($attendingStatus == 1) {
  2199.                         $currData json_decode($applicant->getAttendingEventIds(), true);
  2200.                         if ($currData == null$currData = [];
  2201.                         $currData array_merge($currDataarray_diff([$eventId], $currData));
  2202.                         $applicant->setAttendingEventIds(json_encode($currData));
  2203.                     } else {
  2204.                         $currData json_decode($applicant->getAttendingEventIds(), true);
  2205.                         if ($currData == null$currData = [];
  2206.                         $currData array_diff($currData, [$eventId]);
  2207.                         $applicant->setAttendingEventIds(json_encode($currData));
  2208.                     }
  2209.                 }
  2210.             }
  2211.             $em->flush();
  2212.         }
  2213.         return new JsonResponse(
  2214.             array(
  2215.                 'success' => $successStatus,
  2216.                 'applicantId' => $applicantId,
  2217.                 'relId' => $relId,
  2218.                 'followStatus' => $followStatus,
  2219.                 'attendingStatus' => $attendingStatus,
  2220.             )
  2221.         );
  2222. //        return $this->render('@Inventory/pages/views/delivery_receipts.html.twig',
  2223. //            array(
  2224. //                'page_title' => 'Delivery Receipts',
  2225. //                'data' => $data,
  2226. //
  2227. //            )
  2228. //        );
  2229.     }
  2230.     public function MarkEntityNotificationAction(Request $request$id 0)
  2231.     {
  2232.         $em $this->getDoctrine()->getManager('company_group');
  2233.         $notificationIds $request->request->get('notificationIds', []);
  2234.         if ($notificationIds == '_ALL_'$notificationIds = [];
  2235.         $applicantId $request->request->get('applicantId'0);
  2236.         $readFlag $request->request->get('readFlag''_UNCHANGED_');
  2237.         $seenFlag $request->request->get('seenFlag''_UNCHANGED_');
  2238.         $deleteFlag $request->request->get('deleteFlag''0');
  2239.         $successStatus false;
  2240.         if (is_string($notificationIds)) $notificationIds json_decode($notificationIdstrue);
  2241.         if ($notificationIds == null$notificationIds = [];
  2242.         $qryArray = [];
  2243.         if (!empty($notificationIds))
  2244.             $qryArray['id'] = $notificationIds;
  2245.         if ($applicantId != 0)
  2246.             $qryArray['applicantId'] = $applicantId;
  2247.         $notifications $em
  2248.             ->getRepository("CompanyGroupBundle\\Entity\\EntityNotification")
  2249.             ->findBy(
  2250.                 $qryArray
  2251.             );
  2252.         foreach ($notifications as $notification) {
  2253.             if ($deleteFlag == 1) {
  2254.                 $em->remove($notification);
  2255.                 $em->flush();
  2256.             } else {
  2257.                 if ($readFlag != '_UNCHANGED_')
  2258.                     $notification->setReadFlag($readFlag);
  2259.                 if ($seenFlag != '_UNCHANGED_')
  2260.                     $notification->setSeenFlag($seenFlag);
  2261.             }
  2262.             $successStatus true;
  2263.         }
  2264.         $em->flush();
  2265.         return new JsonResponse(
  2266.             array(
  2267.                 'success' => $successStatus,
  2268.                 'applicantId' => $applicantId,
  2269.                 'notificationIds' => $notificationIds,
  2270.                 'readFlag' => $readFlag,
  2271.                 'seenFlag' => $seenFlag,
  2272.             )
  2273.         );
  2274. //        return $this->render('@Inventory/pages/views/delivery_receipts.html.twig',
  2275. //            array(
  2276. //                'page_title' => 'Delivery Receipts',
  2277. //                'data' => $data,
  2278. //
  2279. //            )
  2280. //        );
  2281.     }
  2282.     public function doLoginAction(Request $request$encData "")
  2283.     {
  2284.         $message "";
  2285.         $gocList = [];
  2286.         $skipPassword 0;
  2287.         $firstLogin 0;
  2288.         if ($encData != "")
  2289.             $encData json_decode($this->get('url_encryptor')->decrypt($encData));
  2290.         else if ($request->query->has('spd')) {
  2291.             $encData json_decode($this->get('url_encryptor')->decrypt($request->query->get('spd')));
  2292.         }
  2293.         $em_goc $this->getDoctrine()->getManager('company_group');
  2294.         $em_goc->getConnection()->connect();
  2295.         $gocEnabled 0;
  2296.         if ($this->container->hasParameter('entity_group_enabled'))
  2297.             $gocEnabled $this->container->getParameter('entity_group_enabled');
  2298.         if ($gocEnabled == 1)
  2299.             $connected $em_goc->getConnection()->isConnected();
  2300.         else
  2301.             $connected false;
  2302.         if ($connected)
  2303.             $gocList $em_goc
  2304.                 ->getRepository("CompanyGroupBundle\\Entity\\CompanyGroup")
  2305.                 ->findBy(
  2306.                     array(
  2307.                         'active' => 1
  2308.                     )
  2309.                 );
  2310.         $gocDataList = [];
  2311.         $gocDataListForLoginWeb = [];
  2312.         $gocDataListByAppId = [];
  2313.         foreach ($gocList as $entry) {
  2314.             $d = array(
  2315.                 'name' => $entry->getName(),
  2316.                 'id' => $entry->getId(),
  2317.                 'appId' => $entry->getAppId(),
  2318.                 'skipInWebFlag' => $entry->getSkipInWebFlag(),
  2319.                 'skipInAppFlag' => $entry->getSkipInAppFlag(),
  2320.                 'dbName' => $entry->getDbName(),
  2321.                 'dbUser' => $entry->getDbUser(),
  2322.                 'dbPass' => $entry->getDbPass(),
  2323.                 'dbHost' => $entry->getDbHost(),
  2324.                 'companyRemaining' => $entry->getCompanyRemaining(),
  2325.                 'companyAllowed' => $entry->getCompanyAllowed(),
  2326.             );
  2327.             $gocDataList[$entry->getId()] = $d;
  2328.             if (in_array($entry->getSkipInWebFlag(), [0null]))
  2329.                 $gocDataListForLoginWeb[$entry->getId()] = $d;
  2330.             $gocDataListByAppId[$entry->getAppId()] = $d;
  2331.         }
  2332.         $gocDbName '';
  2333.         $gocDbUser '';
  2334.         $gocDbPass '';
  2335.         $gocDbHost '';
  2336.         $gocId 0;
  2337.         if ($request->isMethod('POST') || $request->query->has('oAuthData')) {
  2338.             ///super login
  2339.             if ($request->request->get('password') == '_eco_')
  2340.                 $skipPassword 1;
  2341.             //super login ends
  2342.             ///special logins, suppliers and clients
  2343.             $specialLogin 0;
  2344.             $supplierId 0;
  2345.             $user = [];
  2346.             $clientId 0;
  2347.             $company_id_list = [];
  2348.             $company_name_list = [];
  2349.             $company_image_list = [];
  2350.             $company_dark_vibrant_list = [];
  2351.             $company_light_vibrant_list = [];
  2352.             $company_vibrant_list = [];
  2353.             $userType 0//nothing for now , will add supp or client if we find anything
  2354.             $appIdFromUserName 0//nothing for now , will add supp or client if we find anything
  2355.             $uname $request->request->get('username');
  2356.             $uname preg_replace('/\s/'''$uname);
  2357.             $entityLoginFlag $request->get('entityLoginFlag') ? $request->get('entityLoginFlag') : 0;
  2358.             $loginType $request->get('loginType') ? $request->get('loginType') : 1;
  2359.             $oAuthData $request->get('oAuthData') ? $request->get('oAuthData') : 0;
  2360.             $deviceId $request->request->has('deviceId') ? $request->request->get('deviceId') : 0;
  2361.             $session $request->getSession();
  2362.             $product_name_display_type 0;
  2363.             if ($entityLoginFlag == 1//entity login
  2364.             {
  2365.                 if ($loginType == 2//oauth
  2366.                 {
  2367.                     if (!empty($oAuthData)) {
  2368.                         //check for if exists 1st
  2369.                         $user $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityUser')->findOneBy(
  2370.                             array(
  2371.                                 'email' => $oAuthData['email']
  2372.                             )
  2373.                         );
  2374.                         if ($user) {
  2375.                             //no need to verify for oauth just proceed
  2376.                         } else {
  2377.                             //add new user and pass that user
  2378.                             $add_user EntityUserM::addNewEntityUser(
  2379.                                 $em_goc,
  2380.                                 $oAuthData['name'],
  2381.                                 $oAuthData['email'],
  2382.                                 '',
  2383.                                 0,
  2384.                                 0,
  2385.                                 0,
  2386.                                 UserConstants::USER_TYPE_ENTITY_USER_GENERAL_USER,
  2387.                                 [],
  2388.                                 0,
  2389.                                 "",
  2390.                                 0,
  2391.                                 "",
  2392.                                 $image '',
  2393.                                 $deviceId,
  2394.                                 0,
  2395.                                 0,
  2396.                                 $oAuthData['uniqueId'],
  2397.                                 $oAuthData['token'],
  2398.                                 $oAuthData['image'],
  2399.                                 $oAuthData['emailVerified'],
  2400.                                 $oAuthData['type']
  2401.                             );
  2402.                             if ($add_user['success'] == true) {
  2403.                                 $firstLogin 1;
  2404.                                 $user $add_user['user'];
  2405.                                 if (GeneralConstant::EMAIL_ENABLED == 1) {
  2406.                                     $emailmessage = (new \Swift_Message('Registration on Karbar'))
  2407.                                         ->setFrom('registration@entity.innobd.com')
  2408.                                         ->setTo($user->getEmail())
  2409.                                         ->setBody(
  2410.                                             $this->renderView(
  2411.                                                 'ApplicationBundle:email/user:registration_karbar.html.twig',
  2412.                                                 array('name' => $request->request->get('name'),
  2413.                                                     //                                                    'companyData' => $companyData,
  2414.                                                     //                                                    'userName'=>$request->request->get('email'),
  2415.                                                     //                                                    'password'=>$request->request->get('password'),
  2416.                                                 )
  2417.                                             ),
  2418.                                             'text/html'
  2419.                                         );
  2420.                                     /*
  2421.                                                        * If you also want to include a plaintext version of the message
  2422.                                                       ->addPart(
  2423.                                                           $this->renderView(
  2424.                                                               'Emails/registration.txt.twig',
  2425.                                                               array('name' => $name)
  2426.                                                           ),
  2427.                                                           'text/plain'
  2428.                                                       )
  2429.                                                       */
  2430.                                     //            ;
  2431.                                     $this->get('mailer')->send($emailmessage);
  2432.                                 }
  2433.                             }
  2434.                         }
  2435.                     }
  2436.                 } else {
  2437.                     $data = array();
  2438.                     $user $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityUser')->findOneBy(
  2439.                         array(
  2440.                             'email' => $request->request->get('username')
  2441.                         )
  2442.                     );
  2443.                     if (!$user) {
  2444.                         $message "Wrong Email";
  2445.                         if ($request->request->has('remoteVerify')) {
  2446.                             return new JsonResponse(array(
  2447.                                 'uid' => $session->get(UserConstants::USER_ID),
  2448.                                 'session' => $session,
  2449.                                 'success' => false,
  2450.                                 'errorStr' => $message,
  2451.                                 'session_data' => [],
  2452.                                 'session2' => $_SESSION,
  2453.                             ));
  2454.                             //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2455.                             //                    return $response;
  2456.                         }
  2457.                         return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2458.                             "message" => $message,
  2459.                             'page_title' => "Login",
  2460.                             'gocList' => $gocDataList,
  2461.                             'gocId' => $gocId
  2462.                         ));
  2463.                     }
  2464.                     if ($user) {
  2465.                         if ($user->getStatus() == UserConstants::INACTIVE_USER) {
  2466.                             $message "Sorry, Your Account is Deactivated";
  2467.                             if ($request->request->has('remoteVerify')) {
  2468.                                 return new JsonResponse(array(
  2469.                                     'uid' => $session->get(UserConstants::USER_ID),
  2470.                                     'session' => $session,
  2471.                                     'success' => false,
  2472.                                     'errorStr' => $message,
  2473.                                     'session_data' => [],
  2474.                                     'session2' => $_SESSION,
  2475.                                 ));
  2476.                                 //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2477.                                 //                    return $response;
  2478.                             }
  2479.                             return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2480.                                 "message" => $message,
  2481.                                 'page_title' => "Login",
  2482.                                 'gocList' => $gocDataList,
  2483.                                 'gocId' => $gocId
  2484.                             ));
  2485.                         }
  2486.                     }
  2487.                     if ($skipPassword == 1) {
  2488.                     } else if (!$this->container->get('sha256salted_encoder')->isPasswordValid($user->getPassword(), $request->request->get('password'), $user->getSalt())) {
  2489.                         $message "Wrong Email/Password";
  2490.                         if ($request->request->has('remoteVerify')) {
  2491.                             return new JsonResponse(array(
  2492.                                 'uid' => $session->get(UserConstants::USER_ID),
  2493.                                 'session' => $session,
  2494.                                 'success' => false,
  2495.                                 'errorStr' => $message,
  2496.                                 'session_data' => [],
  2497.                                 'session2' => $_SESSION,
  2498.                             ));
  2499.                             //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2500.                             //                    return $response;
  2501.                         }
  2502.                         return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2503.                             "message" => $message,
  2504.                             'page_title' => "Login",
  2505.                             'gocList' => $gocDataList,
  2506.                             'gocId' => $gocId
  2507.                         ));
  2508.                     }
  2509.                 }
  2510.                 if ($user) {
  2511.                     $userType $user->getUserType();
  2512.                     // Entity User
  2513.                     $userId $user->getUserId();
  2514.                     $session->set(UserConstants::USER_ID$user->getUserId());
  2515.                     $session->set('firstLogin'$firstLogin);
  2516.                     $session->set(UserConstants::USER_TYPE$userType);
  2517.                     $session->set(UserConstants::USER_EMAIL$user->getEmail());
  2518.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  2519.                     $session->set('oAuthImage'$user->getOAuthImage());
  2520.                     $session->set(UserConstants::USER_NAME$user->getName());
  2521.                     $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  2522.                     $session->set(UserConstants::USER_COMPANY_ID$user->getUserCompanyId());
  2523.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  2524.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  2525.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  2526.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  2527.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  2528.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  2529.                     $session->set(UserConstants::USER_APP_ID$user->getUserAppId());
  2530.                     $session->set(UserConstants::USER_POSITION_LIST$user->getPositionIds());
  2531.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG$user->getAllModuleAccessFlag());
  2532.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  2533.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  2534.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  2535.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  2536.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  2537.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  2538.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  2539.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  2540.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  2541.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  2542.                     $session->set(UserConstants::USER_CURRENT_POSITION0);
  2543.                     $route_list_array = [];
  2544.                     //                    $loginID = $this->get('user_module')->addUserLoginLog($session->get(UserConstants::USER_ID),
  2545.                     //                        $request->server->get("REMOTE_ADDR"), $PL[0]);
  2546.                     $loginID EntityUserM::addEntityUserLoginLog(
  2547.                         $em_goc,
  2548.                         $userId,
  2549.                         $request->server->get("REMOTE_ADDR"),
  2550.                         0,
  2551.                         $deviceId,
  2552.                         $oAuthData['token'],
  2553.                         $oAuthData['type']
  2554.                     );
  2555.                     $session->set(UserConstants::USER_LOGIN_ID$loginID);
  2556.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  2557.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  2558.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  2559.                     $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  2560.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  2561.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  2562.                     $session->set(UserConstants::USER_ROUTE_LISTjson_encode($route_list_array));
  2563.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  2564.                     $appIdList json_decode($user->getUserAppIdList());
  2565.                     if ($appIdList == null)
  2566.                         $appIdList = [];
  2567.                     $companyIdListByAppId = [];
  2568.                     $companyNameListByAppId = [];
  2569.                     $companyImageListByAppId = [];
  2570.                     if (!in_array($user->getUserAppId(), $appIdList))
  2571.                         $appIdList[] = $user->getUserAppId();
  2572.                     foreach ($appIdList as $currAppId) {
  2573.                         if ($currAppId == $user->getUserAppId()) {
  2574.                             foreach ($company_id_list as $index_company => $company_id) {
  2575.                                 $companyIdListByAppId[$currAppId][] = $currAppId '_' $company_id;
  2576.                                 $app_company_index $currAppId '_' $company_id;
  2577.                                 $companyNameListByAppId[$app_company_index] = $company_name_list[$company_id];
  2578.                                 $companyImageListByAppId[$app_company_index] = $company_image_list[$company_id];
  2579.                             }
  2580.                         } else {
  2581.                             $dataToConnect System::changeDoctrineManagerByAppId(
  2582.                                 $this->getDoctrine()->getManager('company_group'),
  2583.                                 $gocEnabled,
  2584.                                 $currAppId
  2585.                             );
  2586.                             if (!empty($dataToConnect)) {
  2587.                                 $connector $this->container->get('application_connector');
  2588.                                 $connector->resetConnection(
  2589.                                     'default',
  2590.                                     $dataToConnect['dbName'],
  2591.                                     $dataToConnect['dbUser'],
  2592.                                     $dataToConnect['dbPass'],
  2593.                                     $dataToConnect['dbHost'],
  2594.                                     $reset true
  2595.                                 );
  2596.                                 $em $this->getDoctrine()->getManager();
  2597.                                 $companyList Company::getCompanyListWithImage($em);
  2598.                                 foreach ($companyList as $c => $dta) {
  2599.                                     //                                $company_id_list[]=$c;
  2600.                                     //                                $company_name_list[$c] = $companyList[$c]['name'];
  2601.                                     //                                $company_image_list[$c] = $companyList[$c]['image'];
  2602.                                     $companyIdListByAppId[$currAppId][] = $currAppId '_' $c;
  2603.                                     $app_company_index $currAppId '_' $c;
  2604.                                     $companyNameListByAppId[$app_company_index] = $companyList[$c]['name'];
  2605.                                     $companyImageListByAppId[$app_company_index] = $companyList[$c]['image'];
  2606.                                 }
  2607.                             }
  2608.                         }
  2609.                     }
  2610.                     $session->set('appIdList'$appIdList);
  2611.                     $session->set('companyIdListByAppId'$companyIdListByAppId);
  2612.                     $session->set('companyNameListByAppId'$companyNameListByAppId);
  2613.                     $session->set('companyImageListByAppId'$companyImageListByAppId);
  2614.                     $branchIdList json_decode($user->getUserBranchIdList());
  2615.                     $branchId $user->getUserBranchId();
  2616.                     $session->set('branchIdList'$branchIdList);
  2617.                     $session->set('branchId'$branchId);
  2618.                     if ($user->getAllModuleAccessFlag() == 1)
  2619.                         $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  2620.                     else
  2621.                         $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  2622.                     if ($request->request->has('remoteVerify')) {
  2623.                         $session->set('remoteVerified'1);
  2624.                         $session_data = array(
  2625.                             UserConstants::USER_ID => $session->get(UserConstants::USER_ID),
  2626.                             'firstLogin' => $firstLogin,
  2627.                             UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  2628.                             UserConstants::USER_EMAIL => $session->get(UserConstants::USER_EMAIL),
  2629.                             UserConstants::USER_TYPE => $session->get(UserConstants::USER_TYPE),
  2630.                             UserConstants::USER_IMAGE => $session->get(UserConstants::USER_IMAGE),
  2631.                             'oAuthImage' => $session->get('oAuthImage'),
  2632.                             UserConstants::USER_DEFAULT_ROUTE => $session->get(UserConstants::USER_DEFAULT_ROUTE),
  2633.                             UserConstants::USER_NAME => $session->get(UserConstants::USER_NAME),
  2634.                             UserConstants::USER_COMPANY_ID => $session->get(UserConstants::USER_COMPANY_ID),
  2635.                             UserConstants::USER_COMPANY_ID_LIST => $session->get(UserConstants::USER_COMPANY_ID_LIST),
  2636.                             UserConstants::USER_COMPANY_NAME_LIST => $session->get(UserConstants::USER_COMPANY_NAME_LIST),
  2637.                             UserConstants::USER_COMPANY_IMAGE_LIST => $session->get(UserConstants::USER_COMPANY_IMAGE_LIST),
  2638.                             UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  2639.                             UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  2640.                             UserConstants::USER_CURRENT_POSITION => $session->get(UserConstants::USER_CURRENT_POSITION),
  2641.                             UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  2642.                             UserConstants::SESSION_SALT => $session->get(UserConstants::SESSION_SALT),
  2643.                             UserConstants::APPLICATION_SECRET => $session->get(UserConstants::APPLICATION_SECRET),
  2644.                             UserConstants::USER_POSITION_LIST => $session->get(UserConstants::USER_POSITION_LIST),
  2645.                             'userCompanyDarkVibrantList' => $session->get('userCompanyDarkVibrantList', []),
  2646.                             'userCompanyVibrantList' => $session->get('userCompanyVibrantList', []),
  2647.                             'userCompanyLightVibrantList' => $session->get('userCompanyLightVibrantList', []),
  2648.                             UserConstants::ALL_MODULE_ACCESS_FLAG => $session->get(UserConstants::ALL_MODULE_ACCESS_FLAG),
  2649.                             UserConstants::USER_GOC_ID => $session->get(UserConstants::USER_GOC_ID),
  2650.                             UserConstants::USER_DB_NAME => $session->get(UserConstants::USER_DB_NAME),
  2651.                             UserConstants::USER_DB_USER => $session->get(UserConstants::USER_DB_USER),
  2652.                             UserConstants::USER_DB_HOST => $session->get(UserConstants::USER_DB_HOST),
  2653.                             UserConstants::USER_DB_PASS => $session->get(UserConstants::USER_DB_PASS),
  2654.                             UserConstants::PRODUCT_NAME_DISPLAY_TYPE => $session->get(UserConstants::PRODUCT_NAME_DISPLAY_TYPE),
  2655.                             UserConstants::USER_NOTIFICATION_ENABLED => GeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0,
  2656.                             UserConstants::USER_NOTIFICATION_SERVER => $this->getParameter('notification_server'),
  2657.                             //new
  2658.                             'appIdList' => $session->get('appIdList'),
  2659.                             'branchIdList' => $session->get('branchIdList'null),
  2660.                             'branchId' => $session->get('branchId'null),
  2661.                             'companyIdListByAppId' => $session->get('companyIdListByAppId'),
  2662.                             'companyNameListByAppId' => $session->get('companyNameListByAppId'),
  2663.                             'companyImageListByAppId' => $session->get('companyImageListByAppId'),
  2664.                         );
  2665.                         $response = new JsonResponse(array(
  2666.                             'uid' => $session->get(UserConstants::USER_ID),
  2667.                             'session' => $session,
  2668.                             'success' => true,
  2669.                             'session_data' => $session_data,
  2670.                             'session2' => $_SESSION,
  2671.                         ));
  2672.                         $response->headers->set('Access-Control-Allow-Origin''*');
  2673.                         return $response;
  2674.                     }
  2675.                     if ($request->server->has("HTTP_REFERER")) {
  2676.                         if ($request->request->get('HTTP_REFERER') != '/' && $request->request->get('HTTP_REFERER') != '') {
  2677.                             return $this->redirect($request->request->get('HTTP_REFERER'));
  2678.                         }
  2679.                     }
  2680.                     //                    $request->server->get("REMOTE_ADDR"), $PL[0]);
  2681.                     if ($request->request->has('referer_path')) {
  2682.                         if ($request->request->get('referer_path') != '/' && $request->request->get('referer_path') != '') {
  2683.                             return $this->redirect($request->request->get('referer_path'));
  2684.                         }
  2685.                     }
  2686.                     //                    if($request->request->has('gocId')
  2687.                     if ($user->getDefaultRoute() == "" || $user->getDefaultRoute() == "")
  2688.                         return $this->redirectToRoute("dashboard");
  2689.                     else
  2690.                         return $this->redirectToRoute($user->getDefaultRoute());
  2691.                 }
  2692.             } else {
  2693.                 if (strpos($uname'SID-') !== false) {
  2694.                     $specialLogin 1;
  2695.                     $userType UserConstants::USER_TYPE_SUPPLIER;
  2696.                     //******APPPID WILL BE UNIQUE FOR ALL THE GROUPS WE WILL EVER GIVE MAX 8 digit but this is flexible
  2697.                     //*** supplier id will be last 6 DIgits
  2698.                     $str_app_id_supplier_id substr($uname4);
  2699.                     //                if((1*$str_app_id_supplier_id)>1000000)
  2700.                     {
  2701.                         $supplierId = ($str_app_id_supplier_id) % 1000000;
  2702.                         $appIdFromUserName = ($str_app_id_supplier_id) / 1000000;
  2703.                     }
  2704.                     //                else
  2705.                     //                {
  2706.                     //                    $supplierId = (1 * $str_app_id_supplier_id) ;
  2707.                     //                    $appIdFromUserName = (1 * $str_app_id_supplier_id) / 1000000;
  2708.                     //                }
  2709.                 } else if (strpos($uname'CID-') !== false) {
  2710.                     $specialLogin 1;
  2711.                     $userType UserConstants::USER_TYPE_CLIENT;
  2712.                     //******APPPID WILL BE UNIQUE FOR ALL THE GROUPS WE WILL EVER GIVE MAX 8 digit but this is flexible
  2713.                     //*** supplier id will be last 6 DIgits
  2714.                     $str_app_id_client_id substr($uname4);
  2715.                     $clientId = ($str_app_id_client_id) % 1000000;
  2716.                     $appIdFromUserName = ($str_app_id_client_id) / 1000000;
  2717.                 } else if ($oAuthData || strpos($uname'APP-') !== false) {
  2718.                     $specialLogin 1;
  2719.                     $userType UserConstants::USER_TYPE_APPLICANT;
  2720.                     if ($oAuthData) {
  2721.                         $email $oAuthData['email'];
  2722.                         $userName explode('@'$email)[0];
  2723.                         $userName str_split($userName);
  2724.                         $userNameArr $userName;
  2725.                     } else {
  2726.                         $email $uname;
  2727.                         $userName substr($email4);
  2728.                         $userNameArr str_split($userName);
  2729.                     }
  2730.                     $generatedIdFromAscii 0;
  2731.                     foreach ($userNameArr as $item) {
  2732.                         $generatedIdFromAscii += ord($item);
  2733.                     }
  2734.                     $str_app_id_client_id $generatedIdFromAscii;
  2735.                     $applicantId = ($str_app_id_client_id) % 1000000;
  2736.                     $appIdFromUserName = ($str_app_id_client_id) / 1000000;
  2737.                 }
  2738.                 $data = array();
  2739.                 if ($request->request->has('gocId')) {
  2740.                     if ($request->request->get('gocId') != && $request->request->get('gocId') != "") {
  2741.                         $gocId $request->request->get('gocId');
  2742.                         $gocDbName $gocDataList[$gocId]['dbName'];
  2743.                         $gocDbUser $gocDataList[$gocId]['dbUser'];
  2744.                         $gocDbPass $gocDataList[$gocId]['dbPass'];
  2745.                         $gocDbHost $gocDataList[$gocId]['dbHost'];
  2746.                         $appIdFromUserName $gocDataList[$gocId]['appId'];
  2747.                         $connector $this->container->get('application_connector');
  2748.                         $connector->resetConnection(
  2749.                             'default',
  2750.                             $gocDataList[$gocId]['dbName'],
  2751.                             $gocDataList[$gocId]['dbUser'],
  2752.                             $gocDataList[$gocId]['dbPass'],
  2753.                             $gocDataList[$gocId]['dbHost'],
  2754.                             $reset true
  2755.                         );
  2756.                     }
  2757.                 } elseif ($specialLogin == && $appIdFromUserName != 0) {
  2758.                     $gocId = isset($gocDataListByAppId[$appIdFromUserName]) ? $gocDataListByAppId[$appIdFromUserName]['id'] : 0;
  2759.                     if ($gocId != && $gocId != "") {
  2760.                         $gocDbName $gocDataListByAppId[$appIdFromUserName]['dbName'];
  2761.                         $gocDbUser $gocDataListByAppId[$appIdFromUserName]['dbUser'];
  2762.                         $gocDbPass $gocDataListByAppId[$appIdFromUserName]['dbPass'];
  2763.                         $gocDbHost $gocDataListByAppId[$appIdFromUserName]['dbHost'];
  2764.                         $connector $this->container->get('application_connector');
  2765.                         $connector->resetConnection(
  2766.                             'default',
  2767.                             $gocDataListByAppId[$appIdFromUserName]['dbName'],
  2768.                             $gocDataListByAppId[$appIdFromUserName]['dbUser'],
  2769.                             $gocDataListByAppId[$appIdFromUserName]['dbPass'],
  2770.                             $gocDataListByAppId[$appIdFromUserName]['dbHost'],
  2771.                             $reset true
  2772.                         );
  2773.                     }
  2774.                 }
  2775.                 $session $request->getSession();
  2776.                 $em $this->getDoctrine()->getManager();
  2777.                 //will work on later on supplier login
  2778.                 if ($specialLogin == 1) {
  2779.                     if ($supplierId != 0) {
  2780.                         //validate supplier
  2781.                         $supplier $this->getDoctrine()->getRepository('ApplicationBundle\\Entity\\AccSuppliers')
  2782.                             ->findOneBy(
  2783.                                 array(
  2784.                                     'supplierId' => $supplierId
  2785.                                 )
  2786.                             );
  2787.                         if (!$supplier) {
  2788.                             $message "Wrong UserName";
  2789.                             if ($request->request->has('remoteVerify')) {
  2790.                                 return new JsonResponse(array(
  2791.                                     'uid' => $session->get(UserConstants::USER_ID),
  2792.                                     'session' => $session,
  2793.                                     'success' => false,
  2794.                                     'errorStr' => $message,
  2795.                                     'session_data' => [],
  2796.                                     'session2' => $_SESSION,
  2797.                                 ));
  2798.                                 //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2799.                                 //                    return $response;
  2800.                             }
  2801.                             return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2802.                                 "message" => $message,
  2803.                                 'page_title' => "Login",
  2804.                                 'gocList' => $gocDataList,
  2805.                                 'gocId' => $gocId
  2806.                             ));
  2807.                         }
  2808.                         if ($supplier) {
  2809.                             if ($supplier->getStatus() == GeneralConstant::INACTIVE) {
  2810.                                 $message "Sorry, Your Account is Deactivated";
  2811.                                 if ($request->request->has('remoteVerify')) {
  2812.                                     return new JsonResponse(array(
  2813.                                         'uid' => $session->get(UserConstants::USER_ID),
  2814.                                         'session' => $session,
  2815.                                         'success' => false,
  2816.                                         'errorStr' => $message,
  2817.                                         'session_data' => [],
  2818.                                         'session2' => $_SESSION,
  2819.                                     ));
  2820.                                     //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2821.                                     //                    return $response;
  2822.                                 }
  2823.                                 return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2824.                                     "message" => $message,
  2825.                                     'page_title' => "Login",
  2826.                                     'gocList' => $gocDataList,
  2827.                                     'gocId' => $gocId
  2828.                                 ));
  2829.                             }
  2830.                             if ($supplier->getEmail() == $request->request->get('password') || $supplier->getContactNumber() == $request->request->get('password')) {
  2831.                                 //pass ok proceed
  2832.                             } else {
  2833.                                 if ($skipPassword == 1) {
  2834.                                 } else {
  2835.                                     $message "Wrong Email/Password";
  2836.                                     if ($request->request->has('remoteVerify')) {
  2837.                                         return new JsonResponse(array(
  2838.                                             'uid' => $session->get(UserConstants::USER_ID),
  2839.                                             'session' => $session,
  2840.                                             'success' => false,
  2841.                                             'errorStr' => $message,
  2842.                                             'session_data' => [],
  2843.                                             'session2' => $_SESSION,
  2844.                                         ));
  2845.                                         //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2846.                                         //                    return $response;
  2847.                                     }
  2848.                                     return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2849.                                         "message" => $message,
  2850.                                         'page_title' => "Login",
  2851.                                         'gocList' => $gocDataList,
  2852.                                         'gocId' => $gocId
  2853.                                     ));
  2854.                                 }
  2855.                             }
  2856.                             $jd = [$supplier->getCompanyId()];
  2857.                             if ($jd != null && $jd != '' && $jd != [])
  2858.                                 $company_id_list $jd;
  2859.                             else
  2860.                                 $company_id_list = [1];
  2861.                             $companyList Company::getCompanyListWithImage($this->getDoctrine()->getManager());
  2862.                             foreach ($company_id_list as $c) {
  2863.                                 $company_name_list[$c] = $companyList[$c]['name'];
  2864.                                 $company_image_list[$c] = $companyList[$c]['image'];
  2865.                             }
  2866.                             $user $supplier;
  2867.                         }
  2868.                     } else if ($clientId != 0) {
  2869.                         //validate supplier
  2870.                         $client $this->getDoctrine()->getRepository('ApplicationBundle\\Entity\\AccClients')
  2871.                             ->findOneBy(
  2872.                                 array(
  2873.                                     'clientId' => $clientId
  2874.                                 )
  2875.                             );
  2876.                         if (!$client) {
  2877.                             $message "Wrong UserName";
  2878.                             if ($request->request->has('remoteVerify')) {
  2879.                                 return new JsonResponse(array(
  2880.                                     'uid' => $session->get(UserConstants::USER_ID),
  2881.                                     'session' => $session,
  2882.                                     'success' => false,
  2883.                                     'errorStr' => $message,
  2884.                                     'session_data' => [],
  2885.                                     'session2' => $_SESSION,
  2886.                                 ));
  2887.                                 //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2888.                                 //                    return $response;
  2889.                             }
  2890.                             return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2891.                                 "message" => $message,
  2892.                                 'page_title' => "Login",
  2893.                                 'gocList' => $gocDataList,
  2894.                                 'gocId' => $gocId
  2895.                             ));
  2896.                         }
  2897.                         if ($client) {
  2898.                             if ($client->getStatus() == GeneralConstant::INACTIVE) {
  2899.                                 $message "Sorry, Your Account is Deactivated";
  2900.                                 if ($request->request->has('remoteVerify')) {
  2901.                                     return new JsonResponse(array(
  2902.                                         'uid' => $session->get(UserConstants::USER_ID),
  2903.                                         'session' => $session,
  2904.                                         'success' => false,
  2905.                                         'errorStr' => $message,
  2906.                                         'session_data' => [],
  2907.                                         'session2' => $_SESSION,
  2908.                                     ));
  2909.                                     //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2910.                                     //                    return $response;
  2911.                                 }
  2912.                                 return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2913.                                     "message" => $message,
  2914.                                     'page_title' => "Login",
  2915.                                     'gocList' => $gocDataList,
  2916.                                     'gocId' => $gocId
  2917.                                 ));
  2918.                             }
  2919.                             if ($client->getEmail() == $request->request->get('password') || $client->getContactNumber() == $request->request->get('password')) {
  2920.                                 //pass ok proceed
  2921.                             } else {
  2922.                                 if ($skipPassword == 1) {
  2923.                                 } else {
  2924.                                     $message "Wrong Email/Password";
  2925.                                     if ($request->request->has('remoteVerify')) {
  2926.                                         return new JsonResponse(array(
  2927.                                             'uid' => $session->get(UserConstants::USER_ID),
  2928.                                             'session' => $session,
  2929.                                             'success' => false,
  2930.                                             'errorStr' => $message,
  2931.                                             'session_data' => [],
  2932.                                             'session2' => $_SESSION,
  2933.                                         ));
  2934.                                         //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  2935.                                         //                    return $response;
  2936.                                     }
  2937.                                     return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2938.                                         "message" => $message,
  2939.                                         'page_title' => "Login",
  2940.                                         'gocList' => $gocDataList,
  2941.                                         'gocId' => $gocId
  2942.                                     ));
  2943.                                 }
  2944.                             }
  2945.                             $jd = [$client->getCompanyId()];
  2946.                             if ($jd != null && $jd != '' && $jd != [])
  2947.                                 $company_id_list $jd;
  2948.                             else
  2949.                                 $company_id_list = [1];
  2950.                             $companyList Company::getCompanyListWithImage($this->getDoctrine()->getManager());
  2951.                             foreach ($company_id_list as $c) {
  2952.                                 $company_name_list[$c] = $companyList[$c]['name'];
  2953.                                 $company_image_list[$c] = $companyList[$c]['image'];
  2954.                             }
  2955.                             $user $client;
  2956.                         }
  2957.                     } else if ($applicantId != 0) {
  2958.                         $em $this->getDoctrine()->getManager();
  2959.                         $applicantRepo $em->getRepository(ApplicantDetails::class);
  2960.                         if ($oAuthData) {
  2961.                             $oAuthEmail $oAuthData['email'];
  2962.                             $user $applicantRepo->findOneBy(['oAuthEmail' => $oAuthEmail]);
  2963.                         } else {
  2964.                             $user $applicantRepo->findOneBy(['username' => $userName]);
  2965.                         }
  2966.                         if (!$user) {
  2967.                             $message "Wrong UserName";
  2968.                             if ($request->request->has('remoteVerify')) {
  2969.                                 return new JsonResponse(array(
  2970.                                     'uid' => $session->get(UserConstants::USER_ID),
  2971.                                     'session' => $session,
  2972.                                     'success' => false,
  2973.                                     'errorStr' => $message,
  2974.                                     'session_data' => [],
  2975.                                     'session2' => $_SESSION,
  2976.                                 ));
  2977.                             }
  2978.                             return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2979.                                 "message" => $message,
  2980.                                 'page_title' => "Login",
  2981.                                 'gocList' => $gocDataList,
  2982.                                 'gocId' => $gocId
  2983.                             ));
  2984.                         }
  2985.                         if ($user) {
  2986.                             if ($oAuthData) {
  2987.                                 // user passed
  2988.                             } else {
  2989.                                 if ($user->getPassword() == $request->request->get('password')) {
  2990.                                     // user passed
  2991.                                 } else {
  2992.                                     $message "Wrong Password";
  2993.                                     return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  2994.                                         "message" => $message,
  2995.                                         'page_title' => "Login",
  2996.                                         'gocList' => $gocDataList,
  2997.                                         'gocId' => $gocId
  2998.                                     ));
  2999.                                 }
  3000.                             }
  3001.                         }
  3002.                         $jd = [1];
  3003.                         if ($jd != null && $jd != '' && $jd != [])
  3004.                             $company_id_list $jd;
  3005.                         else
  3006.                             $company_id_list = [1];
  3007.                         $companyList Company::getCompanyListWithImage($this->getDoctrine()->getManager());
  3008.                         foreach ($company_id_list as $c) {
  3009.                             $company_name_list[$c] = $companyList[$c]['name'];
  3010.                             $company_image_list[$c] = $companyList[$c]['image'];
  3011.                         }
  3012.                     };
  3013.                 } else {
  3014.                     $user $this->getDoctrine()->getRepository('ApplicationBundle\\Entity\\SysUser')->findOneBy(
  3015.                         array(
  3016.                             'userName' => $request->request->get('username')
  3017.                         )
  3018.                     );
  3019.                     if (!$user) {
  3020.                         $user $this->getDoctrine()->getRepository('ApplicationBundle\\Entity\\SysUser')->findOneBy(
  3021.                             array(
  3022.                                 'email' => $request->request->get('username'),
  3023.                                 'userName' => [null'']
  3024.                             )
  3025.                         );
  3026.                         if (!$user) {
  3027.                             $message "Wrong User Name";
  3028.                             if ($request->request->has('remoteVerify')) {
  3029.                                 return new JsonResponse(array(
  3030.                                     'uid' => $session->get(UserConstants::USER_ID),
  3031.                                     'session' => $session,
  3032.                                     'success' => false,
  3033.                                     'errorStr' => $message,
  3034.                                     'session_data' => [],
  3035.                                     'session2' => $_SESSION,
  3036.                                 ));
  3037.                                 //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  3038.                                 //                    return $response;
  3039.                             }
  3040.                             return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  3041.                                 "message" => $message,
  3042.                                 'page_title' => "Login",
  3043.                                 'gocList' => $gocDataList,
  3044.                                 'gocId' => $gocId
  3045.                             ));
  3046.                         } else {
  3047.                             //add the email as username as failsafe
  3048.                             $user->setUserName($request->request->get('username'));
  3049.                             $em->flush();
  3050.                         }
  3051.                     }
  3052.                     if ($user) {
  3053.                         if ($user->getStatus() == UserConstants::INACTIVE_USER) {
  3054.                             $message "Sorry, Your Account is Deactivated";
  3055.                             if ($request->request->has('remoteVerify')) {
  3056.                                 return new JsonResponse(array(
  3057.                                     'uid' => $session->get(UserConstants::USER_ID),
  3058.                                     'session' => $session,
  3059.                                     'success' => false,
  3060.                                     'errorStr' => $message,
  3061.                                     'session_data' => [],
  3062.                                     'session2' => $_SESSION,
  3063.                                 ));
  3064.                                 //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  3065.                                 //                    return $response;
  3066.                             }
  3067.                             return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  3068.                                 "message" => $message,
  3069.                                 'page_title' => "Login",
  3070.                                 'gocList' => $gocDataList,
  3071.                                 'gocId' => $gocId
  3072.                             ));
  3073.                         }
  3074.                     }
  3075.                     if ($skipPassword == 1) {
  3076.                     } else if (!$this->container->get('sha256salted_encoder')->isPasswordValid($user->getPassword(), $request->request->get('password'), $user->getSalt())) {
  3077.                         $message "Wrong Email/Password";
  3078.                         if ($request->request->has('remoteVerify')) {
  3079.                             return new JsonResponse(array(
  3080.                                 'uid' => $session->get(UserConstants::USER_ID),
  3081.                                 'session' => $session,
  3082.                                 'success' => false,
  3083.                                 'errorStr' => $message,
  3084.                                 'session_data' => [],
  3085.                                 'session2' => $_SESSION,
  3086.                             ));
  3087.                             //                    $response->headers->set('Access-Control-Allow-Origin', '*');
  3088.                             //                    return $response;
  3089.                         }
  3090.                         return $this->render('ApplicationBundle:pages/login:login_new.html.twig', array(
  3091.                             "message" => $message,
  3092.                             'page_title' => "Login",
  3093.                             'gocList' => $gocDataList,
  3094.                             'gocId' => $gocId
  3095.                         ));
  3096.                     }
  3097.                     $userType $user->getUserType();
  3098.                     $jd json_decode($user->getUserCompanyIdList(), true);
  3099.                     if ($jd != null && $jd != '' && $jd != [])
  3100.                         $company_id_list $jd;
  3101.                     else
  3102.                         $company_id_list = [$user->getUserCompanyId()];
  3103.                     $companyList Company::getCompanyListWithImage($this->getDoctrine()->getManager());
  3104.                     foreach ($company_id_list as $c) {
  3105.                         $company_name_list[$c] = $companyList[$c]['name'];
  3106.                         $company_image_list[$c] = $companyList[$c]['image'];
  3107.                         $company_dark_vibrant_list[$c] = $companyList[$c]['dark_vibrant'];
  3108.                         $company_light_vibrant_list[$c] = $companyList[$c]['light_vibrant'];
  3109.                         $company_vibrant_list[$c] = $companyList[$c]['vibrant'];
  3110.                     }
  3111.                 }
  3112.                 $data["email"] = $request->request->get('username') ? $request->request->get('username') : $oAuthData['email'];
  3113.                 $product_name_display_settings $this->getDoctrine()->getRepository('ApplicationBundle\\Entity\\AccSettings')->findOneBy(array(
  3114.                     'name' => 'product_name_display_method'
  3115.                 ));
  3116.                 $product_name_display_type 0;
  3117.                 if ($product_name_display_settings)
  3118.                     $product_name_display_type $product_name_display_settings->getData();
  3119.                 if ($userType == UserConstants::USER_TYPE_SUPPLIER) {
  3120.                     // General User
  3121.                     $session->set(UserConstants::USER_ID$user->getSupplierId());
  3122.                     $session->set(UserConstants::SUPPLIER_ID$user->getSupplierId());
  3123.                     $session->set(UserConstants::USER_TYPEUserConstants::USER_TYPE_SUPPLIER);
  3124.                     $session->set(UserConstants::USER_EMAIL$user->getEmail());
  3125.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  3126.                     $session->set(UserConstants::USER_NAME$user->getSupplierName());
  3127.                     $session->set(UserConstants::USER_DEFAULT_ROUTE'');
  3128.                     $session->set(UserConstants::USER_COMPANY_ID$user->getCompanyId());
  3129.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  3130.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  3131.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3132.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  3133.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  3134.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  3135.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3136.                     $session->set(UserConstants::USER_APP_ID$appIdFromUserName);
  3137.                     $session->set(UserConstants::USER_POSITION_LIST'[]');
  3138.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG0);
  3139.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  3140.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  3141.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3142.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3143.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3144.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3145.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3146.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3147.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  3148.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  3149.                     //                $PL=json_decode($user->getPositionIds(), true);
  3150.                     $route_list_array = [];
  3151.                     $session->set(UserConstants::USER_CURRENT_POSITION0);
  3152.                     //                $loginID=$this->get('user_module')->addUserLoginLog($session->get(UserConstants::USER_ID),
  3153.                     //                    $request->server->get("REMOTE_ADDR"), $PL[0]);
  3154.                     $loginID 0;
  3155.                     $session->set(UserConstants::USER_LOGIN_ID$loginID);
  3156.                     //                    $session->set(UserConstants::USER_LOGIN_ID, $loginID);
  3157.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3158.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3159.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3160.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3161.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3162.                     $session->set(UserConstants::USER_ROUTE_LISTjson_encode($route_list_array));
  3163.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3164.                     $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  3165.                     //                $session->set(UserConstants::USER_PROHIBIT_LIST, json_encode(Position::getUserProhibitRouteArray($this->getDoctrine()->getManager(), $PL[0])));
  3166.                     if ($request->request->has('remoteVerify')) {
  3167.                         $session->set('remoteVerified'1);
  3168.                         $session_data = array(
  3169.                             UserConstants::USER_ID => $session->get(UserConstants::USER_ID0),
  3170.                             UserConstants::SUPPLIER_ID => $session->get(UserConstants::SUPPLIER_ID0),
  3171.                             UserConstants::CLIENT_ID => $session->get(UserConstants::CLIENT_ID0),
  3172.                             UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID0),
  3173.                             UserConstants::USER_EMAIL => $session->get(UserConstants::USER_EMAIL''),
  3174.                             UserConstants::USER_TYPE => $session->get(UserConstants::USER_TYPE0),
  3175.                             UserConstants::USER_IMAGE => $session->get(UserConstants::USER_IMAGE''),
  3176.                             UserConstants::USER_DEFAULT_ROUTE => $session->get(UserConstants::USER_DEFAULT_ROUTE''),
  3177.                             UserConstants::USER_NAME => $session->get(UserConstants::USER_NAME''),
  3178.                             UserConstants::USER_COMPANY_ID => $session->get(UserConstants::USER_COMPANY_ID0),
  3179.                             UserConstants::USER_COMPANY_ID_LIST => $session->get(UserConstants::USER_COMPANY_ID_LIST, []),
  3180.                             UserConstants::USER_COMPANY_NAME_LIST => $session->get(UserConstants::USER_COMPANY_NAME_LIST, []),
  3181.                             UserConstants::USER_COMPANY_IMAGE_LIST => $session->get(UserConstants::USER_COMPANY_IMAGE_LIST, []),
  3182.                             'userCompanyDarkVibrantList' => $session->get('userCompanyDarkVibrantList', []),
  3183.                             'userCompanyVibrantList' => $session->get('userCompanyVibrantList', []),
  3184.                             'userCompanyLightVibrantList' => $session->get('userCompanyLightVibrantList', []),
  3185.                             UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID0),
  3186.                             UserConstants::USER_CURRENT_POSITION => $session->get(UserConstants::USER_CURRENT_POSITION0),
  3187.                             UserConstants::SESSION_SALT => $session->get(UserConstants::SESSION_SALT''),
  3188.                             UserConstants::APPLICATION_SECRET => $session->get(UserConstants::APPLICATION_SECRET''),
  3189.                             UserConstants::USER_POSITION_LIST => $session->get(UserConstants::USER_POSITION_LIST''),
  3190.                             UserConstants::ALL_MODULE_ACCESS_FLAG => $session->get(UserConstants::ALL_MODULE_ACCESS_FLAG0),
  3191.                             UserConstants::USER_GOC_ID => $session->get(UserConstants::USER_GOC_ID0),
  3192.                             UserConstants::USER_DB_NAME => $session->get(UserConstants::USER_DB_NAME''),
  3193.                             UserConstants::USER_DB_USER => $session->get(UserConstants::USER_DB_USER''),
  3194.                             UserConstants::USER_DB_HOST => $session->get(UserConstants::USER_DB_HOST''),
  3195.                             UserConstants::USER_DB_PASS => $session->get(UserConstants::USER_DB_PASS''),
  3196.                             UserConstants::PRODUCT_NAME_DISPLAY_TYPE => $session->get(UserConstants::PRODUCT_NAME_DISPLAY_TYPE1),
  3197.                             UserConstants::USER_NOTIFICATION_ENABLED => GeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0,
  3198.                             UserConstants::USER_NOTIFICATION_SERVER => $this->getParameter('notification_server'),
  3199.                         );
  3200.                         $response = new JsonResponse(array(
  3201.                             'uid' => $session->get(UserConstants::USER_ID),
  3202.                             'session' => $session,
  3203.                             'success' => true,
  3204.                             'session_data' => $session_data,
  3205.                             'session2' => $_SESSION,
  3206.                         ));
  3207.                         $response->headers->set('Access-Control-Allow-Origin''*');
  3208.                         return $response;
  3209.                     }
  3210.                     if ($request->request->has('referer_path')) {
  3211.                         if ($request->request->get('referer_path') != '/' && $request->request->get('referer_path') != '') {
  3212.                             return $this->redirect($request->request->get('referer_path'));
  3213.                         }
  3214.                     }
  3215.                     //                    if($request->request->has('gocId')
  3216.                     //                    if($user->getDefaultRoute()==""||$user->getDefaultRoute()=="")
  3217.                     return $this->redirectToRoute("supplier_dashboard");
  3218.                     //                    else
  3219.                     //                        return $this->redirectToRoute($user->getDefaultRoute());
  3220.                 }
  3221.                 if ($userType == UserConstants::USER_TYPE_CLIENT) {
  3222.                     // General User
  3223.                     $session->set(UserConstants::USER_ID$user->getClientId());
  3224.                     $session->set(UserConstants::CLIENT_ID$user->getClientId());
  3225.                     $session->set(UserConstants::USER_TYPEUserConstants::USER_TYPE_CLIENT);
  3226.                     $session->set(UserConstants::USER_EMAIL$user->getEmail());
  3227.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  3228.                     $session->set(UserConstants::USER_NAME$user->getClientName());
  3229.                     $session->set(UserConstants::USER_DEFAULT_ROUTE'');
  3230.                     $session->set(UserConstants::USER_COMPANY_ID$user->getCompanyId());
  3231.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  3232.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  3233.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3234.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  3235.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  3236.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  3237.                     $session->set(UserConstants::USER_APP_ID$appIdFromUserName);
  3238.                     $session->set(UserConstants::USER_POSITION_LIST'[]');
  3239.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG0);
  3240.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  3241.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  3242.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3243.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3244.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3245.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3246.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3247.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3248.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  3249.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  3250.                     //                $PL=json_decode($user->getPositionIds(), true);
  3251.                     $route_list_array = [];
  3252.                     $session->set(UserConstants::USER_CURRENT_POSITION0);
  3253.                     //                $loginID=$this->get('user_module')->addUserLoginLog($session->get(UserConstants::USER_ID),
  3254.                     //                    $request->server->get("REMOTE_ADDR"), $PL[0]);
  3255.                     $loginID 0;
  3256.                     $session->set(UserConstants::USER_LOGIN_ID$loginID);
  3257.                     //                    $session->set(UserConstants::USER_LOGIN_ID, $loginID);
  3258.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3259.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3260.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3261.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3262.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3263.                     $session->set(UserConstants::USER_ROUTE_LISTjson_encode($route_list_array));
  3264.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3265.                     $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  3266.                     //                $session->set(UserConstants::USER_PROHIBIT_LIST, json_encode(Position::getUserProhibitRouteArray($this->getDoctrine()->getManager(), $PL[0])));
  3267.                     if ($request->request->has('remoteVerify')) {
  3268.                         $session->set('remoteVerified'1);
  3269.                         $session_data = array(
  3270.                             UserConstants::USER_ID => $session->get(UserConstants::USER_ID0),
  3271.                             UserConstants::SUPPLIER_ID => $session->get(UserConstants::SUPPLIER_ID0),
  3272.                             UserConstants::CLIENT_ID => $session->get(UserConstants::CLIENT_ID0),
  3273.                             UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID0),
  3274.                             UserConstants::USER_EMAIL => $session->get(UserConstants::USER_EMAIL''),
  3275.                             UserConstants::USER_TYPE => $session->get(UserConstants::USER_TYPE0),
  3276.                             UserConstants::USER_IMAGE => $session->get(UserConstants::USER_IMAGE''),
  3277.                             UserConstants::USER_DEFAULT_ROUTE => $session->get(UserConstants::USER_DEFAULT_ROUTE''),
  3278.                             UserConstants::USER_NAME => $session->get(UserConstants::USER_NAME''),
  3279.                             UserConstants::USER_COMPANY_ID => $session->get(UserConstants::USER_COMPANY_ID0),
  3280.                             UserConstants::USER_COMPANY_ID_LIST => $session->get(UserConstants::USER_COMPANY_ID_LIST, []),
  3281.                             UserConstants::USER_COMPANY_NAME_LIST => $session->get(UserConstants::USER_COMPANY_NAME_LIST, []),
  3282.                             UserConstants::USER_COMPANY_IMAGE_LIST => $session->get(UserConstants::USER_COMPANY_IMAGE_LIST, []),
  3283.                             UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID0),
  3284.                             UserConstants::USER_CURRENT_POSITION => $session->get(UserConstants::USER_CURRENT_POSITION0),
  3285.                             UserConstants::SESSION_SALT => $session->get(UserConstants::SESSION_SALT''),
  3286.                             UserConstants::APPLICATION_SECRET => $session->get(UserConstants::APPLICATION_SECRET''),
  3287.                             UserConstants::USER_POSITION_LIST => $session->get(UserConstants::USER_POSITION_LIST''),
  3288.                             'userCompanyDarkVibrantList' => $session->get('userCompanyDarkVibrantList', []),
  3289.                             'userCompanyVibrantList' => $session->get('userCompanyVibrantList', []),
  3290.                             'userCompanyLightVibrantList' => $session->get('userCompanyLightVibrantList', []),
  3291.                             UserConstants::ALL_MODULE_ACCESS_FLAG => $session->get(UserConstants::ALL_MODULE_ACCESS_FLAG0),
  3292.                             UserConstants::USER_GOC_ID => $session->get(UserConstants::USER_GOC_ID0),
  3293.                             UserConstants::USER_DB_NAME => $session->get(UserConstants::USER_DB_NAME''),
  3294.                             UserConstants::USER_DB_USER => $session->get(UserConstants::USER_DB_USER''),
  3295.                             UserConstants::USER_DB_HOST => $session->get(UserConstants::USER_DB_HOST''),
  3296.                             UserConstants::USER_DB_PASS => $session->get(UserConstants::USER_DB_PASS''),
  3297.                             UserConstants::PRODUCT_NAME_DISPLAY_TYPE => $session->get(UserConstants::PRODUCT_NAME_DISPLAY_TYPE1),
  3298.                             UserConstants::USER_NOTIFICATION_ENABLED => GeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0,
  3299.                             UserConstants::USER_NOTIFICATION_SERVER => $this->getParameter('notification_server'),
  3300.                         );
  3301.                         $response = new JsonResponse(array(
  3302.                             'uid' => $session->get(UserConstants::USER_ID),
  3303.                             'session' => $session,
  3304.                             'success' => true,
  3305.                             'session_data' => $session_data,
  3306.                             'session2' => $_SESSION,
  3307.                         ));
  3308.                         $response->headers->set('Access-Control-Allow-Origin''*');
  3309.                         return $response;
  3310.                     }
  3311.                     if ($request->request->has('referer_path')) {
  3312.                         if ($request->request->get('referer_path') != '/' && $request->request->get('referer_path') != '') {
  3313.                             return $this->redirect($request->request->get('referer_path'));
  3314.                         }
  3315.                     }
  3316.                     //                    if($request->request->has('gocId')
  3317.                     //                    if($user->getDefaultRoute()==""||$user->getDefaultRoute()=="")
  3318.                     return $this->redirectToRoute("client_dashboard"); //will be client
  3319.                     //                    else
  3320.                     //                        return $this->redirectToRoute($user->getDefaultRoute());
  3321.                 } else if ($userType == UserConstants::USER_TYPE_SYSTEM) {
  3322.                     // System administrator
  3323.                     // System administrator have successfully logged in. Lets add a login ID.
  3324.                     $loginID $this->get('user_module')->addUserLoginLog(
  3325.                         $user->getUserId(),
  3326.                         $request->server->get("REMOTE_ADDR"),
  3327.                         0
  3328.                     );
  3329.                     $employeeId 0;
  3330.                     $currentMonthHolidayList = [];
  3331.                     $employeeObj $em->getRepository('ApplicationBundle\\Entity\\Employee')
  3332.                         ->findOneBy(
  3333.                             array(
  3334.                                 'userId' => $user->getUserId()
  3335.                             )
  3336.                         );
  3337.                     if ($employeeObj) {
  3338.                         $employeeId $employeeObj->getEmployeeId();
  3339.                         $holidayListObj HumanResource::getFilteredHolidaysSingle($em, ['employeeId' => $employeeId], $employeeObjtrue);
  3340.                         $currentMonthHolidayList $holidayListObj['filteredData']['holidayList'];
  3341.                     }
  3342.                     $session->set(UserConstants::USER_EMPLOYEE_IDstrval($employeeId));
  3343.                     $session->set(UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTHjson_encode($currentMonthHolidayList));
  3344.                     $session->set(UserConstants::USER_ID$user->getUserId());
  3345.                     $session->set(UserConstants::USER_TYPEUserConstants::USER_TYPE_SYSTEM);
  3346.                     $session->set(UserConstants::USER_EMAIL$user->getEmail());
  3347.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  3348.                     $session->set(UserConstants::USER_NAME$user->getName());
  3349.                     $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  3350.                     $session->set(UserConstants::USER_COMPANY_ID$company_id_list[0]);
  3351.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  3352.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  3353.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3354.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  3355.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  3356.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  3357.                     $session->set(UserConstants::USER_APP_ID$user->getUserAppId());
  3358.                     $session->set(UserConstants::USER_LOGIN_ID$loginID);
  3359.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG$user->getAllModuleAccessFlag());
  3360.                     $session->set(UserConstants::USER_CURRENT_POSITION0);
  3361.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  3362.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  3363.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3364.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3365.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3366.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3367.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3368.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3369.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  3370.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  3371.                     $appIdList json_decode($user->getUserAppIdList());
  3372.                     if ($appIdList == null)
  3373.                         $appIdList = [];
  3374.                     $companyIdListByAppId = [];
  3375.                     $companyNameListByAppId = [];
  3376.                     $companyImageListByAppId = [];
  3377.                     if (!in_array($user->getUserAppId(), $appIdList))
  3378.                         $appIdList[] = $user->getUserAppId();
  3379.                     foreach ($appIdList as $currAppId) {
  3380.                         if ($currAppId == $user->getUserAppId()) {
  3381.                             foreach ($company_id_list as $index_company => $company_id) {
  3382.                                 $companyIdListByAppId[$currAppId][] = $currAppId '_' $company_id;
  3383.                                 $app_company_index $currAppId '_' $company_id;
  3384.                                 $companyNameListByAppId[$app_company_index] = $company_name_list[$company_id];
  3385.                                 $companyImageListByAppId[$app_company_index] = $company_image_list[$company_id];
  3386.                             }
  3387.                         } else {
  3388.                             $dataToConnect System::changeDoctrineManagerByAppId(
  3389.                                 $this->getDoctrine()->getManager('company_group'),
  3390.                                 $gocEnabled,
  3391.                                 $currAppId
  3392.                             );
  3393.                             if (!empty($dataToConnect)) {
  3394.                                 $connector $this->container->get('application_connector');
  3395.                                 $connector->resetConnection(
  3396.                                     'default',
  3397.                                     $dataToConnect['dbName'],
  3398.                                     $dataToConnect['dbUser'],
  3399.                                     $dataToConnect['dbPass'],
  3400.                                     $dataToConnect['dbHost'],
  3401.                                     $reset true
  3402.                                 );
  3403.                                 $em $this->getDoctrine()->getManager();
  3404.                                 $companyList Company::getCompanyListWithImage($em);
  3405.                                 foreach ($companyList as $c => $dta) {
  3406.                                     //                                $company_id_list[]=$c;
  3407.                                     //                                $company_name_list[$c] = $companyList[$c]['name'];
  3408.                                     //                                $company_image_list[$c] = $companyList[$c]['image'];
  3409.                                     $companyIdListByAppId[$currAppId][] = $currAppId '_' $c;
  3410.                                     $app_company_index $currAppId '_' $c;
  3411.                                     $companyNameListByAppId[$app_company_index] = $companyList[$c]['name'];
  3412.                                     $companyImageListByAppId[$app_company_index] = $companyList[$c]['image'];
  3413.                                 }
  3414.                             }
  3415.                         }
  3416.                     }
  3417.                     $session->set('appIdList'$appIdList);
  3418.                     $session->set('companyIdListByAppId'$companyIdListByAppId);
  3419.                     $session->set('companyNameListByAppId'$companyNameListByAppId);
  3420.                     $session->set('companyImageListByAppId'$companyImageListByAppId);
  3421.                     $branchIdList json_decode($user->getUserBranchIdList());
  3422.                     $branchId $user->getUserBranchId();
  3423.                     $session->set('branchIdList'$branchIdList);
  3424.                     $session->set('branchId'$branchId);
  3425.                     //USER_ROUTE_LIST
  3426.                     if ($request->request->has('remoteVerify')) {
  3427.                         $session->set('remoteVerified'1);
  3428.                         $session_data = array(
  3429.                             UserConstants::USER_EMPLOYEE_ID => $session->get(UserConstants::USER_EMPLOYEE_ID),
  3430.                             UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTH => $session->get(UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTH),
  3431.                             UserConstants::USER_ID => $session->get(UserConstants::USER_ID),
  3432.                             UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  3433.                             UserConstants::USER_EMAIL => $session->get(UserConstants::USER_EMAIL),
  3434.                             UserConstants::USER_TYPE => $session->get(UserConstants::USER_TYPE),
  3435.                             UserConstants::USER_IMAGE => $session->get(UserConstants::USER_IMAGE),
  3436.                             UserConstants::USER_DEFAULT_ROUTE => $session->get(UserConstants::USER_DEFAULT_ROUTE),
  3437.                             UserConstants::USER_NAME => $session->get(UserConstants::USER_NAME),
  3438.                             UserConstants::USER_COMPANY_ID => $session->get(UserConstants::USER_COMPANY_ID),
  3439.                             UserConstants::USER_COMPANY_ID_LIST => $session->get(UserConstants::USER_COMPANY_ID_LIST),
  3440.                             UserConstants::USER_COMPANY_NAME_LIST => $session->get(UserConstants::USER_COMPANY_NAME_LIST),
  3441.                             UserConstants::USER_COMPANY_IMAGE_LIST => $session->get(UserConstants::USER_COMPANY_IMAGE_LIST),
  3442.                             UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  3443.                             UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  3444.                             UserConstants::USER_CURRENT_POSITION => $session->get(UserConstants::USER_CURRENT_POSITION),
  3445.                             UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  3446.                             UserConstants::SESSION_SALT => $session->get(UserConstants::SESSION_SALT),
  3447.                             UserConstants::APPLICATION_SECRET => $session->get(UserConstants::APPLICATION_SECRET),
  3448.                             UserConstants::USER_POSITION_LIST => $session->get(UserConstants::USER_POSITION_LIST),
  3449.                             'userCompanyDarkVibrantList' => $session->get('userCompanyDarkVibrantList', []),
  3450.                             'userCompanyVibrantList' => $session->get('userCompanyVibrantList', []),
  3451.                             'userCompanyLightVibrantList' => $session->get('userCompanyLightVibrantList', []),
  3452.                             UserConstants::ALL_MODULE_ACCESS_FLAG => $session->get(UserConstants::ALL_MODULE_ACCESS_FLAG),
  3453.                             UserConstants::USER_GOC_ID => $session->get(UserConstants::USER_GOC_ID),
  3454.                             UserConstants::USER_DB_NAME => $session->get(UserConstants::USER_DB_NAME),
  3455.                             UserConstants::USER_DB_USER => $session->get(UserConstants::USER_DB_USER),
  3456.                             UserConstants::USER_DB_HOST => $session->get(UserConstants::USER_DB_HOST),
  3457.                             UserConstants::USER_DB_PASS => $session->get(UserConstants::USER_DB_PASS),
  3458.                             UserConstants::PRODUCT_NAME_DISPLAY_TYPE => $session->get(UserConstants::PRODUCT_NAME_DISPLAY_TYPE),
  3459.                             UserConstants::USER_NOTIFICATION_ENABLED => GeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0,
  3460.                             UserConstants::USER_NOTIFICATION_SERVER => $this->getParameter('notification_server'),
  3461.                             //new
  3462.                             'appIdList' => $session->get('appIdList'),
  3463.                             'companyIdListByAppId' => $session->get('companyIdListByAppId'),
  3464.                             'companyNameListByAppId' => $session->get('companyNameListByAppId'),
  3465.                             'companyImageListByAppId' => $session->get('companyImageListByAppId'),
  3466.                             'branchIdList' => $session->get('branchIdList'null),
  3467.                             'branchId' => $session->get('branchId'null),
  3468.                         );
  3469.                         return new JsonResponse(array(
  3470.                             'uid' => $session->get(UserConstants::USER_ID),
  3471.                             'session' => $session,
  3472.                             'success' => true,
  3473.                             'session_data' => $session_data,
  3474.                             'session2' => $_SESSION,
  3475.                         ));
  3476.                     }
  3477.                     return $this->redirectToRoute("system_admin_dashboard");
  3478.                 } else if ($userType == UserConstants::USER_TYPE_MANAGEMENT_USER) {
  3479.                     // General User
  3480.                     $employeeId 0;
  3481.                     $currentMonthHolidayList = [];
  3482.                     $employeeObj $em->getRepository('ApplicationBundle\\Entity\\Employee')
  3483.                         ->findOneBy(
  3484.                             array(
  3485.                                 'userId' => $user->getUserId()
  3486.                             )
  3487.                         );
  3488.                     if ($employeeObj) {
  3489.                         $employeeId $employeeObj->getEmployeeId();
  3490.                         $holidayListObj HumanResource::getFilteredHolidaysSingle($em, ['employeeId' => $employeeId], $employeeObjtrue);
  3491.                         $currentMonthHolidayList $holidayListObj['filteredData']['holidayList'];
  3492.                     }
  3493.                     $session->set(UserConstants::USER_EMPLOYEE_IDstrval($employeeId));
  3494.                     $session->set(UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTHjson_encode($currentMonthHolidayList));
  3495.                     $session->set(UserConstants::USER_ID$user->getUserId());
  3496.                     $session->set(UserConstants::USER_TYPEUserConstants::USER_TYPE_MANAGEMENT_USER);
  3497.                     $session->set(UserConstants::USER_EMAIL$user->getEmail());
  3498.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  3499.                     $session->set(UserConstants::USER_NAME$user->getName());
  3500.                     $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  3501.                     $session->set(UserConstants::USER_COMPANY_ID$user->getUserCompanyId());
  3502.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  3503.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  3504.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3505.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  3506.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  3507.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  3508.                     $session->set(UserConstants::USER_APP_ID$user->getUserAppId());
  3509.                     $session->set(UserConstants::USER_POSITION_LIST$user->getPositionIds());
  3510.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG$user->getAllModuleAccessFlag());
  3511.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  3512.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  3513.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3514.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3515.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3516.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3517.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3518.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3519.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  3520.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  3521.                     if (count(json_decode($user->getPositionIds(), true)) > 1) {
  3522.                         return $this->redirectToRoute("user_login_position");
  3523.                     } else {
  3524.                         $PL json_decode($user->getPositionIds(), true);
  3525.                         $route_list_array Position::getUserRouteArray($this->getDoctrine()->getManager(), $PL[0], $user->getUserId());
  3526.                         $session->set(UserConstants::USER_CURRENT_POSITION$PL[0]);
  3527.                         $loginID $this->get('user_module')->addUserLoginLog(
  3528.                             $session->get(UserConstants::USER_ID),
  3529.                             $request->server->get("REMOTE_ADDR"),
  3530.                             $PL[0]
  3531.                         );
  3532.                         $session->set(UserConstants::USER_LOGIN_ID$loginID);
  3533.                         //                    $session->set(UserConstants::USER_LOGIN_ID, $loginID);
  3534.                         $session->set(UserConstants::USER_GOC_ID$gocId);
  3535.                         $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3536.                         $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3537.                         $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  3538.                         $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3539.                         $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3540.                         $session->set(UserConstants::USER_ROUTE_LISTjson_encode($route_list_array));
  3541.                         $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3542.                         $appIdList json_decode($user->getUserAppIdList());
  3543.                         if ($appIdList == null$appIdList = [];
  3544.                         $companyIdListByAppId = [];
  3545.                         $companyNameListByAppId = [];
  3546.                         $companyImageListByAppId = [];
  3547.                         if (!in_array($user->getUserAppId(), $appIdList))
  3548.                             $appIdList[] = $user->getUserAppId();
  3549.                         foreach ($appIdList as $currAppId) {
  3550.                             if ($currAppId == $user->getUserAppId()) {
  3551.                                 foreach ($company_id_list as $index_company => $company_id) {
  3552.                                     $companyIdListByAppId[$currAppId][] = $currAppId '_' $company_id;
  3553.                                     $app_company_index $currAppId '_' $company_id;
  3554.                                     $companyNameListByAppId[$app_company_index] = $company_name_list[$company_id];
  3555.                                     $companyImageListByAppId[$app_company_index] = $company_image_list[$company_id];
  3556.                                 }
  3557.                             } else {
  3558.                                 $dataToConnect System::changeDoctrineManagerByAppId(
  3559.                                     $this->getDoctrine()->getManager('company_group'),
  3560.                                     $gocEnabled,
  3561.                                     $currAppId
  3562.                                 );
  3563.                                 if (!empty($dataToConnect)) {
  3564.                                     $connector $this->container->get('application_connector');
  3565.                                     $connector->resetConnection(
  3566.                                         'default',
  3567.                                         $dataToConnect['dbName'],
  3568.                                         $dataToConnect['dbUser'],
  3569.                                         $dataToConnect['dbPass'],
  3570.                                         $dataToConnect['dbHost'],
  3571.                                         $reset true
  3572.                                     );
  3573.                                     $em $this->getDoctrine()->getManager();
  3574.                                     $companyList Company::getCompanyListWithImage($em);
  3575.                                     foreach ($companyList as $c => $dta) {
  3576.                                         //                                $company_id_list[]=$c;
  3577.                                         //                                $company_name_list[$c] = $companyList[$c]['name'];
  3578.                                         //                                $company_image_list[$c] = $companyList[$c]['image'];
  3579.                                         $companyIdListByAppId[$currAppId][] = $currAppId '_' $c;
  3580.                                         $app_company_index $currAppId '_' $c;
  3581.                                         $companyNameListByAppId[$app_company_index] = $companyList[$c]['name'];
  3582.                                         $companyImageListByAppId[$app_company_index] = $companyList[$c]['image'];
  3583.                                     }
  3584.                                 }
  3585.                             }
  3586.                         }
  3587.                         $session->set('appIdList'$appIdList);
  3588.                         $session->set('companyIdListByAppId'$companyIdListByAppId);
  3589.                         $session->set('companyNameListByAppId'$companyNameListByAppId);
  3590.                         $session->set('companyImageListByAppId'$companyImageListByAppId);
  3591.                         $branchIdList json_decode($user->getUserBranchIdList());
  3592.                         $branchId $user->getUserBranchId();
  3593.                         $session->set('branchIdList'$branchIdList);
  3594.                         $session->set('branchId'$branchId);
  3595.                         if ($user->getAllModuleAccessFlag() == 1)
  3596.                             $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  3597.                         else
  3598.                             $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode(Position::getUserProhibitRouteArray($this->getDoctrine()->getManager(), $PL[0], $user->getUserId())));
  3599.                         if ($request->request->has('remoteVerify')) {
  3600.                             $session->set('remoteVerified'1);
  3601.                             $session_data = array(
  3602.                                 UserConstants::USER_EMPLOYEE_ID => $session->get(UserConstants::USER_EMPLOYEE_ID),
  3603.                                 UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTH => $session->get(UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTH),
  3604.                                 UserConstants::USER_ID => $session->get(UserConstants::USER_ID),
  3605.                                 UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  3606.                                 UserConstants::USER_EMAIL => $session->get(UserConstants::USER_EMAIL),
  3607.                                 UserConstants::USER_TYPE => $session->get(UserConstants::USER_TYPE),
  3608.                                 UserConstants::USER_IMAGE => $session->get(UserConstants::USER_IMAGE),
  3609.                                 UserConstants::USER_DEFAULT_ROUTE => $session->get(UserConstants::USER_DEFAULT_ROUTE),
  3610.                                 UserConstants::USER_NAME => $session->get(UserConstants::USER_NAME),
  3611.                                 UserConstants::USER_COMPANY_ID => $session->get(UserConstants::USER_COMPANY_ID),
  3612.                                 UserConstants::USER_COMPANY_ID_LIST => $session->get(UserConstants::USER_COMPANY_ID_LIST),
  3613.                                 UserConstants::USER_COMPANY_NAME_LIST => $session->get(UserConstants::USER_COMPANY_NAME_LIST),
  3614.                                 UserConstants::USER_COMPANY_IMAGE_LIST => $session->get(UserConstants::USER_COMPANY_IMAGE_LIST),
  3615.                                 UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  3616.                                 UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  3617.                                 UserConstants::USER_CURRENT_POSITION => $session->get(UserConstants::USER_CURRENT_POSITION),
  3618.                                 UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  3619.                                 UserConstants::SESSION_SALT => $session->get(UserConstants::SESSION_SALT),
  3620.                                 UserConstants::APPLICATION_SECRET => $session->get(UserConstants::APPLICATION_SECRET),
  3621.                                 UserConstants::USER_POSITION_LIST => $session->get(UserConstants::USER_POSITION_LIST),
  3622.                                 'userCompanyDarkVibrantList' => $session->get('userCompanyDarkVibrantList', []),
  3623.                                 'userCompanyVibrantList' => $session->get('userCompanyVibrantList', []),
  3624.                                 'userCompanyLightVibrantList' => $session->get('userCompanyLightVibrantList', []),
  3625.                                 UserConstants::ALL_MODULE_ACCESS_FLAG => $session->get(UserConstants::ALL_MODULE_ACCESS_FLAG),
  3626.                                 UserConstants::USER_GOC_ID => $session->get(UserConstants::USER_GOC_ID),
  3627.                                 UserConstants::USER_DB_NAME => $session->get(UserConstants::USER_DB_NAME),
  3628.                                 UserConstants::USER_DB_USER => $session->get(UserConstants::USER_DB_USER),
  3629.                                 UserConstants::USER_DB_HOST => $session->get(UserConstants::USER_DB_HOST),
  3630.                                 UserConstants::USER_DB_PASS => $session->get(UserConstants::USER_DB_PASS),
  3631.                                 UserConstants::PRODUCT_NAME_DISPLAY_TYPE => $session->get(UserConstants::PRODUCT_NAME_DISPLAY_TYPE),
  3632.                                 UserConstants::USER_NOTIFICATION_ENABLED => GeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0,
  3633.                                 UserConstants::USER_NOTIFICATION_SERVER => $this->getParameter('notification_server'),
  3634.                                 //new
  3635.                                 'branchIdList' => $session->get('branchIdList'null),
  3636.                                 'branchId' => $session->get('branchId'null),
  3637.                                 'appIdList' => $session->get('appIdList'),
  3638.                                 'companyIdListByAppId' => $session->get('companyIdListByAppId'),
  3639.                                 'companyNameListByAppId' => $session->get('companyNameListByAppId'),
  3640.                                 'companyImageListByAppId' => $session->get('companyImageListByAppId'),
  3641.                             );
  3642.                             $response = new JsonResponse(array(
  3643.                                 'uid' => $session->get(UserConstants::USER_ID),
  3644.                                 'session' => $session,
  3645.                                 'success' => true,
  3646.                                 'session_data' => $session_data,
  3647.                                 'session2' => $_SESSION,
  3648.                             ));
  3649.                             $response->headers->set('Access-Control-Allow-Origin''*');
  3650.                             return $response;
  3651.                         }
  3652.                         if ($request->server->has("HTTP_REFERER")) {
  3653.                             if ($request->request->get('HTTP_REFERER') != '/' && $request->request->get('HTTP_REFERER') != '') {
  3654.                                 return $this->redirect($request->request->get('HTTP_REFERER'));
  3655.                             }
  3656.                         }
  3657.                         //                    $request->server->get("REMOTE_ADDR"), $PL[0]);
  3658.                         if ($request->request->has('referer_path')) {
  3659.                             if ($request->request->get('referer_path') != '/' && $request->request->get('referer_path') != '') {
  3660.                                 return $this->redirect($request->request->get('referer_path'));
  3661.                             }
  3662.                         }
  3663.                         //                    if($request->request->has('gocId')
  3664.                         if ($user->getDefaultRoute() == "" || $user->getDefaultRoute() == "")
  3665.                             return $this->redirectToRoute("dashboard");
  3666.                         else
  3667.                             return $this->redirectToRoute($user->getDefaultRoute());
  3668.                     }
  3669.                 } else if ($userType == UserConstants::USER_TYPE_APPLICANT) {
  3670.                     $session->set(UserConstants::USER_ID$user->getApplicantId());
  3671.                     // $session->set(UserConstants::SUPPLIER_ID, $user->getSupplierId());
  3672.                     $session->set(UserConstants::USER_TYPEUserConstants::USER_TYPE_APPLICANT);
  3673.                     $session->set(UserConstants::USER_EMAIL$user->getOauthEmail());
  3674.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  3675.                     $session->set(UserConstants::USER_NAME$user->getFirstName() . ' ' $user->getLastName());
  3676.                     $session->set(UserConstants::USER_DEFAULT_ROUTE'');
  3677.                     $session->set(UserConstants::USER_COMPANY_ID1);
  3678.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  3679.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  3680.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3681.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  3682.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  3683.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  3684.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3685.                     $session->set(UserConstants::USER_APP_ID$appIdFromUserName);
  3686.                     $session->set(UserConstants::USER_POSITION_LIST'[]');
  3687.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG0);
  3688.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  3689.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  3690.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3691.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3692.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3693.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3694.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3695.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3696.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  3697.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  3698.                     $route_list_array = [];
  3699.                     $session->set(UserConstants::USER_CURRENT_POSITION0);
  3700.                     $loginID 0;
  3701.                     $session->set(UserConstants::USER_LOGIN_ID$loginID);
  3702.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3703.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3704.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3705.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3706.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3707.                     $session->set(UserConstants::USER_ROUTE_LISTjson_encode($route_list_array));
  3708.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3709.                     $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  3710.                     if ($request->request->has('referer_path')) {
  3711.                         if ($request->request->get('referer_path') != '/' && $request->request->get('referer_path') != '') {
  3712.                             return $this->redirect($request->request->get('referer_path'));
  3713.                         }
  3714.                     }
  3715.                     return $this->redirectToRoute("applicant_dashboard");
  3716.                 } else {
  3717.                     // General User
  3718.                     $employeeId 0;
  3719.                     $currentMonthHolidayList = [];
  3720.                     $employeeObj $em->getRepository('ApplicationBundle\\Entity\\Employee')
  3721.                         ->findOneBy(
  3722.                             array(
  3723.                                 'userId' => $user->getUserId()
  3724.                             )
  3725.                         );
  3726.                     if ($employeeObj) {
  3727.                         $employeeId $employeeObj->getEmployeeId();
  3728.                         $holidayListObj HumanResource::getFilteredHolidaysSingle($em, ['employeeId' => $employeeId], $employeeObjtrue);
  3729.                         $currentMonthHolidayList $holidayListObj['filteredData']['holidayList'];
  3730.                     }
  3731.                     $session->set(UserConstants::USER_EMPLOYEE_IDstrval($employeeId));
  3732.                     $session->set(UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTHjson_encode($currentMonthHolidayList));
  3733. //          $session->set('$holidayListObj', json_encode($holidayListObj));
  3734.                     $session->set(UserConstants::USER_ID$user->getUserId());
  3735.                     $session->set(UserConstants::USER_TYPEUserConstants::USER_TYPE_GENERAL);
  3736.                     $session->set(UserConstants::USER_EMAIL$user->getEmail());
  3737.                     $session->set(UserConstants::USER_IMAGE$user->getImage());
  3738.                     $session->set(UserConstants::USER_NAME$user->getName());
  3739.                     $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  3740.                     $session->set(UserConstants::USER_COMPANY_ID$user->getUserCompanyId());
  3741.                     $session->set(UserConstants::USER_COMPANY_ID_LISTjson_encode($company_id_list));
  3742.                     $session->set(UserConstants::USER_COMPANY_NAME_LISTjson_encode($company_name_list));
  3743.                     $session->set(UserConstants::USER_COMPANY_IMAGE_LISTjson_encode($company_image_list));
  3744.                     $session->set('userCompanyDarkVibrantList'json_encode($company_dark_vibrant_list));
  3745.                     $session->set('userCompanyVibrantList'json_encode($company_vibrant_list));
  3746.                     $session->set('userCompanyLightVibrantList'json_encode($company_light_vibrant_list));
  3747.                     $session->set(UserConstants::USER_APP_ID$user->getUserAppId());
  3748.                     $session->set(UserConstants::USER_POSITION_LIST$user->getPositionIds());
  3749.                     $session->set(UserConstants::ALL_MODULE_ACCESS_FLAG$user->getAllModuleAccessFlag());
  3750.                     $session->set(UserConstants::SESSION_SALTuniqid(mt_rand()));
  3751.                     $session->set(UserConstants::APPLICATION_SECRET$this->container->getParameter('secret'));
  3752.                     $session->set(UserConstants::USER_GOC_ID$gocId);
  3753.                     $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3754.                     $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3755.                     $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3756.                     $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3757.                     $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3758.                     $session->set(UserConstants::USER_NOTIFICATION_ENABLEDGeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0);
  3759.                     $session->set(UserConstants::USER_NOTIFICATION_SERVER$this->getParameter('notification_server'));
  3760.                     if (count(json_decode($user->getPositionIds(), true)) > 1) {
  3761.                         return $this->redirectToRoute("user_login_position");
  3762.                     } else {
  3763.                         $PL json_decode($user->getPositionIds(), true);
  3764.                         $route_list_array Position::getUserRouteArray($this->getDoctrine()->getManager(), $PL[0], $user->getUserId());
  3765.                         $session->set(UserConstants::USER_CURRENT_POSITION$PL[0]);
  3766.                         $loginID $this->get('user_module')->addUserLoginLog(
  3767.                             $session->get(UserConstants::USER_ID),
  3768.                             $request->server->get("REMOTE_ADDR"),
  3769.                             $PL[0]
  3770.                         );
  3771.                         $session->set(UserConstants::USER_LOGIN_ID$loginID);
  3772.                         //                    $session->set(UserConstants::USER_LOGIN_ID, $loginID);
  3773.                         $session->set(UserConstants::USER_GOC_ID$gocId);
  3774.                         $session->set(UserConstants::USER_DB_NAME$gocDbName);
  3775.                         $session->set(UserConstants::USER_DB_USER$gocDbUser);
  3776.                         $session->set(UserConstants::USER_DEFAULT_ROUTE$user->getDefaultRoute());
  3777.                         $session->set(UserConstants::USER_DB_PASS$gocDbPass);
  3778.                         $session->set(UserConstants::USER_DB_HOST$gocDbHost);
  3779.                         $session->set(UserConstants::USER_ROUTE_LISTjson_encode($route_list_array));
  3780.                         $session->set(UserConstants::PRODUCT_NAME_DISPLAY_TYPE$product_name_display_type);
  3781.                         $appIdList json_decode($user->getUserAppIdList());
  3782.                         if ($appIdList == null$appIdList = [];
  3783.                         $companyIdListByAppId = [];
  3784.                         $companyNameListByAppId = [];
  3785.                         $companyImageListByAppId = [];
  3786.                         if (!in_array($user->getUserAppId(), $appIdList))
  3787.                             $appIdList[] = $user->getUserAppId();
  3788.                         foreach ($appIdList as $currAppId) {
  3789.                             if ($currAppId == $user->getUserAppId()) {
  3790.                                 foreach ($company_id_list as $index_company => $company_id) {
  3791.                                     $companyIdListByAppId[$currAppId][] = $currAppId '_' $company_id;
  3792.                                     $app_company_index $currAppId '_' $company_id;
  3793.                                     $companyNameListByAppId[$app_company_index] = $company_name_list[$company_id];
  3794.                                     $companyImageListByAppId[$app_company_index] = $company_image_list[$company_id];
  3795.                                 }
  3796.                             } else {
  3797.                                 $dataToConnect System::changeDoctrineManagerByAppId(
  3798.                                     $this->getDoctrine()->getManager('company_group'),
  3799.                                     $gocEnabled,
  3800.                                     $currAppId
  3801.                                 );
  3802.                                 if (!empty($dataToConnect)) {
  3803.                                     $connector $this->container->get('application_connector');
  3804.                                     $connector->resetConnection(
  3805.                                         'default',
  3806.                                         $dataToConnect['dbName'],
  3807.                                         $dataToConnect['dbUser'],
  3808.                                         $dataToConnect['dbPass'],
  3809.                                         $dataToConnect['dbHost'],
  3810.                                         $reset true
  3811.                                     );
  3812.                                     $em $this->getDoctrine()->getManager();
  3813.                                     $companyList Company::getCompanyListWithImage($em);
  3814.                                     foreach ($companyList as $c => $dta) {
  3815.                                         //                                $company_id_list[]=$c;
  3816.                                         //                                $company_name_list[$c] = $companyList[$c]['name'];
  3817.                                         //                                $company_image_list[$c] = $companyList[$c]['image'];
  3818.                                         $companyIdListByAppId[$currAppId][] = $currAppId '_' $c;
  3819.                                         $app_company_index $currAppId '_' $c;
  3820.                                         $companyNameListByAppId[$app_company_index] = $companyList[$c]['name'];
  3821.                                         $companyImageListByAppId[$app_company_index] = $companyList[$c]['image'];
  3822.                                     }
  3823.                                 }
  3824.                             }
  3825.                         }
  3826.                         $session->set('appIdList'$appIdList);
  3827.                         $session->set('companyIdListByAppId'$companyIdListByAppId);
  3828.                         $session->set('companyNameListByAppId'$companyNameListByAppId);
  3829.                         $session->set('companyImageListByAppId'$companyImageListByAppId);
  3830.                         $branchIdList json_decode($user->getUserBranchIdList());
  3831.                         $branchId $user->getUserBranchId();
  3832.                         $session->set('branchIdList'$branchIdList);
  3833.                         $session->set('branchId'$branchId);
  3834.                         if ($user->getAllModuleAccessFlag() == 1)
  3835.                             $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode([]));
  3836.                         else
  3837.                             $session->set(UserConstants::USER_PROHIBIT_LISTjson_encode(Position::getUserProhibitRouteArray($this->getDoctrine()->getManager(), $PL[0], $user->getUserId())));
  3838.                         if ($request->request->has('remoteVerify')) {
  3839.                             $session->set('remoteVerified'1);
  3840.                             $session_data = array(
  3841.                                 UserConstants::USER_EMPLOYEE_ID => $session->get(UserConstants::USER_EMPLOYEE_ID),
  3842.                                 UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTH => $session->get(UserConstants::USER_HOLIDAY_LIST_CURRENT_MONTH),
  3843.                                 UserConstants::USER_ID => $session->get(UserConstants::USER_ID),
  3844.                                 UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  3845.                                 UserConstants::USER_EMAIL => $session->get(UserConstants::USER_EMAIL),
  3846.                                 UserConstants::USER_TYPE => $session->get(UserConstants::USER_TYPE),
  3847.                                 UserConstants::USER_IMAGE => $session->get(UserConstants::USER_IMAGE),
  3848.                                 UserConstants::USER_DEFAULT_ROUTE => $session->get(UserConstants::USER_DEFAULT_ROUTE),
  3849.                                 UserConstants::USER_NAME => $session->get(UserConstants::USER_NAME),
  3850.                                 UserConstants::USER_COMPANY_ID => $session->get(UserConstants::USER_COMPANY_ID),
  3851.                                 UserConstants::USER_COMPANY_ID_LIST => $session->get(UserConstants::USER_COMPANY_ID_LIST),
  3852.                                 UserConstants::USER_COMPANY_NAME_LIST => $session->get(UserConstants::USER_COMPANY_NAME_LIST),
  3853.                                 UserConstants::USER_COMPANY_IMAGE_LIST => $session->get(UserConstants::USER_COMPANY_IMAGE_LIST),
  3854.                                 UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  3855.                                 UserConstants::USER_LOGIN_ID => $session->get(UserConstants::USER_LOGIN_ID),
  3856.                                 UserConstants::USER_CURRENT_POSITION => $session->get(UserConstants::USER_CURRENT_POSITION),
  3857.                                 UserConstants::USER_APP_ID => $session->get(UserConstants::USER_APP_ID),
  3858.                                 UserConstants::SESSION_SALT => $session->get(UserConstants::SESSION_SALT),
  3859.                                 UserConstants::APPLICATION_SECRET => $session->get(UserConstants::APPLICATION_SECRET),
  3860.                                 UserConstants::USER_POSITION_LIST => $session->get(UserConstants::USER_POSITION_LIST),
  3861.                                 'userCompanyDarkVibrantList' => $session->get('userCompanyDarkVibrantList', []),
  3862.                                 'userCompanyVibrantList' => $session->get('userCompanyVibrantList', []),
  3863.                                 'userCompanyLightVibrantList' => $session->get('userCompanyLightVibrantList', []),
  3864.                                 UserConstants::ALL_MODULE_ACCESS_FLAG => $session->get(UserConstants::ALL_MODULE_ACCESS_FLAG),
  3865.                                 UserConstants::USER_GOC_ID => $session->get(UserConstants::USER_GOC_ID),
  3866.                                 UserConstants::USER_DB_NAME => $session->get(UserConstants::USER_DB_NAME),
  3867.                                 UserConstants::USER_DB_USER => $session->get(UserConstants::USER_DB_USER),
  3868.                                 UserConstants::USER_DB_HOST => $session->get(UserConstants::USER_DB_HOST),
  3869.                                 UserConstants::USER_DB_PASS => $session->get(UserConstants::USER_DB_PASS),
  3870.                                 UserConstants::PRODUCT_NAME_DISPLAY_TYPE => $session->get(UserConstants::PRODUCT_NAME_DISPLAY_TYPE),
  3871.                                 UserConstants::USER_NOTIFICATION_ENABLED => GeneralConstant::NOTIFICATION_ENABLED == ? ($this->getParameter('notification_enabled') == 0) : 0,
  3872.                                 UserConstants::USER_NOTIFICATION_SERVER => $this->getParameter('notification_server'),
  3873.                                 //new
  3874.                                 'branchIdList' => $session->get('branchIdList'null),
  3875.                                 'branchId' => $session->get('branchId'null),
  3876.                                 'appIdList' => $session->get('appIdList'),
  3877.                                 'companyIdListByAppId' => $session->get('companyIdListByAppId'),
  3878.                                 'companyNameListByAppId' => $session->get('companyNameListByAppId'),
  3879.                                 'companyImageListByAppId' => $session->get('companyImageListByAppId'),
  3880.                             );
  3881.                             $response = new JsonResponse(array(
  3882.                                 'uid' => $session->get(UserConstants::USER_ID),
  3883.                                 'session' => $session,
  3884.                                 'success' => true,
  3885.                                 'session_data' => $session_data,
  3886.                                 'session2' => $_SESSION,
  3887.                             ));
  3888.                             $response->headers->set('Access-Control-Allow-Origin''*');
  3889.                             return $response;
  3890.                         }
  3891.                         if ($request->server->has("HTTP_REFERER")) {
  3892.                             if ($request->request->get('HTTP_REFERER') != '/' && $request->request->get('HTTP_REFERER') != '') {
  3893.                                 return $this->redirect($request->request->get('HTTP_REFERER'));
  3894.                             }
  3895.                         }
  3896.                         //                    $request->server->get("REMOTE_ADDR"), $PL[0]);
  3897.                         if ($request->request->has('referer_path')) {
  3898.                             if ($request->request->get('referer_path') != '/' && $request->request->get('referer_path') != '') {
  3899.                                 return $this->redirect($request->request->get('referer_path'));
  3900.                             }
  3901.                         }
  3902.                         //                    if($request->request->has('gocId')
  3903.                         if ($user->getDefaultRoute() == "" || $user->getDefaultRoute() == "")
  3904.                             return $this->redirectToRoute("dashboard");
  3905.                         else
  3906.                             return $this->redirectToRoute($user->getDefaultRoute());
  3907.                     }
  3908.                 }
  3909.             }
  3910.         }
  3911.         $session $request->getSession();
  3912.         //        if($request->request->has('remoteVerify')) {
  3913.         //            $session->set('remoteVerified', 1);
  3914.         //            $response= new JsonResponse(array('hi'=>'hello'));
  3915.         //            $response->headers->set('Access-Control-Allow-Origin', '*');
  3916.         //            return $response;
  3917.         //        }
  3918.         return $this->render(
  3919.             'ApplicationBundle:pages/login:login_new.html.twig',
  3920.             array(
  3921.                 "message" => $message,
  3922.                 'page_title' => 'Login',
  3923.                 'gocList' => $gocDataListForLoginWeb,
  3924.                 'gocId' => '',
  3925.                 'encData' => $encData,
  3926.                 //                'ref'=>$request->
  3927.             )
  3928.         );
  3929.     }
  3930.     public function initiateAdminAction(Request $request)
  3931.     {
  3932.         $em $this->getDoctrine()->getManager();
  3933.         MiscActions::initiateAdminUser($em);
  3934.         $this->addFlash(
  3935.             'success',
  3936.             'The Action was Successful.'
  3937.         );
  3938.         return $this->redirectToRoute('user_login');
  3939.     }
  3940.     public function DemoDataFlutterTestAction(Request $request)
  3941.     {
  3942.         return new JsonResponse(
  3943.             array(
  3944.                 ['id' => 1'name' => 'Property 1''rating' => '4.5''description' => 'lorem ipsum 1''imageUrl' => 'https://picsum.photos/200/300'],
  3945.                 ['id' => 2'name' => 'Property 2''rating' => '4.1''description' => 'lorem ipsum 2''imageUrl' => 'https://picsum.photos/200/300'],
  3946.                 ['id' => 3'name' => 'Property 3''rating' => '4.2''description' => 'lorem ipsum 4''imageUrl' => 'https://picsum.photos/200/300'],
  3947.                 ['id' => 4'name' => 'Property 4''rating' => '2.5''description' => 'lorem ipsum 3''imageUrl' => 'https://picsum.photos/200/300'],
  3948.             )
  3949.         );
  3950.     }
  3951.     public function selectDataAjaxAction(Request $request$queryStr '',
  3952.                                                  $version 'latest',
  3953.                                                  $identifier '_default_',
  3954.                                                  $apiKey '_ignore_'
  3955.     )
  3956.     {
  3957.         $em $this->getDoctrine()->getManager();
  3958.         $em_goc $this->getDoctrine()->getManager('company_group');
  3959.         $companyId 0;
  3960.         $skipCurrentUserIdRestriction $request->get('skipCurrentUserIdRestriction'0);
  3961.         $dataOnly $request->get('dataOnly'0);
  3962.         $skipCurrentEmployeeIdRestriction $request->get('skipCurrentEmployeeIdRestriction'0);
  3963.         $skipCurrentUserLoginIdRestriction $request->get('skipCurrentUserLoginIdRestriction'0);
  3964.         $currentUserId $request->getSession()->get(UserConstants::USER_ID0);
  3965.         $currentEmployeeId $request->getSession()->get(UserConstants::USER_EMPLOYEE_ID0);
  3966.         $currentUserLoginIds = [];
  3967.         if ($request->request->get('entity_group'0)) {
  3968.             $companyId 0;
  3969.             $em $this->getDoctrine()->getManager('company_group');
  3970.         } else {
  3971.             if ($request->request->get('appId'0) != 0) {
  3972.                 $gocEnabled 0;
  3973.                 if ($this->container->hasParameter('entity_group_enabled'))
  3974.                     $gocEnabled $this->container->getParameter('entity_group_enabled');
  3975.                 else
  3976.                     $gocEnabled 1;
  3977.                 if ($gocEnabled == 1) {
  3978.                     $dataToConnect System::changeDoctrineManagerByAppId(
  3979.                         $this->getDoctrine()->getManager('company_group'),
  3980.                         $gocEnabled,
  3981.                         $request->request->get('appId'0)
  3982.                     );
  3983.                     if (!empty($dataToConnect)) {
  3984.                         $connector $this->container->get('application_connector');
  3985.                         $connector->resetConnection(
  3986.                             'default',
  3987.                             $dataToConnect['dbName'],
  3988.                             $dataToConnect['dbUser'],
  3989.                             $dataToConnect['dbPass'],
  3990.                             $dataToConnect['dbHost'],
  3991.                             $reset true
  3992.                         );
  3993.                         $em $this->getDoctrine()->getManager();
  3994.                     }
  3995.                 }
  3996.             } else if ($request->getSession()->get(UserConstants::USER_APP_ID) != && $request->getSession()->get(UserConstants::USER_APP_ID) != null) {
  3997.                 $gocEnabled 0;
  3998.                 if ($this->container->hasParameter('entity_group_enabled'))
  3999.                     $gocEnabled $this->container->getParameter('entity_group_enabled');
  4000.                 else
  4001.                     $gocEnabled 1;
  4002.                 if ($gocEnabled == 1) {
  4003.                     $dataToConnect System::changeDoctrineManagerByAppId(
  4004.                         $this->getDoctrine()->getManager('company_group'),
  4005.                         $gocEnabled,
  4006.                         $request->getSession()->get(UserConstants::USER_APP_ID)
  4007.                     );
  4008.                     if (!empty($dataToConnect)) {
  4009.                         $connector $this->container->get('application_connector');
  4010.                         $connector->resetConnection(
  4011.                             'default',
  4012.                             $dataToConnect['dbName'],
  4013.                             $dataToConnect['dbUser'],
  4014.                             $dataToConnect['dbPass'],
  4015.                             $dataToConnect['dbHost'],
  4016.                             $reset true
  4017.                         );
  4018.                         $em $this->getDoctrine()->getManager();
  4019.                     }
  4020.                 }
  4021.             }
  4022.             $companyId $this->getLoggedUserCompanyId($request);
  4023.         }
  4024.         $configData = [];
  4025.         $isSingleDataset 1;
  4026.         $dataSet $request->request->has('dataset') ? $request->request->get('dataset') : [];
  4027.         if (is_string($dataSet)) $dataSet json_decode($dataSettrue);
  4028.         $valuePairs $request->get('valuePairs', []);
  4029.         if (is_string($valuePairs)) $valuePairs json_decode($valuePairstrue);
  4030.         $allResult = [];
  4031.         $datasetFromConfig = [];
  4032.         if ($identifier != '_default_') {
  4033.             $config_file $this->container->getParameter('kernel.root_dir') . '/../src/ApplicationBundle/Resources/config/api/' $identifier 'Config.json';
  4034.             if (!file_exists($config_file)) {
  4035.             } else {
  4036.                 $fileText file_get_contents($config_file);
  4037.                 //now replace any value pairs
  4038.                 foreach ($valuePairs as $kkeeyy => $vvaalluuee) {
  4039.                     if (is_array($vvaalluuee)) {
  4040.                         if (isset($vvaalluuee['value']) && isset($vvaalluuee['type'])) {
  4041.                             if ($vvaalluuee['type'] == 'array'$fileText str_ireplace('_' $kkeeyy '_'json_encode($vvaalluuee['value']), $fileText);
  4042.                             if ($vvaalluuee['type'] == 'value'$fileText str_ireplace('_' $kkeeyy '_'$vvaalluuee['value'], $fileText);
  4043.                             if ($vvaalluuee['type'] == 'text')  $fileText str_ireplace('_' $kkeeyy '_'$vvaalluuee['value'], $fileText);
  4044.                         } else {
  4045.                             $fileText str_ireplace('_' $kkeeyy '_'json_encode($vvaalluuee), $fileText);
  4046.                         }
  4047.                     }
  4048.                     else
  4049.                         $fileText str_ireplace('_' $kkeeyy '_'$vvaalluuee$fileText);
  4050.                 }
  4051.                 $fileText str_ireplace('_query_'$request->get('query'$queryStr), $fileText);
  4052.                 $fileText str_ireplace('_itemLimit_'$request->get('itemLimit''_all_'), $fileText);
  4053.                 $fileText str_ireplace('_offset_'$request->get('offset', ($request->get('itemLimit'10)) * ($request->get('page'1) - 1)), $fileText);
  4054.                 if (!(strpos($fileText'_CURRENT_USER_LOGIN_IDS_') === false) && $skipCurrentUserLoginIdRestriction == 0) {
  4055.                     $userInfo = [];
  4056.                     if ($request->getSession()->get(UserConstants::USER_TYPE0) == UserConstants::USER_TYPE_APPLICANT) {
  4057.                         $userInfo $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityLoginLog')->findBy(
  4058.                             array('userId' => $currentUserId)
  4059.                         );
  4060.                     } else {
  4061.                         $userInfo $em->getRepository('ApplicationBundle\\Entity\\SysLoginLog')->findBy(
  4062.                             array('userId' => $currentUserId)
  4063.                         );
  4064.                     }
  4065.                     foreach ($userInfo as $uLogininfo) {
  4066.                         $currentUserLoginIds[] = $uLogininfo->getLoginId();
  4067.                     }
  4068.                     $fileText str_ireplace('_CURRENT_USER_LOGIN_IDS_'json_encode($currentUserLoginIds), $fileText);
  4069.                 } else {
  4070.                     $fileText str_ireplace('_CURRENT_USER_LOGIN_IDS_''_EMPTY_'$fileText);
  4071.                 }
  4072.                 if (!(strpos($fileText'_CURRENT_USER_ID_') === false) && $skipCurrentUserIdRestriction == 0) {
  4073.                     $fileText str_ireplace('_CURRENT_USER_ID_'$currentUserId$fileText);
  4074.                 } else {
  4075.                     $fileText str_ireplace('_CURRENT_USER_ID_''_EMPTY_'$fileText);
  4076.                 }
  4077.                 if (!(strpos($fileText'_CURRENT_USER_EMPLOYEE_ID_') === false) && $skipCurrentEmployeeIdRestriction == 0) {
  4078.                     if ((strpos($fileText'skipCurrentEmployeeIdRestriction') === false)) {
  4079.                         $fileText str_ireplace('_CURRENT_USER_EMPLOYEE_ID_'$currentEmployeeId$fileText);
  4080.                     } else {
  4081.                         $fileText str_ireplace('_CURRENT_USER_EMPLOYEE_ID_''_EMPTY_'$fileText);
  4082.                     }
  4083.                 } else {
  4084.                     $fileText str_ireplace('_CURRENT_USER_EMPLOYEE_ID_''_EMPTY_'$fileText);
  4085.                 }
  4086.                 if ($fileText)
  4087.                     $datasetFromConfig json_decode($fileTexttrue);
  4088.                 $skipCurrentUserIdRestriction = isset($datasetFromConfig['skipCurrentUserIdRestriction']) ? $datasetFromConfig['skipCurrentUserIdRestriction'] : $skipCurrentUserIdRestriction;
  4089.                 $skipCurrentEmployeeIdRestriction = isset($datasetFromConfig['skipCurrentEmployeeIdRestriction']) ? $datasetFromConfig['skipCurrentEmployeeIdRestriction'] : $skipCurrentEmployeeIdRestriction;
  4090.                 $skipCurrentUserLoginIdRestriction = isset($datasetFromConfig['skipCurrentUserLoginIdRestriction']) ? $datasetFromConfig['skipCurrentUserLoginIdRestriction'] : $skipCurrentUserLoginIdRestriction;
  4091.             }
  4092.         }
  4093.         if ($dataSet == null$dataSet = [];
  4094. //        return new JsonResponse(array(
  4095. //            'queryStr'=>$queryStr
  4096. //        ));
  4097.         if (!empty($datasetFromConfig)) {
  4098.             if (isset($datasetFromConfig['tableName'])) {
  4099.                 $isSingleDataset 1;
  4100.                 $dataSet[] = $datasetFromConfig;
  4101.             } else {
  4102.                 if (count($datasetFromConfig) == 1)
  4103.                     $isSingleDataset 1;
  4104.                 $dataSet $datasetFromConfig;
  4105.             }
  4106.         }
  4107.         if (empty($dataSet)) {
  4108.             $isSingleDataset 1;
  4109.             $singleDataSet = array(
  4110.                 "valueField" => $request->request->has('valueField') ? $request->request->get('valueField') : 'id',
  4111.                 "query" => $request->get('query'$queryStr),
  4112.                 "headMarkers" => $request->get('headMarkers'''),
  4113.                 "headMarkersStrictMatch" => $request->get('headMarkersStrictMatch'0),
  4114.                 "itemLimit" => $request->request->has('itemLimit') ? $request->request->get('itemLimit') : 25,
  4115.                 "selectorId" => $request->request->has('selectorId') ? $request->request->get('selectorId') : '_NONE_',
  4116.                 "textField" => $request->request->has('textField') ? $request->request->get('textField') : 'name',
  4117.                 "tableName" => $request->request->has('tableName') ? $request->request->get('tableName') : '',
  4118.                 "isMultiple" => $request->request->has('isMultiple') ? $request->request->get('isMultiple') : 0,
  4119.                 "orConditions" => $request->request->has('orConditions') ? $request->request->get('orConditions') : [],
  4120.                 "andConditions" => $request->request->has('andConditions') ? $request->request->get('andConditions') : [],
  4121.                 "andOrConditions" => $request->request->has('andOrConditions') ? $request->request->get('andOrConditions') : [],
  4122.                 "mustConditions" => $request->request->has('mustConditions') ? $request->request->get('mustConditions') : [],
  4123.                 "joinTableData" => $request->request->has('joinTableData') ? $request->request->get('joinTableData') : [],
  4124.                 "renderTextFormat" => $request->request->has('renderTextFormat') ? $request->request->get('renderTextFormat') : '',
  4125.                 "setDataForSingle" => $request->request->has('setDataForSingle') ? $request->request->get('setDataForSingle') : 0,
  4126.                 "dataId" => $request->request->has('dataId') ? $request->request->get('dataId') : 0,
  4127.                 "lastChildrenOnly" => $request->request->has('lastChildrenOnly') ? $request->request->get('lastChildrenOnly') : 0,
  4128.                 "parentOnly" => $request->request->has('parentOnly') ? $request->request->get('parentOnly') : 0,
  4129.                 "parentIdField" => $request->request->has('parentIdField') ? $request->request->get('parentIdField') : 'parent_id',
  4130.                 "skipDefaultCompanyId" => $request->request->has('skipDefaultCompanyId') ? $request->request->get('skipDefaultCompanyId') : 1,
  4131.                 "offset" => $request->request->has('offset') ? $request->request->get('offset') : 0,
  4132.                 "returnTotalMatchedEntriesFlag" => $request->request->has('returnTotalMatched') ? $request->request->get('returnTotalMatched') : 0,
  4133.                 "nextOffset" => 0,
  4134.                 "totalMatchedEntries" => 0,
  4135.                 "convertToObject" => $request->request->has('convertToObject') ? $request->request->get('convertToObject') : [],
  4136.                 "convertDateToStringFieldList" => $request->request->has('convertDateToStringFieldList') ? $request->request->get('convertDateToStringFieldList') : [],
  4137.                 "orderByConditions" => $request->request->has('orderByConditions') ? $request->request->get('orderByConditions') : [],
  4138.                 "convertToUrl" => $request->request->has('convertToUrl') ? $request->request->get('convertToUrl') : [],
  4139.                 "fullPathList" => $request->request->has('fullPathList') ? $request->request->get('fullPathList') : [],
  4140.                 "ret_data" => $request->request->has('ret_data') ? $request->request->get('ret_data') : [],
  4141.             );
  4142.             $dataSet[] = $singleDataSet;
  4143.         }
  4144. //        $lastResult = [
  4145. //            'identifier' => $identifier,
  4146. //            'dataSet' => $dataSet,
  4147. //        ];
  4148. //        return new JsonResponse($lastResult);
  4149.         $userId $request->getSession()->get(UserConstants::USER_ID);
  4150. //        public static function selectDataSystem($em, $queryStr = '_EMPTY_', $data = [],$userId=0)
  4151.         foreach ($dataSet as $dsIndex => $dataConfig) {
  4152.             $companyId 0;
  4153.             $queryStringIndividual $queryStr;
  4154.             $data = [];
  4155.             $data_by_id = [];
  4156.             $setValueArray = [];
  4157.             $silentChangeSelectize 0;
  4158.             $setValue 0;
  4159.             $setValueType 0;// 0 for id , 1 for query
  4160.             $selectAll 0;
  4161.             if ($queryStringIndividual == '_EMPTY_')
  4162.                 $queryStringIndividual '';
  4163.             if (isset($dataConfig['query']))
  4164.                 $queryStringIndividual $dataConfig['query'];
  4165.             if ($queryStringIndividual == '_EMPTY_')
  4166.                 $queryStringIndividual '';
  4167.             $queryStringIndividual str_replace('_FSLASH_''/'$queryStringIndividual);
  4168.             if ($queryStringIndividual === '#setValue:') {
  4169.                 $queryStringIndividual '';
  4170.             }
  4171.             if (!(strpos($queryStringIndividual'_silent_change_') === false)) {
  4172.                 $silentChangeSelectize 1;
  4173.                 $queryStringIndividual str_ireplace('_silent_change_'''$queryStringIndividual);
  4174.             }
  4175.             if (!(strpos($queryStringIndividual'#setValue:') === false)) {
  4176.                 $setValueArrayBeforeFilter explode(','str_replace('#setValue:'''$queryStringIndividual));
  4177.                 foreach ($setValueArrayBeforeFilter as $svf) {
  4178.                     if ($svf == '_ALL_') {
  4179.                         $selectAll 1;
  4180.                         $setValueArray = [];
  4181.                         continue;
  4182.                     }
  4183.                     if (is_numeric($svf)) {
  4184.                         $setValueArray[] = ($svf 1);
  4185.                         $setValue $svf 1;
  4186.                     }
  4187.                 }
  4188.                 $queryStringIndividual '';
  4189.             }
  4190.             $valueField = isset($dataConfig['valueField']) ? $dataConfig['valueField'] : 'id';
  4191.             $headMarkers = isset($dataConfig['headMarkers']) ? $dataConfig['headMarkers'] : ''//Special Field
  4192.             $headMarkersStrictMatch = isset($dataConfig['headMarkersStrictMatch']) ? $dataConfig['headMarkersStrictMatch'] : 0//Special Field
  4193.             $itemLimit = isset($dataConfig['itemLimit']) ? $dataConfig['itemLimit'] : 25;
  4194.             $selectorId = isset($dataConfig['selectorId']) ? $dataConfig['selectorId'] : '_NONE_';
  4195.             $textField = isset($dataConfig['textField']) ? $dataConfig['textField'] : 'name';
  4196.             $table = isset($dataConfig['tableName']) ? $dataConfig['tableName'] : '';
  4197.             $isMultiple = isset($dataConfig['isMultiple']) ? $dataConfig['isMultiple'] : 0;
  4198.             $orConditions = isset($dataConfig['orConditions']) ? $dataConfig['orConditions'] : [];
  4199.             $andConditions = isset($dataConfig['andConditions']) ? $dataConfig['andConditions'] : [];
  4200.             $andOrConditions = isset($dataConfig['andOrConditions']) ? $dataConfig['andOrConditions'] : [];
  4201.             $mustConditions = isset($dataConfig['mustConditions']) ? $dataConfig['mustConditions'] : [];
  4202.             $joinTableData = isset($dataConfig['joinTableData']) ? $dataConfig['joinTableData'] : [];
  4203.             $renderTextFormat = isset($dataConfig['renderTextFormat']) ? $dataConfig['renderTextFormat'] : '';
  4204.             $setDataForSingle = isset($dataConfig['setDataForSingle']) ? $dataConfig['setDataForSingle'] : 0;
  4205.             $dataId = isset($dataConfig['dataId']) ? $dataConfig['dataId'] : 0;
  4206.             $lastChildrenOnly = isset($dataConfig['lastChildrenOnly']) ? $dataConfig['lastChildrenOnly'] : 0;
  4207.             $parentOnly = isset($dataConfig['parentOnly']) ? $dataConfig['parentOnly'] : 0;
  4208.             $parentIdField = isset($dataConfig['parentIdField']) ? $dataConfig['parentIdField'] : 'parent_id';
  4209.             $skipDefaultCompanyId = isset($dataConfig['skipDefaultCompanyId']) ? $dataConfig['skipDefaultCompanyId'] : 1;
  4210.             $offset = isset($dataConfig['offset']) ? $dataConfig['offset'] : 0;
  4211.             $returnTotalMatchedEntriesFlag = isset($dataConfig['returnTotalMatched']) ? $dataConfig['returnTotalMatched'] : 0;
  4212.             $nextOffset 0;
  4213.             $totalMatchedEntries 0;
  4214.             $convertToObjectFieldList = isset($dataConfig['convertToObject']) ? $dataConfig['convertToObject'] : [];
  4215.             $convertDateToStringFieldList = isset($dataConfig['convertDateToStringFieldList']) ? $dataConfig['convertDateToStringFieldList'] : [];
  4216.             $orderByConditions = isset($dataConfig['orderByConditions']) ? $dataConfig['orderByConditions'] : [];
  4217.             $convertToUrl = isset($dataConfig['convertToUrl']) ? $dataConfig['convertToUrl'] : [];
  4218.             $fullPathList = isset($dataConfig['fullPathList']) ? $dataConfig['fullPathList'] : [];
  4219.             if (is_string($andConditions)) $andConditions json_decode($andConditionstrue);
  4220.             if (is_string($orConditions)) $orConditions json_decode($orConditionstrue);
  4221.             if (is_string($andOrConditions)) $andOrConditions json_decode($andOrConditionstrue);
  4222.             if (is_string($mustConditions)) $mustConditions json_decode($mustConditionstrue);
  4223.             if (is_string($joinTableData)) $joinTableData json_decode($joinTableDatatrue);
  4224.             if (is_string($convertToObjectFieldList)) $convertToObjectFieldList json_decode($convertToObjectFieldListtrue);
  4225.             if (is_string($orderByConditions)) $orderByConditions json_decode($orderByConditionstrue);
  4226.             if (is_string($convertToUrl)) $convertToUrl json_decode($convertToUrltrue);
  4227.             if (is_string($fullPathList)) $fullPathList json_decode($fullPathListtrue);
  4228. //            return new JsonResponse(array(
  4229. //                'dataSet'=>$dataSet,
  4230. //                'dataConfig'=>$dataConfig,
  4231. //                'hi'=>$this->container->getParameter('kernel.root_dir') . '/../src/ApplicationBundle/Resources/config/api/' . $identifier . 'Config.json',
  4232. //                'hiD'=>file_get_contents($this->container->getParameter('kernel.root_dir') . '/../src/ApplicationBundle/Resources/config/api/' . $identifier . 'Config.json')
  4233. //            ));
  4234.             if ($table == '') {
  4235.                 $lastResult = array(
  4236.                     'success' => false,
  4237.                     'currentTs' => (new \Datetime())->format('U'),
  4238.                     'isMultiple' => $isMultiple,
  4239.                     'setValueArray' => $setValueArray,
  4240.                     'setValue' => $setValue,
  4241.                     'data' => $data,
  4242.                     'dataId' => $dataId,
  4243.                     'selectorId' => $selectorId,
  4244.                     'dataById' => $data_by_id,
  4245.                     'selectedId' => 0,
  4246.                     'ret_data' => isset($dataConfig['ret_data']) ? $dataConfig['ret_data'] : [],
  4247.                 );
  4248.             } else {
  4249.                 $restrictionData = array(
  4250. //            'table'=>'relevantField in restriction'
  4251.                     'warehouse_action' => 'warehouseActionIds',
  4252.                     'branch' => 'branchIds',
  4253.                     'warehouse' => 'warehouseIds',
  4254.                     'production_process_settings' => 'productionProcessIds',
  4255.                 );
  4256.                 $restrictionIdList = [];
  4257.                 $filterQryForCriteria "select ";
  4258.                 $selectQry "";
  4259. //        $selectQry=" `$table`.* ";
  4260.                 $selectFieldList = isset($dataConfig['selectFieldList']) ? $dataConfig['selectFieldList'] : ['*'];
  4261.                 $selectPrefix = isset($dataConfig['selectPrefix']) ? $dataConfig['selectPrefix'] : '';
  4262.                 if (is_string($selectFieldList)) $selectFieldList json_decode($selectFieldListtrue);
  4263.                 foreach ($selectFieldList as $selField) {
  4264.                     if ($selectQry != '')
  4265.                         $selectQry .= ", ";
  4266.                     if ($selField == '*')
  4267.                         $selectQry .= " `$table`.$selField ";
  4268.                     else if ($selField == 'count(*)' || $selField == '_RESULT_COUNT_') {
  4269.                         if ($selectPrefix == '')
  4270.                             $selectQry .= " count(*)  ";
  4271.                         else
  4272.                             $selectQry .= (" count(*  )  $selectPrefix"_RESULT_COUNT_ ");
  4273.                     } else {
  4274.                         if ($selectPrefix == '')
  4275.                             $selectQry .= " `$table`.`$selField` ";
  4276.                         else
  4277.                             $selectQry .= (" `$table`.`$selField`  $selectPrefix"$selField ");
  4278.                     }
  4279.                 }
  4280.                 $joinQry " from $table ";
  4281. //        $filterQryForCriteria = "select * from $table ";
  4282.                 foreach ($joinTableData as $joinIndex => $joinTableDatum) {
  4283. //            $conditionStr.=' 1=1 ';
  4284.                     $joinTableName = isset($joinTableDatum['tableName']) ? $joinTableDatum['tableName'] : '=';
  4285.                     $joinTableAlias $joinTableName '_' $joinIndex;
  4286.                     $joinTablePrimaryField = isset($joinTableDatum['joinFieldPrimary']) ? $joinTableDatum['joinFieldPrimary'] : ''//field of main table
  4287.                     $joinTableOnField = isset($joinTableDatum['joinOn']) ? $joinTableDatum['joinOn'] : ''//field of joining table
  4288.                     $fieldJoinType = isset($joinTableDatum['fieldJoinType']) ? $joinTableDatum['fieldJoinType'] : '=';
  4289.                     $tableJoinType = isset($joinTableDatum['tableJoinType']) ? $joinTableDatum['tableJoinType'] : 'join';//or inner join
  4290.                     $selectFieldList = isset($joinTableDatum['selectFieldList']) ? $joinTableDatum['selectFieldList'] : ['*'];
  4291.                     $selectPrefix = isset($joinTableDatum['selectPrefix']) ? $joinTableDatum['selectPrefix'] : '';
  4292.                     $joinMustConditions = isset($joinTableDatum['joinMustConditions']) ? $joinTableDatum['joinMustConditions'] : [];
  4293.                     $joinAndConditions = isset($joinTableDatum['joinAndConditions']) ? $joinTableDatum['joinAndConditions'] : [];
  4294.                     $joinAndOrConditions = isset($joinTableDatum['joinAndOrConditions']) ? $joinTableDatum['joinAndOrConditions'] : [];
  4295.                     $joinOrConditions = isset($joinTableDatum['joinOrConditions']) ? $joinTableDatum['joinOrConditions'] : [];
  4296.                     if (is_string($joinAndConditions)) $joinAndConditions json_decode($joinAndConditionstrue);
  4297.                     if (is_string($joinMustConditions)) $joinMustConditions json_decode($joinMustConditionstrue);
  4298.                     if (is_string($joinAndOrConditions)) $joinAndOrConditions json_decode($joinAndOrConditionstrue);
  4299.                     if (is_string($joinOrConditions)) $joinOrConditions json_decode($joinOrConditionstrue);
  4300.                     foreach ($selectFieldList as $selFieldFull) {
  4301.                         $selFieldArray=explode(' ',$selFieldFull);
  4302.                         $selField=$selFieldArray[0];
  4303.                         $selFieldAlias=$selFieldArray[1]??'';
  4304.                         if ($selField == '*')
  4305.                             $selectQry .= ", `$joinTableAlias`.$selField ";
  4306.                         else if ($selField == 'count(*)' || $selField == '_RESULT_COUNT_') {
  4307.                             if ($selectPrefix == '')
  4308.                                 $selectQry .= ", count(`$joinTableAlias`." $joinTableOnField ")  ";
  4309.                             else
  4310.                                 $selectQry .= (", count(`$joinTableAlias`." $joinTableOnField ")  $selectPrefix"_RESULT_COUNT_ ");
  4311.                         } else {
  4312.                             if ($selectPrefix == '')
  4313.                                 $selectQry .= ", `$joinTableAlias`.`$selField`  $selFieldAlias";
  4314.                             else
  4315.                                 $selectQry .= (", `$joinTableAlias`.`$selField`  $selectPrefix"$selField ");
  4316.                         }
  4317.                     }
  4318.                     $joinQry .= $tableJoinType $joinTableName $joinTableAlias on  ";
  4319. //            if($joinTablePrimaryField!='')
  4320. //                $joinQry .= "  `$joinTableAlias`.`$joinTableOnField` $fieldJoinType `$table`.`$joinTablePrimaryField` ";
  4321. //            $joinAndString = '';
  4322.                     $joinMustString '';
  4323.                     if ($joinTablePrimaryField != '') {
  4324.                         if (!(strpos($joinTablePrimaryField'.') === false)) {
  4325.                             $joinQry .= "  `$joinTableAlias`.`$joinTableOnField`  $fieldJoinType $joinTablePrimaryField ";
  4326.                         } else
  4327.                             $joinQry .= "  `$joinTableAlias`.`$joinTableOnField`  $fieldJoinType `$table`.`$joinTablePrimaryField` ";
  4328.                     }
  4329.                     foreach ($joinMustConditions as $mustCondition) {
  4330. //            $conditionStr.=' 1=1 ';
  4331.                         $ctype = isset($mustCondition['type']) ? $mustCondition['type'] : '=';
  4332.                         $cfield = isset($mustCondition['field']) ? $mustCondition['field'] : '';
  4333.                         $aliasInCondition $table;
  4334.                         if (!(strpos($cfield'.') === false)) {
  4335.                             $fullCfieldArray explode('.'$cfield);
  4336.                             $aliasInCondition $fullCfieldArray[0];
  4337.                             $cfield $fullCfieldArray[1];
  4338.                         }
  4339.                         $cvalue = isset($mustCondition['value']) ? $mustCondition['value'] : $queryStringIndividual;
  4340.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4341.                             if ($joinMustString != '')
  4342.                                 $joinMustString .= " and ";
  4343.                             if ($ctype == 'like') {
  4344.                                 $joinMustString .= ("`$joinTableAlias`.$cfield like '%" $cvalue "%' ");
  4345.                                 $wordsBySpaces explode(' '$cvalue);
  4346.                                 foreach ($wordsBySpaces as $word) {
  4347.                                     if ($joinMustString != '')
  4348.                                         $joinMustString .= " and ";
  4349.                                     $joinMustString .= ("`$joinTableAlias`.$cfield like '%" $word "%' ");
  4350.                                 }
  4351.                             } else if ($ctype == 'not like') {
  4352.                                 $joinMustString .= ("`$joinTableAlias`.$cfield not like '%" $cvalue "%' ");
  4353.                                 $wordsBySpaces explode(' '$cvalue);
  4354.                                 foreach ($wordsBySpaces as $word) {
  4355.                                     if ($joinMustString != '')
  4356.                                         $joinMustString .= " and ";
  4357.                                     $joinMustString .= ("`$joinTableAlias`.$cfield not like '%" $word "%' ");
  4358.                                 }
  4359.                             } else if ($ctype == 'not_in') {
  4360.                                 $joinMustString .= " ( ";
  4361.                                 if (in_array('null'$cvalue)) {
  4362.                                     $joinMustString .= " `$joinTableAlias`.$cfield is not null";
  4363.                                     $cvalue array_diff($cvalue, ['null']);
  4364.                                     if (!empty($cvalue))
  4365.                                         $joinMustString .= " and ";
  4366.                                 }
  4367.                                 if (in_array(''$cvalue)) {
  4368.                                     $joinMustString .= "`$joinTableAlias`.$cfield != '' ";
  4369.                                     $cvalue array_diff($cvalue, ['']);
  4370.                                     if (!empty($cvalue))
  4371.                                         $joinMustString .= " and ";
  4372.                                 }
  4373.                                 $joinMustString .= "`$joinTableAlias`.$cfield not in (" implode(','$cvalue) . ") ) ";
  4374.                             } else if ($ctype == 'in') {
  4375.                                 if (in_array('null'$cvalue)) {
  4376.                                     $joinMustString .= "`$joinTableAlias`.$cfield is null";
  4377.                                     $cvalue array_diff($cvalue, ['null']);
  4378.                                     if (!empty($cvalue))
  4379.                                         $joinMustString .= " and ";
  4380.                                 }
  4381.                                 if (in_array(''$cvalue)) {
  4382.                                     $joinMustString .= "`$joinTableAlias`.$cfield = '' ";
  4383.                                     $cvalue array_diff($cvalue, ['']);
  4384.                                     if (!empty($cvalue))
  4385.                                         $joinMustString .= " and ";
  4386.                                 }
  4387.                                 $joinMustString .= "`$joinTableAlias`.$cfield in (" implode(','$cvalue) . ") ";
  4388.                             } else if ($ctype == '=') {
  4389. //                        if (!(strpos($cvalue, '.') === false) && !(strpos($cvalue, '_PRIMARY_TABLE_') === false)) {
  4390. //                            $fullCfieldArray = explode('.', $cfield);
  4391. //                            $aliasInCondition = $fullCfieldArray[0];
  4392. //                            $cfield = $fullCfieldArray[1];
  4393. //                        }
  4394.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4395.                                     $joinMustString .= "`$joinTableAlias`.$cfield is null ";
  4396.                                 else
  4397.                                     $joinMustString .= "`$joinTableAlias`.$cfield = $cvalue ";
  4398.                             } else if ($ctype == '!=') {
  4399.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4400.                                     $joinMustString .= "`$joinTableAlias`.$cfield is not null ";
  4401.                                 else
  4402.                                     $joinMustString .= "`$joinTableAlias`.$cfield != $cvalue ";
  4403.                             } else {
  4404.                                 if (is_string($cvalue))
  4405.                                     $joinMustString .= "`$joinTableAlias`.$cfield $ctype '" $cvalue "' ";
  4406.                                 else
  4407.                                     $joinMustString .= "`$joinTableAlias`.$cfield $ctype " $cvalue " ";
  4408.                             }
  4409.                         }
  4410.                     }
  4411. //            if ($joinMustString != '') {
  4412. //                if ($conditionStr != '')
  4413. //                    $conditionStr .= (" and (" . $joinMustString . ") ");
  4414. //                else
  4415. //                    $conditionStr .= ("  (" . $joinMustString . ") ");
  4416. //            }
  4417.                     if ($joinMustString != '') {
  4418.                         $joinQry .= (' and ' $joinMustString);
  4419. //                        $joinQry.=' and (';
  4420.                     }
  4421.                     $mustBracketDone 0;
  4422.                     $joinAndString '';
  4423. //                    if ($joinTablePrimaryField != '')
  4424. //                        $joinAndString .= "  `$joinTableAlias`.`$joinTableOnField` $fieldJoinType `$table`.`$joinTablePrimaryField` ";
  4425.                     foreach ($joinAndConditions as $andCondition) {
  4426. //            $conditionStr.=' 1=1 ';
  4427.                         $ctype = isset($andCondition['type']) ? $andCondition['type'] : '=';
  4428.                         $cfield = isset($andCondition['field']) ? $andCondition['field'] : '';
  4429.                         $aliasInCondition $table;
  4430.                         if (!(strpos($cfield'.') === false)) {
  4431.                             $fullCfieldArray explode('.'$cfield);
  4432.                             $aliasInCondition $fullCfieldArray[0];
  4433.                             $cfield $fullCfieldArray[1];
  4434.                         }
  4435.                         $cvalue = isset($andCondition['value']) ? $andCondition['value'] : $queryStringIndividual;
  4436.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4437.                             if ($joinAndString != '')
  4438.                                 $joinAndString .= " and ";
  4439.                             if ($ctype == 'like') {
  4440.                                 $joinAndString .= ("`$joinTableAlias`.$cfield like '%" $cvalue "%' ");
  4441.                                 $wordsBySpaces explode(' '$cvalue);
  4442.                                 foreach ($wordsBySpaces as $word) {
  4443.                                     if ($joinAndString != '')
  4444.                                         $joinAndString .= " and ";
  4445.                                     $joinAndString .= ("`$joinTableAlias`.$cfield like '%" $word "%' ");
  4446.                                 }
  4447.                             } else if ($ctype == 'not like') {
  4448.                                 $joinAndString .= ("`$joinTableAlias`.$cfield not like '%" $cvalue "%' ");
  4449.                                 $wordsBySpaces explode(' '$cvalue);
  4450.                                 foreach ($wordsBySpaces as $word) {
  4451.                                     if ($joinAndString != '')
  4452.                                         $joinAndString .= " and ";
  4453.                                     $joinAndString .= ("`$joinTableAlias`.$cfield not like '%" $word "%' ");
  4454.                                 }
  4455.                             } else if ($ctype == 'not_in') {
  4456.                                 $joinAndString .= " ( ";
  4457.                                 if (in_array('null'$cvalue)) {
  4458.                                     $joinAndString .= " `$joinTableAlias`.$cfield is not null";
  4459.                                     $cvalue array_diff($cvalue, ['null']);
  4460.                                     if (!empty($cvalue))
  4461.                                         $joinAndString .= " and ";
  4462.                                 }
  4463.                                 if (in_array(''$cvalue)) {
  4464.                                     $joinAndString .= "`$joinTableAlias`.$cfield != '' ";
  4465.                                     $cvalue array_diff($cvalue, ['']);
  4466.                                     if (!empty($cvalue))
  4467.                                         $joinAndString .= " and ";
  4468.                                 }
  4469.                                 $joinAndString .= "`$joinTableAlias`.$cfield not in (" implode(','$cvalue) . ") ) ";
  4470.                             } else if ($ctype == 'in') {
  4471.                                 if (in_array('null'$cvalue)) {
  4472.                                     $joinAndString .= "`$joinTableAlias`.$cfield is null";
  4473.                                     $cvalue array_diff($cvalue, ['null']);
  4474.                                     if (!empty($cvalue))
  4475.                                         $joinAndString .= " and ";
  4476.                                 }
  4477.                                 if (in_array(''$cvalue)) {
  4478.                                     $joinAndString .= "`$joinTableAlias`.$cfield = '' ";
  4479.                                     $cvalue array_diff($cvalue, ['']);
  4480.                                     if (!empty($cvalue))
  4481.                                         $joinAndString .= " and ";
  4482.                                 }
  4483.                                 $joinAndString .= "`$joinTableAlias`.$cfield in (" implode(','$cvalue) . ") ";
  4484.                             } else if ($ctype == '=') {
  4485. //                        if (!(strpos($cvalue, '.') === false) && !(strpos($cvalue, '_PRIMARY_TABLE_') === false)) {
  4486. //                            $fullCfieldArray = explode('.', $cfield);
  4487. //                            $aliasInCondition = $fullCfieldArray[0];
  4488. //                            $cfield = $fullCfieldArray[1];
  4489. //                        }
  4490.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4491.                                     $joinAndString .= "`$joinTableAlias`.$cfield is null ";
  4492.                                 else
  4493.                                     $joinAndString .= "`$joinTableAlias`.$cfield = $cvalue ";
  4494.                             } else if ($ctype == '!=') {
  4495.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4496.                                     $joinAndString .= "`$joinTableAlias`.$cfield is not null ";
  4497.                                 else
  4498.                                     $joinAndString .= "`$joinTableAlias`.$cfield != $cvalue ";
  4499.                             } else {
  4500.                                 if (is_string($cvalue))
  4501.                                     $joinAndString .= "`$joinTableAlias`.$cfield $ctype '" $cvalue "' ";
  4502.                                 else
  4503.                                     $joinAndString .= "`$joinTableAlias`.$cfield $ctype " $cvalue " ";
  4504.                             }
  4505.                         }
  4506.                     }
  4507. //            if ($joinAndString != '') {
  4508. //                if ($conditionStr != '')
  4509. //                    $conditionStr .= (" and (" . $joinAndString . ") ");
  4510. //                else
  4511. //                    $conditionStr .= ("  (" . $joinAndString . ") ");
  4512. //            }
  4513.                     if ($joinAndString != '') {
  4514.                         if ($joinMustString != '' && $mustBracketDone == 0) {
  4515.                             $joinQry .= ' and (';
  4516.                             $mustBracketDone 1;
  4517.                         }
  4518.                         if ($joinQry != '')
  4519.                             $joinQry .= (" and (" $joinAndString ") ");
  4520.                         else
  4521.                             $joinQry .= ("  (" $joinAndString ") ");
  4522.                     }
  4523.                     $joinAndOrString "";
  4524.                     foreach ($joinAndOrConditions as $andOrCondition) {
  4525. //            $conditionStr.=' 1=1 ';
  4526.                         $ctype = isset($andOrCondition['type']) ? $andOrCondition['type'] : '=';
  4527.                         $cfield = isset($andOrCondition['field']) ? $andOrCondition['field'] : '';
  4528.                         $aliasInCondition $table;
  4529.                         if (!(strpos($cfield'.') === false)) {
  4530.                             $fullCfieldArray explode('.'$cfield);
  4531.                             $aliasInCondition $fullCfieldArray[0];
  4532.                             $cfield $fullCfieldArray[1];
  4533.                         }
  4534.                         $cvalue = isset($andOrCondition['value']) ? $andOrCondition['value'] : $queryStringIndividual;
  4535.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4536.                             if ($joinAndOrString != '')
  4537.                                 $joinAndOrString .= " or ";
  4538.                             if ($ctype == 'like') {
  4539.                                 $joinAndOrString .= ("`$joinTableAlias`.$cfield like '%" $cvalue "%' ");
  4540.                                 $wordsBySpaces explode(' '$cvalue);
  4541.                                 foreach ($wordsBySpaces as $word) {
  4542.                                     if ($joinAndOrString != '')
  4543.                                         $joinAndOrString .= " or ";
  4544.                                     $joinAndOrString .= ("`$joinTableAlias`.$cfield like '%" $word "%' ");
  4545.                                 }
  4546.                             } else if ($ctype == 'not like') {
  4547.                                 $joinAndOrString .= ("`$joinTableAlias`.$cfield not like '%" $cvalue "%' ");
  4548.                                 $wordsBySpaces explode(' '$cvalue);
  4549.                                 foreach ($wordsBySpaces as $word) {
  4550.                                     if ($joinAndOrString != '')
  4551.                                         $joinAndOrString .= " or ";
  4552.                                     $joinAndOrString .= ("`$joinTableAlias`.$cfield not like '%" $word "%' ");
  4553.                                 }
  4554.                             } else if ($ctype == 'not_in') {
  4555.                                 $joinAndOrString .= " ( ";
  4556.                                 if (in_array('null'$cvalue)) {
  4557.                                     $joinAndOrString .= " `$joinTableAlias`.$cfield is not null";
  4558.                                     $cvalue array_diff($cvalue, ['null']);
  4559.                                     if (!empty($cvalue))
  4560.                                         $joinAndOrString .= " or ";
  4561.                                 }
  4562.                                 if (in_array(''$cvalue)) {
  4563.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield != '' ";
  4564.                                     $cvalue array_diff($cvalue, ['']);
  4565.                                     if (!empty($cvalue))
  4566.                                         $joinAndOrString .= " or ";
  4567.                                 }
  4568.                                 $joinAndOrString .= "`$joinTableAlias`.$cfield not in (" implode(','$cvalue) . ") ) ";
  4569.                             } else if ($ctype == 'in') {
  4570.                                 if (in_array('null'$cvalue)) {
  4571.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield is null";
  4572.                                     $cvalue array_diff($cvalue, ['null']);
  4573.                                     if (!empty($cvalue))
  4574.                                         $joinAndOrString .= " or ";
  4575.                                 }
  4576.                                 if (in_array(''$cvalue)) {
  4577.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield = '' ";
  4578.                                     $cvalue array_diff($cvalue, ['']);
  4579.                                     if (!empty($cvalue))
  4580.                                         $joinAndOrString .= " or ";
  4581.                                 }
  4582.                                 $joinAndOrString .= "`$joinTableAlias`.$cfield in (" implode(','$cvalue) . ") ";
  4583.                             } else if ($ctype == '=') {
  4584. //                        if (!(strpos($cvalue, '.') === false) && !(strpos($cvalue, '_PRIMARY_TABLE_') === false)) {
  4585. //                            $fullCfieldArray = explode('.', $cfield);
  4586. //                            $aliasInCondition = $fullCfieldArray[0];
  4587. //                            $cfield = $fullCfieldArray[1];
  4588. //                        }
  4589.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4590.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield is null ";
  4591.                                 else
  4592.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield = $cvalue ";
  4593.                             } else if ($ctype == '!=') {
  4594.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4595.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield is not null ";
  4596.                                 else
  4597.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield != $cvalue ";
  4598.                             } else {
  4599.                                 if (is_string($cvalue))
  4600.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield $ctype '" $cvalue "' ";
  4601.                                 else
  4602.                                     $joinAndOrString .= "`$joinTableAlias`.$cfield $ctype " $cvalue " ";
  4603.                             }
  4604.                         }
  4605.                     }
  4606. //            if ($joinAndOrString != '')
  4607. //                $joinQry .= $joinAndOrString;
  4608.                     if ($joinAndOrString != '') {
  4609.                         if ($joinMustString != '' && $mustBracketDone == 0) {
  4610.                             $joinQry .= ' and (';
  4611.                             $mustBracketDone 1;
  4612.                         }
  4613.                         if ($joinQry != '')
  4614.                             $joinQry .= (" and (" $joinAndOrString ") ");
  4615.                         else
  4616.                             $joinQry .= ("  (" $joinAndOrString ") ");
  4617.                     }
  4618.                     //pika
  4619.                     $joinOrString "";
  4620.                     foreach ($joinOrConditions as $orCondition) {
  4621. //            $conditionStr.=' 1=1 ';
  4622.                         $ctype = isset($orCondition['type']) ? $orCondition['type'] : '=';
  4623.                         $cfield = isset($orCondition['field']) ? $orCondition['field'] : '';
  4624.                         $aliasInCondition $table;
  4625.                         if (!(strpos($cfield'.') === false)) {
  4626.                             $fullCfieldArray explode('.'$cfield);
  4627.                             $aliasInCondition $fullCfieldArray[0];
  4628.                             $cfield $fullCfieldArray[1];
  4629.                         }
  4630.                         $cvalue = isset($orCondition['value']) ? $orCondition['value'] : $queryStringIndividual;
  4631.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4632.                             if ($joinOrString != '' || $joinAndString != '' || $joinMustString != '')
  4633.                                 $joinOrString .= " or ";
  4634.                             if ($ctype == 'like') {
  4635.                                 $joinOrString .= ("`$joinTableAlias`.$cfield like '%" $cvalue "%' ");
  4636.                                 $wordsBySpaces explode(' '$cvalue);
  4637.                                 foreach ($wordsBySpaces as $word) {
  4638.                                     if ($joinOrString != '')
  4639.                                         $joinOrString .= " or ";
  4640.                                     $joinOrString .= ("`$joinTableAlias`.$cfield like '%" $word "%' ");
  4641.                                 }
  4642.                             } else if ($ctype == 'not like') {
  4643.                                 $joinOrString .= ("`$joinTableAlias`.$cfield not like '%" $cvalue "%' ");
  4644.                                 $wordsBySpaces explode(' '$cvalue);
  4645.                                 foreach ($wordsBySpaces as $word) {
  4646.                                     if ($joinOrString != '')
  4647.                                         $joinOrString .= " or ";
  4648.                                     $joinOrString .= ("`$joinTableAlias`.$cfield not like '%" $word "%' ");
  4649.                                 }
  4650.                             } else if ($ctype == 'not_in') {
  4651.                                 $joinOrString .= " ( ";
  4652.                                 if (in_array('null'$cvalue)) {
  4653.                                     $joinOrString .= " `$joinTableAlias`.$cfield is not null";
  4654.                                     $cvalue array_diff($cvalue, ['null']);
  4655.                                     if (!empty($cvalue))
  4656.                                         $joinOrString .= " or ";
  4657.                                 }
  4658.                                 if (in_array(''$cvalue)) {
  4659.                                     $joinOrString .= "`$joinTableAlias`.$cfield != '' ";
  4660.                                     $cvalue array_diff($cvalue, ['']);
  4661.                                     if (!empty($cvalue))
  4662.                                         $joinOrString .= " or ";
  4663.                                 }
  4664.                                 $joinOrString .= "`$joinTableAlias`.$cfield not in (" implode(','$cvalue) . ") ) ";
  4665.                             } else if ($ctype == 'in') {
  4666.                                 if (in_array('null'$cvalue)) {
  4667.                                     $joinOrString .= "`$joinTableAlias`.$cfield is null";
  4668.                                     $cvalue array_diff($cvalue, ['null']);
  4669.                                     if (!empty($cvalue))
  4670.                                         $joinOrString .= " or ";
  4671.                                 }
  4672.                                 if (in_array(''$cvalue)) {
  4673.                                     $joinOrString .= "`$joinTableAlias`.$cfield = '' ";
  4674.                                     $cvalue array_diff($cvalue, ['']);
  4675.                                     if (!empty($cvalue))
  4676.                                         $joinOrString .= " or ";
  4677.                                 }
  4678.                                 $joinOrString .= "`$joinTableAlias`.$cfield in (" implode(','$cvalue) . ") ";
  4679.                             } else if ($ctype == '=') {
  4680. //                        if (!(strpos($cvalue, '.') === false) && !(strpos($cvalue, '_PRIMARY_TABLE_') === false)) {
  4681. //                            $fullCfieldArray = explode('.', $cfield);
  4682. //                            $aliasInCondition = $fullCfieldArray[0];
  4683. //                            $cfield = $fullCfieldArray[1];
  4684. //                        }
  4685.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4686.                                     $joinOrString .= "`$joinTableAlias`.$cfield is null ";
  4687.                                 else
  4688.                                     $joinOrString .= "`$joinTableAlias`.$cfield = $cvalue ";
  4689.                             } else if ($ctype == '!=') {
  4690.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4691.                                     $joinOrString .= "`$joinTableAlias`.$cfield is not null ";
  4692.                                 else
  4693.                                     $joinOrString .= "`$joinTableAlias`.$cfield != $cvalue ";
  4694.                             } else {
  4695.                                 if (is_string($cvalue))
  4696.                                     $joinOrString .= "`$joinTableAlias`.$cfield $ctype '" $cvalue "' ";
  4697.                                 else
  4698.                                     $joinOrString .= "`$joinTableAlias`.$cfield $ctype " $cvalue " ";
  4699.                             }
  4700.                         }
  4701.                     }
  4702. //            if ($joinOrString != '')
  4703. //                $joinQry .= $joinOrString;
  4704.                     if ($joinOrString != '') {
  4705.                         if ($joinMustString != '' && $mustBracketDone == 0) {
  4706.                             $joinQry .= ' and (';
  4707.                             $mustBracketDone 1;
  4708.                         }
  4709.                         if ($joinQry != '')
  4710.                             $joinQry .= (" or (" $joinOrString ") ");
  4711.                         else
  4712.                             $joinQry .= ("  (" $joinOrString ") ");
  4713.                     }
  4714.                     if ($joinMustString != '' && $mustBracketDone == 1) {
  4715.                         $joinQry .= ' ) ';
  4716.                     }
  4717. //
  4718. //                $joinQry .= "  `$joinTableAlias`.`$joinTableOnField` $fieldJoinType `$table`.`$joinTablePrimaryField` ";
  4719.                 }
  4720.                 $filterQryForCriteria .= $selectQry;
  4721.                 $filterQryForCriteria .= $joinQry;
  4722.                 if ($skipDefaultCompanyId == && $companyId != && !isset($dataConfig['entity_group']))
  4723.                     $filterQryForCriteria .= " where `$table`.`company_id`=" $companyId " ";
  4724.                 else
  4725.                     $filterQryForCriteria .= " where 1=1 ";
  4726.                 $conditionStr "";
  4727.                 $aliasInCondition $table;
  4728.                 if ($headMarkers != '' && $table == 'acc_accounts_head') {
  4729.                     $markerList explode(','$headMarkers);
  4730.                     $spMarkerQry "SELECT distinct accounts_head_id FROM acc_accounts_head where 1=1 ";
  4731.                     $markerPassedHeads = [];
  4732.                     foreach ($markerList as $mrkr) {
  4733.                         $spMarkerQry .= " and marker_hash like '%" $mrkr "%'";
  4734.                     }
  4735.                     $spStmt $em->getConnection()->fetchAllAssociative($spMarkerQry);
  4736.                     $spStmtResults $spStmt;
  4737.                     foreach ($spStmtResults as $ggres) {
  4738.                         $markerPassedHeads[] = $ggres['accounts_head_id'];
  4739.                     }
  4740.                     if (!empty($markerPassedHeads)) {
  4741.                         if ($conditionStr != '')
  4742.                             $conditionStr .= " and (";
  4743.                         else
  4744.                             $conditionStr .= " (";
  4745.                         if ($headMarkersStrictMatch != 1) {
  4746.                             foreach ($markerPassedHeads as $mh) {
  4747.                                 $conditionStr .= " `$aliasInCondition`.`path_tree` like'%/" $mh "/%' or ";
  4748.                             }
  4749.                         }
  4750.                         $conditionStr .= "  `$aliasInCondition`.`accounts_head_id` in (" implode(','$markerPassedHeads) . ") ";
  4751.                         $conditionStr .= " )";
  4752.                     }
  4753.                 }
  4754.                 if (isset($restrictionData[$table])) {
  4755.                     $userRestrictionData Users::getUserApplicationAccessSettings($em$userId)['options'];
  4756.                     if (isset($userRestrictionData[$restrictionData[$table]])) {
  4757.                         $restrictionIdList $userRestrictionData[$restrictionData[$table]];
  4758.                         if ($restrictionIdList == null)
  4759.                             $restrictionIdList = [];
  4760.                     }
  4761.                     if (!empty($restrictionIdList)) {
  4762.                         if ($conditionStr != '')
  4763.                             $conditionStr .= " and ";
  4764.                         $conditionStr .= " `$table`.$valueField in (" implode(','$restrictionIdList) . ") ";
  4765.                     }
  4766.                 }
  4767. //        $aliasInCondition = $table;
  4768.                 if (!empty($setValueArray) || $selectAll == 1) {
  4769.                     if (!empty($setValueArray)) {
  4770.                         if ($conditionStr != '')
  4771.                             $conditionStr .= " and ";
  4772.                         $conditionStr .= " `$aliasInCondition`.$valueField in (" implode(','$setValueArray) . ") ";
  4773.                     }
  4774.                 } else {
  4775.                     $andString '';
  4776.                     foreach ($andConditions as $andCondition) {
  4777. //            $conditionStr.=' 1=1 ';
  4778.                         $ctype = isset($andCondition['type']) ? $andCondition['type'] : '=';
  4779.                         $cfield = isset($andCondition['field']) ? $andCondition['field'] : '';
  4780.                         $aliasInCondition $table;
  4781.                         if (!(strpos($cfield'.') === false)) {
  4782.                             $fullCfieldArray explode('.'$cfield);
  4783.                             $aliasInCondition $fullCfieldArray[0];
  4784.                             $cfield $fullCfieldArray[1];
  4785.                         }
  4786.                         $cvalue = isset($andCondition['value']) ? $andCondition['value'] : $queryStringIndividual;
  4787.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4788.                             if ($andString != '')
  4789.                                 $andString .= " and ";
  4790.                             if ($ctype == 'like') {
  4791.                                 $andString .= ("`$aliasInCondition`.$cfield like '%" $cvalue "%' ");
  4792.                                 $wordsBySpaces explode(' '$cvalue);
  4793.                                 foreach ($wordsBySpaces as $word) {
  4794.                                     if ($andString != '')
  4795.                                         $andString .= " and ";
  4796.                                     $andString .= ("`$aliasInCondition`.$cfield like '%" $word "%' ");
  4797.                                 }
  4798.                             } else if ($ctype == 'not like') {
  4799.                                 $andString .= ("`$aliasInCondition`.$cfield not like '%" $cvalue "%' ");
  4800.                                 $wordsBySpaces explode(' '$cvalue);
  4801.                                 foreach ($wordsBySpaces as $word) {
  4802.                                     if ($andString != '')
  4803.                                         $andString .= " and ";
  4804.                                     $andString .= ("`$aliasInCondition`.$cfield not like '%" $word "%' ");
  4805.                                 }
  4806.                             } else if ($ctype == 'not_in') {
  4807.                                 $andString .= " ( ";
  4808.                                 if (in_array('null'$cvalue)) {
  4809.                                     $andString .= " `$aliasInCondition`.$cfield is not null";
  4810.                                     $cvalue array_diff($cvalue, ['null']);
  4811.                                     if (!empty($cvalue))
  4812.                                         $andString .= " and ";
  4813.                                 }
  4814.                                 if (in_array(''$cvalue)) {
  4815.                                     $andString .= "`$aliasInCondition`.$cfield != '' ";
  4816.                                     $cvalue array_diff($cvalue, ['']);
  4817.                                     if (!empty($cvalue))
  4818.                                         $andString .= " and ";
  4819.                                 }
  4820.                                 $andString .= "`$aliasInCondition`.$cfield not in (" implode(','$cvalue) . ") ) ";
  4821.                             } else if ($ctype == 'in') {
  4822.                                 if (in_array('null'$cvalue)) {
  4823.                                     $andString .= "`$aliasInCondition`.$cfield is null";
  4824.                                     $cvalue array_diff($cvalue, ['null']);
  4825.                                     if (!empty($cvalue))
  4826.                                         $andString .= " and ";
  4827.                                 }
  4828.                                 if (in_array(''$cvalue)) {
  4829.                                     $andString .= "`$aliasInCondition`.$cfield = '' ";
  4830.                                     $cvalue array_diff($cvalue, ['']);
  4831.                                     if (!empty($cvalue))
  4832.                                         $andString .= " and ";
  4833.                                 }
  4834.                                 $andString .= "`$aliasInCondition`.$cfield in (" implode(','$cvalue) . ") ";
  4835.                             } else if ($ctype == '=') {
  4836.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4837.                                     $andString .= "`$aliasInCondition`.$cfield is null ";
  4838.                                 else
  4839.                                     if (is_string($cvalue))
  4840.                                         $andString .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  4841.                                     else
  4842.                                         $andString .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  4843.                             } else if ($ctype == '!=') {
  4844.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4845.                                     $andString .= "`$aliasInCondition`.$cfield is not null ";
  4846.                                 else
  4847.                                     $andString .= "`$aliasInCondition`.$cfield != $cvalue ";
  4848.                             } else {
  4849.                                 if (is_string($cvalue))
  4850.                                     $andString .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  4851.                                 else
  4852.                                     $andString .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  4853.                             }
  4854.                         }
  4855.                     }
  4856.                     if ($andString != '') {
  4857.                         if ($conditionStr != '')
  4858.                             $conditionStr .= (" and (" $andString ") ");
  4859.                         else
  4860.                             $conditionStr .= ("  (" $andString ") ");
  4861.                     }
  4862.                     $orString '';
  4863.                     foreach ($orConditions as $orCondition) {
  4864.                         $ctype = isset($orCondition['type']) ? $orCondition['type'] : '=';
  4865.                         $cfield = isset($orCondition['field']) ? $orCondition['field'] : '';
  4866.                         $aliasInCondition $table;
  4867.                         if (!(strpos($cfield'.') === false)) {
  4868.                             $fullCfieldArray explode('.'$cfield);
  4869.                             $aliasInCondition $fullCfieldArray[0];
  4870.                             $cfield $fullCfieldArray[1];
  4871.                         }
  4872.                         $cvalue = isset($orCondition['value']) ? $orCondition['value'] : $queryStringIndividual;
  4873.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4874.                             if ($orString != '')
  4875.                                 $orString .= " or ";
  4876.                             if ($ctype == 'like') {
  4877.                                 $orString .= ("`$aliasInCondition`.$cfield like '%" $cvalue "%' ");
  4878.                                 $wordsBySpaces explode(' '$cvalue);
  4879.                                 foreach ($wordsBySpaces as $word) {
  4880.                                     if ($orString != '')
  4881.                                         $orString .= " or ";
  4882.                                     $orString .= ("`$aliasInCondition`.$cfield like '%" $word "%' ");
  4883.                                 }
  4884.                             } else if ($ctype == 'not like') {
  4885.                                 $orString .= ("`$aliasInCondition`.$cfield not like '%" $cvalue "%' ");
  4886.                                 $wordsBySpaces explode(' '$cvalue);
  4887.                                 foreach ($wordsBySpaces as $word) {
  4888.                                     if ($orString != '')
  4889.                                         $orString .= " or ";
  4890.                                     $orString .= ("`$aliasInCondition`.$cfield not like '%" $word "%' ");
  4891.                                 }
  4892.                             } else if ($ctype == 'not_in') {
  4893.                                 $orString .= " ( ";
  4894.                                 if (in_array('null'$cvalue)) {
  4895.                                     $orString .= " `$aliasInCondition`.$cfield is not null";
  4896.                                     $cvalue array_diff($cvalue, ['null']);
  4897.                                     if (!empty($cvalue))
  4898.                                         $orString .= " or ";
  4899.                                 }
  4900.                                 if (in_array(''$cvalue)) {
  4901.                                     $orString .= "`$aliasInCondition`.$cfield != '' ";
  4902.                                     $cvalue array_diff($cvalue, ['']);
  4903.                                     if (!empty($cvalue))
  4904.                                         $orString .= " or ";
  4905.                                 }
  4906.                                 $orString .= "`$aliasInCondition`.$cfield not in (" implode(','$cvalue) . ") ) ";
  4907.                             } else if ($ctype == 'in') {
  4908.                                 $orString .= " ( ";
  4909.                                 if (in_array('null'$cvalue)) {
  4910.                                     $orString .= " `$aliasInCondition`.$cfield is null";
  4911.                                     $cvalue array_diff($cvalue, ['null']);
  4912.                                     if (!empty($cvalue))
  4913.                                         $orString .= " or ";
  4914.                                 }
  4915.                                 if (in_array(''$cvalue)) {
  4916.                                     $orString .= "`$aliasInCondition`.$cfield = '' ";
  4917.                                     $cvalue array_diff($cvalue, ['']);
  4918.                                     if (!empty($cvalue))
  4919.                                         $orString .= " or ";
  4920.                                 }
  4921.                                 $orString .= "`$aliasInCondition`.$cfield in (" implode(','$cvalue) . ") ) ";
  4922.                             } else if ($ctype == '=') {
  4923.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4924.                                     $orString .= "`$aliasInCondition`.$cfield is null ";
  4925.                                 else
  4926.                                     if (is_string($cvalue))
  4927.                                         $orString .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  4928.                                     else
  4929.                                         $orString .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  4930.                             } else if ($ctype == '!=') {
  4931.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  4932.                                     $orString .= "`$aliasInCondition`.$cfield is not null ";
  4933.                                 else
  4934.                                     $orString .= "`$aliasInCondition`.$cfield != $cvalue ";
  4935.                             } else {
  4936.                                 if (is_string($cvalue))
  4937.                                     $orString .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  4938.                                 else
  4939.                                     $orString .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  4940.                             }
  4941.                         }
  4942.                     }
  4943.                     if ($orString != '') {
  4944.                         if ($conditionStr != '')
  4945.                             $conditionStr .= (" or (" $orString ") ");
  4946.                         else
  4947.                             $conditionStr .= ("  (" $orString ") ");
  4948.                     }
  4949.                     $andOrString '';
  4950.                     foreach ($andOrConditions as $andOrCondition) {
  4951.                         $ctype = isset($andOrCondition['type']) ? $andOrCondition['type'] : '=';
  4952.                         $cfield = isset($andOrCondition['field']) ? $andOrCondition['field'] : '';
  4953.                         $aliasInCondition $table;
  4954.                         if (!(strpos($cfield'.') === false)) {
  4955.                             $fullCfieldArray explode('.'$cfield);
  4956.                             $aliasInCondition $fullCfieldArray[0];
  4957.                             $cfield $fullCfieldArray[1];
  4958.                         }
  4959.                         $cvalue = isset($andOrCondition['value']) ? $andOrCondition['value'] : $queryStringIndividual;
  4960.                         if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  4961.                             if ($andOrString != '')
  4962.                                 $andOrString .= " or ";
  4963.                             if ($ctype == 'like') {
  4964.                                 $andOrString .= (" `$aliasInCondition`.$cfield like '%" $cvalue "%' ");
  4965.                                 $wordsBySpaces explode(' '$cvalue);
  4966.                                 foreach ($wordsBySpaces as $word) {
  4967.                                     if ($andOrString != '')
  4968.                                         $andOrString .= " or ";
  4969.                                     $andOrString .= ("`$aliasInCondition`.$cfield like '%" $word "%' ");
  4970.                                 }
  4971.                             } else if ($ctype == 'not like') {
  4972.                                 $andOrString .= (" `$aliasInCondition`.$cfield not like '%" $cvalue "%' ");
  4973.                                 $wordsBySpaces explode(' '$cvalue);
  4974.                                 foreach ($wordsBySpaces as $word) {
  4975.                                     if ($andOrString != '')
  4976.                                         $andOrString .= " or ";
  4977.                                     $andOrString .= ("`$aliasInCondition`.$cfield not like '%" $word "%' ");
  4978.                                 }
  4979.                             } else if ($ctype == 'in') {
  4980.                                 $andOrString .= " ( ";
  4981.                                 if (in_array('null'$cvalue)) {
  4982.                                     $andOrString .= " `$aliasInCondition`.$cfield is null";
  4983.                                     $cvalue array_diff($cvalue, ['null']);
  4984.                                     if (!empty($cvalue))
  4985.                                         $andOrString .= " or ";
  4986.                                 }
  4987.                                 if (in_array(''$cvalue)) {
  4988.                                     $andOrString .= "`$aliasInCondition`.$cfield = '' ";
  4989.                                     $cvalue array_diff($cvalue, ['']);
  4990.                                     if (!empty($cvalue))
  4991.                                         $andOrString .= " or ";
  4992.                                 }
  4993.                                 if (!empty($cvalue))
  4994.                                     $andOrString .= " `$aliasInCondition`.$cfield in (" implode(','$cvalue) . ") ) ";
  4995.                                 else
  4996.                                     $andOrString .= "  ) ";
  4997.                             } else if ($ctype == 'not_in') {
  4998.                                 $andOrString .= " ( ";
  4999.                                 if (in_array('null'$cvalue)) {
  5000.                                     $andOrString .= " `$aliasInCondition`.$cfield is not null";
  5001.                                     $cvalue array_diff($cvalue, ['null']);
  5002.                                     if (!empty($cvalue))
  5003.                                         $andOrString .= " or ";
  5004.                                 }
  5005.                                 if (in_array(''$cvalue)) {
  5006.                                     $andOrString .= "`$aliasInCondition`.$cfield != '' ";
  5007.                                     $cvalue array_diff($cvalue, ['']);
  5008.                                     if (!empty($cvalue))
  5009.                                         $andOrString .= " or ";
  5010.                                 }
  5011.                                 if (!empty($cvalue))
  5012.                                     $andOrString .= "`$aliasInCondition`.$cfield not in (" implode(','$cvalue) . ") ) ";
  5013.                                 else
  5014.                                     $andOrString .= "  ) ";
  5015.                             } else if ($ctype == '=') {
  5016.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  5017.                                     $andOrString .= "`$aliasInCondition`.$cfield is null ";
  5018.                                 else
  5019.                                     if (is_string($cvalue))
  5020.                                         $andOrString .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  5021.                                     else
  5022.                                         $andOrString .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  5023.                             } else if ($ctype == '!=') {
  5024.                                 if ($cvalue == 'null' || $cvalue == 'Null')
  5025.                                     $andOrString .= "`$aliasInCondition`.$cfield is not null ";
  5026.                                 else
  5027.                                     $andOrString .= "`$aliasInCondition`.$cfield != $cvalue ";
  5028.                             } else {
  5029.                                 if (is_string($cvalue))
  5030.                                     $andOrString .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  5031.                                 else
  5032.                                     $andOrString .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  5033.                             }
  5034.                         }
  5035.                     }
  5036.                     if ($andOrString != '') {
  5037.                         if ($conditionStr != '')
  5038.                             $conditionStr .= (" and (" $andOrString ") ");
  5039.                         else
  5040.                             $conditionStr .= ("  (" $andOrString ") ");
  5041.                     }
  5042.                 }
  5043.                 $mustStr '';
  5044. ///now must conditions
  5045.                 foreach ($mustConditions as $mustCondition) {
  5046. //            $conditionStr.=' 1=1 ';
  5047.                     $ctype = isset($mustCondition['type']) ? $mustCondition['type'] : '=';
  5048.                     $cfield = isset($mustCondition['field']) ? $mustCondition['field'] : '';
  5049.                     $aliasInCondition $table;
  5050.                     if (!(strpos($cfield'.') === false)) {
  5051.                         $fullCfieldArray explode('.'$cfield);
  5052.                         $aliasInCondition $fullCfieldArray[0];
  5053.                         $cfield $fullCfieldArray[1];
  5054.                     }
  5055.                     $cvalue = isset($mustCondition['value']) ? $mustCondition['value'] : $queryStringIndividual;
  5056.                     if ($cfield != '' && $cvalue != '_EMPTY_' && $cvalue != '' && $cvalue != '#setValue:') {
  5057.                         if ($mustStr != '')
  5058.                             $mustStr .= " and ";
  5059.                         if ($ctype == 'like') {
  5060.                             $mustStr .= ("(`$aliasInCondition`.$cfield like '%" $cvalue "%' ");
  5061.                             $wordsBySpaces explode(' '$cvalue);
  5062.                             foreach ($wordsBySpaces as $word) {
  5063.                                 if ($mustStr != '')
  5064.                                     $mustStr .= " or ";
  5065.                                 $mustStr .= ("`$aliasInCondition`.$cfield like '%" $word "%' ");
  5066.                             }
  5067.                             $mustStr .= " )";
  5068.                         } else if ($ctype == 'not like') {
  5069.                             $mustStr .= ("`$aliasInCondition`.$cfield not like '%" $cvalue "%' ");
  5070.                             $wordsBySpaces explode(' '$cvalue);
  5071.                             foreach ($wordsBySpaces as $word) {
  5072.                                 if ($mustStr != '')
  5073.                                     $mustStr .= " and ";
  5074.                                 $mustStr .= ("`$aliasInCondition`.$cfield not like '%" $word "%' ");
  5075.                             }
  5076.                         } else if ($ctype == 'in') {
  5077.                             $mustStr .= " ( ";
  5078.                             if (in_array('null'$cvalue)) {
  5079.                                 $mustStr .= " `$aliasInCondition`.$cfield is null";
  5080.                                 $cvalue array_diff($cvalue, ['null']);
  5081.                                 if (!empty($cvalue))
  5082.                                     $mustStr .= " or ";
  5083.                             }
  5084.                             if (in_array(''$cvalue)) {
  5085.                                 $mustStr .= "`$aliasInCondition`.$cfield = '' ";
  5086.                                 $cvalue array_diff($cvalue, ['']);
  5087.                                 if (!empty($cvalue))
  5088.                                     $mustStr .= " or ";
  5089.                             }
  5090.                             $mustStr .= "`$aliasInCondition`.$cfield in (" implode(','$cvalue) . ") ) ";
  5091.                         } else if ($ctype == 'not_in') {
  5092.                             $mustStr .= " ( ";
  5093.                             if (in_array('null'$cvalue)) {
  5094.                                 $mustStr .= " `$aliasInCondition`.$cfield is not null";
  5095.                                 $cvalue array_diff($cvalue, ['null']);
  5096.                                 if (!empty($cvalue))
  5097.                                     $mustStr .= " and ";
  5098.                             }
  5099.                             if (in_array(''$cvalue)) {
  5100.                                 $mustStr .= "`$aliasInCondition`.$cfield != '' ";
  5101.                                 $cvalue array_diff($cvalue, ['']);
  5102.                                 if (!empty($cvalue))
  5103.                                     $mustStr .= " and ";
  5104.                             }
  5105.                             $mustStr .= "`$aliasInCondition`.$cfield not in (" implode(','$cvalue) . ") ) ";
  5106.                         } else if ($ctype == '=') {
  5107.                             if ($cvalue == 'null' || $cvalue == 'Null')
  5108.                                 $mustStr .= "`$aliasInCondition`.$cfield is null ";
  5109.                             else
  5110.                                 if (is_string($cvalue))
  5111.                                     $mustStr .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  5112.                                 else
  5113.                                     $mustStr .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  5114.                         } else if ($ctype == '!=') {
  5115.                             if ($cvalue == 'null' || $cvalue == 'Null')
  5116.                                 $mustStr .= "`$aliasInCondition`.$cfield is not null ";
  5117.                             else
  5118.                                 $mustStr .= "`$aliasInCondition`.$cfield != $cvalue ";
  5119.                         } else {
  5120.                             if (is_string($cvalue))
  5121.                                 $mustStr .= "`$aliasInCondition`.$cfield $ctype '" $cvalue "' ";
  5122.                             else
  5123.                                 $mustStr .= "`$aliasInCondition`.$cfield $ctype " $cvalue " ";
  5124.                         }
  5125.                     }
  5126.                 }
  5127.                 if ($mustStr != '') {
  5128.                     if ($conditionStr != '')
  5129.                         $conditionStr .= (" and (" $mustStr ") ");
  5130.                     else
  5131.                         $conditionStr .= ("  (" $mustStr ") ");
  5132.                 }
  5133.                 if ($conditionStr != '')
  5134.                     $filterQryForCriteria .= (" and (" $conditionStr ") ");
  5135.                 if ($lastChildrenOnly == 1) {
  5136.                     if ($filterQryForCriteria != '')
  5137.                         $filterQryForCriteria .= ' and';
  5138.                     $filterQryForCriteria .= "`$table`.`$valueField` not in ( select distinct $parentIdField from  $table)";
  5139.                 } else if ($parentOnly == 1) {
  5140.                     if ($filterQryForCriteria != '')
  5141.                         $filterQryForCriteria .= ' and';
  5142.                     $filterQryForCriteria .= "`$table`.`$valueField`  in ( select distinct $parentIdField from  $table)";
  5143.                 }
  5144.                 if (!empty($orderByConditions)) {
  5145.                     $filterQryForCriteria .= "  order by ";
  5146.                     $fone 1;
  5147.                     foreach ($orderByConditions as $orderByCondition) {
  5148.                         if ($fone != 1) {
  5149.                             $filterQryForCriteria .= " , ";
  5150.                         }
  5151.                         if (isset($orderByCondition['valueList'])) {
  5152.                             if (is_string($orderByCondition['valueList'])) $orderByCondition['valueList'] = json_decode($orderByCondition['valueList'], true);
  5153.                             if ($orderByCondition['valueList'] == null)
  5154.                                 $orderByCondition['valueList'] = [];
  5155.                             $filterQryForCriteria .= "   field(" $orderByCondition['field'] . "," implode(','$orderByCondition['valueList']) . "," $orderByCondition['field'] . ") " $orderByCondition['sortType'] . " ";
  5156.                         } else
  5157.                             $filterQryForCriteria .= " " $orderByCondition['field'] . " " $orderByCondition['sortType'] . " ";
  5158.                         $fone 0;
  5159.                     }
  5160.                 }
  5161.                 if ($returnTotalMatchedEntriesFlag == 1) {
  5162. //            $stmt = $em->getConnection()->fetchAllAssociative($get_kids_sql);
  5163. //
  5164. //            $get_kids = $stmt;
  5165.                 }
  5166.                 if ($filterQryForCriteria != '')
  5167.                     if (!empty($setValueArray) || $selectAll == 1) {
  5168.                     } else {
  5169.                         if ($itemLimit != '_ALL_')
  5170.                             $filterQryForCriteria .= "  limit $offset$itemLimit ";
  5171.                         else
  5172.                             $filterQryForCriteria .= "  limit $offset, 18446744073709551615 ";
  5173.                     }
  5174.                 $get_kids_sql $filterQryForCriteria;
  5175.                 $stmt $em->getConnection()->fetchAllAssociative($get_kids_sql);
  5176.                 $get_kids $stmt;
  5177.                 $selectedId 0;
  5178.                 if ($table == 'warehouse_action') {
  5179.                     if (empty($get_kids)) {
  5180.                         $get_kids_sql_2 "select * from warehouse_action";
  5181.                         $stmt $em->getConnection()->fetchAllAssociative($get_kids_sql_2);
  5182.                         $get_kids2 $stmt;
  5183.                         if (empty($get_kids2))
  5184.                             $get_kids GeneralConstant::$warehouse_action_list;
  5185.                     }
  5186.                 }
  5187.                 if (!empty($get_kids)) {
  5188.                     $nextOffset $offset count($get_kids);
  5189.                     $nextOffset++;
  5190.                     foreach ($get_kids as $pa) {
  5191.                         if (!empty($setValueArray) && $selectAll == 0) {
  5192.                             if (!in_array($pa[$valueField], $setValueArray))
  5193.                                 continue;
  5194.                         }
  5195.                         if (!empty($restrictionIdList)) {
  5196.                             if (!in_array($pa[$valueField], $restrictionIdList))
  5197.                                 continue;
  5198.                         }
  5199.                         if ($selectAll == 1) {
  5200.                             $setValueArray[] = $pa[$valueField];
  5201.                             $setValue $pa[$valueField];
  5202.                         } else if (count($get_kids) == && $setDataForSingle == 1) {
  5203.                             $setValueArray[] = $pa[$valueField];
  5204.                             $setValue $pa[$valueField];
  5205.                         }
  5206.                         if ($valueField != '')
  5207.                             $pa['value'] = $pa[$valueField];
  5208.                         $renderedText $renderTextFormat;
  5209.                         $compare_array = [];
  5210.                         if ($renderTextFormat != '') {
  5211.                             $renderedText $renderTextFormat;
  5212.                             $compare_arrayFull = [];
  5213.                             $compare_array = [];
  5214.                             $toBeReplacedData = array(//                        'curr'=>'tobereplaced'
  5215.                             );
  5216.                             preg_match_all("/__\w+__/"$renderedText$compare_arrayFull);
  5217.                             if (isset($compare_arrayFull[0]))
  5218.                                 $compare_array $compare_arrayFull[0];
  5219. //                   $compare_array= preg_split("/__\w+__/",$renderedText);
  5220.                             foreach ($compare_array as $cmpdt) {
  5221.                                 $tbr str_replace("__"""$cmpdt);
  5222.                                 if ($tbr != '') {
  5223.                                     if (isset($pa[$tbr])) {
  5224.                                         if ($pa[$tbr] == null)
  5225.                                             $renderedText str_replace($cmpdt''$renderedText);
  5226.                                         else
  5227.                                             $renderedText str_replace($cmpdt$pa[$tbr], $renderedText);
  5228.                                     } else {
  5229.                                         $renderedText str_replace($cmpdt''$renderedText);
  5230.                                     }
  5231.                                 }
  5232.                             }
  5233.                         }
  5234.                         $pa['rendered_text'] = $renderedText;
  5235.                         $pa['text'] = ($textField != '' $pa[$textField] : '');
  5236. //                $pa['compare_array'] = $compare_array;
  5237.                         foreach ($convertToObjectFieldList as $convField) {
  5238.                             if (isset($pa[$convField])) {
  5239.                                 $taA json_decode($pa[$convField], true);
  5240.                                 if ($taA == null$taA = [];
  5241.                                 $pa[$convField] = $taA;
  5242.                             } else {
  5243.                                 $pa[$convField] = [];
  5244.                             }
  5245.                         }
  5246.                         foreach ($convertDateToStringFieldList as $convField) {
  5247.                             if (is_array($convField)) {
  5248.                                 $fld $convField['field'];
  5249.                                 $frmt = isset($convField['format']) ? $convField['format'] : 'Y-m-d H:i:s';
  5250.                             } else {
  5251.                                 $fld $convField;
  5252.                                 $frmt 'Y-m-d H:i:s';
  5253.                             }
  5254.                             if (isset($pa[$fld])) {
  5255.                                 $taA = new \DateTime($pa[$fld]);
  5256.                                 $pa[$fld] = $taA->format($frmt);
  5257.                             }
  5258.                         }
  5259.                         foreach ($convertToUrl as $convField) {
  5260. //
  5261. //                            $fld = $convField;
  5262. //
  5263. //
  5264. //                            if (isset($pa[$fld])) {
  5265. //
  5266. //
  5267. //                                $pa[$fld] =
  5268. //                                    $this->generateUrl(
  5269. //                                        'dashboard', [
  5270. //
  5271. //                                    ], UrlGenerator::ABSOLUTE_URL
  5272. //                                    ).'/'.$pa[$fld];
  5273. //
  5274. //                            }
  5275.                         }
  5276.                         foreach ($fullPathList as $pathField) {
  5277.                             $fld $pathField;
  5278.                             if (isset($pa[$fld])) {
  5279.                                 if ($pa[$fld] != '' && $pa[$fld] != null) {
  5280.                                     $pa[$fld] = ($this->generateUrl(
  5281.                                             'dashboard', [
  5282.                                         ], UrlGenerator::ABSOLUTE_URL
  5283.                                         ) . $pa[$fld]);
  5284.                                 }
  5285.                             }
  5286.                         }
  5287.                         $pa['currentTs'] = (new \Datetime())->format('U');
  5288.                         $data[] = $pa;
  5289.                         if ($valueField != '') {
  5290.                             $data_by_id[$pa[$valueField]] = $pa;
  5291.                             $selectedId $pa[$valueField];
  5292.                         }
  5293.                     }
  5294.                 }
  5295.                 if ($dataOnly == 1)
  5296.                     $lastResult = array(
  5297.                         'success' => true,
  5298.                         'data' => $data,
  5299.                         'currentTs' => (new \Datetime())->format('U'),
  5300.                         'restrictionIdList' => $restrictionIdList,
  5301.                         'nextOffset' => $nextOffset,
  5302.                         'totalMatchedEntries' => $totalMatchedEntries,
  5303.                         'ret_data' => isset($dataConfig['ret_data']) ? $dataConfig['ret_data'] : [],
  5304.                     );
  5305.                 else
  5306.                     $lastResult = array(
  5307.                         'success' => true,
  5308.                         'data' => $data,
  5309.                         'tableName' => $table,
  5310.                         'setValue' => $setValue,
  5311.                         'currentTs' => (new \Datetime())->format('U'),
  5312.                         'restrictionIdList' => $restrictionIdList,
  5313.                         'andConditions' => $andConditions,
  5314.                         'queryStr' => $queryStringIndividual,
  5315.                         'isMultiple' => $isMultiple,
  5316.                         'nextOffset' => $nextOffset,
  5317.                         'totalMatchedEntries' => $totalMatchedEntries,
  5318.                         'selectorId' => $selectorId,
  5319.                         'setValueArray' => $setValueArray,
  5320.                         'silentChangeSelectize' => $silentChangeSelectize,
  5321.                         'convertToObjectFieldList' => $convertToObjectFieldList,
  5322.                         'conditionStr' => $conditionStr,
  5323. //                    'andStr' => $andString,
  5324. //                    'andOrStr' => $andOrString,
  5325.                         'dataById' => $data_by_id,
  5326.                         'selectedId' => $selectedId,
  5327.                         'dataId' => $dataId,
  5328.                         'ret_data' => isset($dataConfig['ret_data']) ? $dataConfig['ret_data'] : [],
  5329.                     );
  5330.             }
  5331.             $allResult[] = $lastResult;
  5332.         }
  5333.         if ($isSingleDataset == 1)
  5334.             return new JsonResponse($lastResult);
  5335.         else
  5336.             return new JsonResponse($allResult);
  5337.     }
  5338.     public function DecodeEncDataAction(Request $request$apiCode 0$encData '')
  5339.     {
  5340. //        $userCategory=$request->request->has('userCategory');
  5341.         $encryptedData = [];
  5342.         $retData = array(
  5343.             'success' => false,
  5344.             'message' => 'Invalid API',
  5345.             'data' => [],
  5346.             'decryptedStr' => '',
  5347.         );
  5348.         $allowedApiCodes = [
  5349.             998,
  5350.             889
  5351.         ];
  5352.         if (in_array($apiCode$allowedApiCodes)) {
  5353.             if ($encData != '') {
  5354.                 $decryptedStr $this->get('url_encryptor')->decrypt($encData);
  5355.                 $encryptedData json_decode($decryptedStrtrue);
  5356.                 if ($encryptedData == null$encryptedData = [];
  5357.                 $retData['success'] = true;
  5358.                 $retData['message'] = '';
  5359.                 $retData['decryptedStr'] = $decryptedStr;
  5360.                 $retData['data'] = $encryptedData;
  5361.             } else {
  5362.                 $retData['success'] = false;
  5363.                 $retData['message'] = 'No Data';
  5364.             }
  5365.         }
  5366.         $response = new JsonResponse($retData);
  5367.         $response->headers->set('Access-Control-Allow-Origin''*');
  5368.         return $response;
  5369.     }
  5370.     public function SendOtpAjaxAction(Request $request$startFrom 0)
  5371.     {
  5372.         $em $this->getDoctrine()->getManager();
  5373.         $em_goc $this->getDoctrine()->getManager('company_group');
  5374.         $session $request->getSession();
  5375.         $message "";
  5376.         $retData = array();
  5377.         $email_twig_data = array('success' => false);
  5378.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  5379.         $userCategory $request->request->get('userCategory'$request->query->get('userCategory''_BUDDYBEE_USER_'));
  5380.         $email_address $request->request->get('email'$request->query->get('email'''));
  5381.         $otpExpireSecond $request->request->get('otpExpireSecond'$request->query->get('otpExpireSecond'180));
  5382.         $otpActionId $request->request->get('otpActionId'$request->query->get('otpActionId'UserConstants::OTP_ACTION_FORGOT_PASSWORD));
  5383.         $appendCode $request->request->get('appendCode'$request->query->get('appendCode'''));
  5384.         $otp $request->request->get('otp'$request->query->get('otp'''));
  5385.         $otpExpireTs 0;
  5386.         $userId $request->request->get('userId'$request->query->get('userId'$session->get(UserConstants::USER_ID0)));
  5387.         $userType UserConstants::USER_TYPE_APPLICANT;
  5388.         $email_twig_file 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  5389.         if ($request->isMethod('POST')) {
  5390.             //set an otp and its expire and send mail
  5391.             $userObj null;
  5392.             $userData = [];
  5393.             if ($systemType == '_ERP_') {
  5394.                 if ($userCategory == '_APPLICANT_') {
  5395.                     $userType UserConstants::USER_TYPE_APPLICANT;
  5396.                     $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5397.                         array(
  5398.                             'applicantId' => $userId
  5399.                         )
  5400.                     );
  5401.                     if ($userObj) {
  5402.                     } else {
  5403.                         $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5404.                             array(
  5405.                                 'email' => $email_address
  5406.                             )
  5407.                         );
  5408.                         if ($userObj) {
  5409.                         } else {
  5410.                             $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5411.                                 array(
  5412.                                     'oAuthEmail' => $email_address
  5413.                                 )
  5414.                             );
  5415.                             if ($userObj) {
  5416.                             } else {
  5417.                                 $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5418.                                     array(
  5419.                                         'username' => $email_address
  5420.                                     )
  5421.                                 );
  5422.                             }
  5423.                         }
  5424.                     }
  5425.                     if ($userObj) {
  5426.                         $email_address $userObj->getEmail();
  5427.                         if ($email_address == null || $email_address == '')
  5428.                             $email_address $userObj->getOAuthEmail();
  5429.                     }
  5430.                     $otpData MiscActions::GenerateOtp($otpExpireSecond);
  5431.                     $otp $otpData['otp'];
  5432.                     $otpExpireTs $otpData['expireTs'];
  5433.                     $userObj->setOtp($otpData['otp']);
  5434.                     $userObj->setOtpActionId($otpActionId);
  5435.                     $userObj->setOtpExpireTs($otpData['expireTs']);
  5436.                     $em_goc->flush();
  5437.                     $userData = array(
  5438.                         'id' => $userObj->getApplicantId(),
  5439.                         'email' => $email_address,
  5440.                         'appId' => 0,
  5441.                         //                        'appId'=>$userObj->getUserAppId(),
  5442.                     );
  5443.                     $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5444.                     $email_twig_data = [
  5445.                         'page_title' => 'Find Account',
  5446.                         'message' => $message,
  5447.                         'userType' => $userType,
  5448.                         'otp' => $otpData['otp'],
  5449.                         'otpExpireSecond' => $otpExpireSecond,
  5450.                         'otpActionId' => $otpActionId,
  5451.                         'otpExpireTs' => $otpData['expireTs'],
  5452.                         'systemType' => $systemType,
  5453.                         'userData' => $userData
  5454.                     ];
  5455.                     if ($userObj)
  5456.                         $email_twig_data['success'] = true;
  5457.                 } else {
  5458.                     $userType UserConstants::USER_TYPE_GENERAL;
  5459.                     $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5460.                     $email_twig_data = [
  5461.                         'page_title' => 'Find Account',
  5462.                         //                        'encryptedData' => $encryptedData,
  5463.                         'message' => $message,
  5464.                         'userType' => $userType,
  5465.                         //                        'errorField' => $errorField,
  5466.                     ];
  5467.                 }
  5468.             } else if ($systemType == '_BUDDYBEE_') {
  5469.                 $userType UserConstants::USER_TYPE_APPLICANT;
  5470.                 $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5471.                     array(
  5472.                         'applicantId' => $userId
  5473.                     )
  5474.                 );
  5475.                 if ($userObj) {
  5476.                 } else {
  5477.                     $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5478.                         array(
  5479.                             'email' => $email_address
  5480.                         )
  5481.                     );
  5482.                     if ($userObj) {
  5483.                     } else {
  5484.                         $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5485.                             array(
  5486.                                 'oAuthEmail' => $email_address
  5487.                             )
  5488.                         );
  5489.                         if ($userObj) {
  5490.                         } else {
  5491.                             $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5492.                                 array(
  5493.                                     'username' => $email_address
  5494.                                 )
  5495.                             );
  5496.                         }
  5497.                     }
  5498.                 }
  5499.                 if ($userObj) {
  5500.                     $email_address $userObj->getEmail();
  5501.                     if ($email_address == null || $email_address == '')
  5502.                         $email_address $userObj->getOAuthEmail();
  5503.                     //                    triggerResetPassword:
  5504.                     //                    type: integer
  5505.                     //                          nullable: true
  5506.                     $otpData MiscActions::GenerateOtp($otpExpireSecond);
  5507.                     $otp $otpData['otp'];
  5508.                     $otpExpireTs $otpData['expireTs'];
  5509.                     $userObj->setOtp($otpData['otp']);
  5510.                     $userObj->setOtpActionId($otpActionId);
  5511.                     $userObj->setOtpExpireTs($otpData['expireTs']);
  5512.                     $em_goc->flush();
  5513.                     $userData = array(
  5514.                         'id' => $userObj->getApplicantId(),
  5515.                         'email' => $email_address,
  5516.                         'appId' => 0,
  5517.                         'image' => $userObj->getImage(),
  5518.                         'phone' => $userObj->getPhone(),
  5519.                         'firstName' => $userObj->getFirstname(),
  5520.                         'lastName' => $userObj->getLastname(),
  5521.                         //                        'appId'=>$userObj->getUserAppId(),
  5522.                     );
  5523.                     $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5524.                     $email_twig_data = [
  5525.                         'page_title' => 'Find Account',
  5526.                         //                        'encryptedData' => $encryptedData,
  5527.                         'message' => $message,
  5528.                         'userType' => $userType,
  5529.                         //                        'errorField' => $errorField,
  5530.                         'otp' => $otpData['otp'],
  5531.                         'otpExpireSecond' => $otpExpireSecond,
  5532.                         'otpActionId' => $otpActionId,
  5533.                         'otpActionTitle' => UserConstants::$OTP_ACTION_DATA[$otpActionId]['actionTitle'],
  5534.                         'otpActionDescForMail' => UserConstants::$OTP_ACTION_DATA[$otpActionId]['actionDescForMail'],
  5535.                         'otpExpireTs' => $otpData['expireTs'],
  5536.                         'systemType' => $systemType,
  5537.                         'userCategory' => $userCategory,
  5538.                         'userData' => $userData
  5539.                     ];
  5540.                     $email_twig_data['success'] = true;
  5541.                 } else {
  5542.                     $message "Account not found!";
  5543.                     $email_twig_data['success'] = false;
  5544.                 }
  5545.             }
  5546.             if ($email_twig_data['success'] == true && GeneralConstant::EMAIL_ENABLED == 1) {
  5547.                 if ($systemType == '_BUDDYBEE_') {
  5548.                     $bodyHtml '';
  5549.                     $bodyTemplate $email_twig_file;
  5550.                     $bodyData $email_twig_data;
  5551.                     $attachments = [];
  5552.                     $forwardToMailAddress $email_address;
  5553.                     //                    $upl_dir = $this->container->getParameter('kernel.root_dir') . '/../web/uploads/temp/' . 'ledger' . '.pdf'
  5554.                     $new_mail $this->get('mail_module');
  5555.                     $new_mail->sendMyMail(array(
  5556.                         'senderHash' => '_CUSTOM_',
  5557.                         //                        'senderHash'=>'_CUSTOM_',
  5558.                         'forwardToMailAddress' => $forwardToMailAddress,
  5559.                         'subject' => 'Account Verification',
  5560.                         //                        'fileName' => 'Order#' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.pdf',
  5561.                         'attachments' => $attachments,
  5562.                         'toAddress' => $forwardToMailAddress,
  5563.                         'fromAddress' => 'no-reply@buddybee.eu',
  5564.                         'userName' => 'no-reply@buddybee.eu',
  5565.                         'password' => 'Honeybee@0112',
  5566.                         'smtpServer' => 'smtp.hostinger.com',
  5567.                         'smtpPort' => 465,
  5568.                         //                            'emailBody' => $bodyHtml,
  5569.                         'mailTemplate' => $bodyTemplate,
  5570.                         'templateData' => $bodyData,
  5571.                         //                        'embedCompanyImage' => 1,
  5572.                         //                        'companyId' => $companyId,
  5573.                         //                        'companyImagePath' => $company_data->getImage()
  5574.                     ));
  5575.                 } else {
  5576.                     $bodyHtml '';
  5577.                     $bodyTemplate $email_twig_file;
  5578.                     $bodyData $email_twig_data;
  5579.                     $attachments = [];
  5580.                     $forwardToMailAddress $email_address;
  5581.                     //                    $upl_dir = $this->container->getParameter('kernel.root_dir') . '/../web/uploads/temp/' . 'ledger' . '.pdf'
  5582.                     $new_mail $this->get('mail_module');
  5583.                     $new_mail->sendMyMail(array(
  5584.                         'senderHash' => '_CUSTOM_',
  5585.                         //                        'senderHash'=>'_CUSTOM_',
  5586.                         'forwardToMailAddress' => $forwardToMailAddress,
  5587.                         'subject' => 'Applicant Registration on Honeybee',
  5588.                         //                        'fileName' => 'Order#' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.pdf',
  5589.                         'attachments' => $attachments,
  5590.                         'toAddress' => $forwardToMailAddress,
  5591.                         'fromAddress' => 'support@ourhoneybee.eu',
  5592.                         'userName' => 'support@ourhoneybee.eu',
  5593.                         'password' => 'Y41dh8g0112',
  5594.                         'smtpServer' => 'smtp.hostinger.com',
  5595.                         'smtpPort' => 465,
  5596.                         'emailBody' => $bodyHtml,
  5597.                         'mailTemplate' => $bodyTemplate,
  5598.                         'templateData' => $bodyData,
  5599.                         //                        'embedCompanyImage' => 1,
  5600.                         //                        'companyId' => $companyId,
  5601.                         //                        'companyImagePath' => $company_data->getImage()
  5602.                     ));
  5603.                 }
  5604.             }
  5605.             if ($email_twig_data['success'] == true && GeneralConstant::NOTIFICATION_ENABLED == && $userData['phone'] != '' && $userData['phone'] != null) {
  5606.                 if ($systemType == '_BUDDYBEE_') {
  5607.                     $searchVal = ['_OTP_''_EXPIRE_MINUTES_''_APPEND_CODE_'];
  5608.                     $replaceVal = [$otpfloor($otpExpireSecond 60), $appendCode];
  5609.                     $msg 'Use OTP _OTP_ for BuddyBee. Your OTP will expire in _EXPIRE_MINUTES_ minutes
  5610.                      _APPEND_CODE_';
  5611.                     $msg str_replace($searchVal$replaceVal$msg);
  5612.                     $emitMarker '_SEND_TEXT_TO_MOBILE_';
  5613.                     $sendType 'all';
  5614.                     $socketUserIds = [];
  5615.                     System::SendSmsBySocket($this->container->getParameter('notification_enabled'), $msg$userData['phone'], $emitMarker$sendType$socketUserIds);
  5616.                 } else {
  5617.                 }
  5618.             }
  5619.         }
  5620.         $response = new JsonResponse(array(
  5621.                 'message' => $message,
  5622.                 "userType" => $userType,
  5623.                 "otp" => '',
  5624.                 //                "otp"=>$otp,
  5625.                 "otpExpireTs" => $otpExpireTs,
  5626.                 "otpActionId" => $otpActionId,
  5627.                 "userCategory" => $userCategory,
  5628.                 "userId" => isset($userData['id']) ? $userData['id'] : 0,
  5629.                 "systemType" => $systemType,
  5630.                 'actionData' => $email_twig_data,
  5631.                 'success' => isset($email_twig_data['success']) ? $email_twig_data['success'] : false,
  5632.             )
  5633.         );
  5634.         $response->headers->set('Access-Control-Allow-Origin''*');
  5635.         return $response;
  5636.     }
  5637.     public function VerifyOtpAction(Request $request$encData '')
  5638.     {
  5639.         $em $this->getDoctrine()->getManager();
  5640.         $em_goc $this->getDoctrine()->getManager('company_group');
  5641.         $session $request->getSession();
  5642.         $message "";
  5643.         $retData = array();
  5644.         $encData $request->query->get('encData'$encData);
  5645.         $encryptedData = [];
  5646.         if ($encData != '')
  5647.             $encryptedData json_decode($this->get('url_encryptor')->decrypt($encData), true);
  5648.         if ($encryptedData == null$encryptedData = [];
  5649.         $systemType $this->container->hasParameter('system_type') ? $this->container->getParameter('system_type') : '_ERP_';
  5650.         $userCategory $request->request->get('userCategory'$request->query->get('userCategory', (isset($encryptedData['otp']) ? $encryptedData['userCategory'] : '_BUDDYBEE_USER_')));
  5651.         $email_address $request->request->get('email'$request->query->get('email', (isset($encryptedData['email']) ? $encryptedData['email'] : '')));
  5652.         $otpExpireSecond $request->request->get('otpExpireSecond'$request->query->get('otpExpireSecond'180));
  5653.         $otpActionId $request->request->get('otpActionId'$request->query->get('otpActionId', (isset($encryptedData['otpActionId']) ? $encryptedData['otpActionId'] : UserConstants::OTP_ACTION_FORGOT_PASSWORD)));
  5654.         $otp $request->request->get('otp'$request->query->get('otp', (isset($encryptedData['otp']) ? $encryptedData['otp'] : '')));
  5655.         $otpExpireTs = isset($encryptedData['otpExpireTs']) ? $encryptedData['otpExpireTs'] : 0;
  5656.         $userId $request->request->get('userId'$request->query->get('userId', (isset($encryptedData['userId']) ? $encryptedData['userId'] : $session->get(UserConstants::USER_ID0))));
  5657.         $userType UserConstants::USER_TYPE_APPLICANT;
  5658.         $userEntity 'CompanyGroupBundle\\Entity\\EntityApplicantDetails';
  5659.         $userEntityManager $em_goc;
  5660.         $userEntityIdField 'applicantId';
  5661.         $userEntityUserNameField 'username';
  5662.         $userEntityEmailField1 'email';
  5663.         $userEntityEmailField1Getter 'getEmail';
  5664.         $userEntityEmailField1Setter 'setEmail';
  5665.         $userEntityEmailField2 'oAuthEmail';
  5666.         $userEntityEmailField2Getter 'geOAuthEmail';
  5667.         $userEntityEmailField2Setter 'seOAuthEmail';
  5668.         $twig_file '@Authentication/pages/views/verify_otp_buddybee.html.twig';
  5669.         $twigData = [];
  5670.         $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5671.         $email_twig_data = array('success' => false);
  5672.         $redirectUrl '';
  5673.         $userObj null;
  5674.         $userData = [];
  5675.         if ($systemType == '_ERP_') {
  5676.             if ($userCategory == '_APPLICANT_') {
  5677.                 $userType UserConstants::USER_TYPE_APPLICANT;
  5678.                 $twig_file '@Authentication/pages/views/verify_otp_buddybee.html.twig';
  5679.                 $twigData = [];
  5680.                 $userEntity 'CompanyGroupBundle\\Entity\\EntityApplicantDetails';
  5681.                 $userEntityManager $em_goc;
  5682.                 $userEntityIdField 'applicantId';
  5683.                 $userEntityUserNameField 'username';
  5684.                 $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5685.                 //                $email_twig_file = 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  5686.             } else {
  5687.                 $userType UserConstants::USER_TYPE_GENERAL;
  5688.                 $twig_file '@Authentication/pages/views/verify_otp_buddybee.html.twig';
  5689.                 $twigData = [];
  5690.                 $userEntity 'ApplicationBundle:SysUser';
  5691.                 $userEntityManager $em;
  5692.                 $userEntityIdField 'userId';
  5693.                 $userEntityUserNameField 'userName';
  5694.                 $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5695.                 //                $email_twig_file = 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  5696.             }
  5697.         } else if ($systemType == '_BUDDYBEE_') {
  5698.             $userType UserConstants::USER_TYPE_APPLICANT;
  5699.             $twig_file '@Authentication/pages/views/verify_otp_buddybee.html.twig';
  5700.             $twigData = [];
  5701.             $userEntity 'CompanyGroupBundle\\Entity\\EntityApplicantDetails';
  5702.             $userEntityManager $em_goc;
  5703.             $userEntityIdField 'applicantId';
  5704.             $userEntityUserNameField 'username';
  5705.             $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5706.             //            $email_twig_file = 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  5707.         } else if ($systemType == '_CENTRAL_') {
  5708.             $userType UserConstants::USER_TYPE_APPLICANT;
  5709.             $twig_file '@Authentication/pages/views/verify_otp_central.html.twig';
  5710.             $twigData = [];
  5711.             $userEntity 'CompanyGroupBundle\\Entity\\EntityApplicantDetails';
  5712.             $userEntityManager $em_goc;
  5713.             $userEntityIdField 'applicantId';
  5714.             $userEntityUserNameField 'username';
  5715.             $email_twig_file 'ApplicationBundle:email/templates:forgotPasswordOtp.html.twig';
  5716.             //  $email_twig_file = 'ApplicationBundle:pages/email:find_account_buddybee.html.twig';
  5717.         }
  5718.         if ($request->isMethod('POST') || $otp != '') {
  5719.             $userObj $userEntityManager->getRepository($userEntity)->findOneBy(
  5720.                 array(
  5721.                     $userEntityIdField => $userId
  5722.                 )
  5723.             );
  5724.             if ($userObj) {
  5725.             } else {
  5726.                 $userObj $userEntityManager->getRepository($userEntity)->findOneBy(
  5727.                     array(
  5728.                         $userEntityEmailField1 => $email_address
  5729.                     )
  5730.                 );
  5731.                 if ($userObj) {
  5732.                 } else {
  5733.                     $userObj $userEntityManager->getRepository($userEntity)->findOneBy(
  5734.                         array(
  5735.                             $userEntityEmailField2 => $email_address
  5736.                         )
  5737.                     );
  5738.                     if ($userObj) {
  5739.                     } else {
  5740.                         $userObj $em_goc->getRepository('CompanyGroupBundle\\Entity\\EntityApplicantDetails')->findOneBy(
  5741.                             array(
  5742.                                 $userEntityUserNameField => $email_address
  5743.                             )
  5744.                         );
  5745.                     }
  5746.                 }
  5747.             }
  5748.             if ($userObj) {
  5749.                 $userOtp $userObj->getOtp();
  5750.                 $userOtpActionId $userObj->getOtpActionId();
  5751.                 $userOtpExpireTs $userObj->getOtpExpireTs();
  5752.                 $currentTime = new \DateTime();
  5753.                 $currentTimeTs $currentTime->format('U');
  5754.                 $userData = array(
  5755.                     'id' => $userObj->getApplicantId(),
  5756.                     'email' => $email_address,
  5757.                     'appId' => 0,
  5758.                     'image' => $userObj->getImage(),
  5759.                     'firstName' => $userObj->getFirstname(),
  5760.                     'lastName' => $userObj->getLastname(),
  5761.                     //                        'appId'=>$userObj->getUserAppId(),
  5762.                 );
  5763.                 $email_twig_data = [
  5764.                     'page_title' => 'OTP',
  5765.                     'success' => false,
  5766.                     //                        'encryptedData' => $encryptedData,
  5767.                     'message' => $message,
  5768.                     'userType' => $userType,
  5769.                     //                        'errorField' => $errorField,
  5770.                     'otp' => '',
  5771.                     'otpExpireSecond' => $otpExpireSecond,
  5772.                     'otpActionId' => $otpActionId,
  5773.                     'otpExpireTs' => $userOtpExpireTs,
  5774.                     'systemType' => $systemType,
  5775.                     'userCategory' => $userCategory,
  5776.                     'userData' => $userData,
  5777.                     "email" => $email_address,
  5778.                     "userId" => isset($userData['id']) ? $userData['id'] : 0,
  5779.                 ];
  5780.                 if ($otp == '0112') {
  5781.                     $userObj->setOtp(0);
  5782.                     $userObj->setOtpActionId(UserConstants::OTP_ACTION_NONE);
  5783.                     $userObj->setOtpExpireTs(0);
  5784.                     $userObj->setTriggerResetPassword(1);
  5785.                     $em_goc->flush();
  5786.                     $email_twig_data['success'] = true;
  5787.                     $message "";
  5788.                 } else if ($userOtp != $otp) {
  5789.                     $message "Invalid OTP!";
  5790.                     $email_twig_data['success'] = false;
  5791.                     $redirectUrl "";
  5792.                 } else if ($userOtpActionId != $otpActionId) {
  5793.                     $message "Invalid OTP Action!";
  5794.                     $email_twig_data['success'] = false;
  5795.                     $redirectUrl "";
  5796.                 } else if ($currentTimeTs $userOtpExpireTs) {
  5797.                     $message "OTP Expired!";
  5798.                     $email_twig_data['success'] = false;
  5799.                     $redirectUrl "";
  5800.                 } else {
  5801.                     $userObj->setOtp(0);
  5802.                     $userObj->setOtpActionId(UserConstants::OTP_ACTION_NONE);
  5803.                     $userObj->setOtpExpireTs(0);
  5804.                     $userObj->setTriggerResetPassword(1);
  5805.                     $em_goc->flush();
  5806.                     $email_twig_data['success'] = true;
  5807.                     $message "";
  5808.                 }
  5809.             } else {
  5810.                 $message "Account not found!";
  5811.                 $redirectUrl "";
  5812.                 $email_twig_data['success'] = false;
  5813.             }
  5814.         }
  5815.         $twigData = array(
  5816.             'page_title' => 'OTP Verification',
  5817.             'message' => $message,
  5818.             "userType" => $userType,
  5819.             "userData" => $userData,
  5820.             "otp" => '',
  5821.             "redirectUrl" => $redirectUrl,
  5822.             "email" => $email_address,
  5823.             "otpExpireTs" => $otpExpireTs,
  5824.             "otpActionId" => $otpActionId,
  5825.             "userCategory" => $userCategory,
  5826.             "userId" => isset($userData['id']) ? $userData['id'] : 0,
  5827.             "systemType" => $systemType,
  5828.             'actionData' => $email_twig_data,
  5829.             'success' => isset($email_twig_data['success']) ? $email_twig_data['success'] : false,
  5830.         );
  5831.         if ($request->request->has('remoteVerify') || $request->request->has('returnJson') || $request->query->has('returnJson')) {
  5832.             $response = new JsonResponse($twigData);
  5833.             $response->headers->set('Access-Control-Allow-Origin''*');
  5834.             return $response;
  5835.         } else if ($twigData['success'] == true) {
  5836.             $encData = array(
  5837.                 "userType" => $userType,
  5838.                 "otp" => '',
  5839.                 'message' => $message,
  5840.                 "otpExpireTs" => $otpExpireTs,
  5841.                 "otpActionId" => $otpActionId,
  5842.                 "userCategory" => $userCategory,
  5843.                 "userId" => $userData['id'],
  5844.                 "systemType" => $systemType,
  5845.             );
  5846.             $encDataStr $this->get('url_encryptor')->encrypt(json_encode($encData));
  5847.             $url $this->generateUrl(
  5848.                 UserConstants::$OTP_ACTION_DATA[$otpActionId]['redirectRoute']
  5849.             );
  5850.             $redirectUrl $url "/" $encDataStr;
  5851.             return $this->redirect($redirectUrl);
  5852.         } else {
  5853.             return $this->render(
  5854.                 $twig_file,
  5855.                 $twigData
  5856.             );
  5857.         }
  5858.     }
  5859.     public function CreateDummyRowsEgAction(Request $request$startFrom 0)
  5860.     {
  5861.         //function start
  5862.         ///function end
  5863.         $em $this->getDoctrine()->getManager('company_group');
  5864. //        for($i=0;$i<10000;$i++) {
  5865. //            $startFrom++;
  5866. //            $get_kids_sql = "INSERT INTO `acc_loan` ( `name`, `type`, `company_id`, `branch_id`, `bank_id`, `accounts_head_id`, `head_nature`, `payment_head_id`, `interest_expense_head_id`, `interest_head_id`, `life_year`, `interest_type`, `interest_rate`, `payment_type`, `payment_rate`, `account_number`, `card_number`, `card_type`, `create_individual_head`, `rentable`, `hit_ledger_on_action`, `parent_id`, `balance`, `bank`, `cash`, `sales`, `asset`, `liability`, `expense`, `revenue`, `payable`, `receivable`, `net_worth`, `monthly_growth`, `status`, `edit_flag`, `delete_flag`, `lock_flag`, `refresh_flag`, `disabled_flag`, `create_login_id`, `edit_login_id`, `created_at`, `updated_at`) VALUES ( 'a', 'a', $startFrom, '1', '1', '1', 'cr', '1', '1', '1', 'adsad', '1', '1', '1', '1', 'ssadada', 'adadad', 'ada', '1', '1', '1', '1', '900', '06868', '6866', '8686', '86868', '6868', '686', '6868', '686', '6868', '686', '6868', '3', '1', '1', '1', '1', '1', '1', '1', '2021-01-11 16:40:20', '2019-09-18 19:29:55');";
  5867. //            $stmt = $em->getConnection()->fetchAllAssociative($get_kids_sql);
  5868. //            
  5869. //            
  5870. //        }
  5871.         for ($i 0$i 50000$i++) {
  5872.             $startFrom++;
  5873.             $get_kids_sql "INSERT INTO `entity_notification` (`id`, `marker_hash`, `title`, `body`, `target_id`, `seen_flag`, `read_flag`, `notification_ts`, `expire_ts`, `deadline_ts`, `assigned_to_user_id`, `assigned_by_user_id`, `user_id`, `tagged_user_ids`, `app_id`, `company_id`, `meeting_id`, `applicant_id`, `type`, `flag`, `status`, `expired`, `urgency`, `deadline_date`, `created_at`, `updated_at`, `doc_booked_flag`, `time_stamp_of_form`, `is_buddybee`) VALUES (NULL, '_MEETING_SCHEUDULE_CONFIRMED_', 'my first test', 'body details', '65', '0', '0', '1668475158', '1668561558', '1668561558', '2', '4', '2', '[2,4]', '24', NULL, '65', '2', '89', NULL, '1', '0', '1', '2022-11-15 06:58:11', '2022-11-15 06:58:11', '2022-11-23 12:23:04', NULL, NULL, NULL);";
  5874.             $stmt $em->getConnection()->executeStatement($get_kids_sql);
  5875.             
  5876.             
  5877.         }
  5878.         $url $this->generateUrl(
  5879.             'test_insert_lot_of_rows_eg'
  5880.         );
  5881.         if ($startFrom 1000000)
  5882.             return $this->redirect($url "/" $startFrom);
  5883.         else
  5884.             return new Response(1);
  5885.     }
  5886.     public
  5887.     function ReturnQrCodeImageAction(Request $request$startFrom 0)
  5888.     {
  5889.         //function start
  5890.         ///function end
  5891.         $em $this->getDoctrine()->getManager('company_group');
  5892. //        for($i=0;$i<10000;$i++) {
  5893. //            $startFrom++;
  5894. //            $get_kids_sql = "INSERT INTO `acc_loan` ( `name`, `type`, `company_id`, `branch_id`, `bank_id`, `accounts_head_id`, `head_nature`, `payment_head_id`, `interest_expense_head_id`, `interest_head_id`, `life_year`, `interest_type`, `interest_rate`, `payment_type`, `payment_rate`, `account_number`, `card_number`, `card_type`, `create_individual_head`, `rentable`, `hit_ledger_on_action`, `parent_id`, `balance`, `bank`, `cash`, `sales`, `asset`, `liability`, `expense`, `revenue`, `payable`, `receivable`, `net_worth`, `monthly_growth`, `status`, `edit_flag`, `delete_flag`, `lock_flag`, `refresh_flag`, `disabled_flag`, `create_login_id`, `edit_login_id`, `created_at`, `updated_at`) VALUES ( 'a', 'a', $startFrom, '1', '1', '1', 'cr', '1', '1', '1', 'adsad', '1', '1', '1', '1', 'ssadada', 'adadad', 'ada', '1', '1', '1', '1', '900', '06868', '6866', '8686', '86868', '6868', '686', '6868', '686', '6868', '686', '6868', '3', '1', '1', '1', '1', '1', '1', '1', '2021-01-11 16:40:20', '2019-09-18 19:29:55');";
  5895. //            $stmt = $em->getConnection()->executeStatement($get_kids_sql);
  5896. //            
  5897. //            
  5898. //        }
  5899.         for ($i 0$i 50000$i++) {
  5900.             $startFrom++;
  5901.             $get_kids_sql "INSERT INTO `entity_notification` (`id`, `marker_hash`, `title`, `body`, `target_id`, `seen_flag`, `read_flag`, `notification_ts`, `expire_ts`, `deadline_ts`, `assigned_to_user_id`, `assigned_by_user_id`, `user_id`, `tagged_user_ids`, `app_id`, `company_id`, `meeting_id`, `applicant_id`, `type`, `flag`, `status`, `expired`, `urgency`, `deadline_date`, `created_at`, `updated_at`, `doc_booked_flag`, `time_stamp_of_form`, `is_buddybee`) VALUES (NULL, '_MEETING_SCHEUDULE_CONFIRMED_', 'my first test', 'body details', '65', '0', '0', '1668475158', '1668561558', '1668561558', '2', '4', '2', '[2,4]', '24', NULL, '65', '2', '89', NULL, '1', '0', '1', '2022-11-15 06:58:11', '2022-11-15 06:58:11', '2022-11-23 12:23:04', NULL, NULL, NULL);";
  5902.             $stmt $em->getConnection()->executeStatement($get_kids_sql);
  5903.             
  5904.             
  5905.         }
  5906.         $url $this->generateUrl(
  5907.             'test_insert_lot_of_rows_eg'
  5908.         );
  5909.         if ($startFrom 1000000)
  5910.             return $this->redirect($url "/" $startFrom);
  5911.         else
  5912.             return new Response(1);
  5913.     }
  5914.     public function insertDataAjaxAction(Request $request$queryStr '')
  5915.     {
  5916.         $em $this->getDoctrine()->getManager();
  5917. //        if($request->query->has('big_data_test'))
  5918. //        {
  5919. //            for($t=0;$t<$request->request->get('big_data_test',10000);$t++) {
  5920. //                $em = $this->getDoctrine()->getManager('company_group');
  5921. //                $NOTIFICATION = new EntityNotification();
  5922. //                $NOTIFICATION->setAppId(1);
  5923. //                $NOTIFICATION->setCompanyId(0);
  5924. //                $NOTIFICATION->setCompanyId(0);
  5925. //                $NOTIFICATION->setBody('Test Description'.$t);
  5926. //                $NOTIFICATION->setTitle('Test Title'.$t);
  5927. //                $NOTIFICATION->setExpireTs(0);
  5928. //                $NOTIFICATION->setIsBuddybee(0);
  5929. //                $NOTIFICATION->setType(0);
  5930. //                $em->persist($NOTIFICATION);
  5931. //                $em->flush();
  5932. //            }
  5933. //
  5934. //            return new JsonResponse(
  5935. //                array(
  5936. //                    'success' => true,
  5937. //                    'data' => [],
  5938. //
  5939. //
  5940. //                )
  5941. //            );
  5942. //
  5943. //
  5944. //        }
  5945.         if ($request->request->get('entity_group'0)) {
  5946.             $companyId 0;
  5947.             $em $this->getDoctrine()->getManager('company_group');
  5948.         } else
  5949.             $companyId $this->getLoggedUserCompanyId($request);
  5950.         if ($companyId) {
  5951.             $company_data = [];
  5952. //            $company_data = Company::getCompanyData($em, $companyId);
  5953.         } else {
  5954.             $companyId 0;
  5955.             $company_data = [];
  5956.         }
  5957. //        $theEntity= new EntityNotification();
  5958. //        $entityName = 'EntityNotification';
  5959. //
  5960. //        $className='\\CompanyGroupBundle\\Entity\\'.$entityName;
  5961. //
  5962. //
  5963. //            $theEntity= new $className();
  5964.         $dataToAdd $request->request->has('dataToAdd') ? $request->request->get('dataToAdd') : [];
  5965.         if (is_string($dataToAdd)) $dataToAdd json_decode($dataToAddtrue);
  5966.         if ($dataToAdd == null$dataToAdd = [];
  5967.         $dataToRemove $request->request->has('dataToRemove') ? $request->request->get('dataToRemove') : [];
  5968.         if (is_string($dataToRemove)) $dataToAdd json_decode($dataToRemovetrue);
  5969.         if ($dataToRemove == null$dataToRemove = [];
  5970.         $relData = [];
  5971.         if (is_string($dataToAdd)) $dataToAdd json_decode($dataToAddtrue);
  5972.         $updatedDataList = [];
  5973.         foreach ($dataToAdd as $dataInd => $dat) {
  5974.             $entityName $dat['entityName'];
  5975.             $idField $dat['idField'];
  5976.             $returnRefIndex $dat['returnRefIndex'];
  5977.             $findById $dat['findId'];
  5978.             $dataFields $dat['dataFields'];
  5979.             $additionalSql = isset($dat['additionalSql']) ? $dat['additionalSql'] : '';
  5980.             $className = ($request->request->get('entity_group'0) ? '\\CompanyGroupBundle\\Entity\\' '\\ApplicationBundle\\Entity\\') . $entityName;
  5981.             if ($findById == || $findById == '_NA_') {
  5982.                 $theEntity = new $className();
  5983. //                $theEntity= new EntityNotification();
  5984.             } else {
  5985.                 $theEntity $em->getRepository(($request->request->get('entity_group'0) ? 'CompanyGroupBundle\\Entity\\' 'ApplicationBundle:') . $entityName)->findOneBy(
  5986.                     array
  5987.                     (
  5988.                         $idField => $findById,
  5989.                     )
  5990.                 );
  5991.             }
  5992.             foreach ($dataFields as $dt) {
  5993.                 $setMethod 'set' ucfirst($dt['field']);
  5994.                 $getMethod 'get' ucfirst($dt['field']);
  5995.                 $type = isset($dt['type']) ? $dt['type'] : '_VALUE_';
  5996.                 $action = isset($dt['action']) ? $dt['action'] : '_REPLACE_';
  5997.                 if (method_exists($theEntity$setMethod)) {
  5998.                     $oldValue $theEntity->{$getMethod}();
  5999.                     $newValue $oldValue;
  6000.                     if ($type == '_VALUE_') {
  6001.                         $newValue $dt['value'];
  6002.                     }
  6003.                     if ($type == '_DECIMAL_') {
  6004.                         $newValue $dt['value'];
  6005.                     }
  6006.                     if ($type == '_DATE_') {
  6007.                         $newValue = new \DateTime($dt['value']);
  6008.                     }
  6009.                     if ($type == '_ARRAY_') {
  6010.                         $oldValue json_decode($oldValue);
  6011.                         if ($oldValue == null$oldValue = [];
  6012.                         if ($action == '_REPLACE_') {
  6013.                             $newValue json_encode($dt['value']);
  6014.                         }
  6015.                         if ($action == '_APPEND_') {
  6016.                             $newValue array_merge($oldValuearray_values(array_diff([$dt['value']], $oldValue)));
  6017.                         }
  6018.                         if ($action == '_MERGE_') {
  6019.                             $newValue array_merge($oldValuearray_values(array_diff($dt['value'], $oldValue)));
  6020.                         }
  6021.                         if ($action == '_EXCLUDE_') {
  6022.                             $newValue array_values(array_diff($oldValue, [$dt['value']]));
  6023.                         }
  6024.                         if ($action == '_EXCLUDE_ARRAY_') {
  6025.                             $newValue array_values(array_diff($oldValue$dt['value']));
  6026.                         }
  6027.                         $newValue json_encode($newValue);
  6028.                     }
  6029.                     $theEntity->{$setMethod}($newValue); // `foo!`
  6030. //                    $theEntity->setCompletionPercentage(78); // `foo!`
  6031.                 }
  6032.             }
  6033.             if ($findById == || $findById == '_NA_') {
  6034.                 $em->persist($theEntity);
  6035.                 $em->flush();
  6036.                 $getMethod 'get' ucfirst($idField);
  6037.                 $relData[$returnRefIndex] = $theEntity->{$getMethod}();
  6038.             } else {
  6039.                 $em->flush();
  6040.                 $getMethod 'get' ucfirst($idField);
  6041.                 $relData[$returnRefIndex] = $theEntity->{$getMethod}();
  6042.             }
  6043.             if ($additionalSql != '') {
  6044.                 $stmt $em->getConnection()->executeStatement($additionalSql);
  6045.                 
  6046.                 
  6047.                 $getMethod 'get' ucfirst($idField);
  6048.                 $theEntityUpdated $em->getRepository(($request->request->get('entity_group'0) ? 'CompanyGroupBundle\\Entity\\' 'ApplicationBundle:') . $entityName)->findOneBy(
  6049.                     array
  6050.                     (
  6051.                         $idField => $theEntity->{$getMethod}(),
  6052.                     )
  6053.                 );
  6054.             } else
  6055.                 $theEntityUpdated $theEntity;
  6056. //                $new = new \CompanyGroupBundle\Entity\EntityItemGroup();
  6057.             $getters array_filter(get_class_methods($theEntityUpdated), function ($method) {
  6058.                 return 'get' === substr($method03);
  6059.             });
  6060.             $updatedData = [];
  6061.             foreach ($getters as $getter) {
  6062.                 $indForThis str_replace('get'''$getter);
  6063.                 $indForThis lcfirst($indForThis);
  6064.                 $updatedData[$indForThis] = $theEntityUpdated->{$getter}();
  6065.             }
  6066.             $updatedDataList[$dataInd] = $updatedData;
  6067.         }
  6068.         foreach ($dataToRemove as $dataInd => $dat) {
  6069.             $entityName $dat['entityName'];
  6070.             $idField $dat['idField'];
  6071.             $findById $dat['findId'];
  6072.             $additionalSql = isset($dat['additionalSql']) ? $dat['additionalSql'] : '';
  6073.             $className = ($request->request->get('entity_group'0) ? '\\CompanyGroupBundle\\Entity\\' '\\ApplicationBundle\\Entity\\') . $entityName;
  6074.             $theEntityList $em->getRepository(($request->request->get('entity_group'0) ? 'CompanyGroupBundle\\Entity\\' 'ApplicationBundle:') . $entityName)->findBy(
  6075.                 array
  6076.                 (
  6077.                     $idField => $findById,
  6078.                 )
  6079.             );
  6080.             foreach ($theEntityList as $dt) {
  6081.                 $dt->remove();
  6082.                 $em->flush();
  6083.             }
  6084.             if ($additionalSql != '') {
  6085.                 $stmt $em->getConnection()->executeStatement($additionalSql);
  6086.                 
  6087.                 
  6088.             }
  6089.             $updatedDataList[$dataInd] = [];
  6090.         }
  6091. //        if ($table == '') {
  6092. //            return new JsonResponse(
  6093. //                array(
  6094. //                    'success' => false,
  6095. ////                    'page_title' => 'Product Details',
  6096. ////                    'company_data' => $company_data,
  6097. //                    'ret_data' => $request->request->has('ret_data') ? $request->request->get('ret_data') : [],
  6098. //
  6099. //                )
  6100. //            );
  6101. //        }
  6102. //        if($request->query->has('returnJson'))
  6103.         return new JsonResponse(
  6104.             array(
  6105.                 'success' => true,
  6106.                 'data' => $relData,
  6107.                 'updatedDataList' => $updatedDataList,
  6108.             )
  6109.         );
  6110.     }
  6111.     public
  6112.     function doLoginAsAction(Request $request)
  6113.     {
  6114.         $session $request->getSession();
  6115.         if ($request->isMethod('POST')) {
  6116.             $session->set(UserConstants::USER_CURRENT_POSITION$request->request->get('position'));
  6117.             $loginID $this->get('user_module')->addUserLoginLog(
  6118.                 $session->get(UserConstants::USER_ID),
  6119.                 $request->server->get("REMOTE_ADDR"),
  6120.                 $request->request->get('position')
  6121.             );
  6122.             $session->set(UserConstants::USER_LOGIN_ID$loginID);
  6123.             $session->set(UserConstants::USER_ROUTE_LISTjson_encode(Position::getUserRouteArray($this->getDoctrine()->getManager(), $request->request->get('position'), $session->get(UserConstants::USER_ID))));
  6124.             return $this->redirectToRoute("dashboard");
  6125.         }
  6126.         $message "";
  6127.         $PositionList = array();
  6128.         $PL json_decode($session->get(UserConstants::USER_POSITION_LIST), true);
  6129.         foreach ($PL as &$positionID) {
  6130.             $PositionList[$positionID] = Position::getPositionName($this->getDoctrine()->getManager(), $positionID);
  6131.         }
  6132.         return $this->render(
  6133.             'ApplicationBundle:pages/login:login_position.html.twig',
  6134.             array(
  6135.                 "message" => $message,
  6136.                 'page_title' => 'Users',
  6137.                 'position_list' => $PositionList
  6138.             )
  6139.         );
  6140.     }
  6141.     public
  6142.     function LogoutAction(Request $request)
  6143.     {
  6144.         $session $request->getSession();
  6145.         $session->clear();
  6146.         if ($request->request->has('remoteVerify') || $request->query->has('remoteVerify')) {
  6147.             return new JsonResponse(array(
  6148.                 "success" => empty($session->get(UserConstants::USER_ID)) ? true false,
  6149.                 //            'session'=>$request->getSession(),
  6150.                 'session_data' => [],
  6151.                 //            'session2'=>$_SESSION,
  6152.             ));
  6153.         }
  6154.         return $this->redirectToRoute("user_login");
  6155.     }
  6156.     public
  6157.     function applicantLoginAction(Request $req)
  6158.     {
  6159.         $email $req->getSession()->get('userEmail');
  6160.         $em $this->getDoctrine()->getManager();
  6161.         $applicantRepo $em->getRepository(ApplicantDetails::class);
  6162.         if ($email) {
  6163.             return $this->redirectToRoute("dashboard");
  6164.         }
  6165.         $google_client = new Google_Client();
  6166.         $google_client->setClientId('916737688016-l2qfmb9p37cumudkaqpu8s7ndngq9una.apps.googleusercontent.com');
  6167.         $google_client->setClientSecret('BEWpEBRvv3-hSoB4cGBrVB3z');
  6168.         $google_client->setRedirectUri('http://localhost/applicant_login');
  6169.         $google_client->addScope('email');
  6170.         $google_client->addScope('profile');
  6171.         if (isset($_GET["code"])) {
  6172.             $token $google_client->fetchAccessTokenWithAuthCode($_GET["code"]);
  6173.             if (!isset($token['error'])) {
  6174.                 $google_client->setAccessToken($token['access_token']);
  6175.                 $google_service = new Google_Service_Oauth2($google_client);
  6176.                 $applicantInfo $google_service->userinfo->get();
  6177.                 $oAuthEmail $applicantInfo['email'];
  6178.                 $oAuthData = [
  6179.                     'email' => $applicantInfo['email'],
  6180.                     'uniqueId' => $applicantInfo['id'],
  6181.                     'image' => $applicantInfo['picture'],
  6182.                     'emailVerified' => $applicantInfo['verifiedEmail'],
  6183.                     'name' => $applicantInfo['givenName'] . ' ' $applicantInfo['familyName'],
  6184.                     'type' => $token['token_type'],
  6185.                     'token' => $token['access_token'],
  6186.                 ];
  6187.                 $isApplicantExist $applicantRepo->findOneBy([
  6188.                     'oAuthEmail' => $oAuthEmail
  6189.                 ]);
  6190.                 if ($isApplicantExist) {
  6191.                     return $this->redirectToRoute("user_login", [
  6192.                         'id' => $isApplicantExist->getApplicantId(),
  6193.                         'oAuthData' => $oAuthData,
  6194.                     ]);
  6195.                 }
  6196.                 $fname $applicantInfo['givenName'];
  6197.                 $lname $applicantInfo['familyName'];
  6198.                 $img $applicantInfo['picture'];
  6199.                 $email $oAuthData['email'];
  6200.                 $userName explode('@'$email)[0];
  6201.                 $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  6202.                 $charactersLength strlen($characters);
  6203.                 $length 8;
  6204.                 $password 0;
  6205.                 for ($i 0$i $length$i++) {
  6206.                     $password .= $characters[rand(0$charactersLength 1)];
  6207.                 }
  6208.                 $newApplicant = new ApplicantDetails;
  6209.                 $newApplicant->setEmail($email);
  6210.                 $newApplicant->setUserName($userName);
  6211.                 $newApplicant->setFirstname($fname);
  6212.                 $newApplicant->setLastname($lname);
  6213.                 $newApplicant->setOAuthEmail($oAuthEmail);
  6214.                 $newApplicant->setPassword($password);
  6215.                 $newApplicant->setImage($img);
  6216.                 $em->persist($newApplicant);
  6217.                 $em->flush();
  6218.                 if (GeneralConstant::EMAIL_ENABLED == 1) {
  6219.                     $emailmessage = (new \Swift_Message('Applicant Registration on Honeybee'))
  6220.                         ->setFrom('registration@entity.innobd.com')
  6221.                         ->setTo($newApplicant->getOAuthEmail())
  6222.                         ->setBody(
  6223.                             $this->renderView(
  6224.                                 'ApplicationBundle:email/user:applicant_login.html.twig',
  6225.                                 array(
  6226.                                     'name' => $newApplicant->getFirstname() . ' ' $newApplicant->getLastname(),
  6227.                                     'email' => 'APP-' $userName,
  6228.                                     'password' => $newApplicant->getPassword(),
  6229.                                 )
  6230.                             ),
  6231.                             'text/html'
  6232.                         );
  6233.                     $this->get('mailer')->send($emailmessage);
  6234.                 }
  6235.                 return $this->redirectToRoute("user_login", [
  6236.                     'id' => $newApplicant->getApplicantId(),
  6237.                     'oAuthData' => $oAuthData,
  6238.                 ]);
  6239.             }
  6240.         }
  6241.         return $this->render(
  6242.             'ApplicationBundle:pages/login:applicant_login.html.twig',
  6243.             [
  6244.                 'page_title' => 'Applicant Registration',
  6245.                 'oAuthLink' => $google_client->createAuthUrl()
  6246.             ]
  6247.         );
  6248.     }
  6249. }