fix multi device-version 2

parent 3a166c62
<?php
namespace BackendBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use AppBundle\Model\UsuariosMcafeeMovistarMigrar;
use AppBundle\Model\UsuariosMcafeeMovistarMigrarQuery;
use AppBundle\Model\UsuarioMcafee;
use AppBundle\Model\UsuarioMcafeeQuery;
use AppBundle\Model\McafeeTransaccion;
use AppBundle\Model\McafeeTransaccionQuery;
use AppBundle\Model\McafeeTransaccionPendiente;
use AppBundle\Model\McafeeTransaccionPendienteQuery;
use AppBundle\Model\McafeeUltimoProcesoMigracion;
use AppBundle\Model\McafeeUltimoProcesoMigracionQuery;
use AppBundle\Lib\Utiles;
class McafeeMigrarUsuariosCommand extends ContainerAwareCommand {
const LENGUAJE = "es";
const TIMEOUT = 20;
const SKU_DESTINY = "419-92860-1usermds";
protected function configure() {
$this
->setName('mcafee:migrar-usuarios-v2')
->setDescription('comando que sirve para migrar los usuarios del sistema a la tabla usuario_mcafee-version 2')
;
}
protected function execute(InputInterface $input, OutputInterface $output) {
$output->writeln("COMANDO INICIADO.");
$log = Utiles::setLog('command::migrarUsuariosSuscripcion', 'ws/wsMigrarUsuariosMcAfee');
$esTxPendiente = false;
$failedAlready = false;
$ultimoUsuarioProcesado = null;
$cantidadProcesados = 0;
$cantidadPendientes = 0;
$usuariosMax = Utiles::getParametroConfiguracion("numero_usuarios");
$limiteAuxUsuarios =Utiles::getParametroConfiguracion("limite_inicio");
$log->debug("obteniendo ultimo indice procesado...");
$ultimoIndiceUsuarioProcesado = McafeeUltimoProcesoMigracionQuery::create()//arreglar es ultimo indice procesado
->orderByMupId("DESC")
->findOne();
if ($ultimoIndiceUsuarioProcesado == null)
$condicion = "usuarios_mcafee_movistar_migrar.id > 0 and usuarios_mcafee_movistar_migrar.Device_Type != 'MultiDevice'";
//else $condicion = "usuarios_mcafee_movistar_migrar.id > ".$ultimoIndiceUsuarioProcesado->getUltimoUmcId();
else $condicion = "usuarios_mcafee_movistar_migrar.id >= $limiteAuxUsuarios and usuarios_mcafee_movistar_migrar.id > ".$ultimoIndiceUsuarioProcesado->getUltimoUmcId()." and usuarios_mcafee_movistar_migrar.Device_Type != 'MultiDevice'";
$log->debug("condicion a analizar(todos menos multi-device) ".$condicion);
$log->debug("obteniendo usuarios candidatos a migrar...");
$usuariosAMigrar = UsuariosMcafeeMovistarMigrarQuery::create()
->where($condicion)
->limit($usuariosMax)
->find();
$log->debug("cantidad de usuarios a migrar..." . count($usuariosAMigrar));
$log->debug("obteniendo partner ID...");
$mcAfeePartnerId = Utiles::getParametroConfiguracion('mcafee_partner_id');
$log->debug("comenzando proceso de migracion...");
foreach ($usuariosAMigrar as $index => $usuarioMigrar):
$log->debug("generando item a procesar...");
$customerContextId = 'GLN_' . $usuarioMigrar->getId() . '_' . $usuarioMigrar->getAreaTel();
$nuevoUsuario = new UsuarioMcafee();
$nuevoUsuario->setUmcMcafeeTipoProducto(UsuarioMcafee::TIPO_MULTIDEVICE);
$nuevoUsuario->setUmcMcafeeAffid(419);
$nuevoUsuario->setUmcMcafeeKeycard(null);
$nuevoUsuario->setUmcMcafeeSku($usuarioMigrar->getSku());
$nuevoUsuario->setUmcMcafeeCcid($usuarioMigrar->getCcid());
$nuevoUsuario->setUmcMcafeeEmail($usuarioMigrar->getEmailAddress());
$nuevoUsuario->setUmcMovistarEmail($usuarioMigrar->getCorreo());
$nuevoUsuario->setUmcMovistarRut($usuarioMigrar->getRut());
if($usuarioMigrar->getFonoContactoMovil1() != 0){
$telMovil = $usuarioMigrar->getFonoContactoMovil1();
}else {
$telMovil = $usuarioMigrar->getFonoContactoMovil2();
}
$nuevoUsuario->setUmcMovil($telMovil);
$nuevoUsuario->setUmcFijo($usuarioMigrar->getAreaTel());
$nuevoUsuario->setUmcMovistarAny(explode("@", $usuarioMigrar->getEmailAddress())[0]);
$nuevoUsuario->setUmcMovistarActivo(UsuarioMcafee::ACTIVO_MOVISTAR_TRUE);
$nuevoUsuario->setUmcParametroEncriptado($nuevoUsuario->generarUsuarioEncriptadoParaMovistar());
$nuevoUsuario->setUmcCustomerId(null);
$nuevoUsuario->setUmcPermiteEmail(1);
$nuevoUsuario->setUmcFechaDesuscripcionEmail(null);
$nuevoUsuario->setUmcEliminado(UsuarioMcafee::ELIMINADO_FALSE);
$nuevoUsuario->setCreatedAt(new \DateTime());
$nuevoUsuario->setUpdatedAt(new \DateTime());
$nuevoUsuario->save();
$log->debug("comenzando a generar registro de la transaccion..");
$mcAfeeTx = new McafeeTransaccion();
$mcAfeeTx->setMtrTipo(McafeeTransaccion::TIPO_ALTA);
$mcAfeeTx->generarNroReferencia();
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_NO_ENVIADA);
$mcAfeeTx->setUsuarioMcafee($nuevoUsuario);
$xmlPartnerContext = '<PARTNERCONTEXT>
<HEADER>
<PARTNER PARTNER_ID="' . $mcAfeePartnerId . '"/>
</HEADER>
<DATA>
<CUSTOMERCONTEXT ID="' . $nuevoUsuario->getUmcMcafeeCcid() . '" REQUESTTYPE="UPDATE">
<ACCOUNT/>
<ORDER PARTNERREF="' . $mcAfeeTx->getMtrReferencia() . '" REF="">
<ITEMS>
<ITEM SKU="' . self::SKU_DESTINY . '" QTY="1" ACTION="TU">
<SOURCESKU>' . $usuarioMigrar->getSku() . '</SOURCESKU></ITEM>
</ITEMS>
</ORDER>
</CUSTOMERCONTEXT>
</DATA>
</PARTNERCONTEXT> ';
$log->debug("xml generado para el item :" . $xmlPartnerContext);
$mcAfeeTx->setMtrXmlEnvio($xmlPartnerContext);
$mcAfeeTx->save();
$peticion = array('requestXML' => $xmlPartnerContext);
$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));
$log->debug('Llamando metodo "ProcessRequestWS" url WS->' . $wsMcafeePostRequestUrl);
$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) {
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_FRACASADA);
$mcAfeeTx->save();
McafeeTransaccionPendiente::generarTransaccionPendiente($nuevoUsuario, McafeeTransaccionPendiente::TIPO_ALTA);
$log->err('$arrayRespuesta == NULL para mcAfeeTx id->' . $mcAfeeTx->getMtrId() . 'PETICION:' . print_r($peticion, TRUE));
$logError = Utiles::setLog('command::migrarUsuariosSuscripcion', 'error/wsMigrarUsuariosMcAfee');
$logError->err('$arrayRespuesta == NULL para mcAfeeTx id->' . $mcAfeeTx->getMtrId() . 'PETICION:' . print_r($peticion, TRUE));
$cantidadPendientes++;
$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'] == $nuevoUsuario->getUmcMcafeeCcid() && $arrayRespuesta['mcAfeeOrderPartnerRef'] == $mcAfeeTx->getMtrReferencia()) {
/**
* @todo agregar urlProduct.
*/
$mcAfeeTx->setMtrReferenciaMcafee($arrayRespuesta['mcAfeeOrderRef']);
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_SUCCESS);
$mcAfeeTx->setMtrProductdownloadurl($arrayRespuesta['mcAfeeProductDownloadUrl']);
$nuevoUsuario->setUmcMcafeeSku(self::SKU_DESTINY);
$nuevoUsuario->setUmcMcafeeKeycard($arrayRespuesta['mcAfeeProductDownloadUrl']);
$nuevoUsuario->setUmcMcafeeStatus($arrayRespuesta['mcAfeeReturnCode']);
$nuevoUsuario->save();
$mcAfeeTx->save();
$log->debug('Transaccion finalizada con exito!. id Transaccion->' . $mcAfeeTx->getMtrId());
$cantidadProcesados++;
} else {
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_FRACASADA);
$mcAfeeTx->save();
McafeeTransaccionPendiente::generarTransaccionPendiente($nuevoUsuario, McafeeTransaccionPendiente::TIPO_ALTA);
$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::migrarUsuariosSuscripcion', 'error/wsMigrarUsuariosMcAfee');
$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));
$cantidadPendientes++;
$failedAlready = true;
}
} else {//codigo de retorno distinto de 1000 y 5001
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_FRACASADA);
$mcAfeeTx->save();
McafeeTransaccionPendiente::generarTransaccionPendiente($nuevoUsuario, McafeeTransaccionPendiente::TIPO_ALTA);
$log->err('returnCode distinto de 1000 y 5001 que son los exitosos.' . print_r($arrayRespuesta, true));
$logError = Utiles::setLog('command::migrarUsuariosSuscripcion', 'error/wsMigrarUsuariosMcAfee');
$logError->err('returnCode distinto de 1000 y 5001 que son los exitosos.' . print_r($arrayRespuesta, true));
$cantidadPendientes++;
$failedAlready = true;
}
}
} else {//$respuesta ==NULL
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_FRACASADA);
$mcAfeeTx->save();
McafeeTransaccionPendiente::generarTransaccionPendiente($nuevoUsuario, McafeeTransaccionPendiente::TIPO_ALTA);
$log->err('respuesta NULL para peticion:' . print_r($peticion, true));
$logError = Utiles::setLog('command::migrarUsuariosSuscripcion', 'error/wsMigrarUsuariosMcAfee');
$logError->err('respuesta NULL para peticion:' . print_r($peticion, true));
$cantidadPendientes++;
$failedAlready = true;
}
} catch (\Exception $exc) {
$mcAfeeTx->setMtrEstado(McafeeTransaccion::ESTADO_FRACASADA);
$mcAfeeTx->save();
if (!$esTxPendiente) {
McafeeTransaccionPendiente::generarTransaccionPendiente($nuevoUsuario, McafeeTransaccionPendiente::TIPO_ALTA);
}
$log->err('Error al llamar WS. Exception:' . $exc->getMessage() . ' | peticion:' . print_r($peticion, true));
$logError = Utiles::setLog('command::migrarUsuariosSuscripcion', 'error/wsMigrarUsuariosMcAfee');
$logError->err('Error al llamar WS. Exception:' . $exc->getMessage() . ' | peticion:' . print_r($peticion, true));
//return FALSE;
$cantidadPendientes++;
$failedAlready = true;
}
$ultimoUsuarioProcesado = $usuarioMigrar;
endforeach;
//GENERANDO REGISTRO DE PROCESO
$registroProceso = new McafeeUltimoProcesoMigracion();
$registroProceso->setUsuariosMcafeeMovistarMigrar($ultimoUsuarioProcesado);
$registroProceso->setMupCantidadProcesados($cantidadProcesados);
$registroProceso->setMupCantidadPendientes($cantidadPendientes);
$registroProceso->setCreatedAt(new \DateTime());
$registroProceso->setUpdatedAt(new \DateTime());
$registroProceso->save();
$output->writeln('COMANDO FINALIZADO.');
}
/**
* Procesa respuesta mcafee, extrae valores y atributos y devuelve un array con estos valores.
*
* @param string $xmlRespuesta
* @return array
*/
private static function procesarXmlRespuesta($xmlRespuesta) {
$log = Utiles::setLog('WsBundle\Lib\controladorMcAfee::procesarXmlRespuesta', 'ws/wsMcAfee');
$arrayRespuesta = Array();
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');
$logError->err('Error al instanciar objeto xml->' . $xmlRespuesta->ProcessRequestWSResult);
} else {
//<PARTNERRESPONSECONTEXT>
// <HEADER>
// <PARTNER PARTNER_ID="817" />
// </HEADER>
// <DATA>
// <RESPONSECONTEXT ID="GL_19_56962451306">
// <RETURNCODE>5001</RETURNCODE>
// <RETURNDESC>Transaction success: Warning, Email Address Exists.</RETURNDESC>
// <ORDER PARTNERREF="GL_ES_SUS_166_05032015124229" REF="NCS507747897" />
// <ACCOUNT>
// <EMAILADDRESS>luis.arcos@gearlabs.cl</EMAILADDRESS>
// <PASSWORD><![CDATA[asd123123]]></PASSWORD>
// </ACCOUNT>
// <PRODUCTDOWNLOADURL><![CDATA[http://home.mcafee.com/downloads/keycard.aspx?affid=817&culture=ES-MX&tk=iUMYjxCvNsr_CFQUtZRUYEr2xAeMOTPNFmlw3xXs53KnUoRZDtyoIzRyf5Ad_hr_0&tp=48]]></PRODUCTDOWNLOADURL>
// </RESPONSECONTEXT>
// </DATA>
//</PARTNERRESPONSECONTEXT>
$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;
$arrayRespuesta['mcAfeeOrderRef'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->ORDER->attributes()->REF;
}
if (isset($xObjRespuesta->DATA->RESPONSECONTEXT->ACCOUNT)) {
$arrayRespuesta['mcAfeeEmailUsuario'] = (string) $xObjRespuesta->DATA->RESPONSECONTEXT->ACCOUNT->EMAILADDRESS;
}
}
} catch (\Exception $ex) {
$log->crit("Error al leer detalles XML." . $xmlRespuesta->ProcessRequestWSResult);
$log->crit("Detalle error " . print_r($ex, TRUE));
$logError = Utiles::setLog('WsBundle\Lib\controladorMcAfee::procesarXmlRespuesta', 'error/wsMcAfee');
$logError->crit("Error al leer detalles XML." . $xmlRespuesta->ProcessRequestWSResult);
$logError->crit("Detalle error " . print_r($ex, TRUE));
$arrayRespuesta = array();
}
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