domingo, 8 de noviembre de 2020

SOAP con PHP en pleno 2020

 Hola, me animé a hacer unos vídeos abordando como hacer un SOAP service en PHP. Están en youtube:



Parte 1

Parte 2

jueves, 22 de octubre de 2020

Using Custom Property Attributes in C#

 Hi, in this post I want to share what I learned just today.

Well, I had to create an excel file and that's very common right? The problem for me was that I couldn't use bad practices like put the column name as raw. The solution was pretty simple: Custom Attributes.

If you prefer it, you can go to the code:

https://gist.github.com/Lvcios/2e460783e9b72e628b7f6da440f2a4ac

 

If you are still here thanks. I'm not going to explain so much about System.Reflection which is the class that let us do this.

So, this is our row model and we are gonna use the custom attributes for the headers.

class ClientsExcelReport
    {
        [ExcelColumnName("Nombre del cliente")]
        [ExcelColumnComment("Algun comentario tonto sobre la columna")]
        public string ClientName { get; set; }
        [ExcelColumnName("País")]
        public string ClientCountry { get; set; }
        [ExcelColumnName("Edad")]
        public string Age { get; set; }
        public string Status { get; set; }
    }


Now, the attribute class for each attribute:

public class ExcelColumnNameAttribute : Attribute
    {
        public ExcelColumnNameAttribute(string columnName)
        {
            ColumnName = columnName;
        }

        public string ColumnName { get; }
    }

    public class ExcelColumnCommentAttribute : Attribute
    {
        public ExcelColumnCommentAttribute(string comment)
        {
            Comment = comment;
        }

        public string Comment { get; }
    }


Finally, the main function:


static void Main(string[] args)
        {
            var properties = typeof(ClientsExcelReport).GetProperties();
            foreach(var prop in properties)
            {
                Console.WriteLine($"Prop name: {prop.Name}");
                if(Attribute.IsDefined(prop, typeof(ExcelColumnNameAttribute)))
                    Console.WriteLine(prop.GetCustomAttribute<ExcelColumnNameAttribute>().ColumnName);
                if (Attribute.IsDefined(prop, typeof(ExcelColumnCommentAttribute)))
                    Console.WriteLine(prop.GetCustomAttribute<ExcelColumnCommentAttribute>().Comment);
                Console.WriteLine("**************");
            }
        }



domingo, 12 de julio de 2020

La Lista Negra del SAT

Hace años que no posteo en el blog pero aprovecharé que ya tiene cierto potencial apareciendo en búsquedas como "semáforo pic" y "master programmer" y cosillas de electrónica digital.

Bueno, les presento un proyecto en el que ando trabajando actualmente y que surgió a partir de las necesidades de mi chamba actual. Al momento que escribo este post me encuentro desarrollando sistemas que ayudan a la contabilidad de la empresa así como a validar facturas y cosas así. En fin, una de las validaciones que hacemos al momento de subir una factura es verificar si el emisor está en la lista negra del SAT.

Pero... ¿Por que es importante realizar esa validación? Ah pues porque básicamente si alguna de las personas físicas o morales con las que hiciste negocio y facturaste está en esa lista entonces tu no puedes realizar correctamente tu declaración de impuestos y muchísimo menos apelar una devolución de los mismos. Es como el refrán, dime con quien andas y te diré quien eres.

Bueno, ya mucho bla bla bla. Les  dejo el enlace al portal:

https://lalistanegradelsat.com.mx/



Tiene un endpoint para una API REST y otro  para un webservice SOAP para la vieja guardia de los cuales hablaré en otro post.

Por el momento solo deja hacer 10 búsquedas por dos cosas:
1. No tengo tanto dinero para pagar un ancho de banda muy alto
2. Quiero obtener un cliente al menos para poder costear el server que está en Digital Ocean

Ya, eso era todo. En un próximo post hablaré del aspecto técnico. Solo puedo adelantar que use C# con netCore, React con Typescript y PHP para el webservice SOAP... ah verdad esa no se la esperaban.

lunes, 10 de febrero de 2020

Cómo usar jquery y vanilla js en Laravel con WebPack

Laravel por defecto usa webpack para administrar las librerias del front tales como React, VueJs, Angular, Jquery, etc. ¿Pero que pasa cuando queremos usar funciones de vanilla js? Probablemente nos encontremos un mensaje indicando que la función no está definida. Por fortuna, Laravel usa algo que se llama LaravelMix.

LaravelMix nos ayuda a mezclar y minificar todos nuestros archivos JS. Entonces, para poder usar Jquery y Vanilla JS en Laravel nuestro archivo webpack.mix.js debe lucir de la siguiente manera:


const mix = require('laravel-mix');
.
.
mix.scripts(['resources/js/models/invoiceModel.js'], 'public/js/models.js')
mix.copy('node_modules/jquery/dist/jquery.min.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css');

Aquí lo importante es la instrucción mix.scripts. Dicha función recibe un arreglo con los paths de nuestros archivos JS para mezclarlos y minificarlos en la ruta que se le indica en el segundo parámetor.

Por ejemplo, mi archivo invoiceModel.js contiene una función así:


function hello(){
    alert("hello")
}

Laravel Mix toma ese archivo como un JS no compilable y lo mezcla en un archivo model.js:













Y para Jquery, bueno, aquí solo hace una copia del path donde está jquery instalado, en este caso la instalación se hizo usando NPM, por eso está en node_modules. De esa manera ya se pueden usar todas las funciones de jquery:






 Bueno, eso es todo. Si requieren más detalle dejen sus comentarios para aclarar dudas vía correo o skype. Saludos.