<?php

namespace Offy\Bundle\DashboardBundle\Controller;

require_once 'xmlrpc/xmlrpc.php';

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Offy\Bundle\DashboardBundle\Document\HrDepartment;
use Offy\Bundle\DashboardBundle\Document\Job;
use \Offy\Bundle\DashboardBundle\Document\OpenPosition;
use Offy\Bundle\DashboardBundle\Document\Applicant;
use Offy\Bundle\DashboardBundle\Document\Stage;
use Offy\Bundle\DashboardBundle\Document\Employee;

class DefaultController extends Controller {

    public function indexAction() {
        $hrdeparments = $this->getAllDepartmentMongo();
        $stageList = $this->getAllStageMongo();
        $stageNames = array();
        foreach ($stageList as $stage) {
            $stageNames[] = $stage->getName();
        }
        return $this->render('OffyDashboardBundle:Default:index.html.twig', array("departments" => $hrdeparments,
                    "stages" => $stageNames
                        )
        );
    }

    public function createAction() {
        $dbname = 'officience';
        $user = 'quanghien.tran';
        $pwd = '123456';
        $sock_url = "http://172.16.0.11:8069/xmlrpc/common";
        $user_id = $this->Connect($dbname, $user, $pwd, $sock_url);
        $client = new \xmlrpc_client("http://172.16.0.11:8069/xmlrpc/object");
//        $dbname = 'itdev';
//        $user = 'admin';
//        $pwd = '123456';
//        $sock_url = "http://dinh-test.officience.com:8069/xmlrpc/common";
//        $user_id = $this->Connect($dbname, $user, $pwd, $sock_url);
//        $client = new \xmlrpc_client("http://dinh-test.officience.com:8069/xmlrpc/object");
        
        //get all Department from OpenERP
        $this->deleteAllDepartment();
        $this->getAllDepartmentOpenERP($dbname, $user_id, $pwd, $client);
        //get all Job from OpenERP
        $this->deleteAllJob();
        $this->getAllJobOpenErp($dbname, $user_id, $pwd, $client);
        //get open positions from OpenERP
        $this->deleteAllOpenPosition();
        $this->getAllPositionOpenErp($dbname, $user_id, $pwd, $client);
        //get all Apllicant from OpenERP
        $this->deleteApplication();
        $this->getAllApplicant($dbname, $user_id, $pwd, $client);
        //get all Stage from OpenERP
        $this->deleteStage();
        $this->getAllStageOpenErp($dbname, $user_id, $pwd, $client);
         //get all Stage from OpenERP
        $this->deleteAllEmployee();
        $this->getAllEmployee($dbname, $user_id, $pwd, $client);
        //set timezone.
        date_default_timezone_set('Asia/Ho_Chi_Minh');
        return new \Symfony\Component\HttpFoundation\Response('Update successfull !!! '.date("Y-m-d h:m:s"));
    }

    private function Connect($dbname, $user, $password, $sock_url) {
        $sock = new \xmlrpc_client($sock_url);

        $sock_msg = new \xmlrpcmsg('login');
        $sock_msg->addParam(new \xmlrpcval($dbname, "string"));
        $sock_msg->addParam(new \xmlrpcval($user, "string"));
        $sock_msg->addParam(new \xmlrpcval($password, "string"));
        $sock_resp = $sock->send($sock_msg);

        if ($sock_resp->errno != 0) {
            echo 'error';
        } else {
            $sock_val = $sock_resp->value();
            $user_id = $sock_val->scalarval();
        }
        return $user_id;
    }

    private function createDepartment($department_id, $name) {
        $department = new HrDepartment();
        $department->setDepartmentId($department_id);
        $department->setName($name);

        $dm = $this->get('doctrine_mongodb')->getManager();
        $dm->persist($department);
        $dm->flush();
    }

    private function getAllDepartmentMongo() {
        $repository = $this->get('doctrine_mongodb')
                ->getManager()
                ->getRepository('OffyDashboardBundle:HrDepartment');
        $hrdeparments = $repository->findAll();
        return $hrdeparments;
    }

    private function deleteAllDepartment() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $qb = $dm->createQueryBuilder('OffyDashboardBundle:HrDepartment');
        $qb->remove()
                ->field('department_id')->gt(0)
                ->getQuery()
                ->execute();
    }

    private function getAllDepartmentOpenERP($dbname, $user_id, $pwd, $client) {
        $key = array(new \xmlrpcval
                    (array(new \xmlrpcval('id', "string"),
                new \xmlrpcval('>', "string"), // operator
                new \xmlrpcval(0, "int")), "array"),
        );

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval('hr.department', "string"));
        $msg->addParam(new \xmlrpcval("search", "string"));
        $msg->addParam(new \xmlrpcval($key, "array"));

        $resp = $client->send($msg);
        $resp_val = $resp->value();
        $resp_ids = $resp_val->scalarval();

        $key = array(new \xmlrpcval('id', 'int'),
            new \xmlrpcval('name', "string"));

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval("hr.department", "string"));
        $msg->addParam(new \xmlrpcval("read", "string"));
        $msg->addParam(new \xmlrpcval($resp_ids, "array"));
        $msg->addParam(new \xmlrpcval($key, "array"));
        $resp = $client->send($msg);
        $val = $resp->value();
        $ids = $val->scalarval();

        foreach ($ids as $id) {
            $id = $id->me;
            $departmentId = $id["struct"]["id"]->me["int"];
            $name = $id["struct"]["name"]->me["string"];
            $this->createDepartment($departmentId, $name);
        }
    }

    private function getAllJobOpenErp($dbname, $user_id, $pwd, $client) {
        $key = array(new \xmlrpcval
                    (array(new \xmlrpcval('id', "string"),
                new \xmlrpcval('>', "string"), // operator
                new \xmlrpcval(0, "int")), "array"),
        );

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval('hr.job', "string"));
        $msg->addParam(new \xmlrpcval("search", "string"));
        $msg->addParam(new \xmlrpcval($key, "array"));

        $resp = $client->send($msg);
        $resp_val = $resp->value();
        $resp_ids = $resp_val->scalarval();

        $key = array(new \xmlrpcval('id', 'int'),
            new \xmlrpcval('name', "string"),
            new \xmlrpcval('department_id', "string"),
            new \xmlrpcval('image_big', "string"));

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval("hr.job", "string"));
        $msg->addParam(new \xmlrpcval("read", "string"));
        $msg->addParam(new \xmlrpcval($resp_ids, "array"));
        $msg->addParam(new \xmlrpcval($key, "array"));
        $resp = $client->send($msg);
        $val = $resp->value();
        $ids = $val->scalarval();

        foreach ($ids as $id) {
            $id = $id->scalarval();
            $jobId = $id["id"]->scalarval();
            $name = $id["name"]->scalarval();
            $departmentObject = $id["department_id"]->scalarval();
            $departmentId = $departmentObject[0];
            if ($departmentId != null) {
                $departmentId = $departmentId->scalarval();
            }
            $departmentName = $departmentObject[1];
            if ($departmentName != null) {
                $departmentName = $departmentName->scalarval();
            }
            $image = $id["image_big"]->scalarval();

            $this->createJob($jobId, $name, $departmentId, $image, $departmentName);
        }
    }

    private function getAllPositionOpenErp($dbname, $user_id, $pwd, $client) {
        $key = array(new \xmlrpcval
                    (array(new \xmlrpcval('state', "string"),
                new \xmlrpcval('=', "string"), // operator
                new \xmlrpcval("1-open", "string")), "array"),
        );


        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval('hr.offy_positions', "string"));
        $msg->addParam(new \xmlrpcval("search", "string"));
        $msg->addParam(new \xmlrpcval($key, "array"));

        $resp = $client->send($msg);
        $resp_val = $resp->value();
        $resp_ids = $resp_val->scalarval();

        $key = array(new \xmlrpcval('id', 'int'),
            new \xmlrpcval('name', "string"),
            new \xmlrpcval('job_id', "string"),
            new \xmlrpcval('department_id', "string"),
        );

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval("hr.offy_positions", "string"));
        $msg->addParam(new \xmlrpcval("read", "string"));
        $msg->addParam(new \xmlrpcval($resp_ids, "array"));
        $msg->addParam(new \xmlrpcval($key, "array"));
        $resp = $client->send($msg);
        $val = $resp->value();
        $ids = $val->scalarval();

        foreach ($ids as $id) {
            $id = $id->scalarval();
            //var_dump($id);
            $positionId = $id["id"]->scalarval();
            $name = $id["name"]->scalarval();
            $departmentObject = $id["department_id"]->scalarval();
            $departmentId = $departmentObject[0];
            if ($departmentId != null) {
                $departmentId = $departmentId->scalarval();
            }
            $departmentName = $departmentObject[1];
            if ($departmentName != null) {
                $departmentName = $departmentName->scalarval();
            }
            $jobObject = $id["job_id"]->scalarval();
            $jobId = $jobObject[0];
            if ($jobId != null) {
                $jobId = $jobId->scalarval();
            }
            $jobName = $jobObject[1];
            if ($jobName != null) {
                $jobName = $jobName->scalarval();
            }

            $this->createOpenPosition($positionId, $name, $jobId, $jobName, $departmentId, $departmentName);
        }
    }

    private function createJob($job_id, $name, $department_id, $image, $departmentName) {
        $job = new Job();
        $job->setJobId($job_id);
        $job->setName($name);
        $job->setDepartmentId($department_id);
        $job->setImage($image);
        $job->setDepartmentName($departmentName);
        $job->setNumberOpen(0);
        $dm = $this->get('doctrine_mongodb')->getManager();
        $dm->persist($job);
        $dm->flush();
    }

    private function createOpenPosition($position_id, $name, $job_id, $job_name, $department_id, $departmentName) {
        $position = new OpenPosition();
        $position->setPositionId($position_id);
        $position->setName($name);
        $position->setJobId($job_id);
        $position->setJobName($job_name);
        $position->setDepartmentId($department_id);
        $position->setDepartmentName($departmentName);
        $dm = $this->get('doctrine_mongodb')->getManager();
        $dm->persist($position);
        $dm->flush();
    }

    private function deleteAllJob() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $qb = $dm->createQueryBuilder('OffyDashboardBundle:Job');
        $qb->remove()
                ->field('job_id')->gt(0)
                ->getQuery()
                ->execute();
    }

    private function deleteAllOpenPosition() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $qb = $dm->createQueryBuilder('OffyDashboardBundle:OpenPosition');
        $qb->remove()
                ->field('position_id')->gt(0)
                ->getQuery()
                ->execute();
    }

    private function getAllApplicant($dbname, $user_id, $pwd, $client) {
        $key = array(new \xmlrpcval
                    (array(new \xmlrpcval('id', "string"),
                new \xmlrpcval('>', "string"), // operator
                new \xmlrpcval(0, "int")), "array"),
        );


        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval('hr.applicant', "string"));
        $msg->addParam(new \xmlrpcval("search", "string"));
        $msg->addParam(new \xmlrpcval($key, "array"));

        $resp = $client->send($msg);
        $resp_val = $resp->value();
        $resp_ids = $resp_val->scalarval();

        $key = array(new \xmlrpcval('id', 'int'),
            new \xmlrpcval('partner_id', "string"),
            new \xmlrpcval('partner_name', "string"),
            new \xmlrpcval('job_id', "string"),
            new \xmlrpcval('department_id', "string"),
            new \xmlrpcval('stage_id', "string"),
            new \xmlrpcval('create_date', "string"),
        );

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval("hr.applicant", "string"));
        $msg->addParam(new \xmlrpcval("read", "string"));
        $msg->addParam(new \xmlrpcval($resp_ids, "array"));
        $msg->addParam(new \xmlrpcval($key, "array"));
        $resp = $client->send($msg);
        $val = $resp->value();
        $ids = $val->scalarval();
        
        foreach ($ids as $id) {
            $id = $id->scalarval();

            $appllicantId = $id["id"]->scalarval();
            $name = $id["partner_name"]->scalarval();
            $partnerObject = $id["partner_id"]->scalarval();
            $partner_id = $partnerObject[0];
            if ($partner_id != null) {
                $partner_id = $partner_id->scalarval();
            }
            $departmentObject = $id["department_id"]->scalarval();
            $departmentId = $departmentObject[0];

            if ($departmentId != null) {
                $departmentId = $departmentId->scalarval();
            }
            $departmentName = $departmentObject[1];
            if ($departmentName != null) {
                $departmentName = $departmentName->scalarval();
            }
            $jobObject = $id["job_id"]->scalarval();

            $jobId = $jobObject[0];
            if ($jobId != null) {
                $jobId = $jobId->scalarval();
            }

            $jobName = $jobObject[1];
            if ($jobName != null) {
                $jobName = $jobName->scalarval();
            }
            $stageObject = $id["stage_id"]->scalarval();
            $stageId = $stageObject[0];
            if ($stageId != null) {
                $stageId = $stageId->scalarval();
            }
            $stageName = $stageObject[1];
            if ($stageName != null) {
                $stageName = $stageName->scalarval();
            }
            $create_date = $id["create_date"]->scalarval();
            $this->createApplication($appllicantId, $name, $departmentId, $departmentName, $jobId, $jobName, $stageId, $stageName,$create_date);
        }
    }

    private function deleteApplication() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $qb = $dm->createQueryBuilder('OffyDashboardBundle:Applicant');
        $qb->remove()
                ->field('applicant_id')->gt(0)
                ->getQuery()
                ->execute();
    }

    private function createApplication($applicantId, $name, $departmentId, $departmentName, $jobId, $jobName, $stageId, $stageName,$create_date) {
        $applicant = new Applicant();
        $applicant->setApplicantId($applicantId);
        $applicant->setName($name);
        $applicant->setDepartmentId($departmentId);
        $applicant->setDepartmentName($departmentName);
        $applicant->setJobId($jobId);
        $applicant->setJobName($jobName);
        $applicant->setStageId($stageId);
        $applicant->setStageName($stageName);
        $applicant->setCreatDate($create_date);
        
        $dm = $this->get('doctrine_mongodb')->getManager();
        $dm->persist($applicant);
        $dm->flush();
    }

    private function getAllStageOpenErp($dbname, $user_id, $pwd, $client) {
        $key = array(new \xmlrpcval
                    (array(new \xmlrpcval('id', "string"),
                new \xmlrpcval('>', "string"), // operator
                new \xmlrpcval(0, "int")), "array"),
        );

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval('hr.recruitment.stage', "string"));
        $msg->addParam(new \xmlrpcval("search", "string"));
        $msg->addParam(new \xmlrpcval($key, "array"));

        $resp = $client->send($msg);
        $resp_val = $resp->value();
        $resp_ids = $resp_val->scalarval();

        $key = array(new \xmlrpcval('id', 'int'),
            new \xmlrpcval('name', "string"),
            new \xmlrpcval('sequence', "string"));


        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval("hr.recruitment.stage", "string"));
        $msg->addParam(new \xmlrpcval("read", "string"));
        $msg->addParam(new \xmlrpcval($resp_ids, "array"));
        $msg->addParam(new \xmlrpcval($key, "array"));
        $resp = $client->send($msg);
        $val = $resp->value();
        $ids = $val->scalarval();

        foreach ($ids as $id) {
            $id = $id->scalarval();
            $stage_id = $id["id"]->scalarval();
            $name = $id["name"]->scalarval();
            $order = $id["sequence"]->scalarval();

            $this->createStage($stage_id, $name, $order);
        }
    }

    private function createStage($stage_id, $name, $order) {
        $stage = new Stage();
        $stage->setStageId($stage_id);
        $stage->setName($name);
        $stage->setOrder($order);
        $dm = $this->get('doctrine_mongodb')->getManager();
        $dm->persist($stage);
        $dm->flush();
    }

    private function deleteStage() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $qb = $dm->createQueryBuilder('OffyDashboardBundle:Stage');
        $qb->remove()
                ->field('stage_id')->gt(0)
                ->getQuery()
                ->execute();
    }

    private function getAllStageMongo() {
        $repository = $this->get('doctrine_mongodb')
                ->getManager()
                ->getRepository('OffyDashboardBundle:Stage');
        $stages = $repository->findAll();
        return $stages;
    }

    private function getAllJobOpen() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $stages = $dm->getRepository('OffyDashboardBundle:Stage')->findAll();
        $stageArray = array();
        foreach ($stages as $stage) {
            $stageObj = new Stage();
            $stageObj = $stage;
            $stageId = $stageObj->getStageId();

            $stageArray[$stageId] = array(
                "stage_id" => $stageObj->getStageId(),
                "name" => $stageObj->getName(),
                "order" => $stageObj->getOrder(),
                "number" => 0
            );
        }

        $repository = $dm->getRepository('OffyDashboardBundle:Job');
        $jobs = $repository->findAll();
        $data = array();
        foreach ($jobs as $job) {
            $jobObj = new Job();
            $jobObj = $job;
            $job_id = $jobObj->getJobId();
            $jobArray = array();
            $jobArray["job_id"] = $jobObj->getJobId();
            $jobArray["job_name"] = $jobObj->getName();
            $jobArray["department_id"] = $jobObj->getDepartmentId();
            $jobArray["department_name"] = $jobObj->getDepartmentName();
            $jobArray["image"] = $jobObj->getImage();
            $jobArray["child"] = $stageArray;

            $applicantStage = $dm->getRepository('OffyDashboardBundle:Applicant')->findBy(array("job_id" => $job_id));
            foreach ($applicantStage as $applicant) {
                $applicantObj = new Applicant();
                $applicantObj = $applicant;
                $stage_id = $applicantObj->getStageId();
                $jobArray["child"][$stage_id]["number"] ++;
            }
            $data[] = $jobArray;
        }
        $jobName = array();
        $entryTest = array();
        $firstInterview = array();
        $secondInterview = array();
        $offerSent = array();
        $recruited = array();
        $rejected = array();
        $results = array();

        foreach ($data as $job) {

            $total = $job["child"]["1"]["number"] + $job["child"]["2"]["number"] + $job["child"]["2"]["number"] + $job["child"]["3"]["number"] + $job["child"]["4"]["number"] + $job["child"]["7"]["number"] + $job["child"]["6"]["number"];
            if ($total > 0) {
                $jobName[] = $job["job_name"];
                $entryTest[] = $job["child"]["1"]["number"];
                $firstInterview[] = $job["child"]["2"]["number"];
                $secondInterview[] = $job["child"]["3"]["number"];
                $offerSent[] = $job["child"]["4"]["number"];
                $recruited[] = $job["child"]["7"]["number"];
                $rejected[] = $job["child"]["6"]["number"];
            }
        }
        $results["job_name"] = $jobName;
        $results["entryTest"] = $entryTest;
        $results["firstInterview"] = $firstInterview;
        $results["secondInterview"] = $secondInterview;
        $results["offerSent"] = $offerSent;
        $results["recruited"] = $recruited;
        $results["rejected"] = $rejected;

        return $results;
    }
    private function deleteAllEmployee() {
        $dm = $this->get('doctrine_mongodb')->getManager();
        $qb = $dm->createQueryBuilder('OffyDashboardBundle:Employee');
        $qb->remove()
                ->field('employee_id')->gt(0)
                ->getQuery()
                ->execute();
    }

    private function getAllEmployee($dbname, $user_id, $pwd, $client) {
        $key = array(new \xmlrpcval
                    (array(new \xmlrpcval('id', "string"),
                new \xmlrpcval('>', "string"), // operator
                new \xmlrpcval(0, "int")), "array"),
        );


        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval('hr.employee', "string"));
        $msg->addParam(new \xmlrpcval("search", "string"));
        $msg->addParam(new \xmlrpcval($key, "array"));

        $resp = $client->send($msg);
        $resp_val = $resp->value();
        $resp_ids = $resp_val->scalarval();

        $key = array(new \xmlrpcval('id', 'int'),
            new \xmlrpcval('name_related', "string"),
            new \xmlrpcval('job_id', "string"),
            new \xmlrpcval('department_id', "string"),
            new \xmlrpcval('image_medium', "string"),
            new \xmlrpcval('offy_start_date', "string"),
        );

        $msg = new \xmlrpcmsg('execute');
        $msg->addParam(new \xmlrpcval($dbname, "string"));
        $msg->addParam(new \xmlrpcval($user_id, "int"));
        $msg->addParam(new \xmlrpcval($pwd, "string"));
        $msg->addParam(new \xmlrpcval("hr.employee", "string"));
        $msg->addParam(new \xmlrpcval("read", "string"));
        $msg->addParam(new \xmlrpcval($resp_ids, "array"));
        $msg->addParam(new \xmlrpcval($key, "array"));
        $resp = $client->send($msg);
        $val = $resp->value();
        $ids = $val->scalarval();
        
        foreach ($ids as $id) {
            $id = $id->scalarval();
            
            $employeeId = $id["id"]->scalarval();
            $employee_name = mb_convert_encoding($id["name_related"]->scalarval(), "UTF-8", "ISO-8859-1");
            
            $departmentObject = $id["department_id"]->scalarval();
            
            $departmentId = $departmentObject[0];
            if ($departmentId != null) {
                $departmentId = $departmentId->scalarval();
            }
            $departmentName = $departmentObject[1];
            if ($departmentName != null) {
                $departmentName = $departmentName->scalarval();
            }
            $jobObject = $id["job_id"]->scalarval();

            $jobId = $jobObject[0];
            if ($jobId != null) {
                $jobId = $jobId->scalarval();
            }

            $jobName = $jobObject[1];
            if ($jobName != null) {
                $jobName = $jobName->scalarval();
            }
            $image = $id["image_medium"]->scalarval();
            $start_date = $id["offy_start_date"]->scalarval();
            $this->createEmloyee($employeeId, $employee_name, $departmentId, $departmentName, $jobId, $jobName, $image, $start_date);
        }
    }
    private function createEmloyee($employeeId, $employee_name, $departmentId, $departmentName, $jobId, $jobName, $image, $start_date) {
        $employee = new Employee();
        $employee->setEmployeeId($employeeId);
        $employee->setName($employee_name);
        $employee->setDepartmentId($departmentId);
        $employee->setDepartmentName($departmentName);
        $employee->setJobId($jobId);
        $employee->setJobName($jobName);
        $employee->setStartDate($start_date);
        $employee->setImage($image);
        
        $dm = $this->get('doctrine_mongodb')->getManager();
        $dm->persist($employee);
        $dm->flush();
    }
}
