public function createItem(EiScenario $ei_scenario, EiDelivery $ei_delivery, EiTicket $ei_ticket, sfGuardUser $guard_user, Doctrine_Connection $conn = null)
 {
     if ($conn == null) {
         $conn = Doctrine_Manager::connection();
     }
     $stmt = $conn->prepare("INSERT INTO ei_package_scenario_conflict (ei_scenario_id,delivery_id,package_id, package_ref,resolved_date,resolved_author,created_at,updated_at) " . "VALUES (:ei_scenario_id,:delivery_id,:package_id, :package_ref,:resolved_date,:resolved_author,:created_at,:updated_at) " . "ON DUPLICATE KEY UPDATE ei_scenario_id=ei_scenario_id, delivery_id=delivery_id, package_id=:package_id,package_ref=:package_ref");
     $stmt->bindValue("ei_scenario_id", $ei_scenario->getId());
     $stmt->bindValue("delivery_id", $ei_delivery->getId());
     $stmt->bindValue("package_id", $ei_ticket->getTicketId());
     $stmt->bindValue("package_ref", $ei_ticket->getTicketRef());
     $stmt->bindValue("resolved_date", date('Y-m-d H:i:s'));
     $stmt->bindValue("resolved_author", $guard_user->getId());
     $stmt->bindValue("created_at", date('Y-m-d H:i:s'));
     $stmt->bindValue("updated_at", date('Y-m-d H:i:s'));
     $stmt->execute(array());
 }
Example #2
0
 public static function createDistantPackage(EiProjet $ei_project, $data, Doctrine_Connection $conn = null)
 {
     if ($conn == null) {
         $conn = Doctrine_Manager::connection();
     }
     try {
         $conn->beginTransaction();
         //Début de la transaction
         $result_file = new DOMDocument();
         //Appel du webservice
         $result_update = MyFunction::loadResultOfWebServiceByPostJson(MyFunction::getPrefixPath(null) . "serviceweb/project/package/create.json", array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'data' => $data));
         //Récupération du ticket pour traitement
         $array_result = json_decode(html_entity_decode($result_update), true);
         //throw new Exception(html_entity_decode($result_update));
         //Récupération du projet pour traitement
         if (count($array_result) == 0) {
             return false;
         }
         if (array_key_exists("error", $array_result)) {
             return false;
         }
         if (!$array_result[0]) {
             return false;
         }
         EiTicket::reload($array_result, $conn);
         $conn->commit();
         return array('package_id' => $array_result[0]['t_id'], 'package_ref' => $array_result[0]['t_ref']);
     } catch (Exception $e) {
         $conn->rollback();
         throw $e;
         return false;
     }
 }
Example #3
0
 public function getPackage(Doctrine_Connection $conn = null)
 {
     $conn2 = Doctrine_Manager::connection();
     $conn2->execute("update ei_subject s left join ei_ticket t \n                            on s.package_id =t.ticket_id and s.package_ref=t.ticket_ref\n                            set s.package_id =NULL and s.package_ref=NULL\n                            where CONCAT('Package_S',s.id)!=t.name");
     $conn2->execute("update ei_subject s  left join ei_ticket t on s.package_id=t.ticket_id and s.package_ref=t.ticket_ref\n            set package_id=NULL , package_ref=NULL \n            where   t.ticket_id IS   NULL OR   t.ticket_ref is   NULL ");
     if ($conn == null) {
         $conn = Doctrine_Manager::connection();
     }
     /* Le package existe déjà mais on procède aux vérifications permettant d'avoir l'unicité d'un bug pour un package.
         En effet un Package doit être lié à un bug au plus.
        */
     if ($this->getPackageId() != null && $this->getPackageId() != 0 && $this->getPackageRef() != null && $this->getPackageRef() != 0) {
         $package_bugs_links = $conn->fetchAll("select t.ticket_id , t.ticket_ref, s.id  \n                        from  ei_ticket t \n                        inner join  ei_subject s on s.package_id=t.ticket_id and s.package_ref=t.ticket_ref\n                        where t.ticket_id= " . $this->getPackageId() . " and t.ticket_ref=" . $this->getPackageRef());
     } else {
         $package_bugs_links = array();
     }
     if (count($package_bugs_links) == 0) {
         //Le ticket du bug est null ou n'existe pas : on le crée par le web service
         //Si le package du bug est   null
         if ($this->getPackageId() != null && $this->getPackageRef() != null) {
             $conn->execute("update ei_subject set package_id=NULL And package_ref=NULL where package_id=" . $this->getPackageId() . " And package_ref=" . $this->getPackageRef());
         }
         /* On recharge le projet si nécessaire */
         $ei_project = $this->getEiProject();
         if ($ei_project->needsReload()) {
             $xml = $ei_project->downloadKalFonctions();
             if ($xml != null) {
                 $ei_project->transactionToLoadObjectsOfProject($xml);
             }
         }
         /* Préparation des données de création du web service de création de l'intervention */
         $guard = MyFunction::getGuard();
         $data = array('package_name' => 'Package_S' . $this->getId(), 'guard_id' => $guard->getId());
         /* Création de l'intervention */
         $pack = EiTicket::createDistantPackage($this->getEiProject(), json_encode($data));
         if (is_array($pack) && isset($pack['package_id']) && isset($pack['package_ref'])) {
             return array("package_id" => $pack['package_id'], "package_ref" => $pack['package_ref']);
         } else {
             //Echec de la création de l'intervention du bug.
             throw new Exception("Fatal error . Failed to create  intervention package! Contact administrator...");
             //$conn->execute("update ei_subject set package_id=" . $pack['package_id'] . " , package_ref=" . $pack['package_ref'] . " , updated_at='" . date('Y-m-d H:i:s') . "' where id=" . $this->getId());
             //$package = Doctrine_Core::getTable('EiTicket')->findOneByTicketIdAndTicketRef($pack['package_id'], $pack['package_ref']);
         }
     } elseif (count($package_bugs_links) > 1) {
         //Le ticket est lié à plusieurs bugs : On génère une exception et on alerte l'administrateur
         throw new Exception("Fatal error . Many interventions for a package! Contact administrator...");
     } else {
         //Le package du bug/intervention est bien définit et l'objet EiTicket associé existe.
         return array("package_id" => $this->getPackageId(), "package_ref" => $this->getPackageRef());
     }
 }
