/**
  * Kullanıcı ilk kayıt ta "pk" sız olarak  cagırılacak servis.
  * Kullanıcıyı kaydeder. pk, pktemp, privatekey degerlerinin olusturur.  
  * @author Okan CIRAN
  * @version v 1.0 27.01.2016
  * @param array | null $args
  * @return array
  * @throws PDOException
  */
 public function insertTemp($params = array())
 {
     try {
         $pdo = $this->getServiceLocator()->get('pgConnectFactory');
         $pdo->beginTransaction();
         $kontrol = $this->haveRecords($params);
         if (!\Utill\Dal\Helper::haveRecord($kontrol)) {
             $getConsultant = SysOsbConsultants::getConsultantIdForUsers(array('category_id' => 0));
             if (\Utill\Dal\Helper::haveRecord($getConsultant)) {
                 $ConsultantId = $getConsultant['resultSet'][0]['consultant_id'];
             } else {
                 $ConsultantId = 1001;
             }
             $sql = " \n                INSERT INTO info_users(                           \n                        operation_type_id, \n                        username, \n                        password,                         \n                        op_user_id,                            \n                        language_id, \n                        role_id,\n                        consultant_id\n                              )      \n                VALUES (1,\n                        :username,\n                        :password,\n                        (SELECT last_value FROM info_users_id_seq),\n                        :language_id,\n                        5 ,\n                       " . intval($ConsultantId) . "\n                    )";
             $statement = $pdo->prepare($sql);
             $statement->bindValue(':username', $params['username'], \PDO::PARAM_STR);
             $statement->bindValue(':password', $params['password'], \PDO::PARAM_STR);
             $statement->bindValue(':language_id', $params['preferred_language'], \PDO::PARAM_INT);
             //echo debugPDO($sql, $params);
             $result = $statement->execute();
             $insertID = $pdo->lastInsertId('info_users_id_seq');
             $errorInfo = $statement->errorInfo();
             if ($errorInfo[0] != "00000" && $errorInfo[1] != NULL && $errorInfo[2] != NULL) {
                 throw new \PDOException($errorInfo[0]);
             }
             /*
              * kullanıcı için gerekli olan private key ve value değerleri yaratılılacak.  
              * kullanıcı için gerekli olan private key temp ve value temp değerleri yaratılılacak.  
              */
             $this->setPrivateKey(array('id' => $insertID));
             /*
              * kullanıcının public key temp değeri alınacak..  
              */
             $publicKeyTemp = $this->getPublicKeyTemp(array('id' => $insertID));
             if (\Utill\Dal\Helper::haveRecord($publicKeyTemp)) {
                 $publicKeyTempValue = $publicKeyTemp['resultSet'][0]['pk_temp'];
             } else {
                 $publicKeyTempValue = NULL;
             }
             /*
              * kullanıcı bilgileri info_users_detail tablosuna kayıt edilecek.   
              */
             $this->insertDetail(array('op_user_id' => $insertID, 'role_id' => 5, 'active' => 0, 'operation_type_id' => 1, 'language_id' => $params['preferred_language'], 'profile_public' => $params['profile_public'], 'f_check' => 0, 'name' => $params['name'], 'surname' => $params['surname'], 'username' => $params['username'], 'auth_email' => $params['auth_email'], 'act_parent_id' => 0, 'auth_allow_id' => 0, 'cons_allow_id' => 0, 'root_id' => $insertID, 'password' => $params['password'], 'consultant_id' => $ConsultantId));
             $pdo->commit();
             return array("found" => true, "errorInfo" => $errorInfo, "lastInsertId" => $insertID, "pktemp" => $publicKeyTempValue);
         } else {
             $errorInfo = '23505';
             // 23505  unique_violation
             $errorInfoColumn = 'username';
             $pdo->rollback();
             $result = $kontrol;
             return array("found" => true, "errorInfo" => $errorInfo, "resultSet" => '', "errorInfoColumn" => $errorInfoColumn);
         }
     } catch (\PDOException $e) {
         $pdo->rollback();
         return array("found" => false, "errorInfo" => $e->getMessage());
     }
 }
 /**
  * @author Okan CIRAN
  * @ info_users_addresses tablosuna pktemp için yeni bir kayıt oluşturur.  !!
  * @version v 1.0  03.02.2016
  * @return array
  * @throws \PDOException
  */
 public function insertTemp($params = array())
 {
     try {
         $pdo = $this->getServiceLocator()->get('pgConnectFactory');
         $pdo->beginTransaction();
         $opUserId = InfoUsers::getUserIdTemp(array('pktemp' => $params['pktemp']));
         if (\Utill\Dal\Helper::haveRecord($opUserId)) {
             $opUserIdValue = $opUserId['resultSet'][0]['user_id'];
             $addSql = " op_user_id, ";
             $addSqlValue = " " . $opUserIdValue . ",";
             $addSql .= " user_id,  ";
             if (isset($params['user_id']) && $params['user_id'] != "") {
                 $userId = $params['user_id'];
             } else {
                 $userId = $opUserIdValue;
             }
             $addSqlValue .= " " . $userId . ",";
             $getConsultant = SysOsbConsultants::getConsultantIdForUsers(array('category_id' => 1));
             if (\Utill\Dal\Helper::haveRecord($getConsultant)) {
                 $ConsultantId = $getConsultant['resultSet'][0]['consultant_id'];
             } else {
                 $ConsultantId = 1001;
             }
             $addSql .= " consultant_id,  ";
             $addSqlValue .= " " . intval($ConsultantId) . ",";
             $languageId = SysLanguage::getLanguageId(array('language_code' => $params['language_code']));
             if (\Utill\Dal\Helper::haveRecord($languageId)) {
                 $languageIdValue = $languageId['resultSet'][0]['id'];
             } else {
                 $languageIdValue = 647;
             }
             $addSql .= "  language_id,  ";
             $addSqlValue .= " " . intval($languageIdValue) . ",";
             $sql = "                \n                        INSERT INTO info_users_addresses (                           \n                                " . $addSql . " \n                                operation_type_id,     \n                                language_code,                                \n                                address_type_id, \n                                address1, \n                                address2, \n                                postal_code, \n                                country_id, \n                                city_id, \n                                borough_id, \n                                city_name, \n                                description,                                 \n                                profile_public,\n                                history_parent_id\n                                )                        \n                        VALUES (\n                                " . $addSqlValue . " \n                                1,    \n                                :language_code,                               \n                                :address_type_id, \n                                :address1, \n                                :address2, \n                                :postal_code, \n                                :country_id, \n                                :city_id, \n                                :borough_id, \n                                :city_name, \n                                :description,                                 \n                                :profile_public,\n                                (SELECT last_value FROM info_users_addresses_id_seq)\n                                           )     ";
             $statement = $pdo->prepare($sql);
             $statement->bindValue(':language_code', $params['language_code'], \PDO::PARAM_STR);
             $statement->bindValue(':address_type_id', $params['address_type_id'], \PDO::PARAM_INT);
             $statement->bindValue(':address1', $params['address1'], \PDO::PARAM_STR);
             $statement->bindValue(':address2', $params['address2'], \PDO::PARAM_STR);
             $statement->bindValue(':postal_code', $params['postal_code'], \PDO::PARAM_STR);
             $statement->bindValue(':country_id', $params['country_id'], \PDO::PARAM_INT);
             $statement->bindValue(':city_id', $params['city_id'], \PDO::PARAM_INT);
             $statement->bindValue(':borough_id', $params['borough_id'], \PDO::PARAM_INT);
             $statement->bindValue(':description', $params['description'], \PDO::PARAM_STR);
             $statement->bindValue(':city_name', $params['city_name'], \PDO::PARAM_STR);
             $statement->bindValue(':profile_public', $params['profile_public'], \PDO::PARAM_INT);
             // echo debugPDO($sql, $params);
             $result = $statement->execute();
             $insertID = $pdo->lastInsertId('info_users_addresses_id_seq');
             $errorInfo = $statement->errorInfo();
             if ($errorInfo[0] != "00000" && $errorInfo[1] != NULL && $errorInfo[2] != NULL) {
                 throw new \PDOException($errorInfo[0]);
             }
             $pdo->commit();
             return array("found" => true, "errorInfo" => $errorInfo, "lastInsertId" => $insertID);
         } else {
             $errorInfo = '23502';
             // 23502  not_null_violation
             $errorInfoColumn = 'pk';
             $pdo->rollback();
             return array("found" => true, "errorInfo" => $errorInfo, "resultSet" => '', "errorInfoColumn" => $errorInfoColumn);
         }
     } catch (\PDOException $e) {
         $pdo->rollback();
         return array("found" => false, "errorInfo" => $e->getMessage());
     }
 }