Skip to main content
Each management module declares its own model class in the page’s code-behind file. All models are plain C# classes with string properties (and one bool). They are used as the generic type argument for ObservableCollection<T> and as the row type for DataGrid bindings.

Profesor

Declared in Profesores.xaml.cs. Represents a faculty member.
public class Profesor
{
    public string Clave          { get; set; }  // Unique professor code, e.g. "P001"
    public string Nombre         { get; set; }  // Full name, e.g. "Dr. Juan Pérez"
    public string Estudios       { get; set; }  // Academic background, e.g. "Doctorado en Ingeniería"
    public string Investigaciones { get; set; } // Research lines or publications
    public string Semblanza      { get; set; }  // Short professional biography
    public string Fotografia     { get; set; }  // File path to profile photo
    public string Audio          { get; set; }  // File path to audio presentation
}
Clave
string
required
Unique identifier code for the professor. Used as a foreign key in FilaHorario.IDProfesor.
Nombre
string
required
Full display name of the professor.
Estudios
string
Academic degrees and qualifications.
Investigaciones
string
Description of current research lines or published works.
Semblanza
string
Short professional biography shown in the UI profile view.
Fotografia
string
Absolute or relative file-system path to the professor’s profile image.
Audio
string
File-system path to an audio clip (introduction or presentation).

Materia

Declared in Materias.xaml.cs. Represents an academic subject in the curriculum.
public class Materia
{
    public string ID           { get; set; }  // Subject code, e.g. "MAT-01"
    public string Nombre       { get; set; }  // Subject name, e.g. "Desarrollo Móvil"
    public string Companias    { get; set; }  // Related companies, e.g. "Google, Apple"
    public string RutaTemario  { get; set; }  // Syllabus file path, e.g. "C:/Temarios/Movil.pdf"
}
ID
string
required
Unique subject code. Referenced by ProyectoItem.ClaveMateria to link projects to subjects.
Nombre
string
required
Full descriptive name of the subject.
Companias
string
Comma-separated list of companies or technology providers whose tools are covered in the subject (e.g., "Oracle, Microsoft").
RutaTemario
string
Absolute file-system path to the subject’s syllabus document (e.g., a PDF at C:/Temarios/BD.pdf).

FilaAula

Declared in Aula.xaml.cs. Represents a classroom or physical space.
public class FilaAula
{
    public string ID     { get; set; }  // Unique room identifier, e.g. "A-101"
    public string Piso   { get; set; }  // Floor number or name, e.g. "1", "PB"
    public string Tipo   { get; set; }  // Room type, e.g. "Laboratorio", "Salón"
    public string Estado { get; set; }  // Availability status, e.g. "Disponible", "Ocupada"
}
ID
string
required
Unique room identifier. Used as a foreign key in FilaHorario.IDAula and Video360Item.IDAula.
Piso
string
Floor or level where the room is located.
Tipo
string
Category of the room (e.g., "Laboratorio", "Salón de clases", "Auditorio").
Estado
string
Current occupancy or availability status (e.g., "Disponible", "Ocupada", "En mantenimiento").

FilaHorario

Declared in Horarios.xaml.cs. Represents a scheduled class session. Records are persisted in horarios.db.
public class FilaHorario
{
    public string Clave       { get; set; }  // Unique schedule entry key, e.g. "H001"
    public string Tipo        { get; set; }  // Session type, e.g. "Clase", "Laboratorio"
    public string RangoHorario { get; set; } // Time range, e.g. "08:00 - 10:00"
    public string IDProfesor  { get; set; }  // FK → Profesor.Clave
    public string IDAula      { get; set; }  // FK → FilaAula.ID
}
Clave
string
required
Primary key for the schedule entry.
Tipo
string
Type of session (e.g., "Clase teórica", "Práctica de laboratorio").
RangoHorario
string
Human-readable time range string (e.g., "08:00 - 10:00", "Lunes 10:00 - 12:00").
IDProfesor
string
Foreign key referencing Profesor.Clave. Identifies the instructor for the session.
IDAula
string
Foreign key referencing FilaAula.ID. Identifies the room for the session.

MultimediaItem

Declared in Multimedia.xaml.cs. Represents a multimedia resource linked to a project.
public class MultimediaItem
{
    public string ID             { get; set; }  // Unique identifier, e.g. "M001"
    public string NombreProyecto { get; set; }  // Parent project name
    public string Ruta           { get; set; }  // File path to the media file
    public string Descripcion    { get; set; }  // Brief description of the content
}
ID
string
required
Unique identifier for the multimedia record.
NombreProyecto
string
Name of the project this media belongs to. Correlates with ProyectoItem.Nombre.
Ruta
string
File-system path to the media file (video, image, document, etc.).
Descripcion
string
Human-readable description of the media content.

Video360Item

Declared in Videos360.xaml.cs. Represents a 360-degree video asset associated with a classroom. Each item holds up to four camera-angle paths.
public class Video360Item
{
    public string ID    { get; set; }  // Unique identifier, e.g. "V001"
    public string IDAula { get; set; } // FK → FilaAula.ID
    public string RutaA  { get; set; } // File path — angle A (e.g. North)
    public string RutaB  { get; set; } // File path — angle B (e.g. South)
    public string RutaC  { get; set; } // File path — angle C (e.g. East)
    public string RutaD  { get; set; } // File path — angle D (e.g. West)
}
ID
string
required
Unique identifier for the 360-video record.
IDAula
string
Foreign key referencing FilaAula.ID. Links the video to a specific classroom.
RutaA
string
File-system path to the first camera-angle video file.
RutaB
string
File-system path to the second camera-angle video file.
RutaC
string
File-system path to the third camera-angle video file.
RutaD
string
File-system path to the fourth camera-angle video file.

Camara

Declared in Camaras.xaml.cs. Represents a live security or monitoring camera.
public class Camara
{
    public string Titulo         { get; set; }  // Display label, e.g. "Cámara del piso 1"
    public string IP             { get; set; }  // IPv6 or IPv4 address
    public string Ruta           { get; set; }  // Storage path for captured images
    public bool   EstaConectada  { get; set; }  // True when camera has network connectivity (RF_018)

    // Derived — computed from EstaConectada, not stored
    public string TextoBotonConexion => EstaConectada ? "Conectada" : "Desconectada";
}
Titulo
string
required
Human-readable display name shown in the camera list (e.g., "Cámara del piso 1").
IP
string
IPv6 or IPv4 address of the camera device. The default configuration uses full IPv6 notation (e.g., 2001:0db8:85a3:0000:0000:8a2e:0370:7334).
Ruta
string
File-system path to the directory where captured images from this camera are stored (e.g., C:\Users\Public).
EstaConectada
boolean
Indicates whether the camera currently has network connectivity. Corresponds to requirement RF_018. When false, a warning dialog is shown at module load.
TextoBotonConexion
string (computed)
Derived property. Returns "Conectada" when EstaConectada is true, and "Desconectada" when false. Not stored — computed at runtime via => expression.

UsuarioItem

Declared in Usuarios.xaml.cs. Represents an application user account.
public class UsuarioItem
{
    public string ID             { get; set; }  // Unique user ID, e.g. "U001"
    public string NombreUsuario  { get; set; }  // Login username, e.g. "admin"
    public string Password       { get; set; }  // Password string
}
ID
string
required
Unique identifier for the user account.
NombreUsuario
string
required
The login username used to authenticate in MainWindow.
Password
string
required
The user’s password. Stored as a plain string in the current implementation.
Passwords are stored as plain strings. If you extend this application to persist user data, implement hashing (e.g., BCrypt or PBKDF2) before writing passwords to any storage layer.

ProyectoItem

Declared in Proyectos.xaml.cs. Represents an academic or research project.
public class ProyectoItem
{
    public string ID           { get; set; }  // Unique project ID, e.g. "PR001"
    public string ClaveMateria { get; set; }  // Subject code the project belongs to
    public string Nombre       { get; set; }  // Project title, e.g. "Sistema de Riego Automatizado"
}
ID
string
required
Unique identifier for the project.
ClaveMateria
string
Subject code linking this project to a subject in the Materias module.
Nombre
string
required
Display name or title of the project. Also referenced by MultimediaItem.NombreProyecto.

Build docs developers (and LLMs) love