/**
  * Inserta movimiento en la BD. LLama al store procedure "insertNewMovement"
  * @param \djmeWeb\Model\GlobalModel\GMovimientosCreditos $movement
  * @return type -1 Error. La transaccion no se realizó
  *              >0 Correcto. La transacción  fue realizada
  */
 public function saveMovement(GMovimientosCreditos $movement)
 {
     try {
         $movementData = $movement->getFullData();
         $adapter = $this->tableGateway->getAdapter();
         $stmt = $adapter->getDriver()->createStatement();
         // Ejecuto Store Procedure
         if ($movementData["ID_USUARIO_ASOCIADO"] == NULL) {
             $movementData["ID_USUARIO_ASOCIADO"] = 'NULL';
         }
         $stmt->prepare('CALL ' . GMovimientosCreditosTable::SP_INSERT_MOVEMENT_NAME . '(' . $movementData["ID_TIPO_MOVIMIENTO"] . ',' . $movementData["ID_USUARIO"] . ',' . $movementData["ID_USUARIO_ASOCIADO"] . ',' . $movementData["CANTIDAD_CREDITOS"] . ',@out)');
         /*
         $stmt->getResource()->bindParam(1, $movementData["ID_TIPO_MOVIMIENTO"], \PDO::PARAM_INT); 
         $stmt->getResource()->bindParam(2, $movementData["ID_USUARIO"]); 
         $stmt->getResource()->bindParam(3, $movementData["ID_USUARIO_ASOCIADO"]); 
         $stmt->getResource()->bindParam(4, $movementData["CANTIDAD_CREDITOS"]);
         */
         $stmt->execute();
         // libero cursor
         unset($stmt);
         // Obtengo resultado
         $stmt2 = $adapter->createStatement();
         $stmt2->prepare("SELECT @out AS insertMovementId");
         $result = $stmt2->execute();
         $output = $result->current();
         return (int) $output['insertMovementId'];
     } catch (\Exception $e) {
         return -1;
     }
 }
 private function getMovementFromData()
 {
     $movement = new GMovimientosCreditos();
     $data = array('ID_TIPO_MOVIMIENTO' => $this->requiredParametersReceived['movement_type_identifier'], 'ID_USUARIO' => $this->requiredParametersReceived['user_id'], 'ID_USUARIO_ASOCIADO' => $this->checkOption('asociated_user_id'), 'CANTIDAD_CREDITOS' => $this->requiredParametersReceived['credits_amount']);
     // Si se envió la opcion "user_by_username", se habrá enviado un nombre de usuario, y no un id.
     // Debo obtener ese id.
     if ($this->checkOption("user_by_username") == "true") {
         $user = $this->userUtils->getUser($data['ID_USUARIO'], false, false, true);
         $data['ID_USUARIO'] = $user[0]["UID"];
     }
     $movement->exchangeArray($data);
     return $movement;
 }
 public static function getTableIO($adapter)
 {
     return new GMovimientosCreditosTable(GMovimientosCreditos::getTableGateway($adapter));
 }