Hola, me animé a hacer unos vídeos abordando como hacer un SOAP service en PHP. Están en youtube:
domingo, 8 de noviembre de 2020
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
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
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.