jueves, 11 de abril de 2019

Validar campos para dejar escribir sólo Números

$(".numbers").keydown(function (e) {
                alert(e.keyCode);
            if($.inArray(e.keyCode,[46,8,9,27,13,40]) !== -1 ||
              (e.keyCode == 65 && e.ctrlKey === true) ||
                  (e.keyCode == 35 && e.keyCode <= 39)){
                return;
            }

            if ((e.shifkey|| (e.keyCode <48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)){
                e.preventDefault();
            }
        });

miércoles, 20 de marzo de 2019

SIEMPRE ME PASA

lunes, 8 de febrero de 2010

Fallo del Update con Linq to Entities

Hoy cogería al arquitecto responsable de los mensajes de error de Linq to Entities por el cuello y lo ahogaría – pero sin matarlo – por la tarde perdida siguiendo un mensaje de error que desorientaba y que me hizo recorrer los profundos vericuetos de San Google para, al final, hallar la solución en mis narices.

Compañeros: Cuando tienes una bonita entidad y le creas un método de actualización como:
public bool ModificarAsignacion(string codDeposito, int idTurno)
{
Madrid_MovilidadEntities dbv = new Madrid_MovilidadEntities();
var asig = (from asignacion in dbv.Conductores_Gruas
where asignacion.codigo_deposito == codDeposito
&& asignacion.id_turno == idTurno
&& asignacion.asignado == true
select asignacion);

if (asig.LongCount() > 0)
{
foreach (Conductores_Gruas asignados in asig)
{
asignados.asignado = false;
}
dbv.SaveChanges();
           }
Y cuando, lo lanzas se te queda tostado el servidor - si le tienes un Try Catch puesto – o te sale un mensaje espantoso que dice algo así:

“La búsqueda de no se pudo actualizar entityset 'conductores_gruas' porque tiene <definingquery> y no existe ningún elemento <updatefunction> en el elemento <modificationfunctionmapping> que admita la operación actual. no obtuvo ningún resultado.”

No te agobies buscando y buscando. Es más no te compliques la vida cambiando de tecnología e intentándolo con Linq to SQL (tampoco te va a funcionar y tampoco te va a decir porqué). La solución es mucho más sencilla.<

En tu modelo de datos hay una tabla sin clave o claves primarias
 
Lo cual lleva al ORM a avisarte (si es cierto que avisa, pero no le hice ni caso) y te crea una vista o entidad de esta tabla SOLO PARA LECTURA.

Por lo cual la solución es modificar el modelo de datos para que esa tabla tenga al menos una clave primaria. Y actualizar (yo lo borré y lo hice de nuevo) el modelo de entidades… y voala!!

miércoles, 13 de marzo de 2019

sql

USE [Martz]
GO
/****** Objeto:  StoredProcedure [dbo].[Martz_transpaso1]    Fecha de la secuencia de comandos: 03/13/2019 16:48:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE  [dbo].[Martz_transpaso1] @Sucursal as nvarchar(50),  @Accion as nvarchar(50), @Vale as nvarchar(50)
AS
Begin
Declare @varQuery nvarchar (1000)

Select @varQuery =
       

'SELECT suc.NoParte, suc.NombreProd, cat.Categoria, suc.Unidad, LR.Precio_Venta, suc.FechaIngreso, suc.Serie, suc.Autorizo, suc.Mensajero, alm.Mercancia, suc.FecSist, suc.Usuario, suc.IdTraspaso '+
'FROM '+ @Sucursal  +' AS suc INNER JOIN '+
'dbo.CatCategoria AS cat ON suc.IdCategoria = cat.IdCategoria INNER JOIN '+
'dbo.CatAlmacen AS alm ON suc.StMercancia = alm.StMercancia INNER JOIN '+
'dbo.Lista_Refacciones AS LR ON suc.NoParte = LR.Producto '+
'WHERE   suc.NoParte <>'''''

If  @Accion <>'Buscar'
Select @varQuery =  @varQuery + ' AND IdTraspaso ='''''


Else If @Vale IS NOT  NULL
  Select @varQuery =  @varQuery + ' AND IdTraspaso =''' +@Vale +''''

 Select @varQuery =  @varQuery +' ORDER BY id DESC'
EXECUTE sp_executesql  @varQuery ;

martes, 12 de febrero de 2019

sat.cs

sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Web;
using System.Xml;
using System.Xml.Linq;
using System.Threading;




namespace FE.Libreria
{

    public class Archivo
    {
       
        public HttpPostedFileBase File { get; set; }
        public HttpPostedFileBase Llave { get; set; }
        public string Password { get; set; }
        public short id{ get; set; }
        public short id1{ get; set; }
        public short id2{ get; set; }


    }


    public class Cadena
    {

        public string nombre { get; set; }
        public string rfc { get; set; }
        public string curp { get; set; }
        public string txtVigenciaDesde { get; set; }
        public string txtVigenciaHasta { get; set; }
        public string serial { get; set; }
        public string serial2 { get; set; }
        public string wValidaCert { get; set; }
        public string StatusCert { get; set; }
       
   
       
    }

    public class ValKey
    {
        public string mensaje { get; set; }
        public string Fin { get; set; }
    }
 

    public class SAT
    {







        public Cadena AbreCer(string certificado, string edo)
        {
            Cadena Cadena = new Cadena();

         
            string wAbreCert;
            string wVigencia;
            string wSHA1;
            string wSerial;
            string wnotBefore;
            string wnotAfter;
            string wModulusC;
            string wConvPEM;
            string wConvPEM2;
            string wValidacion;
            string wRFC;
            int differenceInDays;

            //-------------------------------------------------------------------------
            //Convierte el CERTIFICADO de formato DER a formato PEM con la siguiente instrucción de OpenSSL
            //openssl x509 -inform DER -outform PEM -in AAA010101AAAsd.cer -pubkey > AAA010101AAA.cer.pem
            //                                          |-----------------|         |-------------------|
            //                                                  |                             |
            //                                          Cerficado original             Certificado resultante
            //-------------------------------------------------------------------------
            //wConvPEM = "C:\\OpenSSL-Win64\\Bin\\openssl x509 -inform DER -outform PEM -in " & CertPathName & " -pubkey > C:\\OpenSSL-Win64\\Bin\\" & CertName & ".pem"
            //-------------------------------------------------------------------------
            //Extrae el contenido del CERTIFICADO con la siguiente instrucción de OpenSSL
            //openssl x509 -in AAA010101AAA.cer.pem –text > Cert1.TXT
            //                 |-------------------|        |-------|
            //                           |                      |
            //                Certificado en formato PEM    Archivo Resultante
            //-------------------------------------------------------------------------
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert2.BAT"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert2.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert1.BAT"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert1.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val2.BAT"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val2.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val1.BAT"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val1.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert3.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert3.txt");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Vigencia.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Vigencia.txt");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\sha1.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\sha1.txt");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\serial.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\serial.txt");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotBefore.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotBefore.txt");
                // Console.Write("Hola mundo");
                //Console.ReadKey();
            }

            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotAfter.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotAfter.txt");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\RFC.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\RFC.txt");
                // Console.Write("Hola mundo");
                //Console.ReadKey();
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\ModulusC.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\ModulusC.txt");
            }
            if (File.Exists("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt"))
            {
                File.Delete("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt");
            }



            //-------------------------------------------------------------------------
            //No quitar la comilla inicial a las siguientes 4 lineas, ya que son
            //solo de ejemplo del uso de OpenSSL
            //-------------------------------------------------------------------------
            //openssl x509 -in cert.pem -sha1 'Para obtener la huella SHA1
            //openssl x509 -in cert.pem -noout -sha1 -serial 'Para obtener NUMERO DE SERIE
            //openssl x509 -in cert.pem -noout -sha1 -startdate 'Para obtener el campo notBefore
            //openssl x509 -in cert.pem -noout -sha1 -enddate 'Para obtener el campo notAfter
            wConvPEM = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -inform DER -outform PEM -in " + certificado + ".cer -pubkey > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem";
            wConvPEM2 = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in " + certificado + ".cer -inform DER -out C:\\FE\\" + edo + "\\Test\\" + certificado + ".pem -outform PEM";
            wAbreCert = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -text > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert1.txt";
            wVigencia = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -noout -dates > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Vigencia.txt";
            wSHA1 = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -sha1 > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\SHA1.txt";
            wSerial = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -noout -sha1 -serial > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Serial.txt";
            wnotBefore = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -noout -sha1 -startdate > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotBefore.txt";
            wnotAfter = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -noout -sha1 -enddate > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotAfter.txt";
            wRFC = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -noout -sha1 -subject > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\RFC.txt";
            wModulusC = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl x509 -in C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\" + certificado + ".pem -noout -modulus > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\ModulusC.txt";
           
           

            //Crea el archivo Cert1.BAT
            StreamWriter escritura = File.AppendText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert1.bat");
            escritura.WriteLine(wConvPEM);
            escritura.WriteLine(wConvPEM2);
            escritura.WriteLine(wAbreCert);
            escritura.WriteLine(wSHA1);
            escritura.WriteLine(wSerial);
            escritura.WriteLine(wnotBefore);
            escritura.WriteLine(wnotAfter);
            escritura.WriteLine(wRFC);
            escritura.WriteLine(wModulusC);
            escritura.WriteLine(wVigencia);
           
            escritura.Close();
            //-------------------------------------------------------------------------
            //Ejecuta el archivo BAT
            //Se utiliza WSH en lugar de Shell wAppPath & "Bin\Cert1.bat", vbHide
            //para que continue con el proceso hasta que haya terminado de ejecutar el BAT
            //wRUN = oShl.Run("C:\\OpenSSL-Win64\\Bin\\Cert1.bat", SW_HIDE, True);
            StreamWriter escritura5 = File.AppendText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert2.bat");

            escritura5.WriteLine("cd/");
            escritura5.WriteLine("CD FE");
            escritura5.WriteLine("CD "+ edo);
            escritura5.WriteLine("CD OpenSSL-Win64");
            escritura5.WriteLine("CD Bin");
            escritura5.WriteLine("Start Cert1.bat");
            escritura5.Close();

           

            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.EnableRaisingEvents = true;
            proc.StartInfo.FileName = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Cert2.bat";
            proc.Start();
            proc.WaitForExit();


            for (int i = 0; i < 5; i++)
            {
               
                Thread.Sleep(5000);
            }

            //Call oShl.Popup("Se ha leido la información del certificado", 4, "WSH terminado", vbInformation)
            //-------------------------------------------------------------------------
           
            StreamReader Lectura;
            try
            {
                Lectura = File.OpenText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\RFC.txt");
                Cadena.nombre = Lectura.ReadToEnd();
                Lectura.Close();
            }
            catch (FileNotFoundException fe)
            {
                Console.WriteLine("!Error¡" + fe.Message);
            }
            try
            {
                Lectura = File.OpenText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotBefore.txt");
                Cadena.txtVigenciaDesde = Lectura.ReadLine();
                Lectura.Close();
            }
            catch (FileNotFoundException fe)
            {
                Console.WriteLine("!Error¡" + fe.Message);
            }

            try
            {
                Lectura = File.OpenText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotAfter.txt");
                Cadena.txtVigenciaHasta = Lectura.ReadLine();
                Lectura.Close();
            }
            catch (FileNotFoundException fe)
            {
                Console.WriteLine("!Error¡" + fe.Message);
            }

           
           
         

            try
            {
                Lectura = File.OpenText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Serial.txt");
                Cadena.serial = Lectura.ReadLine();
                Lectura.Close();

            }
            catch (FileNotFoundException fe)
            {
                Console.WriteLine("!Error¡" + fe.Message);
            }

           

   

            if ((Cadena.nombre)!= null)
            {
                Cadena.nombre = Cadena.nombre.Replace("subject", "");
                Cadena.nombre = Cadena.nombre.Replace("CN", "");
                Cadena.nombre = Cadena.nombre.Replace("name", "");
                Cadena.nombre = Cadena.nombre.Replace("O", "");
                Cadena.nombre = Cadena.nombre.Replace("C", "");
                Cadena.nombre = Cadena.nombre.Replace("emailAddress", "");
                Cadena.nombre = Cadena.nombre.Replace("x500UniqueIdentifier", "");
                Cadena.nombre = Cadena.nombre.Replace("serialNumber", "");
                Cadena.nombre = Cadena.nombre.Replace("=", "");
                string[] campos = new string[8];
                char[] delimitador = { '/' };
                campos = Cadena.nombre.Split(delimitador);
                Cadena.nombre = campos[3].Trim();
             
                Cadena.rfc = campos[5].Trim();
                Cadena.curp = campos[6].Trim();
             

            }

            if ((Cadena.txtVigenciaDesde) != null)
            {
               
                char[] MyChar = { ':', '=' };
                string txtNotBefore = Cadena.txtVigenciaDesde.TrimStart(MyChar);
                Cadena.txtVigenciaDesde = GetDateGS(txtNotBefore);
            }

            if ((Cadena.txtVigenciaHasta) != null)
            {
                char[] MyChar = { ':', '=' };
                string txtNotAfter = Cadena.txtVigenciaHasta.TrimStart(MyChar);
                Cadena.txtVigenciaHasta = GetDateGS(txtNotAfter);

                // Difference in days, hours, and minutes.
                TimeSpan ts = Convert.ToDateTime(Cadena.txtVigenciaHasta) - DateTime.Now;

                 differenceInDays = ts.Days;

                switch (differenceInDays)
                {
                    case 30:
                        Cadena.wValidaCert = "30 Dias antes del vencimiento";
                        break;
                    case 15:
                        Cadena.wValidaCert = "15 Dias antes del vencimiento";
                        break;
                    case 8:
                        Cadena.wValidaCert = "8  Dias antes del vencimiento";
                        break;
                 
                       
                    default:
                        if((differenceInDays)>=0){
                            Cadena.wValidaCert = "Vence en: " + differenceInDays + " dias ";

                        }
                        if((differenceInDays)<0){
                            Cadena.wValidaCert = "Vencido";
                        }
                    break;   
                }
            }

            if ((Cadena.serial) != null)
            {
                char[] MyChar = { 's', 'e', 'r', 'i', 'a', 'l', '=' };
                Cadena.serial2 = Cadena.serial.TrimStart(MyChar);
                Cadena.serial = Cadena.serial2.Substring(1, 1) + Cadena.serial2.Substring(3, 1) + Cadena.serial2.Substring(5, 1) + Cadena.serial2.Substring(7, 1) + Cadena.serial2.Substring(9, 1) + Cadena.serial2.Substring(11, 1) + Cadena.serial2.Substring(13, 1) + Cadena.serial2.Substring(15, 1) + Cadena.serial2.Substring(17, 1) + Cadena.serial2.Substring(19, 1) + Cadena.serial2.Substring(21, 1) + Cadena.serial2.Substring(23, 1) + Cadena.serial2.Substring(25, 1) + Cadena.serial2.Substring(27, 1) + Cadena.serial2.Substring(29, 1) + Cadena.serial2.Substring(31, 1) + Cadena.serial2.Substring(33, 1) + Cadena.serial2.Substring(35, 1) + Cadena.serial2.Substring(37, 1) + Cadena.serial2.Substring(39, 1);

            }

            if ((Cadena.wValidaCert) != "Vencido")
            {



                string Val1 = Cadena.serial2.Substring(23, 1);
                wValidacion = "";
                switch (Val1)
                {
                    case "0":

                        wValidacion = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl ocsp -issuer C:\\FE\\" + edo + "\\Test\\AC0_SAT.pem -cert C:\\FE\\" + edo + "\\Test\\" + certificado + ".pem -text -url https://cfdi.sat.gob.mx/edofiel -VAfile C:\\FE\\" + edo + "\\Test\\ocsp.ac0_sat.pem -header host cfdi.sat.gob.mx > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt";

                        break;
                    case "1":
                        wValidacion = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl ocsp -issuer C:\\FE\\" + edo + "\\Test\\AC1_SAT.pem -cert C:\\FE\\" + edo + "\\Test\\" + certificado + ".pem -text -url https://cfdi.sat.gob.mx/edofiel -VAfile C:\\FE\\" + edo + "\\Test\\ocsp.ac1_sat.pem -header host cfdi.sat.gob.mx > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt";

                        break;
                    case "2":
                        wValidacion = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl ocsp -issuer C:\\FE\\" + edo + "\\Test\\AC2_SAT.pem -cert C:\\FE\\" + edo + "\\Test\\" + certificado + ".pem -text -url https://cfdi.sat.gob.mx/edofiel -VAfile C:\\FE\\" + edo + "\\Test\\ocsp.ac2_sat.pem -header host cfdi.sat.gob.mx > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt";

                        break;
                    case "3":
                        wValidacion = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl ocsp -issuer C:\\FE\\" + edo + "\\Test\\AC3_SAT.pem -cert C:\\FE\\" + edo + "\\Test\\" + certificado + ".pem -text -url https://cfdi.sat.gob.mx/edofiel -VAfile C:\\FE\\" + edo + "\\Test\\ocsp.ac3_sat.pem -header host cfdi.sat.gob.mx > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt";

                        break;
                    default:
                        wValidacion = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\openssl ocsp -issuer C:\\FE\\" + edo + "\\Test\\AC4_SAT.pem -cert C:\\FE\\" + edo + "\\Test\\" + certificado + ".pem -text -url https://cfdi.sat.gob.mx/edofiel -VAfile C:\\FE\\" + edo + "\\Test\\ocsp.ac4_sat.pem -header host cfdi.sat.gob.mx > C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt";

                        break;
                }

                StreamWriter escritura9 = File.AppendText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val1.bat");
                escritura9.WriteLine(wValidacion);
                escritura9.Close();

                StreamWriter escritura4 = File.AppendText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val2.bat");

                escritura4.WriteLine("cd/");
                escritura4.WriteLine("CD FE");
                escritura4.WriteLine("CD " + edo);
                escritura4.WriteLine("CD OpenSSL-Win64");
                escritura4.WriteLine("CD Bin");
                escritura4.WriteLine("Start Val1.bat");
                escritura4.Close();



                System.Diagnostics.Process proc1 = new System.Diagnostics.Process();
                proc1.EnableRaisingEvents = true;
                proc1.StartInfo.FileName = "C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Val2.bat";
                proc1.Start();
                proc1.WaitForExit();

                for (int i = 0; i < 10; ++i)
                {
                    Thread.Sleep(3000);
                }

                try
                {
                    Lectura = File.OpenText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\Validacion.txt");
                    Cadena.StatusCert = Lectura.ReadToEnd();
                    Lectura.Close();
                   
                   
                   
                    if ((Cadena.StatusCert) != null)
                    {
                        Cadena.StatusCert = Cadena.StatusCert.Replace("  ", " ");
                        string[] arreglo = Cadena.StatusCert.Split(' ');
                        for (int i = 0; i < arreglo.Length; i++)
                        {

                            if (arreglo[i].Trim() == "good")
                            {
                                Cadena.StatusCert = "Bueno";
                                break;
                            }
                            if (arreglo[i].Trim() == "revoqued" || arreglo[i].Trim() == "revoked\n" || arreglo[i].Trim() == "revoked")
                            {
                                Cadena.StatusCert = "Revocado";
                                break;
                            }

                        }

                    }


                    else
                    {
                        Cadena.StatusCert = "Revocado";
                    }
                }
                catch (FileNotFoundException fe)
                {
                    Console.WriteLine("!Error¡" + fe.Message);
                }




            }     
            return Cadena;
        }

       
       
        public static string GetDateGS(string wFechaGMT)
       
        {
             //El formato de la fecha viene en (GMT) Greenwich Mean Time
             //notBefore=Aug 21 15:22:10 2008 GMT
             //'notAfter=Aug 21 15:22:10 2010 GMT
            string wFe1;
            string wDay;
            string wMonth;
            string wMonthN;
            string wDayN;
            string wYear;
            string wDate;
            string resultado;
           
            wFechaGMT = wFechaGMT.Trim();
            wFechaGMT = wFechaGMT.ToUpper();
            wFe1 = "";
           
           
            if (wFechaGMT.Substring(0,9) == "NOTBEFORE")
            {
                wFe1 = wFechaGMT.Substring( 10, 21);
            }
           
            if (wFechaGMT.Substring(0, 8) == "NOTAFTER") {
                wFe1 = wFechaGMT.Substring(9, 21);
            }
            if (wFe1 == "") {
                resultado = "";
                return resultado;
            }
            wDay = wFe1.Substring( 4, 2);
            wMonth =wFe1.Substring(0, 3);
            wYear = wFe1.Substring(16, 5);

            switch (wDay.Trim())
            {
                case "1":
                    wDayN = "01";
                    break;
                case "2":
                    wDayN = "02";
                    break;
                case "3":
                    wDayN = "03";
                    break;
                case "4":
                    wDayN = "04";
                    break;
                case "5":
                    wDayN = "05";
                    break;
                case "6":
                    wDayN = "06";
                    break;
                case "7":
                    wDayN = "07";
                    break;
                case "8":
                    wDayN = "08";
                    break;
                case "9":
                    wDayN = "09";
                    break;
                default:
                    wDayN = wDay;
                    break;
            }

            switch (wMonth)
            {
                case  "JAN":
                    wMonthN = "01";
                    break;
                case "FEB":
                    wMonthN = "02";
                    break;
                case "MAR":
                    wMonthN = "03";
                    break;
                case  "APR":
                    wMonthN = "04";
                    break;
                case  "MAY":
                    wMonthN = "05";
                    break;
                case  "JUN":
                    wMonthN = "06";
                    break;
                case  "JUL":
                    wMonthN = "07";
                    break;
                case  "AUG":
                    wMonthN = "08";
                    break;
                case  "SEP":
                    wMonthN = "09";
                    break;
                case  "OCT":
                    wMonthN = "10";
                    break;
                case  "NOV" :
                    wMonthN = "11";
                    break;
                case "DEC":
                    wMonthN = "12";
                    break;
                default:
                    wMonthN = "00";
                    break;
            }
            wDate = wDayN + "/" + wMonthN + "/" + wYear;
   //GetDateGS = QuitaChars(wDate, "0123456789-/");
            resultado = wDate;
            return resultado;
        }

        public ValKey AbreKey( string key, string Password, string edo1)
        {
            ValKey Valkey = new ValKey();
           

            StreamReader Lectura;
           
            string wConvPEM;
            string wModulusK;
            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key1.BAT"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key1.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key2.BAT"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key2.BAT");
            }

            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey1.BAT"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey1.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey.BAT"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey.BAT");
            }
            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\pkey.key.pem"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\pkey.key.pem");
            }

            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusK.txt"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusK.txt");
            }
            if (File.Exists("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusK.txt"))
            {
                File.Delete("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusK.txt");
            }
  //'------------------------------------------------------------------
  //'Crea el archivo SELLO.BAT que utilizará para sellar las facturas
  //'-------------------------------------------------------------------
           
         
 


  //'------------------------------------------------------------------
  //'Convierte la llave de formato DER a formato PEM
  //'-------------------------------------------------------------------
            wConvPEM = "C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\openssl pkcs8 -inform DER -in " + key + ".key -passin pass:" + Password + " -out C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\pkey.key.pem";
            StreamWriter escritura1 = File.AppendText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key1.bat");
            escritura1.WriteLine(wConvPEM);
            escritura1.Close();
  //'Se utiliza WSH en lugar de Shell wAppPath & "Bin\\key1.bat", vbNormalFocus
  //'para que continue con el proceso hasta que haya terminado de ejecutar el BAT
   //wRUN = oShl.Run("C:\\OpenSSL-Win64\\Bin\\key1.bat", SW_SHOWNORMAL, True); //'SW_SHOWNORMAL  SW_SHOWMAXIMIZED
            StreamWriter escritura4 = File.AppendText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key2.bat");
            escritura4.WriteLine("cd/");
            escritura4.WriteLine("CD FE");
            escritura4.WriteLine("CD "+ edo1 +"");
            escritura4.WriteLine("CD OpenSSL-Win64");
            escritura4.WriteLine("CD Bin");
            escritura4.WriteLine("Start Key1.bat");
            escritura4.Close();
           
           
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.EnableRaisingEvents = true;
            proc.StartInfo.FileName = "C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\Key2.bat";
            proc.Start();
            proc.WaitForExit();

            for (int i = 0; i < 10; ++i)
            {
                Thread.Sleep(2000);
            }
         
         
            try{
                string text = File.ReadAllText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\pkey.key.pem");
                if (text.Length == 0)
                {
                    Valkey.Fin="PASSWORD_MAL";
                }
                else
                {


                    //'------------------------------------------------------------------
                    //'Crea el MODULUS de la llave para verificar que corresponda al certificado
                    //'-------------------------------------------------------------------
                    wModulusK = "C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\openssl rsa  -in C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\pkey.key.pem  -noout -modulus > C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusK.txt";

                    StreamWriter escritura2 = File.AppendText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey.bat");
                    escritura2.WriteLine(wModulusK);
                    escritura2.Close();

                    StreamWriter escrituras = File.AppendText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey1.bat");

                    escrituras.WriteLine("cd/");
                    escrituras.WriteLine("CD FE");
                    escrituras.WriteLine("CD " + edo1 + "");
                    escrituras.WriteLine("CD OpenSSL-Win64");
                    escrituras.WriteLine("CD Bin");
                    escrituras.WriteLine("Start ModulKey.bat");
                    escrituras.Close();


                    System.Diagnostics.Process proc1 = new System.Diagnostics.Process();
                    proc1.EnableRaisingEvents = true;
                    proc1.StartInfo.FileName = "C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulKey1.bat";
                    proc1.Start();
                    //wRUN = oShl.Run("C:\\OpenSSL-Win64\\Bin\\ModulKey.bat", SW_HIDE, True);

                    //'------------------------------------------------------------------
                    //'Comprueba que la llave y el certificado correspondan each other
                    //'-------------------------------------------------------------------

                    for (int i = 0; i < 10; ++i)
                    {
                        Thread.Sleep(2000);
                    }
                    string txtModulusC = "";
                    string txtModulusK = "";


                    try
                    {
                        Lectura = File.OpenText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusC.txt");
                        txtModulusC = Lectura.ReadLine();
                        Lectura.Close();
                    }
                    catch (FileNotFoundException fe)
                    {
                        Console.WriteLine("!Error¡" + fe.Message);
                    }

                    try
                    {
                        Lectura = File.OpenText("C:\\FE\\" + edo1 + "\\OpenSSL-Win64\\Bin\\ModulusK.txt");
                        txtModulusK = Lectura.ReadLine();
                        Lectura.Close();
                    }
                    catch (FileNotFoundException fe)
                    {
                        Console.WriteLine("!Error¡" + fe.Message);
                    }

                    if (txtModulusC != txtModulusK)
                    {
                        Valkey.mensaje ="Incorrecta";
                        Valkey.Fin = "Incorrecto";
                    }
                    else
                    {
                        Valkey.mensaje = "Correcta";
                        Valkey.Fin = "Proceso concluido exitosamente";
                    }

                   
                } 
            }
            catch (FileNotFoundException fe)
            {
                Console.WriteLine("!Error¡" + fe.Message);
            }
            return Valkey;
        }

   
public  object True { get; set; }}
}

lunes, 11 de febrero de 2019

MVC lectura de archivos TXT

(int.Parse(Variable))
Ayuda a cambiar de string a int una varible.


Ayuda a leer la información en una archivo .txt y graba la información en una variable
try
            {
                Lectura = File.OpenText("C:\\FE\\" + edo + "\\OpenSSL-Win64\\Bin\\NotAfter.txt");
                Cadena.txtVigenciaHasta = Lectura.ReadLine();
                Lectura.Close();
            }
            catch (FileNotFoundException fe)
            {
                Console.WriteLine("!Error¡" + fe.Message);
            }



lunes, 21 de enero de 2019

MVC LLenar una lista con la misma información de la tabla




Ayuda a llenar una lista con la información de una tabla quitando con el distinct la duplicidad y la lista se creara con un el mismo dato para clave y para nombre

ViewBag.Unidad  = entidades.Lista_Refacciones.Select(p => new LstUnidad { cveUnidad = p.Unidad, nomUnidad = p.Unidad }).Distinct().ToList<LstUnidad>();

Ayuda en la creación del catalogo de sepomex y en la creación de los catálogos que se auto llenan.


Para la colonia, municipio y estado.