Пример #1
0
        //REQ2086 - RSIS002 - FIN

        //REQ2086 - RSIS001 - INICIO
        public IList <ActCredResult> ActualizarCredenciales(string user, string credAnt, string credNew, out string mensaje, out int codigoError)
        {
            //Resultado como lista de objetos
            IList <ActCredResult> resultados = new List <ActCredResult>();
            /*Conexión a SOAP*/
            var soapDataClient = new ReniecConsultaDniPortTypeClient();
            //Instanciacion de petición de consumo de servicio web
            var aux    = new peticionActualizarCredencial();
            var utilSP = new ExecSPUtil();
            //Obtener valores de base de datos
            var    resultArray = utilSP.EjecGetCred(user);
            string credNoEncript;

            //Usuario no encontrado en BD
            if (resultArray[0] == null && resultArray[1] == null && resultArray[2] == null && resultArray[3] == null)
            {
                codigoError = 1;
                mensaje     = ErrorMessagesUtil.USUARIO_NO_REGISTRADO;
            }
            else
            {
                //Desencriptación
                if (resultArray[3] != null && resultArray[3] != "")
                {
                    credNoEncript = Encriptacion.DesEncriptarCadena(resultArray[3]);
                }
                else
                {
                    credNoEncript = resultArray[2];
                }
                //Ejecución
                if (credNoEncript == credAnt)
                {
                    aux.credencialAnterior = credAnt;
                    aux.credencialNueva    = credNew;
                    aux.nuDni = resultArray[2];
                    aux.nuRuc = ConfigurationManager.AppSettings["nuRucReniecService"];
                    //Consumo de servicio web
                    var actualizarCred = soapDataClient.actualizarcredencial(aux);

                    if (actualizarCred != null)
                    {
                        if (actualizarCred.coResultado == "0000")
                        {
                            //Encriptación
                            var    credEncript    = Encriptacion.EncriptarCadena(credNew);
                            var    credAntEncript = Encriptacion.EncriptarCadena(credAnt);
                            string resultAct      = utilSP.EjectActCred(user, credAntEncript, credEncript);
                            if (resultAct.Equals("Y"))
                            {
                                codigoError = 0;
                                mensaje     = actualizarCred.deResultado;
                                var result = XmlUtil.parseActCred(actualizarCred.coResultado, mensaje);
                                resultados.Add(result);
                            }
                            else
                            {
                                codigoError = 1;
                                mensaje     = ErrorMessagesUtil.NO_ACTUALIZO_BD;//Error critico: se realiza consumo pero no procedimiento almacenado
                            }
                        }
                        else
                        {
                            codigoError = 1;
                            mensaje     = actualizarCred.deResultado;//Resultado de consumo de servicio no satisfactorio
                        }
                    }
                    else
                    {
                        codigoError = 1;
                        mensaje     = ErrorMessagesUtil.NO_OBTUVO_RESULTADO_ACTUALIZACION;//No se efectuo el consumo del servicio
                    }
                }
                else
                {
                    codigoError = 1;
                    mensaje     = ErrorMessagesUtil.CREDENCIALES_INCONSISTENTES;//Credenciales incorrectas
                }
            }
            return(resultados);
        }