actualizacion command

parent cfe93862
......@@ -15,138 +15,170 @@ use AppBundle\Model\McafeeTransaccionPendiente;
use AppBundle\Model\McafeeTransaccionPendienteQuery;
use AppBundle\Lib\Utiles;
class McafeeMigrarPendientesCommand extends ContainerAwareCommand
{
class McafeeMigrarPendientesCommand extends ContainerAwareCommand {
const LENGUAJE = "es";
const TIMEOUT = 20;
const SKU_DESTINY = "419-92860-1usermds";
protected function configure()
{
protected function configure() {
$this
->setName('mcafee:migrar-pendientes')
->setDescription('Proceso que migra todos los usuarios que hayan quedado en la tabla de pendientes.')
->setName('mcafee:migrar-pendientes')
->setDescription('Proceso que migra todos los usuarios que hayan quedado en la tabla de pendientes.')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
protected function execute(InputInterface $input, OutputInterface $output) {
$output->writeln("COMANDO INICIADO.");
$log = Utiles::setLog('command::migrarUsuariosSuscripcion', 'ws/wsMigrarUsuariosPendientesMcAfee');
$failedAlready = false;
$contadorIntento = 0;
$mcAfeePartnerId = Utiles::getParametroConfiguracion('mcafee_partner_id');
$numero_usuarios_pendientes = Utiles::getParametroConfiguracion("numero_usuarios_pendientes");
$usuariosPendientes = McafeeTransaccionPendienteQuery::create()
->filterByMtpEstado(McafeeTransaccionPendiente::ESTADO_PENDIENTE)
->limit($numero_usuarios_pendientes)
->find();
$log->debug("usuarios pendientes a procesar : ". count($usuariosPendientes));
foreach($usuariosPendientes as $index => $usuarioPendiente):
->filterByMtpEstado(McafeeTransaccionPendiente::ESTADO_PENDIENTE)
->limit($numero_usuarios_pendientes)
->find();
$log->debug("usuarios pendientes a procesar : " . count($usuariosPendientes));
foreach ($usuariosPendientes as $index => $usuarioPendiente):
$mcAfeeTx = McafeeTransaccionQuery::create()
->filterByUmcId($usuarioPendiente->getUmcId())
->filterByMtrEstado(McafeeTransaccion::ESTADO_FRACASADA)
->findOne();
if(!$mcAfeeTx){
$log->debug("No tiene existe una transaccion asociada para el usuario con id ".$usuarioPendiente->getUmcId());
}else{
$log->debug("Transaccion a procesar .".print_r($mcAfeeTx,true));
->filterByUmcId($usuarioPendiente->getUmcId())
->filterByMtrEstado(McafeeTransaccion::ESTADO_FRACASADA)
->findOne();
if (!$mcAfeeTx) {
$log->debug("No tiene existe una transaccion asociada para el usuario con id " . $usuarioPendiente->getUmcId());
} else {
$log->debug("Transaccion a procesar ." . print_r($mcAfeeTx, true));
$usuario = $usuarioPendiente->getUsuarioMcafee();
$xmlPartnerContext = $mcAfeeTx->getMtrXmlEnvio();
$mcAfeeTx->generarNroReferencia();
$mcAfeeTx->save();
$xmlPartnerContext = '<PARTNERCONTEXT>
<HEADER>
<PARTNER PARTNER_ID="' . $mcAfeePartnerId . '"/>
</HEADER>
<DATA>
<CUSTOMERCONTEXT ID="' . $usuario->getUmcMcafeeCcid() . '" REQUESTTYPE="UPDATE">
<ACCOUNT/>
<ORDER PARTNERREF="' . $mcAfeeTx->getMtrReferencia() . '" REF="">
<ITEMS>
<ITEM SKU="' . self::SKU_DESTINY . '" QTY="1" ACTION="TU">
<SOURCESKU>' . $usuario->getUmcMcafeeSku() . '</SOURCESKU></ITEM>
</ITEMS>
</ORDER>
</CUSTOMERCONTEXT>
</DATA>
</PARTNERCONTEXT> ';
$log->debug("xml generado para el item :" . $xmlPartnerContext);
$peticion = array('requestXML' => $xmlPartnerContext);
$mcAfeeTx->setMtrXmlEnvio($xmlPartnerContext);
$mcAfeeTx->save();
$log->debug('Peticion a McAfee->' . print_r($peticion, true));
///INICIO PETICION MCAFEE
try {
//Llamada McAfee
$wsMcafeePostRequestUrl = Utiles::getParametroConfiguracion('ws_mcafee_post_request_url');
$SOAP = new \SoapClient($wsMcafeePostRequestUrl, array("connection_timeout" => self::TIMEOUT, 'cache_wsdl' => WSDL_CACHE_NONE));
///INICIO PETICION MCAFEE
$log->debug('Llamando metodo "ProcessRequestWS" url WS->' . $wsMcafeePostRequestUrl);
try {
//Llamada McAfee
$wsMcafeePostRequestUrl = Utiles::getParametroConfiguracion('ws_mcafee_post_request_url');
$SOAP = new \SoapClient($wsMcafeePostRequestUrl, array("connection_timeout" => self::TIMEOUT, 'cache_wsdl' => WSDL_CACHE_NONE));
$respuesta = $SOAP->ProcessRequestWS($peticion);
$log->debug('Respuesta McAfee->' . print_r($respuesta, true));
$log->debug('Llamando metodo "ProcessRequestWS" url WS->' . $wsMcafeePostRequestUrl);
if ($respuesta != null) {
$mcAfeeTx->setMtrXmlRespuesta(print_r($respuesta->ProcessRequestWSResult, TRUE));
$arrayRespuesta = $this->procesarXmlRespuesta($respuesta);
$log->debug("Xml procesado en forma de array: " . print_r($arrayRespuesta, true));
if ($arrayRespuesta == NULL) {
$log->err('$arrayRespuesta == NULL para mcAfeeTx id->' . $mcAfeeTx->getMtrId() . 'PETICION:' . print_r($peticion, TRUE));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('$arrayRespuesta == NULL para mcAfeeTx id->' . $mcAfeeTx->getMtrId() . 'PETICION:' . print_r($peticion, TRUE));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->setUpdatedAt(new \DatetIme());
$mcAfeeTx->save();
$failedAlready = true;
} else {
$log->debug('$arrayRespuesta McAfee->' . print_r($arrayRespuesta, true));
$mcAfeeTx->setMtrCodigoRetorno($arrayRespuesta['mcAfeeReturnCode']);
$log->debug('Descripcion de la transaccion ->' . $arrayRespuesta['mcAfeeReturnDesc']);
if ($arrayRespuesta['mcAfeeReturnCode'] == '1000' || $arrayRespuesta['mcAfeeReturnCode'] == '5001' || $arrayRespuesta['mcAfeeReturnCode'] == '5002') {
//validacion datos Tx
if ($arrayRespuesta['mcAfeeCostumerId'] == $usuario->getUmcMcafeeCcid() && $arrayRespuesta['mcAfeeOrderPartnerRef'] == $mcAfeeTx->getMtrReferencia()) {
/**
* @todo agregar urlProduct.
*/
$mcAfeeTx->setMtrReferenciaMcafee($arrayRespuesta['mcAfeeOrderRef']);
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_SUCCESS);
$mcAfeeTx->setMtrProductdownloadurl($arrayRespuesta['mcAfeeProductDownloadUrl']);
$mcAfeeTx->setUpdatedAt(new \DateTime());
$usuario->setUmcMcafeeKeycard($arrayRespuesta['mcAfeeProductDownloadUrl']);
$usuario->setUmcMcafeeStatus($arrayRespuesta['mcAfeeReturnCode']);
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpEstado(McafeeTransaccionPendiente::ESTADO_EXITOSA);
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$usuario->save();
$mcAfeeTx->save();
$log->debug('Transaccion finalizada con exito!. id Transaccion->' . $mcAfeeTx->getMtrId());
} else {
$log->err('Respuesta Costumer Id->' . $arrayRespuesta['mcAfeeCostumerId'] . 'y Costumer id->' . $nuevoUsuario->getUmcMcafeeCcid());
$log->err('nro de referencia Respuesta->' . $arrayRespuesta['mcAfeeOrderPartnerRef'] . 'y nro referencia->' . $mcAfeeTx->getMtrReferencia());
$log->err('la transaccion fracaso debido a inconsistencia en los datos.' . print_r($arrayRespuesta, true));
$respuesta = $SOAP->ProcessRequestWS($peticion);
$log->debug('Respuesta McAfee->' . print_r($respuesta, true));
if ($respuesta != null) {
$mcAfeeTx->setMtrXmlRespuesta(print_r($respuesta->ProcessRequestWSResult, TRUE));
$arrayRespuesta = $this->procesarXmlRespuesta($respuesta);
$log->debug("Xml procesado en forma de array: " . print_r($arrayRespuesta, true));
if ($arrayRespuesta == NULL) {
$log->err('$arrayRespuesta == NULL para mcAfeeTx id->' . $mcAfeeTx->getMtrId() . 'PETICION:' . print_r($peticion, TRUE));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('$arrayRespuesta == NULL para mcAfeeTx id->' . $mcAfeeTx->getMtrId() . 'PETICION:' . print_r($peticion, TRUE));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->setUpdatedAt(new \DatetIme());
$mcAfeeTx->save();
$failedAlready = true;
} else {
$log->debug('$arrayRespuesta McAfee->' . print_r($arrayRespuesta, true));
$mcAfeeTx->setMtrCodigoRetorno($arrayRespuesta['mcAfeeReturnCode']);
$log->debug('Descripcion de la transaccion ->' . $arrayRespuesta['mcAfeeReturnDesc']);
if ($arrayRespuesta['mcAfeeReturnCode'] == '1000' || $arrayRespuesta['mcAfeeReturnCode'] == '5001' || $arrayRespuesta['mcAfeeReturnCode'] == '5002') {
//validacion datos Tx
if ($arrayRespuesta['mcAfeeCostumerId'] == $usuario->getUmcMcafeeCcid() && $arrayRespuesta['mcAfeeOrderPartnerRef'] == $mcAfeeTx->getMtrReferencia()) {
/**
* @todo agregar urlProduct.
*/
$mcAfeeTx->setMtrReferenciaMcafee($arrayRespuesta['mcAfeeOrderRef']);
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_SUCCESS);
$mcAfeeTx->setMtrProductdownloadurl($arrayRespuesta['mcAfeeProductDownloadUrl']);
$mcAfeeTx->setUpdatedAt(new \DateTime());
$usuario->setUmcMcafeeKeycard($arrayRespuesta['mcAfeeProductDownloadUrl']);
$usuario->setUmcMcafeeStatus($arrayRespuesta['mcAfeeReturnCode']);
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpEstado(McafeeTransaccionPendiente::ESTADO_EXITOSA);
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$usuario->save();
$mcAfeeTx->save();
$log->debug('Transaccion finalizada con exito!. id Transaccion->' . $mcAfeeTx->getMtrId());
} else {
$log->err('Respuesta Costumer Id->' . $arrayRespuesta['mcAfeeCostumerId'] . 'y Costumer id->' . $nuevoUsuario->getUmcMcafeeCcid());
$log->err('nro de referencia Respuesta->' . $arrayRespuesta['mcAfeeOrderPartnerRef'] . 'y nro referencia->' . $mcAfeeTx->getMtrReferencia());
$log->err('la transaccion fracaso debido a inconsistencia en los datos.' . print_r($arrayRespuesta, true));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('Respuesta Costumer Id->' . $arrayRespuesta['mcAfeeCostumerId'] . 'y Costumer id->' . $nuevoUsuario->getUmcMcafeeCcid());
$logError->err('nro de referencia Respuesta->' . $arrayRespuesta['mcAfeeOrderPartnerRef'] . 'y nro referencia->' . $mcAfeeTx->getMtrReferencia());
$logError->err('la transaccion fracaso debido a inconsistencia en los datos.' . print_r($arrayRespuesta, true));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$mcAfeeTx->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->save();
$failedAlready = true;
}
} else {//codigo de retorno distinto de 1000 y 5001
$log->err('returnCode distinto de 1000 y 5001 que son los exitosos.' . print_r($arrayRespuesta, true));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('Respuesta Costumer Id->' . $arrayRespuesta['mcAfeeCostumerId'] . 'y Costumer id->' . $nuevoUsuario->getUmcMcafeeCcid());
$logError->err('nro de referencia Respuesta->' . $arrayRespuesta['mcAfeeOrderPartnerRef'] . 'y nro referencia->' . $mcAfeeTx->getMtrReferencia());
$logError->err('la transaccion fracaso debido a inconsistencia en los datos.' . print_r($arrayRespuesta, true));
$logError->err('returnCode distinto de 1000 y 5001 que son los exitosos.' . print_r($arrayRespuesta, true));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$mcAfeeTx->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->setUpdatedAt(new \DateTime());
$mcAfeeTx->save();
$failedAlready = true;
}
} else {//codigo de retorno distinto de 1000 y 5001
$log->err('returnCode distinto de 1000 y 5001 que son los exitosos.' . print_r($arrayRespuesta, true));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('returnCode distinto de 1000 y 5001 que son los exitosos.' . print_r($arrayRespuesta, true));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->setUpdatedAt(new \DateTime());
$mcAfeeTx->save();
$failedAlready = true;
}
} else {
$log->err('respuesta NULL para peticion:' . print_r($peticion, true));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('respuesta NULL para peticion:' . print_r($peticion, true));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->setUpdatedAt(new \DateTime());
$mcAfeeTx->save();
$failedAlready = true;
}
} else {
$log->err('respuesta NULL para peticion:' . print_r($peticion, true));
} catch (\Exception $exc) {
$log->err('Error al llamar WS. Exception:' . $exc->getMessage() . ' | peticion:' . print_r($peticion, true));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('respuesta NULL para peticion:' . print_r($peticion, true));
$logError->err('Error al llamar WS. Exception:' . $exc->getMessage() . ' | peticion:' . print_r($peticion, true));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
......@@ -155,31 +187,16 @@ class McafeeMigrarPendientesCommand extends ContainerAwareCommand
$mcAfeeTx->save();
$failedAlready = true;
}
} catch (\Exception $exc) {
$log->err('Error al llamar WS. Exception:' . $exc->getMessage() . ' | peticion:' . print_r($peticion, true));
$logError = Utiles::setLog('command::migrarPendientes', 'error/wsMigrarUsuariosPendientesMcAfee');
$logError->err('Error al llamar WS. Exception:' . $exc->getMessage() . ' | peticion:' . print_r($peticion, true));
$contadorIntento = $usuarioPendiente->getMtpIntento() + 1;
$usuarioPendiente->setMtpIntento($contadorIntento);
$usuarioPendiente->setUpdatedAt(new \DateTime());
$usuarioPendiente->save();
$mcAfeeTx->setUpdatedAt(new \DateTime());
$mcAfeeTx->save();
$failedAlready = true;
}
}
$failedAlready = false;
$contadorIntento = 0;
endforeach;
$output->writeln("COMANDO FINALIZADO.");
}
private static function procesarXmlRespuesta($xmlRespuesta) {
$log = Utiles::setLog('WsBundle\Lib\controladorMcAfee::procesarXmlRespuesta', 'ws/wsMcAfee');
......@@ -187,7 +204,7 @@ class McafeeMigrarPendientesCommand extends ContainerAwareCommand
try {
$xObjRespuesta = simplexml_load_string($xmlRespuesta->ProcessRequestWSResult, 'SimpleXMLElement', LIBXML_NOCDATA); //LIBXML_NOCDATA atributos dentro de tags
// $log->debug('$xObjRespuesta->'.print_r($xObjRespuesta,true));
if (!is_object($xObjRespuesta)) {
$log->err('Error al instanciar objeto xml->' . $xmlRespuesta->ProcessRequestWSResult);
$logError = Utiles::setLog('WsBundle\Lib\controladorMcAfee::procesarXmlRespuesta', 'error/wsMcAfee');
......@@ -210,13 +227,13 @@ class McafeeMigrarPendientesCommand extends ContainerAwareCommand
// </RESPONSECONTEXT>
// </DATA>
//</PARTNERRESPONSECONTEXT>
$log->debug("objeto xml ".print_r($xObjRespuesta,true));
$log->debug("objeto xml " . print_r($xObjRespuesta, true));
$arrayRespuesta['mcAfeePartnerId'] = (string) $xObjRespuesta->HEADER->PARTNER->attributes()->PARTNER_ID;
$arrayRespuesta['mcAfeeCostumerId'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->attributes()->ID;
$arrayRespuesta['mcAfeeReturnCode'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->RETURNCODE;
$arrayRespuesta['mcAfeeReturnDesc'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->RETURNDESC;
$arrayRespuesta['mcAfeeProductDownloadUrl'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->PRODUCTDOWNLOADURL;
if (isset($xObjRespuesta->DATA->RESPONSECONTEXT->ORDER)) {
$arrayRespuesta['mcAfeeOrderPartnerRef'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->ORDER->attributes()->PARTNERREF;
......@@ -240,5 +257,5 @@ class McafeeMigrarPendientesCommand extends ContainerAwareCommand
return $arrayRespuesta;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment