Skip to content

StevenU21/PaymentManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PaymentManager

PaymentManager es una aplicación desarrollada con .NET MAUI para la gestión integral de pagos, usuarios y planes de pago. El proyecto está diseñado con una arquitectura modular y flexible, integrando servicios, validaciones avanzadas y soporte multiplataforma gracias a .net.

¿Para qué sirve?

Permite administrar usuarios, métodos de pago, planes de pago y registrar pagos de manera eficiente. Es ideal para organizaciones, clubes, academias o cualquier entidad que requiera llevar el control de cobros periódicos y la gestión de sus miembros.

Funcionalidades principales

  • Gestión de usuarios: Alta, edición, baja y validación de usuarios.
  • Gestión de métodos de pago: Registro y administración de diferentes formas de pago (efectivo, transferencia, etc.).
  • Planes de pago: Creación y asignación de planes personalizados a usuarios.
  • Registro de pagos: Permite registrar pagos realizados por los usuarios, asociándolos a planes y métodos.
  • Historial y reportes: Consulta de historial de pagos, periodos y estado de cada usuario.
  • Notificaciones: Envío de mensajes por email y SMS (integración con servicios externos).
  • Validaciones avanzadas: Sistema de validación tipo Laravel para asegurar la integridad de los datos.
  • Filtros y búsqueda: Herramientas para filtrar y buscar usuarios, pagos y planes.

Lógica de negocio destacada

  • Asignación de planes: Un usuario puede tener uno o varios planes de pago activos, con periodos definidos y reglas de vencimiento.
  • Pagos periódicos: El sistema calcula automáticamente los periodos de pago y permite registrar pagos parciales o totales.
  • Validación de unicidad: Evita duplicidad de usuarios, pagos o asignaciones mediante reglas de validación.
  • Mensajería automatizada: Permite enviar recordatorios o confirmaciones de pago de forma automática.
  • Extensibilidad: La lógica de negocio está desacoplada en servicios, facilitando la extensión o personalización.

Descripción técnica y arquitectura

  • Multiplataforma: Compatible con Android, iOS, Windows, MacCatalyst y Tizen gracias a .NET MAUI.
  • Persistencia: Utiliza Entity Framework Core con SQLite para almacenamiento local.
  • Servicios desacoplados: Implementación de servicios para usuarios, métodos de pago, planes, pagos, mensajería (email/SMS) y validaciones.
  • UI moderna: Uso de CommunityToolkit.Maui y Syncfusion para una experiencia de usuario rica y personalizable.

Sistema de validaciones tipo Laravel

El sistema de validaciones implementado es potente y flexible, inspirado en el sistema de validación de Laravel:

  • Reglas como string: Puedes definir reglas en formato string separadas por |, igual que en Laravel.
  • Mensajes personalizados: Permite asociar mensajes específicos para cada regla y campo.
  • Validaciones comunes: Incluye reglas como required, min, max, regex, email, digits, between y unique.
  • Extensible: Puedes agregar fácilmente nuevas reglas o validaciones personalizadas en el método ApplyRule.
  • Declarativo y reutilizable: La validación es declarativa y fácil de mantener, reutilizable para distintos modelos mediante validadores que heredan de BaseValidator<T>.

Sugerencias y mejoras posibles

  • Permitir reglas condicionales o personalizadas mediante delegados.
  • Soportar mensajes de error por defecto globales.
  • Validación de arrays o colecciones.
  • Validaciones anidadas para objetos complejos.

Estructura del proyecto

  • Models/ — Modelos de dominio (User, Payment, PaymentPlan, etc.)
  • Services/ — Servicios para lógica de negocio y acceso a datos
  • Validators/ — Validadores y lógica de validación
  • Data/ — Contexto de base de datos (EF Core)
  • Views/ y ViewModels/ — Vistas y lógica de presentación (MVVM)
  • Resources/ — Recursos gráficos y fuentes