Example #4
0
 public static function getScriptUpdateResult(EiProjet $ei_project, EiProfil $kal_profil, EiTicket $ei_ticket, $json_string, KalFunction $kal_function, EiUser $ei_user, $script_id = 0, Doctrine_Connection $conn = null)
 {
     if ($conn == null) {
         $conn = Doctrine_Manager::connection();
     }
     $ei_subject = Doctrine_Core::getTable("EiSubject")->findOneByPackageIdAndPackageRef($ei_ticket->getTicketId(), $ei_ticket->getTicketRef());
     if ($ei_subject == null) {
         return array("success" => false, "message" => "Intervention not found ... ");
     }
     //Intervention non trouvée
     //Appel du webservice
     $result_update = MyFunction::loadResultOfWebServiceByPostJson(MyFunction::getPrefixPath(null) . "serviceweb/project/script/update.json", array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'ticket_id' => $ei_ticket->getTicketId(), 'ticket_ref' => $ei_ticket->getTicketRef(), 'profile_id' => $kal_profil->getProfileId(), 'profile_ref' => $kal_profil->getProfileRef(), 'function_id' => $kal_function->getFunctionId(), 'function_ref' => $kal_function->getFunctionRef(), 'script_id' => $script_id, 'user_id' => $ei_user->getUserId(), 'user_ref' => $ei_user->getRefId(), 'package_name' => "Package_S" . $ei_subject->getId(), 'json_string' => rawurlencode($json_string)));
     //Récupération du projet pour traitement
     //        if ($result_update == null) return null;
     //        $result_file->loadXML($result_update);
     //        $result_file->save('result_update.xml'); /* sauvegarde du fichier pour vérifier le bon fonctionnement du web service */
     //        $result_item=$result_file->documentElement;
     //        if ($result_item->getElementsByTagName("error")->item(0)):
     //            return -1;
     //        endif;
     //        if ($result_item->getElementsByTagName("process_error")->item(0)):
     //            return 0;
     //        endif;
     //        if ($result_item->getElementsByTagName("process_ok")->item(0)):
     //            return 1;
     //        endif;
     try {
         $conn->beginTransaction();
         //Récupération du ticket pour traitement
         $array_result = json_decode(html_entity_decode($result_update), true);
         //Récupération du projet pour traitement
         if (count($array_result) == 0) {
             return array("success" => false, "message" => "Error on transaction");
         }
         if (array_key_exists("error", $array_result)) {
             return array("success" => false, "message" => $array_result["error"]);
         }
         if (array_key_exists("process_error", $array_result)) {
             return array("success" => false, "message" => $array_result["process_error"]);
         }
         if (!$array_result[0]) {
             return array("success" => false, "message" => "Empty result content");
         }
         self::reload($array_result, $conn);
         $conn->commit();
         return array("success" => true, "message" => "Transaction maded successfully");
     } catch (Exception $e) {
         throw new Exception($e);
         $conn->rollback();
         return array("success" => false, "message" => "Error on reload process ...");
     }
 }
Example #5
0
 public function findVersionForPackage(EiTicket $ei_package, Doctrine_Connection $conn = null)
 {
     return $conn->createQuery()->from('EiVersion v')->leftJoin('v.EiVersionPackage sp')->where('sp.package_id=' . $ei_package->getTicketId() . ' And sp.package_ref=' . $ei_package->getTicketRef() . ' And sp.ei_scenario_id=' . $this->getId())->execute();
 }
 public function migrateBugFunction(EiTicket $ei_ticket, EiProjet $ei_project, EiProfil $ei_profile, KalFunction $ei_function, sfGuardUser $guard)
 {
     $result_file = new DOMDocument();
     //Appel du webservice
     $result_update = self::loadResultOfWebServiceForMigration(MyFunction::getPrefixPath(null) . "/serviceweb/bug/migrateOne.xml", array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'ticket_id' => $ei_ticket->getTicketId(), 'ticket_ref' => $ei_ticket->getTicketRef(), 'profile_id' => $ei_profile->getProfileId(), 'profile_ref' => $ei_profile->getProfileRef(), 'function_id' => $ei_function->getFunctionId(), 'function_ref' => $ei_function->getFunctionRef(), 'guard_id' => $guard->getId()));
     //Récupération du projet pour traitement
     if ($result_update == null) {
         return null;
     }
     $result_file->loadXML($result_update);
     $result_file->save('result_migrate_bug.xml');
     /* sauvegarde du fichier pour vérifier le bon fonctionnement du web service */
     $result_item = $result_file->documentElement;
     if ($result_item->getElementsByTagName("error")->item(0)) {
         return -1;
     }
     if ($result_item->getElementsByTagName("process_error")->item(0)) {
         return 0;
     }
     if ($result_item->getElementsByTagName("process_ok")->item(0)) {
         return true;
     }
 }