// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Rs_system.Data;

#nullable disable

namespace RS_system.Migrations
{
    [DbContext(typeof(ApplicationDbContext))]
    partial class ApplicationDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.5")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Rs_system.Models.Articulo", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<int>("CantidadGlobal")
                        .HasColumnType("integer")
                        .HasColumnName("cantidad_global");

                    b.Property<int>("CategoriaId")
                        .HasColumnType("integer")
                        .HasColumnName("categoria_id");

                    b.Property<string>("Codigo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("codigo");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("creado_por");

                    b.Property<string>("Descripcion")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("descripcion");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<int>("EstadoId")
                        .HasColumnType("integer")
                        .HasColumnName("estado_id");

                    b.Property<DateOnly?>("FechaAdquisicion")
                        .HasColumnType("date")
                        .HasColumnName("fecha_adquisicion");

                    b.Property<string>("ImagenUrl")
                        .HasColumnType("text")
                        .HasColumnName("imagen_url");

                    b.Property<string>("Marca")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("marca");

                    b.Property<string>("Modelo")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("modelo");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.Property<string>("NumeroSerie")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("numero_serie");

                    b.Property<decimal>("Precio")
                        .HasColumnType("numeric")
                        .HasColumnName("precio");

                    b.Property<string>("TipoControl")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("tipo_control");

                    b.Property<int>("UbicacionId")
                        .HasColumnType("integer")
                        .HasColumnName("ubicacion_id");

                    b.HasKey("Id");

                    b.HasIndex("CategoriaId");

                    b.HasIndex("EstadoId");

                    b.HasIndex("UbicacionId");

                    b.ToTable("articulos");
                });

            modelBuilder.Entity("Rs_system.Models.AsistenciaCulto", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<int?>("AdultosGeneral")
                        .HasColumnType("integer")
                        .HasColumnName("adultos_general");

                    b.Property<int?>("Amigos")
                        .HasColumnType("integer")
                        .HasColumnName("amigos");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasColumnType("text")
                        .HasColumnName("creado_por");

                    b.Property<int?>("EmbajadoresCristo")
                        .HasColumnType("integer")
                        .HasColumnName("embajadores_cristo");

                    b.Property<DateTime>("FechaHoraInicio")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("fecha_hora_inicio");

                    b.Property<int?>("HermanasMisioneras")
                        .HasColumnType("integer")
                        .HasColumnName("hermanas_misioneras");

                    b.Property<int?>("HermanosFraternidad")
                        .HasColumnType("integer")
                        .HasColumnName("hermanos_fraternidad");

                    b.Property<int?>("Ninos")
                        .HasColumnType("integer")
                        .HasColumnName("ninos");

                    b.Property<string>("Observaciones")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("observaciones");

                    b.Property<int>("TipoConteo")
                        .HasColumnType("integer")
                        .HasColumnName("tipo_conteo");

                    b.Property<int>("TipoCulto")
                        .HasColumnType("integer")
                        .HasColumnName("tipo_culto");

                    b.Property<int?>("TotalManual")
                        .HasColumnType("integer")
                        .HasColumnName("total_manual");

                    b.Property<int?>("Visitas")
                        .HasColumnType("integer")
                        .HasColumnName("visitas");

                    b.HasKey("Id");

                    b.ToTable("asistencias_culto");
                });

            modelBuilder.Entity("Rs_system.Models.Categoria", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("creado_por");

                    b.Property<string>("Descripcion")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("descripcion");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.HasKey("Id");

                    b.ToTable("categorias");
                });

            modelBuilder.Entity("Rs_system.Models.ConfiguracionSistema", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<string>("Categoria")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("categoria");

                    b.Property<string>("Clave")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("clave");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Descripcion")
                        .HasColumnType("text")
                        .HasColumnName("descripcion");

                    b.Property<bool>("EsEditable")
                        .HasColumnType("boolean")
                        .HasColumnName("es_editable");

                    b.Property<bool>("EsPublico")
                        .HasColumnType("boolean")
                        .HasColumnName("es_publico");

                    b.Property<string>("Grupo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("grupo");

                    b.Property<string>("Opciones")
                        .HasColumnType("jsonb")
                        .HasColumnName("opciones");

                    b.Property<int>("Orden")
                        .HasColumnType("integer")
                        .HasColumnName("orden");

                    b.Property<string>("TipoDato")
                        .IsRequired()
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("tipo_dato");

                    b.Property<string>("ValidacionRegex")
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("validacion_regex");

                    b.Property<string>("Valor")
                        .HasColumnType("text")
                        .HasColumnName("valor");

                    b.HasKey("Id");

                    b.ToTable("configuracion_sistema");
                });

            modelBuilder.Entity("Rs_system.Models.ContabilidadRegistro", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<string>("Descripcion")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("descripcion");

                    b.Property<DateTime>("Fecha")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("fecha");

                    b.Property<long>("GrupoTrabajoId")
                        .HasColumnType("bigint")
                        .HasColumnName("grupo_trabajo_id");

                    b.Property<decimal>("Monto")
                        .HasColumnType("decimal(18,2)")
                        .HasColumnName("monto");

                    b.Property<long?>("ReporteMensualId")
                        .HasColumnType("bigint")
                        .HasColumnName("reporte_mensual_id");

                    b.Property<int>("Tipo")
                        .HasColumnType("integer")
                        .HasColumnName("tipo");

                    b.HasKey("Id");

                    b.HasIndex("GrupoTrabajoId");

                    b.HasIndex("ReporteMensualId");

                    b.ToTable("contabilidad_registros");
                });

            modelBuilder.Entity("Rs_system.Models.DescuentoOfrenda", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<string>("Concepto")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("concepto");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<decimal>("Monto")
                        .HasColumnType("numeric")
                        .HasColumnName("monto");

                    b.Property<long>("OfrendaId")
                        .HasColumnType("bigint")
                        .HasColumnName("ofrenda_id");

                    b.HasKey("Id");

                    b.HasIndex("OfrendaId");

                    b.ToTable("descuentos_ofrenda");
                });

            modelBuilder.Entity("Rs_system.Models.EstadoArticulo", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<string>("Color")
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("color");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("creado_por");

                    b.Property<string>("Descripcion")
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("descripcion");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("nombre");

                    b.HasKey("Id");

                    b.ToTable("estados_articulos");
                });

            modelBuilder.Entity("Rs_system.Models.Existencia", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<int>("ArticuloId")
                        .HasColumnType("integer")
                        .HasColumnName("articulo_id");

                    b.Property<int>("Cantidad")
                        .HasColumnType("integer")
                        .HasColumnName("cantidad");

                    b.Property<int>("UbicacionId")
                        .HasColumnType("integer")
                        .HasColumnName("ubicacion_id");

                    b.HasKey("Id");

                    b.HasIndex("ArticuloId");

                    b.HasIndex("UbicacionId");

                    b.ToTable("existencias");
                });

            modelBuilder.Entity("Rs_system.Models.GrupoTrabajo", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Descripcion")
                        .HasColumnType("text")
                        .HasColumnName("descripcion");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.HasKey("Id");

                    b.ToTable("grupos_trabajo");
                });

            modelBuilder.Entity("Rs_system.Models.Miembro", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<bool>("BautizadoEspirituSanto")
                        .HasColumnType("boolean")
                        .HasColumnName("bautizado_espiritu_santo");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("creado_por");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<DateOnly?>("FechaIngresoCongregacion")
                        .HasColumnType("date")
                        .HasColumnName("fecha_ingreso_congregacion");

                    b.Property<long?>("GrupoTrabajoId")
                        .HasColumnType("bigint")
                        .HasColumnName("grupo_trabajo_id");

                    b.Property<long>("PersonaId")
                        .HasColumnType("bigint")
                        .HasColumnName("persona_id");

                    b.Property<string>("TelefonoEmergencia")
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("telefono_emergencia");

                    b.HasKey("Id");

                    b.HasIndex("GrupoTrabajoId");

                    b.HasIndex("PersonaId");

                    b.ToTable("miembros");
                });

            modelBuilder.Entity("Rs_system.Models.Modulo", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Icono")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("icono");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.Property<int>("Orden")
                        .HasColumnType("integer")
                        .HasColumnName("orden");

                    b.Property<int?>("ParentId")
                        .HasColumnType("integer")
                        .HasColumnName("parent_id");

                    b.HasKey("Id");

                    b.HasIndex("ParentId");

                    b.ToTable("modulos");
                });

            modelBuilder.Entity("Rs_system.Models.MovimientoInventario", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<int>("ArticuloId")
                        .HasColumnType("integer")
                        .HasColumnName("articulo_id");

                    b.Property<int>("Cantidad")
                        .HasColumnType("integer")
                        .HasColumnName("cantidad");

                    b.Property<int?>("EstadoAnteriorId")
                        .HasColumnType("integer")
                        .HasColumnName("estado_anterior_id");

                    b.Property<int?>("EstadoNuevoId")
                        .HasColumnType("integer")
                        .HasColumnName("estado_nuevo_id");

                    b.Property<DateTime>("Fecha")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("fecha");

                    b.Property<string>("Observacion")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("observacion");

                    b.Property<string>("TipoMovimiento")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("tipo_movimiento");

                    b.Property<int?>("UbicacionDestinoId")
                        .HasColumnType("integer")
                        .HasColumnName("ubicacion_destino_id");

                    b.Property<int?>("UbicacionOrigenId")
                        .HasColumnType("integer")
                        .HasColumnName("ubicacion_origen_id");

                    b.Property<string>("UsuarioId")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("usuario_id");

                    b.HasKey("Id");

                    b.HasIndex("ArticuloId");

                    b.HasIndex("EstadoAnteriorId");

                    b.HasIndex("EstadoNuevoId");

                    b.HasIndex("UbicacionDestinoId");

                    b.HasIndex("UbicacionOrigenId");

                    b.ToTable("movimientos_inventario");
                });

            modelBuilder.Entity("Rs_system.Models.Ofrenda", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<string>("Concepto")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("concepto");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<decimal>("Monto")
                        .HasColumnType("numeric")
                        .HasColumnName("monto");

                    b.Property<long>("RegistroCultoId")
                        .HasColumnType("bigint")
                        .HasColumnName("registro_culto_id");

                    b.HasKey("Id");

                    b.HasIndex("RegistroCultoId");

                    b.ToTable("ofrendas");
                });

            modelBuilder.Entity("Rs_system.Models.Permiso", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<string>("Codigo")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("codigo");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Descripcion")
                        .HasColumnType("text")
                        .HasColumnName("descripcion");

                    b.Property<bool>("EsMenu")
                        .HasColumnType("boolean")
                        .HasColumnName("es_menu");

                    b.Property<string>("Icono")
                        .HasColumnType("text")
                        .HasColumnName("icono");

                    b.Property<int>("ModuloId")
                        .HasColumnType("integer")
                        .HasColumnName("modulo_id");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.Property<int>("Orden")
                        .HasColumnType("integer")
                        .HasColumnName("orden");

                    b.Property<string>("Url")
                        .HasColumnType("text")
                        .HasColumnName("url");

                    b.HasKey("Id");

                    b.HasIndex("ModuloId");

                    b.ToTable("permisos");
                });

            modelBuilder.Entity("Rs_system.Models.Persona", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<string>("Apellidos")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("apellidos");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Direccion")
                        .HasColumnType("text")
                        .HasColumnName("direccion");

                    b.Property<string>("Dui")
                        .HasMaxLength(12)
                        .HasColumnType("character varying(12)")
                        .HasColumnName("dui");

                    b.Property<string>("Email")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("email");

                    b.Property<DateOnly?>("FechaNacimiento")
                        .HasColumnType("date")
                        .HasColumnName("fecha_nacimiento");

                    b.Property<string>("FotoUrl")
                        .HasColumnType("text")
                        .HasColumnName("foto_url");

                    b.Property<string>("Genero")
                        .HasMaxLength(1)
                        .HasColumnType("character varying(1)")
                        .HasColumnName("genero");

                    b.Property<string>("Nit")
                        .HasMaxLength(17)
                        .HasColumnType("character varying(17)")
                        .HasColumnName("nit");

                    b.Property<string>("Nombres")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombres");

                    b.Property<string>("Telefono")
                        .HasMaxLength(20)
                        .HasColumnType("character varying(20)")
                        .HasColumnName("telefono");

                    b.HasKey("Id");

                    b.ToTable("personas");
                });

            modelBuilder.Entity("Rs_system.Models.RegistroCulto", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("creado_por");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<DateOnly>("Fecha")
                        .HasColumnType("date")
                        .HasColumnName("fecha");

                    b.Property<string>("Observaciones")
                        .HasMaxLength(500)
                        .HasColumnType("character varying(500)")
                        .HasColumnName("observaciones");

                    b.HasKey("Id");

                    b.ToTable("registros_culto");
                });

            modelBuilder.Entity("Rs_system.Models.ReporteMensualContable", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<int>("Anio")
                        .HasColumnType("integer")
                        .HasColumnName("anio");

                    b.Property<bool>("Cerrado")
                        .HasColumnType("boolean")
                        .HasColumnName("cerrado");

                    b.Property<DateTime>("FechaCreacion")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("fecha_creacion");

                    b.Property<long>("GrupoTrabajoId")
                        .HasColumnType("bigint")
                        .HasColumnName("grupo_trabajo_id");

                    b.Property<int>("Mes")
                        .HasColumnType("integer")
                        .HasColumnName("mes");

                    b.Property<decimal>("SaldoInicial")
                        .HasColumnType("decimal(18,2)")
                        .HasColumnName("saldo_inicial");

                    b.HasKey("Id");

                    b.HasIndex("GrupoTrabajoId");

                    b.ToTable("reportes_mensuales_contables");
                });

            modelBuilder.Entity("Rs_system.Models.RolPermiso", b =>
                {
                    b.Property<int>("RolId")
                        .HasColumnType("integer")
                        .HasColumnName("rol_id");

                    b.Property<int>("PermisoId")
                        .HasColumnType("integer")
                        .HasColumnName("permiso_id");

                    b.Property<DateTime>("AsignadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("asignado_en");

                    b.HasKey("RolId", "PermisoId");

                    b.HasIndex("PermisoId");

                    b.ToTable("roles_permisos");
                });

            modelBuilder.Entity("Rs_system.Models.RolSistema", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<string>("Codigo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("codigo");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Descripcion")
                        .HasColumnType("text")
                        .HasColumnName("descripcion");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.HasKey("Id");

                    b.ToTable("roles_sistema");
                });

            modelBuilder.Entity("Rs_system.Models.RolUsuario", b =>
                {
                    b.Property<long>("UsuarioId")
                        .HasColumnType("bigint")
                        .HasColumnName("usuario_id");

                    b.Property<int>("RolId")
                        .HasColumnType("integer")
                        .HasColumnName("rol_id");

                    b.Property<DateTime>("AsignadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("asignado_en");

                    b.HasKey("UsuarioId", "RolId");

                    b.HasIndex("RolId");

                    b.ToTable("roles_usuario");
                });

            modelBuilder.Entity("Rs_system.Models.Ubicacion", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("CreadoPor")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("creado_por");

                    b.Property<string>("Descripcion")
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)")
                        .HasColumnName("descripcion");

                    b.Property<bool>("Eliminado")
                        .HasColumnType("boolean")
                        .HasColumnName("eliminado");

                    b.Property<string>("Nombre")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("nombre");

                    b.Property<string>("Responsable")
                        .HasMaxLength(100)
                        .HasColumnType("character varying(100)")
                        .HasColumnName("responsable");

                    b.HasKey("Id");

                    b.ToTable("ubicaciones");
                });

            modelBuilder.Entity("Rs_system.Models.Usuario", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint")
                        .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<bool>("Activo")
                        .HasColumnType("boolean")
                        .HasColumnName("activo");

                    b.Property<DateTime>("ActualizadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("actualizado_en");

                    b.Property<DateTime>("CreadoEn")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("creado_en");

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("email");

                    b.Property<string>("HashContrasena")
                        .IsRequired()
                        .HasColumnType("text")
                        .HasColumnName("hash_contrasena");

                    b.Property<string>("NombreUsuario")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("nombre_usuario");

                    b.Property<long?>("PersonaId")
                        .HasColumnType("bigint")
                        .HasColumnName("persona_id");

                    b.Property<DateTime?>("UltimoLogin")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("ultimo_login");

                    b.HasKey("Id");

                    b.HasIndex("PersonaId");

                    b.ToTable("usuarios");
                });

            modelBuilder.Entity("Rs_system.Models.Articulo", b =>
                {
                    b.HasOne("Rs_system.Models.Categoria", "Categoria")
                        .WithMany()
                        .HasForeignKey("CategoriaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.EstadoArticulo", "Estado")
                        .WithMany()
                        .HasForeignKey("EstadoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.Ubicacion", "Ubicacion")
                        .WithMany()
                        .HasForeignKey("UbicacionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Categoria");

                    b.Navigation("Estado");

                    b.Navigation("Ubicacion");
                });

            modelBuilder.Entity("Rs_system.Models.ContabilidadRegistro", b =>
                {
                    b.HasOne("Rs_system.Models.GrupoTrabajo", "GrupoTrabajo")
                        .WithMany()
                        .HasForeignKey("GrupoTrabajoId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.ReporteMensualContable", "ReporteMensual")
                        .WithMany("Registros")
                        .HasForeignKey("ReporteMensualId")
                        .OnDelete(DeleteBehavior.Cascade);

                    b.Navigation("GrupoTrabajo");

                    b.Navigation("ReporteMensual");
                });

            modelBuilder.Entity("Rs_system.Models.DescuentoOfrenda", b =>
                {
                    b.HasOne("Rs_system.Models.Ofrenda", "Ofrenda")
                        .WithMany("Descuentos")
                        .HasForeignKey("OfrendaId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Ofrenda");
                });

            modelBuilder.Entity("Rs_system.Models.Existencia", b =>
                {
                    b.HasOne("Rs_system.Models.Articulo", "Articulo")
                        .WithMany()
                        .HasForeignKey("ArticuloId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.Ubicacion", "Ubicacion")
                        .WithMany()
                        .HasForeignKey("UbicacionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Articulo");

                    b.Navigation("Ubicacion");
                });

            modelBuilder.Entity("Rs_system.Models.Miembro", b =>
                {
                    b.HasOne("Rs_system.Models.GrupoTrabajo", "GrupoTrabajo")
                        .WithMany("Miembros")
                        .HasForeignKey("GrupoTrabajoId")
                        .OnDelete(DeleteBehavior.Restrict);

                    b.HasOne("Rs_system.Models.Persona", "Persona")
                        .WithMany()
                        .HasForeignKey("PersonaId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();

                    b.Navigation("GrupoTrabajo");

                    b.Navigation("Persona");
                });

            modelBuilder.Entity("Rs_system.Models.Modulo", b =>
                {
                    b.HasOne("Rs_system.Models.Modulo", "Parent")
                        .WithMany("SubModulos")
                        .HasForeignKey("ParentId");

                    b.Navigation("Parent");
                });

            modelBuilder.Entity("Rs_system.Models.MovimientoInventario", b =>
                {
                    b.HasOne("Rs_system.Models.Articulo", "Articulo")
                        .WithMany()
                        .HasForeignKey("ArticuloId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.EstadoArticulo", "EstadoAnterior")
                        .WithMany()
                        .HasForeignKey("EstadoAnteriorId");

                    b.HasOne("Rs_system.Models.EstadoArticulo", "EstadoNuevo")
                        .WithMany()
                        .HasForeignKey("EstadoNuevoId");

                    b.HasOne("Rs_system.Models.Ubicacion", "UbicacionDestino")
                        .WithMany()
                        .HasForeignKey("UbicacionDestinoId");

                    b.HasOne("Rs_system.Models.Ubicacion", "UbicacionOrigen")
                        .WithMany()
                        .HasForeignKey("UbicacionOrigenId");

                    b.Navigation("Articulo");

                    b.Navigation("EstadoAnterior");

                    b.Navigation("EstadoNuevo");

                    b.Navigation("UbicacionDestino");

                    b.Navigation("UbicacionOrigen");
                });

            modelBuilder.Entity("Rs_system.Models.Ofrenda", b =>
                {
                    b.HasOne("Rs_system.Models.RegistroCulto", "RegistroCulto")
                        .WithMany("Ofrendas")
                        .HasForeignKey("RegistroCultoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("RegistroCulto");
                });

            modelBuilder.Entity("Rs_system.Models.Permiso", b =>
                {
                    b.HasOne("Rs_system.Models.Modulo", "Modulo")
                        .WithMany("Permisos")
                        .HasForeignKey("ModuloId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Modulo");
                });

            modelBuilder.Entity("Rs_system.Models.ReporteMensualContable", b =>
                {
                    b.HasOne("Rs_system.Models.GrupoTrabajo", "GrupoTrabajo")
                        .WithMany()
                        .HasForeignKey("GrupoTrabajoId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();

                    b.Navigation("GrupoTrabajo");
                });

            modelBuilder.Entity("Rs_system.Models.RolPermiso", b =>
                {
                    b.HasOne("Rs_system.Models.Permiso", "Permiso")
                        .WithMany()
                        .HasForeignKey("PermisoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.RolSistema", "Rol")
                        .WithMany("RolesPermisos")
                        .HasForeignKey("RolId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Permiso");

                    b.Navigation("Rol");
                });

            modelBuilder.Entity("Rs_system.Models.RolUsuario", b =>
                {
                    b.HasOne("Rs_system.Models.RolSistema", "Rol")
                        .WithMany("RolesUsuario")
                        .HasForeignKey("RolId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Rs_system.Models.Usuario", "Usuario")
                        .WithMany("RolesUsuario")
                        .HasForeignKey("UsuarioId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Rol");

                    b.Navigation("Usuario");
                });

            modelBuilder.Entity("Rs_system.Models.Usuario", b =>
                {
                    b.HasOne("Rs_system.Models.Persona", "Persona")
                        .WithMany()
                        .HasForeignKey("PersonaId");

                    b.Navigation("Persona");
                });

            modelBuilder.Entity("Rs_system.Models.GrupoTrabajo", b =>
                {
                    b.Navigation("Miembros");
                });

            modelBuilder.Entity("Rs_system.Models.Modulo", b =>
                {
                    b.Navigation("Permisos");

                    b.Navigation("SubModulos");
                });

            modelBuilder.Entity("Rs_system.Models.Ofrenda", b =>
                {
                    b.Navigation("Descuentos");
                });

            modelBuilder.Entity("Rs_system.Models.RegistroCulto", b =>
                {
                    b.Navigation("Ofrendas");
                });

            modelBuilder.Entity("Rs_system.Models.ReporteMensualContable", b =>
                {
                    b.Navigation("Registros");
                });

            modelBuilder.Entity("Rs_system.Models.RolSistema", b =>
                {
                    b.Navigation("RolesPermisos");

                    b.Navigation("RolesUsuario");
                });

            modelBuilder.Entity("Rs_system.Models.Usuario", b =>
                {
                    b.Navigation("RolesUsuario");
                });
#pragma warning restore 612, 618
        }
    }
}
