Está en la página 1de 250

INSTITUTO POLITÉCNICO NACIONAL

Centro de Estudios Científicos y Tecnológicos No.13


“Ricardo Flores Magón”

Proyecto de Titulación

Carrera:
Técnico en Informática

Profesor:
Gutiérrez de la Peña Federico

Alumnos:
Ballesteros Mata Rafael
Duran Santiago Isaac
Estrada Piñón Rafael
Rojas Escudero Iván Emmanuel

Grupo:
6IV9
INDICE

Introducción……………………………………………………1

Resumen……………………………………………………….6

1. Estudio de Factibilidad……………………8

2. CELEX - CECyT 13…....…………………17

3. Revolución Industrial……………………...21

4. Programación del Proyecto (Código)……33

Conclusión……………………………………………………….249

1
Introducción

Actualmente vivimos en un mundo totalmente globalizado y en donde todos nos


encontramos conectados a partir de diferentes medios:

 Medios Masivos: Son aquellos que afectan a un mayor número de personas


en un momento dado. También se conocen como medios medidos (Internet,
televisión, radio, periódicos, revistas, cine).
 Medios Auxiliares o Complementarios: Éstos afectan a un menor número
de personas en un momento dado. También se conocen como medios no
medidos (publicidad exterior, publicidad interior, publicidad directa o correo
directo).
 Medios Alternativos: Son aquellas formas nuevas de promoción de
productos, algunas ordinarias y otras muy innovadoras (publicidad masiva:
anuncios de carretera, baños, elevadores, lugares públicos, etc.).

Un idioma es un sistema de signos que utiliza una comunidad o sociedad para poder
tener una comunicación o interacción entre sí mismos, sea oralmente o por escrito,
se estima que existen alrededor de 7.000 idiomas que se hablan en todo el mundo.
El 90% de las cuales son hablados por menos de 100.000 personas, como los
propios de las tribus o poblaciones con dialectos diferentes.

El aprendizaje de estas es una gran herramienta a la hora de progresar, pueda ser


como estudiante o como profesional. Hoy en día resulta indispensable aprender otra
u otras lenguas, ya que en la mayoría de las áreas del conocimiento y desarrollo
humano se utilizan otros idiomas. El aprendizaje de estos es una necesidad
primordial para los estudiantes. Las diversas sociedades están buscando,
realizando o alcanzando un desarrollo social, esto debido a la integración
económica y cultural, esto exige un dominio de diferentes lenguas. Esto permite un
enriquecimiento intelectual, permite el experimentar nuevas ideas, ayuda a ejercitar
la mente, otorga el beneficio de la diversidad cultural mundial, esto a nivel social e
intelectual; a nivel escolar apoya al poder tener oportunidades de conseguir becas
o entrar en programas de intercambio a nivel bachillerato, posgrado, maestría, etc.,

2
y a nivel profesional da la oportunidad trabajar en una empresa transnacional, el
poder lograr un emprendimiento en otra nación, entre muchas otras opciones.

Los Cursos Extracurriculares de Lenguas Extranjeras (CELEX) es un órgano del


Centro de Estudios Científicos y Tecnológicos (CECyT) No. 13 “Ricardo Flores
Magón” en el cual se imparten cursos para el aprendizaje de otros idiomas como
puede ser el inglés. Este órgano es el encargado de llevar a cabo una preparación
avanzada en el área de aprendizaje de lenguas (diferentes al español castellano) y
dar una certificación a los alumnos que tomen estos cursos; actualmente una de las
certificaciones en las que se prepara eso es la “B2 First” en el idioma Ingles (B2
First es una certificación por parte de Cambridge, de nivel intermedio-avanzado, el
cual demuestra que la persona puede utilizar el inglés cotidiano escrito y hablado
con fines laborales o educativos) la cual es un requerimiento mínimo para ser
considerado como alumno de intercambio.

3
Introduction

Currently we live in a much-globalized world and where we all find ourselves


connected through different means:

 Mass Media: They are those that affect a greater number of people at any
given time. They are also known as measured media (Internet, television,
radio, newspapers, magazines, and cinema).
 Auxiliary or Complementary Means: These affect a smaller number of
people at any given time. They are also known as unmeasured means
(outdoor advertising, indoor advertising, direct mail, or direct mail).
 Alternative Media: These are new forms of product promotion, some
ordinary and others highly innovative (mass advertising: road signs,
restrooms, elevators, public places, etc.).

A language is a system of signs that a community or society uses to be able to have


a communication or interaction between himself and herself, whether orally or in
writing, it is estimated that there are around 7,000 languages spoken around the
world. 90% of which are spoken by less than 100,000 people, such as those from
tribes or populations with different dialects.

Learning these is a great tool when it comes to progress, whether as a student or as


a professional. Today it is essential to learn one or more other languages, since
other languages are used in most areas of human knowledge and development.
Learning these is a primary need for students. The various societies are seeking,
realizing or achieving social development, this due to economic and cultural
integration, and this requires a command of different languages. This allows an
intellectual enrichment, allows the experimentation of new ideas, helps to exercise
the mind, grants the benefit of world cultural diversity, this on a social and intellectual
level; At the school level, it supports by having opportunities to obtain scholarships
or enter exchange programs at the baccalaureate, postgraduate, master's level, etc.,
And at a professional level, it gives the opportunity to work in a transnational
company, to be able to achieve a venture in another nation, among many other
options.

4
The Extracurricular Courses in Foreign Languages (CELEX) is an organ of the
Center for Scientific and Technological Studies (CECyT) No. 13 "Ricardo Flores
Magón" in which courses are taught for the learning of other languages such as
English. This body is in charge of carrying out advanced preparation in the area of
language learning (other than Spanish Castilian) and giving certification to students
who take these courses; Currently one of the certifications in which this is prepared
is the “B2 First” in the English language (B2 First is a certification by Cambridge,
intermediate-advanced level, which shows that the person can use written everyday
English and spoken for work or educational purposes) which is a minimum
requirement to be considered as an exchange student.

5
Resumen

SACELEX (Sistema de Administración de Cursos Extracurriculares de Lenguas


Extranjeras) es un software que se especializara en la manipulación y manejo de
datos tanto de alumnos como profesores que pertenezcan al CELEX del Centro de
Estudios Científicos y Tecnológicos (CECyT) No. 13 “Ricardo Flores Magón”. Con
este software, se hará el manejo de datos importantes para el alumno (horarios,
calificaciones, inscripciones, calendarios, etc.) para su f ácil manejo y análisis de la
información académica de los alumnos.

A continuación, se hablará de un Estudio de factibilidad sobre el sistema que


estamos proponiendo, en este tomaremos puntos principales los cuales son:

 Factibilidad Técnica
 Factibilidad Económica
 Factibilidad Operativa

Con los cuales se puede hacer una evaluación que demuestre que el sistema puede
ponerse en marcha y mantenerse, mostrando evidencias de que se ha planeado
cuidadosamente, contemplado los problemas que involucra y mantenerlo en
funcionamiento. Después de analizar estos puntos haremos una pequeña
conclusión sobre el sistema que estamos proponiendo, sobre la factibilidad de su
aplicación, mantenimiento, funcionalidad, etc.

Posteriormente se hablará todo lo relacionado con el CELEX del Centro de Estudios


Científicos y Tecnológicos No. 13 (historia, cursos, horarios, niveles, etc.) para
poder tener una noción sobre que es el CELEX, como funciona, la historia dentro
del IPN al igual que dentro del CECyT, como beneficiará tanto al personal del
CELEX como a los alumnos y profesores dentro del mismo.

Seguido de este, se hablará sobre las revoluciones industriales que ha sufrido la


humanidad a lo largo del tiempo y como han afectado y/o beneficiado a las
sociedades para su avance científico, tecnológico, social-cultural.

Mas adelante se mostrará la programación que conllevo nuestro programa para


poder poner en funcionamiento y la utilidad del mismo para la automatización del

6
proceso que implica, al igual que se mostrara que se hizo, con que herramienta se
creó el programa, la manera en la que se analizó y ataco el problema para
posteriormente darle la solución apropiada y requerida.

Para concluir vendrá una conclusión general sobre el tema, en este también
tomaremos un punto importante en el cual explicará las posibilidades de expansión-
distribución (poner a disposición el software a otros CECyT y/o Unidades superiores
que cuenten con una problemática similar al CECyT No.13), al igual que se quedará
como herencia para futuras generaciones.

7
1. Estudio de factibilidad.

1.1 Introducción

El estudio de factibilidad de un proyecto es una herramienta que se utiliza para guiar


la toma de decisiones en la evaluación de un proyecto, esta herramienta se utiliza
en la última fase pre-operativa de formulación del proyecto y sirve para identificar
las posibilidades de éxito o fracaso de un proyecto de inversión, de esta manera se
podrá decidir si se procede o no a la implementación.

Después de definir la problemática presente y establecer las causas que ameritan


de un nuevo sistema, es pertinente realizar un estudio de factibilidad para
determinar la infraestructura tecnológica y la capacidad técnica que implica la
implantación del sistema en cuestión, así como los costos, beneficios y el grado de
aceptación que la propuesta genera en CELEX. Este análisis permitió determinar
las posibilidades de diseñar el sistema propuesto y su puesta en marcha, los
aspectos tomados en cuenta para este estudio fueron clasificados en tres áreas, las
cuales se describen a continuación:

1.2 Factibilidad Técnica

La factibilidad técnica consistió en realizar una evaluación de la tecnología existente


en la organización, este estudio estuvo destinado a recolectar información sobre los
componentes técnicos que posee la organización y la posibilidad de hacer uso de
los mismos en el desarrollo e implementación del sistema propuesto y de ser
necesario, los requerimientos tecnológicos que deben ser adquiridos para el
desarrollo y puesta en marcha del sistema en cuestión.

De acuerdo con la tecnología necesaria para la implantación del Sistema de


Seguimiento y Control, se evaluó bajo dos enfoques: Hardware y Software.

1.2.1 Hardware

En cuanto a Hardware, específicamente el servidor donde debe estar instalado el


sistema propuesto, este debe cubrir con los siguientes requerimientos
mínimos:

8
 Procesador Pentium 166 MHz.
 Tarjeta Madre.
 64 MB de Memoria RAM.
 Disco Duro de 5 GB
 Tarjeta de Red
 Teclado
 Mouse

En el siguiente cuadro se muestra la descripción del hardware


disponible en CELEX y que fue utilizado para el diseño, construcción y puesta en
marcha del Sistema SACELEX.

CANTIDAD DESCRIPCION

4 Memoria RAM 8GB

4 Procesador Intel® Core™i5-4590 CPU @ 3.30GHz (3 Chus),


~3.3GHz

4 Monitor Dell E2216Hf Generic PnP Monitor, modo presentación


1920 x 1080 (32 bits) (60Hz)

4 Mouse Logitech Modelo M-U0026

4 Teclado Dell Keyboard Modelo KB212-B

4 CPU Dell Modelo D07S

Tabla 1.2.1: Equipo disponible en el CELEX

1.2.2 Software

En cuanto al software, CELEX cuenta con todas las aplicaciones que emplearon
para el desarrollo del proyecto y funcionamiento del sistema, lo cual no amerita
inversión alguna para la adquisición de los mismos. Las estaciones de trabajo,
operaran bajo ambiente Windows. Para el uso general de las estaciones en

9
actividades diversas se debe poseer las herramientas de escritorio y los
navegadores que existen en el mercado actualmente.

CANTIDAD DESCRIPCION

3 Sistema Operativo Windows 8.1 Enterprise 64 bits

3 Herramientas de Escritorio de Office 2013

3 Navegador Google Chrome 77 o superior

Tabla 1.2.2: Software que se tiene disponible en el CELEX

Como resultado de este estudio técnico se determinó que en los actuales


momentos, el CELEX posee la infraestructura tecnológica (Hardware y
Software) necesaria para el desarrollo y puesta en funcionamiento el
sistema propuesto.

1.3 Factibilidad Económica


A continuación se presenta un estudio que dio como resultado la factibilidad
económica del desarrollo del nuevo sistema de información. Se determinaron
los recursos para desarrollar, implantar, y mantener en operación el
sistema programado, haciendo una evaluación donde se puso de manifiesto el
equilibrio existente entre los costos intrínsecos del sistema y los beneficios que se
derivaron de éste, lo cual permitió observar de una manera más precisa las
bondades del sistema propuesto.

1.3.1 Análisis Costos-Beneficios

Este análisis permitió hacer una comparación entre la relación costos del
sistema actual, y los costos que tendría un nuevo sistema, conociendo de antemano
los beneficios que la ciencia de la Informática ofrece.

Como se mencionó anteriormente en el estudio de factibilidad técnica, CELEX


contaba con las herramientas necesarias para la puesta en marcha del sistema, por
lo cual el desarrollo de la propuesta no requirió de una inversión inicial.

10
A continuación, se presenta un resumen de los costos intrínsecos del sistema
propuesto y una lista de los costos que conlleva implantar el mismo, y los costos de
operación. Luego a través de un análisis de valor se determinaron los beneficios
que no necesariamente para el nuevo sistema son monetarios o cuantificables.

El resumen del análisis costos - beneficios se definieron a través de una


comparación de los costos implícitos, tanto del sistema actual como del propuesto
y su relación con los beneficios expresados en forma tangible.

1.3.1.1 Costos del Sistema Actual:

1.3.1.1.1 Costos Generales

Los gastos generales se encuentran representados o enmarcados por todos


aquellos gastos en accesorios y el material de oficina de usodiario, necesarios para
realizar los procesos, tales como bolígrafos, papel para notas, cintas para
impresoras, papel para embalaje, marcadores y otros.

Gastos generales Costo Consumo Monto anual


Aproximado mensual en m.n.

Hojas (700 cada 2 meses $124.60 .5 $623.00


por 5 periodos)

Tóner para impresora (1 $1,689.00 .25 $5,067.00


cada 4 meses)

Cajas de plumas (negra, $534.68 .16 $1069.36


roja y verde) y caja de
lápices.

Caja de grapas. $216 .08 $216.00

TOTAL $2,564.28 $6,352.36

Tabla 1.3.1.1.1: Aproximado de gastos totales del CELEX

11
En la tabla se puede mostrar el ahorro anual que nuestro sistema ahorrara, ya que
no generara un gasto extra a causa de que:

 No se hará una inversión de cualquier índole, tanto para el CELEX ni para


los alumnos al ser todo digital.
 Con la implementación del sistema se generara un ahorro beneficioso para
el CELEX y para el CECyT en general.

1.3.1.2 Costos del Sistema Propuesto:

El sistema de información automatizado para el CELEX involucra los siguientes


costos:

1.3.1.2.1 Costos Generales

Al lograr optimizar los procesos, agilizando el flujo y manejo de la información de las


actividades de seguimiento y control de los alumnos pertenecientes al CELEX, no
es necesario la ejecución de múltiples actividades y tareas para alcanzar los
resultados esperados, también la mayoría de los procesos se automatizaran y esto
generara un ahorro en materiales y tiempo tanto para el personal como para los
alumnos y profesores , lo que se traduce en un ahorro de tiempo, accesorios
y el material de oficina de uso diario.

1.3.1.2.2 Costos de Hardware y Software.

Debido a que CELEX cuenta con los equipos y recursos técnicos necesarios,
para el desarrollo del nuevo sistema, no fue requerido ningún tipo de inversión en
este aspecto. Esta situación facilito la puesta en marcha de SACELEX, ofreciendo
la posibilidad y la ventaja de realizar inversiones en otros requerimientos y
necesidades.

1.3.1.2.3 Costo de Personal.

El sistema propuesto no incluyó variaciones en cuanto al personal bajo cuya


responsabilidad está la operación y/o funcionamiento del sistema. El equipo de
desarrollo no generó inversión, ya que por ser un proyecto elaborado como
trabajo de grado, el personal encargado de impulsar el mismo, no implicó gasto

12
alguno; aspecto que favoreció aún más el proyecto en cuestión, pero cabe destacar
que al automatizar los procesos de seguimiento y control, se reducen y se aligeran
las cargas laborales del personal que normalmente dedicaba su jornada laboral
a atender exclusivamente funciones relacionadas con estos procesos, y por
ende puede emplear el tiempo que se ahorran con el sistema propuesto,
optimizando de esta manera el funcionamiento del mismo.

Cantidad de Trabajo Sueldo mensual Salario semestral


empleados desempeñado (m.n.) (m.n.)

2 Programador junior $10,000.00 $60,000.00

1 Analista de sistemas $14,000.00 $84,000.00

1 Arquitecto de Software $40,000.00 $240,000.00

TOTAL $64,000.00 $384,000.00

Tabla 1.3.1.2.3: Salario del personal que trabajaron en la creación de


SACELEX.

El programa se planeó y estructuro para que su programación e implementación se


realice en un plazo máximo a 5 meses.

1.3.1.2.4 Beneficios Tangibles

Los beneficios tangibles son las que se miden en términos monetarios, mejoran la
productividad de los procesos y el personal. Los beneficios tangibles aportados
por el sistema propuesto están dados por los siguientes aspectos:

 Reducción de costos en papelerías, mantenimiento y espacio físico.


 Ahorro en suministros para los equipos empleados.

13
1.3.1.2.5 Beneficios Intangibles

Los beneficios intangibles por el contrario de los tangibles no se pueden medir en


términos monetarios pero sí tienen un impacto en el negocio muy importante. Entre
los beneficios intangibles del sistema propuesto se pueden incluir:

 Optimizar las actividades del CELEX, aumentando la productividad del


personal que labora en el mismo.
 La flexibilidad al manejar gran volumen y diversidad de información con
rapidez, oportunidad y precisión, lo que ofrece una mejor herramienta de
trabajo al personal, que facilitará sus labores y a los alumnos y profesores
que facilita el manejo y análisis de su información.
 Mejor capacidad de búsqueda y actualización de información,
reduciendo la fuerza de trabajo en el proceso y control de recursos.
 Mayor y mejor aprovechamiento de los recursos tecnológicos
instalados.
 Capacidad de registrar y almacenar “automáticamente” datos de los
registros, estandarizando el mantenimiento de los registros, lo que implica un
aumento de la capacidad y seguridad de almacenamiento de registros.

1.3.1.2.6 Relación Costo-Beneficio

El Análisis Costo-Beneficio presenta grandes ventajas para CELEX, ya que la


misma cuenta con los recursos técnicos necesarios (hardware y software) para el
desarrollo e implantación del nuevo sistema, por lo que no se hará gasto alguno en
lo que a tecnología se refiere.

De igual manera, el nuevo sistema trae mejoras significativas para el normal


desenvolvimiento de las actividades dentro del CELEX, reduciendo de esta manera
el tiempo de procesamiento y generación de la información, disminuyendo las
cargas de trabajo a los usuarios, ya que la velocidad de procesamiento, veracidad
y confiabilidad de los procesos y resultados serán los deseados.

14
Con la implantación del nuevo sistema automatizado, el beneficio más significativo
que se adjudicaría la organización sería la información, convirtiéndose de esta
manera en la herramienta más poderosa y versátil con que ésta cuente.

Es muy importante destacar que en esta nueva era de la informática, mejor


conocida como la “Era de la Información”, este recurso es la herramienta de apoyo
de mayor significado para el CELEX, y en cualquier caso, tenerla al alcance y en
forma oportuna, podría significar ahorro, tanto de tiempo como de dinero.

Además debe tomarse en cuenta el valor que la información tiene en los


actuales momentos, siendo el punto de apoyo en el proceso de la toma de
decisiones, las organizaciones que han alcanzado el éxito, se debe en gran parte
que esta han otorgado el verdadero valor que debe tener la información dentro
de sus procesos.

Con la puesta en marcha de este proyecto se logrará optimizar los procesos que
involucra la gestión de la información dentro de CELEX, reduciendo de esta manera
el empleo de recursos, tanto materiales como humanos, permitiendo obtener una
información segura y confiable, dirigida a la consecución de los objetivos.

Por otra parte un sistema de información debe contribuir a aumentar la capacidad,


el control, la comunicación, disminuir los costos y disminuir el uso de tiempo en los
procesos que realiza. Esto recaerá en la disminución de actividades redundantes,
proporcionando agilidad en el desempeño de las actividades a un gran número de
las áreas involucradas.

Bajo este criterio la alternativa planteada para solucionar la problemática presente


y mejorar la situación actual y cumplir con los objetivos del CELEX.

15
1.3 Factibilidad Operativa

La Factibilidad Operativa permite predecir, si se pondrá en marcha el sistema


propuesto, aprovechando los beneficios que ofrece, a todos los usuarios
involucrados con el mismo, ya sean los que interactúan en forma directa con este,
como también aquellos que reciben información producida por el sistema.

La necesidad de un cambio en el sistema actual, expresada por los usuarios y el


personal involucrado con el mismo, llevó a la aceptación de un nuevo sistema,
que de una manera más sencilla y amigable, cubra todos sus requerimientos,
expectativas y proporciona la información en forma oportuna y confiable. Basándose
en las entrevistas y conversaciones sostenidas con el personal involucrado se
demostró que estos no representan ninguna oposición al cambio, por lo que el
sistema es factible operacionalmente.

En el proceso de adiestramiento se detallaron los aspectos de actualización de


conocimientos y nuevas formas en el procesamiento de transacciones que
representan el manejo del nuevo sistema.

Con la finalidad de garantizar el buen funcionamiento del sistema y que este


impactará en forma positiva a los usuarios, el mismo fue desarrollado
en forma estándar a los sistemas existentes, presentando una interfaz
amigable al usuario, lo que se traduce en una herramienta de fácil manejo
y comprensión, tanto las pantallas como los reportes serán familiar a los
operadores, contando con la opinión de los mismos para cualquier modificación
del sistema.

16
2. CELEX

2.1 Introducción

Los Cursos Extracurriculares de Lenguas Extranjeras es un organismo del Instituto


Politécnico Nacional encargado de impartir cursos para el aprendizaje de lenguas
como inglés, francés, etc.

El objetivo de CELEX es lograr que los alumnos puedan conseguir los


conocimientos necesarios para poder obtener la certificación B2, que como ya antes
mencionado, es el requerimiento mínimo para poder ser considerado como un
alumno de intercambio, y con esto tener mayor oportunidad de crecimiento a nivel
profesional.

2.2 Historia del CELEX en el IPN y en el CECyT 13 “RFM”

El primero de enero de 1936 el Gral. Lázaro Cárdenas junto con el Gral. Juan de
Dios Bátiz fundaron el Instituto Politécnico Nacional, por lo cual las primeras
inscripciones a esta institución se empezaron a realizar el 16 de enero de ese mismo
año. El día 20 de febrero de 1937 se inauguraron por primera vez los cursos del
Instituto Politécnico Nacional, el presupuesto inicial para la construcción de las
instalaciones fue de dos millones de pesos, todo esto bajo el cargo de Juan de Dios
Bátiz Paredes. En la década de los 70’s el CECyT 13 Ricardo Flores Magón tiene
su origen, en el año de 1971 cuando a la vocacional 5 Ciudadela (hoy Benito
Juárez), le construyeron los planteles de jacarandas y Taxqueña, con el fin de
satisfacer la demanda de los jóvenes que se querían integrar a una carrera de
Ciencias Sociales en el Instituto, ya que en ese entonces las instalaciones eran
insuficientes. Por no contar con salones y dado que la demanda era mucho en dicha
vocacional 5, Taxqueña albergo a 2,449 estudiantes que deseaban estudiar alguna
carrera en Ciencias Sociales. El 22 de abril de 1972, el maestro Jorge Hernández
Pizaña, con todo el alumnado y el personal del plantel, inicio clases en el segundo
semestre del año, en el plantel semi-construido de la Avenida Taxqueña 1620 de la

17
colonia Excélsior, esto solo fue el comienzo de la lucha para que se siguiera
construyendo el centro.

También en dicha década el IPN, creo una unidad llamada CENLEX, en donde se

impartirían los cursos para el aprendizaje de lenguas extranjeras ya sea en el casco


de Santo Tomas o en Zacatenco. CENLEX proporciona una oferta educativa en
materia de lenguas extranjeras, con el propósito de contribuir a la formación integral
de la comunidad politécnica y de la sociedad en general. Con la visión de ser un
Centro de Enseñanza de Lenguas Extranjeras de vanguardia con programas
educativos actualizados y adecuados a las necesidades de la comunidad del IPN y
externa, que sea el órgano rector para la enseñanza, el aprendizaje y la evaluación
de las lenguas extranjeras dentro del IPN, con reconocimiento social y acreditado
como unidad académica del Instituto, que cuente con una planta docente certificada
internacionalmente en el dominio y la enseñanza de lenguas extranjeras. En donde
el principal objetivo de dicha unidad era: “Contribuir a la formación integral de la
comunidad del IPN y sociedad en general, mediante el proceso de la enseñanza, el
aprendizaje de lenguas extranjeras, proveyendo a los alumnos de herramientas y
competencias necesarias para su interacción con diferentes culturas, y poder tener
acceso a la información científica, tecnológica, económica y social en un entorno
cada vez más internacional”. Así como sus principales funciones:

 Impartir cursos de idiomas en diferentes modalidades. (Horarios que se


puedan acomodar al estudiante)
 Aplicar exámenes de idiomas para posgrados o Compresión de lectura:
Requisito para ingreso a maestrías impartidas dentro del Instituto Politécnico
Nacional.
 Dominio de idioma: Requisito para obtener el grado de Doctorado dentro de
los programas del Instituto Politécnico Nacional.
 Impartir talleres de idiomas en los que se puedan reforzar competencias
lingüísticas y se obtenga una mayor interacción.

A base de esto se conforma el CENLEX de Zacatenco y el de Casco de Santo


Tomas. Tiempo después se fueron afiliando escuelas de nivel medio superior en las

18
cuales integrarían Cursos de Lenguas Extranjeras, como es el caso de: CECyT 1,
CECyT 2, CECyT 3, CECyT 4, CECyT 7, CECyT 8, CECyT 10, CECyT 11, CECyT
12, CECyT 13, CECyT 14, CECyT 15 y CET 1.

Así mismo, también se integraron cursos de lenguas extranjeras a nivel Superior,


como es el caso de: ESIME Zacatenco, ESIME Culhuacán, ESIME Azcapotzalco,
ESIME Ticomán, ESCA Tepepan, ESCA Santo Tomas, ESIA Zacatenco, ESIA
Tecamachalco, ESIQIE, ESFM, UPIBI, UPIIG, UPIIZ, ESCOM, ESE, ENCB, EST,
UPIICSA y UPIITA. El Instituto Politécnico Nacional brinda estos Cursos de Lenguas
Extranjeras, que, al finalizarlos, tienen una certificación reconocida, junto con sus
demás dependencias, ya sea a nivel medio superior o superior.

2.3 Modalidades y niveles

2.3.1 Modalidades

CELEX cuenta con 3 modalidades:

 Regular: Se asiste de lunes a viernes en un horario de 13:00 a 14:00 o 14:00


a 15:00 durante un periodo de 8 semanas.
 Intensivo: Se asiste de lunes a viernes en un horario de 08:00 a 10:00 o
15:00 a 17:00 durante un periodo de 4 semanas.
 Sabatino: Se asiste únicamente el día sábado en un horario de 08:00 a 13:00
durante un periodo de 8 sábados.

2.3.2 Niveles

El CELEX cuenta con 3 niveles, los cuales son:

 Básico
 Intermedio
 Avanzado

Cada nivel cuanta con un total de 5 periodos (Básico 1, 2, 3, 4 y 5; Intermedio 1, 2,


3, 4 y 5; Avanzado 1, 2, 3, 4 y 5) lo que nos da un total de 15 periodos que deben
cursarse y pasarse satisfactoriamente.

19
2.4 A quien va dirigido

El CELEX tiene como objetivo principal a los alumnos del CECyT No. 13, no
obstante, el sistema está abierto a alumnos de otros CECyT’s, personas egresadas
o pertenecientes a una unidad superior e incluso para público en general. Los cursos
tienen un costo para personas externas al instituto y en un menor costo para
estudiantes del propio instituto.

2.5 Requisitos

Los requisitos para alumnos son los siguientes:

 Edad mínima de 15 años


 Original y copia del recibo de pago
 Una fotografía tamaño infantil (solo alumnos de nuevo ingreso)
 Original y copia de boleta (solo reinscripción)
 Copia de identificación del solicitante
 Si eres alumno IPN copia de credencial vigente

Si se es egresado se debe agregar

 Cédula profesional (original y copia)


 Boleta global (original y copia)
 Credencial de egresado (original y copia)
 Carta de pasante (original y copia)

20
3. Revoluciones Industriales

3.1 Introducción

A lo largo del tiempo el hombre ha buscado la manera de poder satisfacer sus


necesidades de forma fácil, rápida, practica, económica y útil posible para maximizar
las posibilidades de satisfacción y resolución de necesidades. Esto conlleva la
evolución de procesos para la elaboración u obtención de materias primas, al igual
que de los de medios de producción que con lo que se trabajan estos. Llamamos
Revolución Industrial al cambio fundamental que se produce en una sociedad
cuando su economía deja de basarse en la agricultura y la artesanía para depender
de la industria, esto para obtener una mayor productividad y eficacia en los procesos
productivos.

3.2 1ra Revolución Industrial

3.2.1 Introducción

La Revolución Industrial nace en Gran Bretaña a mediados del siglo XVlll y se


extiende luego al resto de Europa. La economía existente antes de la revolución
industrial estaba basada en el mundo agrario y artesanal; tres cuartas partes de la
población subsistían con trabajos agropecuarios. Principalmente estaba basada en
el autoconsumo y no en la comercialización de los productos obtenidos, puesto que
además la productividad era muy baja. Las ciudades eran pocas, pequeñas y poco
desarrolladas. Hay que recordar que el régimen de gobierno de estas sociedades
eran las monarquías absolutistas, en las que todo, incluyendo las personas, se
consideraban una propiedad del rey. Fue posible por la existencia de una monarquía
liberal y no absolutista, que consiguió evitar el panorama de revoluciones que se
estaban extendiendo en otros países. Gran Bretaña quedó libre de guerras, ya que,
aunque estuvo involucrada en algunas, no se desarrollaron en su territorio. A esto
se unió una moneda estable y un sistema bancario bien organizado. El Banco de
Inglaterra se fundó en 1694.

21
3.2.2 Principales características

Las principales características es que se produce un cambio rápido y en profundidad


que afecta a todas las estructuras de la sociedad. Los cambios serán: tecnológicos,
socioeconómicos y culturales. Los tecnológicos irán desde el uso de nuevos
materiales como el acero a fuentes energéticas como el carbón y máquinas motrices
como la máquina de vapor, considerada como el motor inicial de la Revolución
Industrial. Aparecen las máquinas de hilar y tejer, que consiguen aumentar
rápidamente la producción con poco personal. Surgen técnicas para el desarrollo
del trabajo y la especialización de la mano de obra. El transporte se desarrolla tanto
por trenes como por barcos, lo que junto con otros inventos harán crecer el papel
de la industria y el comercio. Los cambios culturales se plasmarán en un
impresionante aumento de los conocimientos en todas las ramas, tanto científicas
como técnicas y sanitarias. Los cambios sociales más notables derivan del
crecimiento de las ciudades y el consiguiente éxodo en zonas rurales. Al mismo
tiempo se produce un fuerte aumento demográfico, como consecuencia de la
elevada natalidad y el descenso de la mortalidad catastrófica (gracias a avances
sanitarios, como las vacunas, y a una mejor alimentación de la población). Esto
provocará que la población europea se multiplique en pocos años. Al tiempo que se
desarrolla una clase burguesa, el éxodo de población rural hacia las ciudades (la
revolución agrícola disminuyó las necesidades de mano de obra en el campo) da
lugar a la aparición de una nueva clase trabajadora que se agrupa en suburbios
cercanos a las fábricas, a partir de los barracones en los que viven los obreros. Las
condiciones de vida de estos empleados son penosas, tanto en las fábricas donde
trabajan como en los suburbios en los que habitan. En las fábricas encontrarán
humedad, poca ventilación, ninguna seguridad laboral y jornadas que superan las
doce horas diarias, siete días a la semana. En los suburbios superpoblados y sucios
son víctimas de epidemias de fácil propagación. La cantidad de personas afectadas
por estas condiciones les lleva a organizarse para la defensa de sus intereses y
aparecen los movimientos obreros de protesta.

22
3.2.3 Consecuencias

En principio la Revolución industrial produjo un cambio radical en todos los ámbitos


de la sociedad inglesa y, más tarde, del resto de las sociedades europeas, creando
un nuevo modelo de vida. El desarrollo industrial y minero, el aumento de la
productividad, el crecimiento de las ciudades y la mejora del comercio nacional e
internacional contribuirán a un gran crecimiento demográfico debido al aumento de
la natalidad y de la esperanza de vida. La revolución industrial en España fue mucho
más tardía que en el resto de Europa. España seguía inmersa en un mundo rural
en el que los cambios fueron mínimos. Las malas comunicaciones, tanto interiores
como con Europa, acentuaron el retraso. Los talleres seguían siendo artesanales y
la producción se especializaba por zonas dependiendo de los recursos disponibles.
La revolución industrial fuera de Europa: En Estados Unidos comenzó al terminar la
guerra civil, a finales del siglo XIX. Estados Unidos había alcanzado a Gran Bretaña
en potencial industrial y tenía un mercado interior muy dinámico en un extenso
territorio. La construcción de la red de ferrocarriles permitió la colonización del
Oeste, y la industrialización se basó en la aplicación temprana de las innovaciones
tecnológicas y una fuerte concentración empresarial. En Japón la industrialización
comenzó por la actividad textil. Las características principales fueron el patrocinio
del Estado en la construcción de ferrocarriles y bancos, la existencia de una mano
de obra barata y disciplinada, fácil adaptación a la tecnología occidental y grandes
grupos industriales muy competitivos orientados a la exportación. Este periodo fue
denominado como Era Meiji o Era de la Luz: Japón se había convertido en una gran
potencia.

3.3 2da Revolución Industrial

3.3.1 Introducción

23
La Segunda Revolución Industrial se refiere a los cambios socioeconómicos
interrelacionados que se produjeron aproximadamente entre 1870 hasta 1914.
Durante este periodo los cambios sufrieron una fuerte aceleración. El proceso de
industrialización cambió su naturaleza y el crecimiento económico varió de modelo.
Los cambios técnicos siguieron ocupando una posición central, junto a las
innovaciones técnicas concentradas, esencialmente, en nuevas fuentes de energía
como el gas, el petróleo o la electricidad; nuevos materiales y nuevos sistemas de
transporte (avión y automóvil) y comunicación (teléfono y radio) indujeron
transformaciones en cadena que afectaron al factor trabajo y al sistema educativo y
científico; al tamaño y gestión de las empresas, a la forma de organización del
trabajo, al consumo, hasta desembocar también en la política. Este proceso se
produjo en el marco de la denominada primera globalización, que supuso una
progresiva internacionalización de la economía, y que funcionaba de forma
creciente a escala mundial por la revolución de los transportes. Ello condujo a su
extensión a más territorios que la primera revolución, limitada a Gran Bretaña, y que
llegaría a alcanzar a casi toda Europa occidental, Estados Unidos y Japón. Entre
los cambios sucedidos en los países que vivieron la industrialización durante este
periodo destacan las innovaciones tecnológicas, los cambios organizativos en las
empresas y los mercados y el nacimiento de lo que podría considerarse como la
primera globalización.

3.3.2 Principales Características

El proceso de cambio técnico durante la Segunda Revolución Industrial constituyó


uno de los más trascendentales cambios desde el punto de vista histórico, cuando
las innovaciones tecnológicas adquirieron el carácter de modernidad, que sentó las
bases tecnológicas del siglo XX y se distanció de las bases de la primera revolución.

La ciencia y la tecnología en este periodo se caracterizó por la mayor complejidad


de las máquinas y equipos y por una relación más estrecha entre ambas que requirió
una mayor calificación para su implantación, lo que dificultó su difusión. El núcleo
del cambio técnico se diversificó hacia más sectores y se amplió geográficamente,

24
hacia toda Europa y Estados Unidos. Algunos de esos inventos aparecieron en las
décadas de 1850 y 1860, pero las innovaciones más radicales surgieron en el
periodo entre 1870 y 1913 en Estados Unidos y Alemania principalmente, en los
que se concentró la mayor parte de las invenciones que se desarrollarían
posteriormente a lo largo del siglo XX. Todos estos descubrimientos acabaron por
conformar un nuevo sistema tecnológico.

El resultado de este nuevo sistema fue la ampliación de los recursos naturales


dispuestos, el desarrollo de otras innovaciones tecnológicas complementarias, el
ahorro de trabajo que generó un incremento enorme de la productividad, mayores
beneficios, salarios más altos, precios de consumo más bajos y una gama de
nuevos productos. El nuevo sistema tecnológico, en definitiva, puede considerarse
el motor del crecimiento de fines del siglo XIX y del primer siglo XX.

Se distinguen tres fuentes fundamentales de avance tecnológico en este periodo:

 La aparición de nuevos materiales, la lista de nuevos materiales descubiertos


es larga:
o Se descubren nuevos metales como:
 Acero (1855), ya utilizado anteriormente pero que se convierte
por su baratura en el metal estrella de la época, sustituyendo al
hierro.
 Zinc (c. 1830), tendrá una cierta importancia ya que al
mezclarse con el hierro detiene su oxidación.
 Aluminio cuya historia va ligada al avance de la electricidad. Es
un metal muy ligero y resistente. Fue descubierto por Wökler
en 1845 pero hasta 1886 no se generaliza, cuando Hall le aplicó
el proceso de electrólisis.
 El níquel (1860) se usó principalmente para mezclarlo con el
acero y lograr así el acero inoxidable. Al mezclarlo con el cobre
se crea una aleación llamada alpaca que tuvo muchas
aplicaciones en el campo doméstico.

25
 Manganeso y cromo (c. 1900)
 El cobre tendrá también una gran importancia, al
perfeccionarse su producción se va a destinar, casi
exclusivamente, a la industria eléctrica, bien como conductor o
bien como componente de los motores eléctricos.
o Productos químicos, la industria química va a experimentar una
expansión sin precedentes y se van a encontrar avances
prácticamente para todos los campos de la producción, unos ya
conocidos pero que ahora se producen mediante procedimientos
nuevos:
 La sosa se va a producir de manera rentable tras los
descubrimientos del belga Solvay, éste hizo pasar amoníaco
por agua salada, así se genera bicarbonato sódico susceptible
de convertirse fácilmente en sosa; esto multiplicó la producción
mundial de este producto.
 Los colorantes artificiales van a sustituir a los colorantes
naturales anteriores y se obtendrán de productos derivados de
la hulla como el alquitrán y el benzol. La investigación en este
campo fue muy intensa debido a la gran demanda de la
industria textil y en menos de 20 años se encontraron sustitutos
de todos los tintes naturales.
 Los explosivos adquieren un gran desarrollo. La pólvora era el
único conocido y estallaba por ignición (fuego), se van a
descubrir nuevos explosivos químicos que estallan por
percusión como la nitrocelulosa y la nitroglicerina, esta última
del italiano Sobrero. En 1866 Alfred Nobel, también conocido
por los premios que llevan su nombre, inventó la dinamita,
mezcla de nitroglicerina y un tipo de arcilla llamada Kieselguhr,
esto generará una gran industria de explosivos. La dinamita
tendría importantes aplicaciones en la minería y en el campo
militar gracias a su gran potencia y estabilidad.

26
 En el campo la demanda de fertilizantes dará lugar al desarrollo
de los abonos químicos o fertilizantes sintéticos. Se van a
elaborar superfosfatos y nitrato sódico, este último se elabora
a partir de nitratos minerales procedentes de Perú y Chile.
Europa era la zona que más nitrato sódico consumía. Otros
elementos minerales indispensables para las plantas también
se sintetizaron químicamente como el abono de potasio.
o El cemento portland (c. 1840) asociado al fenómeno de la creciente
urbanización de la época
o El siglo XIX es el de los grandes inventos. En 1800 Volta inventa la
pila eléctrica. En 1814 se instalan las primeras farolas de gas para la
iluminación de las calles y en 1819 un primer barco de vapor, el
“Savannah”, cruza el Atlántico. Nicephore Niepce fabrica en 1827 las
primeras cámaras fotográficas. En 1828 William Austin Burt construye
la primera máquina de escribir en Detroit. En 1830 se inaugura la
primera línea de ferrocarril entre Liverpool y Manchester. En 1835
Morse realiza la primera experiencia del telégrafo eléctrico. Goodyear
en 1839 realiza la vulcanización del caucho. En 1850 se instala el
primer cable submarino en el Paso de Calais. Y se realiza la primera
exposición de la primera locomóvil a vapor. Fernando Lessenps en
1853 empieza la construcción del canal de Suez. En 1854 Otis inventa
el primer ascensor hidráulico. En 1856 Bessemer inventa el
convertidos para obtener acero industrial. En 1860 el ingeniero francés
Ferdinand Corre pone a punto el primer aparato de refrigeración que
permite producir hielo. En 1867 Alfred Nóbel inventa la dinamita y
funda los premios Nóbel con la fortuna que obtuvo por su invento. Y el
norteamericano Sholes inventa la máquina de escribir. En 1876
aparece el teléfono eléctrico de Graham Bell y Grey. En 1878 Edison
inventa la bombilla eléctrica En 1880 se inventa la bicicleta. En 1885
Daimler y Benz construyen un vehículo automóvil movido por gasolina
En 1895 Peugeot hace circular un vehículo sobre neumáticos y los

27
hermanos Lumière inventan un aparato cinematográfico. En 1897 el
matrimonio Curie descubre el radio.
 La energía ha constituido históricamente un elemento fundamental de
cualquier cambio técnico trascendente y lo fue también en este momento. La
oferta de energía aumentó y se diversificó, debido al perfeccionamiento de
técnicas ya conocidas, como la máquina de Watt, la turbina o la industria del
gas, y por otro lado gracias a las nuevas formas de energía, como la
electricidad y el petróleo, con grandes ventajas en su utilización.
 La mecanización continuó con un progresivo proceso de avance, debido a la
creciente escala de las unidades de producción, facilitado por el empleo del
acero y otros metales y de las nuevas fuentes de energía.

3.4 Tercera Revolución Industrial

3.4.1 Introducción

La Tercera revolución industrial, también llamada Revolución científico-tecnológica


(RCT), Revolución de la inteligencia (RI) o Tercera revolución tecnológica, es un
nuevo concepto y una fusión de ideas, que fuera planteado por Jeremy Rifkin, y
avalado por el Parlamento Europeo en una declaración formal aprobada en junio de
2006. Esta temática ha sido desarrollada por el autor intensamente a lo largo de los
últimos años en diferentes medios y reuniones. El documental de Vice Documentary
Films “The Third Industrial Revolution: A Radical New Sharing Economy”
expone de boca del autor resumidamente cómo puede ser entendida y promovida
aquella y su fundamental importancia para la humanidad.

En el transcurrir de la historia, las transformaciones económicas suelen presentarse


cuando convergen las nuevas tecnologías de la comunicación con los nuevos
sistemas de generación energética. Las nuevas formas de comunicación se
convierten en el medio de organización y gestión que las civilizaciones más
complejas han hecho posible mediante el desarrollo y el uso de nuevas fuentes de
energía. La conjunción en el siglo XXI del avance de las tecnologías de las

28
comunicaciones, junto al gran desarrollo y uso de Internet al igual que de las
energías renovables, están dando lugar a lo que bien podríamos llamar 'Tercera
Revolución Industrial' o 'Tercera Revolución Tecnológica’:

3.4.2 Principales Características

Como ya antes mencionado, la tercera revolución industrial es otro de los grandes


saltos de la humanidad en la búsqueda de sustentabilidad, pero esta vez, es tanto
económica como política y tecnológica; dentro de esta sus principales
características son:

 El cambio a una mayor utilización de las energías renovables: se


denomina energía renovable a la energía que se obtiene de fuentes
naturales virtualmente inagotables, ya sea por la inmensa cantidad de
energía que contienen, o porque son capaces de regenerarse por medios
naturales. Algunos ejemplos de estas pueden ser:
o Energía mareomotriz (es la producida por el movimiento de las
masas de agua provocado por las subidas y bajadas de las mareas)
o Energía geotérmica (es aquella energía que puede obtenerse
mediante el aprovechamiento del calor del interior de la Tierra).
o Energía hidráulica (se obtiene del aprovechamiento de las energías
cinéticas y potenciales de la corriente del agua)
o Energía eólica (es el aprovechamiento de la energía cinética de las
masas de aire que puede convertirse en energía mecánica)
o Energía solar (obtenida a partir del aprovechamiento de la radiación
electromagnética procedente del Sol).
o Energía de la biomasa (aprovechamiento de la materia orgánica o
industrial formada en algún proceso biológico o mecánico).

 El desarrollo de las baterías recargables, de las pilas de hidrógeno, y de


otras nuevas tecnologías de almacenamiento de energía.

29
 El desarrollo de la red eléctrica inteligente o red de distribución de
energía eléctrica “inteligente” (Smart grid): desde un contexto global, la
red eléctrica inteligente se puede definir como la integración dinámica de los
desarrollos en ingeniería eléctrica y en almacenamiento energético, y los
avances de las tecnologías de la información y la comunicación (o TIC),
dentro del negocio de la energía eléctrica (generación, transmisión,
distribución, almacenamiento y comercialización, incluyendo las energías
alternativas), permitiendo así que las áreas de coordinación de protecciones,
control, instrumentación, medida, calidad y administración de energía, etc.,
sean concatenadas en un solo sistema de gestión, con el objetivo primordial
de realizar un uso eficiente y racional de la energía eléctrica .

 El desarrollo del transporte basado en el vehículo eléctrico (vehículos


todo-eléctricos, híbridos enchufables e híbridos eléctricos regulares)
así como de pilas de combustible, utilizando la electricidad renovable
como energía de propulsión: un vehículo hibrido es aquel capaz de
recuperar energía en las frenadas, retenciones y aceleraciones en las que el
motor térmico proporcione potencia de sobra. El objetivo: convertir la energía
cinética del frenado en energía eléctrica que se acumula en las baterías

3.5 4ta Revolución industrial

3.5.1 Introducción

La Cuarta Revolución Industrial, también conocida como Industria 4.0 o Revolución


industrial etapa número cuatro, es la cuarta etapa industrial más importante que se
ha verificado desde el inicio de la revolución industrial en el siglo XVIII. Esta cuarta
etapa se caracteriza por una fusión de tecnologías actualmente en prueba o en
desarrollo, lo que está desintegrando las fronteras entre las esferas física, digital, y
biológica. El concepto Cuarta Revolución Industrial fue acuñado por Klaus Schwab
fundador del Foro Económico Mundial en el contexto de la edición del Foro

30
Económico Mundial 2016. Schwab sostiene que si la tercera revolución industrial es
la revolución digital que ha estado en vigor desde mediados del siglo XX, que se
caracteriza por una fusión de tecnologías que está difuminando las líneas entre lo
físico, esferas digitales y biológicas esta cuarta etapa está marcada por avances
tecnológicos emergentes en una serie de campos, incluyendo robótica, inteligencia
artificial, cadena de bloques, nanotecnología, computación cuántica, biotecnología,
internet de las cosas, impresión 3D, y vehículos autónomos. Klaus Schwab lo asocia
también con la "segunda era de la máquina".

Esta «Industria 4.0» es la tendencia actual de automatización y el intercambio de


datos, particularmente en el marco de las tecnologías de manufactura y desarrollo.
Principalmente incluye los sistemas ciber-físicos, el Internet de las cosas y la
computación en la nube.

Los principios de diseño de la «Industria 4.0» son:

 Interoperabilidad: Habilidad de máquinas, artefactos, sensores y personas


de conectarse y comunicarse entre sí por medio del Internet de las cosas
(IoT) o el Internet de las personas (IoP).
 Transparencia de la Información: habilidad de los sistemas de información
para crear una copia virtual del mundo físico enriqueciendo los modelos
digitales de la planta con los datos del sensor. Esto requiere agregar los datos
brutos del sensor a la información del contexto de mayor valor.
 Asistencia Técnica: Primero, la habilidad de asistencia de los sistemas para
ayudar a las personas a agregar y visualizar información de forma
comprensible, para que puedan tomar decisiones informadas y resolver
problemas urgentes a corto plazo. Segundo, la habilidad de los sistemas
ciber-físicos para ayudar a las personas de una forma física a dirigir una serie
de tareas que son desagradables, muy agotadoras, o inseguras para los
humanos.
 Decisiones descentralizadas: Habilidad de los sistemas ciber-físicos para
tomar decisiones por sí mismos y desarrollar sus tareas en forma autónoma

31
en la mayor medida posible. Sólo en ciertas excepciones, como en
interferencias o metas conflictivas, las tareas son delegadas a un mayor nivel.

3.5.2 Consecuencias

Existen ciertas diferencias entre una fábrica típica tradicional y una de la Industria
4.0. En el entorno de la industria actual, proporcionar un servicio o producto de alta
calidad al menor costo, es la clave para el éxito. Las fábricas industriales están
intentando lograr el mayor rendimiento posible para incrementar sus ganancias al
igual que su reputación. De este modo, varias fuentes de datos están disponibles
para proveer información digna sobre distintos aspectos de una fábrica. En esta
etapa, el uso de fuentes de datos para entender las condiciones actuales operativas,
detectar fallas y errores, es un tema importante de investigación. Por ejemplo, en la
producción, existen varias herramientas comerciales disponibles para proveer
información de Eficiencia general de los equipos (OEE) para el manejo de la fábrica
y así resaltar los análisis de causas (ACR) de los problemas y las posibles fallas en
el sistema. En contraste, en una fábrica de Industria 4.0, además de la supervisión
de condición y los diagnósticos de fallas, los componentes y sistemas son capaces
de adquirir auto-conciencia y auto-predicción, lo cual otorgará una visión más clara
para el manejo y el estado de la fábrica. Por otra parte, el contraste en pares de la
información de salud de varios elementos, otorga una predicción específica en los
niveles de componentes, sistemas y el manejo de la fábrica para activar el
mantenimiento requerido en el mejor tiempo posible, y así, alcanzar un
mantenimiento JIT (just-in-time o justo a tiempo) y lograr un tiempo cero de
inactividad

32
CODIGO DEL SISTEMA SACELEX

CONTROLLERS

33
34
using System;

using System.Collections.Generic;

using System.Linq;

35
using System.Threading.Tasks;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Authorization;

using SACELEX.Models;

using SACELEX.Repositorios;

using Newtonsoft.Json;

namespace SACELEX.Controllers

public class AdministradoresController : Controller

private readonly UnitOfWork _UnitOfWork;

//Constructor

public AdministradoresController(dbSACELEXContext Context)

_UnitOfWork = new UnitOfWork(Context);

[HttpGet("/")]

public IActionResult Index()

return View();

[HttpGet("/Alumnos")]

public IActionResult Alumnos()

36
ViewBag.ListaAlumnos = _UnitOfWork.repoAlumnos.ObtenerAlumnos(0,
10);

return View("Administrar/Alumnos");

[HttpGet("/Alumnos/{id}")]

public IActionResult Alumno(int id)

Alumnos alumno = _UnitOfWork.repoAlumnos.ObtenerAlumno(id);

return View("Administrar/Alumno", alumno);

[HttpGet("/Profesores")]

public IActionResult Profesores()

ViewBag.ListaProfesores = _UnitOfWork.repoProfesores.ObtenerProf
esores(0, 10);

return View("Administrar/Profesores");

[HttpGet("/Administradores")]

public IActionResult Administradores()

ViewBag.ListaAdministradores = _UnitOfWork.repoAdministradores.O
btenerAdministradores(0, 10);

return View("Administrar/Administradores");

[HttpGet("/Grupos")]

public IActionResult Grupos()

37
{

return View("Administrar/Grupos");

[HttpGet("/Expedientes")]

public IActionResult Expedientes()

return View("GenerarExpediente/Expedientes");

//Registros

[HttpGet("/Registrar/Administrador")]

public IActionResult RegistrarAdministrador()

return View("Registrar/RegistrarAdministrador");

[HttpGet("/Registrar/Profesor")]

public IActionResult RegistrarProfesor()

return View("Registrar/RegistrarProfesor");

[HttpGet("/Registrar/Alumno")]

public IActionResult RegistrarAlumno()

return View("Registrar/RegistrarAlumno");

38
//CRUD

[HttpGet("/Aulas")]

public IActionResult Aulas()

return View("CRUD/Aulas");

public JsonResult CrearAula([FromBody] Aulas aula)

if (ModelState.IsValid)

int id = _UnitOfWork.repoAulas.Agregar(aula);

if (id != 0)

return Json(new { estado = 1, id });

else

return Json(new { estado = 2});

else

return Json(new { estado = 3});

public JsonResult EditarAula([FromBody] Aulas aula)

39
if (ModelState.IsValid)

bool resultado = _UnitOfWork.repoAulas.Actualizar(aula);

if (resultado)

return Json(new { estado = 1, aula });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

public JsonResult EliminarAula([FromBody] byte id)

bool resultado = _UnitOfWork.repoAulas.Eliminar(id);

if (resultado)

return Json(new { estado = 1});

else

return Json(new { estado = 2 });

40
}

[HttpGet("/Horarios")]

public IActionResult Horarios()

ViewBag.Lista = _UnitOfWork.repoHorarios.ObtenerHorarios();

return View("CRUD/Horarios");

[HttpPost]

public JsonResult CrearHorario([FromBody] Horarios horario)

if (ModelState.IsValid)

int id = _UnitOfWork.repoHorarios.Agregar(horario);

if (id != 0)

return Json(new { estado = 1, id });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

41
[HttpPut]

public JsonResult EditarHorario([FromBody] Horarios horario)

if (ModelState.IsValid)

bool resultado = _UnitOfWork.repoHorarios.Actualizar(horario


);

if (resultado)

return Json(new { estado = 1, horario });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

[HttpDelete]

public JsonResult EliminarHorario([FromBody] byte id)

bool resultado = _UnitOfWork.repoHorarios.Eliminar(id);

if (resultado)

42
return Json(new { estado = 1 });

else

return Json(new { estado = 2 });

[HttpGet("/Idiomas")]

public IActionResult Idiomas()

return View("CRUD/Idiomas");

public JsonResult CrearIdioma([FromBody] Idiomas idioma)

if (ModelState.IsValid)

int id = _UnitOfWork.repoIdiomas.Agregar(idioma);

if (id != 0)

return Json(new { estado = 1, id });

else

return Json(new { estado = 2 });

else

43
{

return Json(new { estado = 3 });

public JsonResult EditarIdioma([FromBody] Idiomas idioma)

if (ModelState.IsValid)

bool resultado = _UnitOfWork.repoIdiomas.Actualizar(idioma);

if (resultado)

return Json(new { estado = 1, idioma });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

public JsonResult EliminarIdioma([FromBody] byte id)

bool resultado = _UnitOfWork.repoIdiomas.Eliminar(id);

if (resultado)

44
{

return Json(new { estado = 1 });

else

return Json(new { estado = 2 });

[HttpGet("/Modalidades")]

public IActionResult Modalidades()

return View("CRUD/Modalidades");

public JsonResult CrearModalidad([FromBody] Modalidades modalidad)

if (ModelState.IsValid)

int id = _UnitOfWork.repoModalidades.Agregar(modalidad);

if (id != 0)

return Json(new { estado = 1, id });

else

return Json(new { estado = 2 });

45
else

return Json(new { estado = 3 });

public JsonResult EditarModalidad([FromBody] Modalidades modalidad)

if (ModelState.IsValid)

bool resultado = _UnitOfWork.repoModalidades.Actualizar(moda


lidad);

if (resultado)

return Json(new { estado = 1, modalidad });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

public JsonResult EliminarModalidad([FromBody] byte id)

46
bool resultado = _UnitOfWork.repoModalidades.Eliminar(id);

if (resultado)

return Json(new { estado = 1 });

else

return Json(new { estado = 2 });

[HttpGet("/Niveles")]

public IActionResult Niveles()

return View("CRUD/Niveles");

public JsonResult CrearNivel([FromBody] Niveles nivel)

if (ModelState.IsValid)

int id = _UnitOfWork.repoNiveles.Agregar(nivel);

if (id != 0)

return Json(new { estado = 1, id });

else

return Json(new { estado = 2 });

47
}

else

return Json(new { estado = 3 });

public JsonResult EditarNivel([FromBody] Niveles nivel)

if (ModelState.IsValid)

bool resultado = _UnitOfWork.repoNiveles.Actualizar(nivel);

if (resultado)

return Json(new { estado = 1, nivel });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

public JsonResult EliminarNivel([FromBody] byte id)

48
{

bool resultado = _UnitOfWork.repoNiveles.Eliminar(id);

if (resultado)

return Json(new { estado = 1 });

else

return Json(new { estado = 2 });

[HttpGet("/Origenes")]

public IActionResult Origenes()

return View("CRUD/Origenes");

public JsonResult CrearOrigen([FromBody] Origenes origen)

if (ModelState.IsValid)

int id = _UnitOfWork.repoOrigenes.Agregar(origen);

if (id != 0)

return Json(new { estado = 1, id });

else

49
return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

public JsonResult EditarOrigen([FromBody] Origenes origen)

if (ModelState.IsValid)

bool resultado = _UnitOfWork.repoOrigenes.Actualizar(origen)


;

if (resultado)

return Json(new { estado = 1, origen });

else

return Json(new { estado = 2 });

else

return Json(new { estado = 3 });

50
public JsonResult EliminarOrigen([FromBody] byte id)

bool resultado = _UnitOfWork.repoOrigenes.Eliminar(id);

if (resultado)

return Json(new { estado = 1 });

else

return Json(new { estado = 2 });

51
MODELS

52
53
54
55
56
57
58
59
60
61
62
63
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;

64
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using SACELEX.ViewModels;

namespace SACELEX.Models
{
public partial class dbSACELEXContext : DbContext
{
public dbSACELEXContext(DbContextOptions<dbSACELEXContext>
options)
: base(options)
{
}

public virtual DbSet<Administradores> Administradores { get; set; }


public virtual DbSet<Alumnos> Alumnos { get; set; }
public virtual DbSet<Aulas> Aulas { get; set; }
public virtual DbSet<Calificaciones> Calificaciones { get; set; }
public virtual DbSet<Expedientes> Expedientes { get; set; }
public virtual DbSet<Grupos> Grupos { get; set; }
public virtual DbSet<Horarios> Horarios { get; set; }
public virtual DbSet<Idiomas> Idiomas { get; set; }
public virtual DbSet<Inscripciones> Inscripciones { get; set; }
public virtual DbSet<Modalidades> Modalidades { get; set; }
public virtual DbSet<Niveles> Niveles { get; set; }
public virtual DbSet<Origenes> Origenes { get; set; }
public virtual DbSet<Periodos> Periodos { get; set; }
public virtual DbSet<Profesores> Profesores { get; set; }

65
//Procedimientos Almacenados: Inicio

#region spConteo
public int spContarAdministradores()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarAdministradores";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarProfesores()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarProfesores";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}

66
public int spContarAlumnos()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarAlumnos";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarPeriodos()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarPeriodos";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarAulas()
{
int resultado = 0;

67
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarAulas";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarHorarios()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarHorarios";
cmd.Connection = conexion;
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarIdiomas()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();

68
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarIdiomas";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarModalidades()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarModalidades";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarNiveles()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;

69
cmd.CommandText = "spContarNiveles";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
public int spContarOrigenes()
{
int resultado = 0;
SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spContarOrigenes";
resultado = (int)cmd.ExecuteScalar();
conexion.Close();
return resultado;
}
#endregion

#region spConsultar

#region Usuarios
public Alumnos spConsultarAlumno(int IDAlumno)
{
string sql = "spConsultarAlumno @IDAlumno";

SqlParameter pam1 = new SqlParameter("@IDAlumno", IDAlumno);

70
return this.Alumnos.FromSql(sql, pam1).SingleOrDefault();
}
public List<ListaAlumnosViewModel> spConsultarAlumnos(int NumeroInicio,
int NumeroFin)
{
List<ListaAlumnosViewModel> lista = new List<ListaAlumnosViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarAlumnos";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaAlumnosViewModel
{
IDAlumno = (int)reader["IDAlumno"],
MatriculaAlumno = reader["MatriculaAlumno"].ToString(),
NombreAlumno = reader["Nombre"].ToString()
}
);

71
}

conexion.Close();

return lista;
}
public List<ListaAlumnosViewModel> spConsultarAlumnosMatricula(int
NumeroInicio, int NumeroFin, string Matricula)
{
List<ListaAlumnosViewModel> lista = new List<ListaAlumnosViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarAlumnosMatricula";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
SqlParameter pam3 = new SqlParameter("@Matricula", Matricula);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
cmd.Parameters.Add(pam3);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaAlumnosViewModel

72
{
IDAlumno = (int)reader["IDAlumno"],
MatriculaAlumno = reader["MatriculaAlumno"].ToString(),
NombreAlumno = reader["Nombre"].ToString()
}
);
}

conexion.Close();

return lista;
}
public List<ListaAlumnosViewModel> spConsultarAlumnosNombre(int
NumeroInicio, int NumeroFin, string Nombre)
{
List<ListaAlumnosViewModel> lista = new List<ListaAlumnosViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarAlumnosNombre";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
SqlParameter pam3 = new SqlParameter("@Nombre", Nombre);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);

73
cmd.Parameters.Add(pam3);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaAlumnosViewModel
{
IDAlumno = (int)reader["IDAlumno"],
MatriculaAlumno = reader["MatriculaAlumno"].ToString(),
NombreAlumno = reader["Nombre"].ToString()
}
);
}

conexion.Close();

return lista;
}
public Profesores spConsultarProfesor(int IDProfesor)
{
string sql = "spConsultarProfesor @IDProfesor";

SqlParameter pam1 = new SqlParameter("@IDProfesor", IDProfesor);

return this.Profesores.FromSql(sql, pam1).SingleOrDefault();


}
public List<ListaProfesoresViewModel> spConsultarProfesores(int
NumeroInicio, int NumeroFin)
{

74
List<ListaProfesoresViewModel> lista = new
List<ListaProfesoresViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarProfesores";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaProfesoresViewModel
{
IDProfesor = (int)reader["IDProfesor"],
MatriculaProfesor = reader["MatriculaProfesor"].ToString(),
NombreProfesor = reader["Nombre"].ToString()
}
);
}

conexion.Close();

75
return lista;
}
public List<ListaProfesoresViewModel> spConsultarProfesoresMatricula(int
NumeroInicio, int NumeroFin, string Matricula)
{
List<ListaProfesoresViewModel> lista = new
List<ListaProfesoresViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarProfesoresMatricula";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
SqlParameter pam3 = new SqlParameter("@Matricula", Matricula);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
cmd.Parameters.Add(pam3);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaProfesoresViewModel
{
IDProfesor = (int)reader["IDProfesor"],
MatriculaProfesor = reader["MatriculaProfesor"].ToString(),

76
NombreProfesor = reader["Nombre"].ToString()
}
);
}

conexion.Close();

return lista;
}
public List<ListaProfesoresViewModel> spConsultarProfesoresNombre(int
NumeroInicio, int NumeroFin, string Nombre)
{
List<ListaProfesoresViewModel> lista = new
List<ListaProfesoresViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarProfesoresNombre";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
SqlParameter pam3 = new SqlParameter("@Nombre", Nombre);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
cmd.Parameters.Add(pam3);
SqlDataReader reader = cmd.ExecuteReader();

77
while (reader.Read())
{
lista.Add(new ListaProfesoresViewModel
{
IDProfesor = (int)reader["IDProfesor"],
MatriculaProfesor = reader["MatriculaProfesor"].ToString(),
NombreProfesor = reader["Nombre"].ToString()
}
);
}

conexion.Close();

return lista;
}
public Administradores spConsultarAdministrador(int IDAdministrador)
{
string sql = "spConsultarAdministrador @IDAdministrador";

SqlParameter pam1 = new SqlParameter("@IDAdministrador",


IDAdministrador);

return this.Administradores.FromSql(sql, pam1).SingleOrDefault();


}
public List<ListaAdministradoresViewModel> spConsultarAdministradores(int
NumeroInicio, int NumeroFin)
{

78
List<ListaAdministradoresViewModel> lista = new
List<ListaAdministradoresViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarAdministradores";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaAdministradoresViewModel
{
IDAdministrador = (int)reader["IDAdministrador"],
MatriculaAdministrador = reader["MatriculaAdministrador"].ToString(),
NombreAdministrador = reader["Nombre"].ToString()
}
);
}

conexion.Close();

79
return lista;
}
public List<ListaAdministradoresViewModel>
spConsultarAdministradoresMatricula(int NumeroInicio, int NumeroFin, string
Matricula)
{
List<ListaAdministradoresViewModel> lista = new
List<ListaAdministradoresViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarAdministradoresMatricula";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
SqlParameter pam3 = new SqlParameter("@Matricula", Matricula);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
cmd.Parameters.Add(pam3);
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
lista.Add(new ListaAdministradoresViewModel
{
IDAdministrador = (int)reader["IDAdministrador"],
MatriculaAdministrador = reader["MatriculaAdministrador"].ToString(),

80
NombreAdministrador = reader["Nombre"].ToString()
}
);
}

conexion.Close();

return lista;
}
public List<ListaAdministradoresViewModel>
spConsultarAdministradoresNombre(int NumeroInicio, int NumeroFin, string
Nombre)
{
List<ListaAdministradoresViewModel> lista = new
List<ListaAdministradoresViewModel>();

SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection();
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spConsultarAdministradoresNombre";
cmd.Connection = conexion;
SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);
SqlParameter pam3 = new SqlParameter("@Nombre", Nombre);
cmd.Parameters.Add(pam1);
cmd.Parameters.Add(pam2);
cmd.Parameters.Add(pam3);
SqlDataReader reader = cmd.ExecuteReader();

81
while (reader.Read())
{
lista.Add(new ListaAdministradoresViewModel
{
IDAdministrador = (int)reader["IDAdministrador"],
MatriculaAdministrador = reader["MatriculaAdministrador"].ToString(),
NombreAdministrador = reader["Nombre"].ToString()
}
);
}

conexion.Close();

return lista;
}
#endregion

//Grupos (Sin Terminar)


public Grupos spConsultarGrupo(int IDGrupo)
{
string sql = "spConsultarGrupo @IDGrupo";

SqlParameter pam1 = new SqlParameter("@IDGrupo", IDGrupo);

return this.Grupos.FromSql(sql, pam1).SingleOrDefault();


}
public List<Grupos> spConsultarGrupos(byte IDPeriodo)

82
{
string sql = "spConsultarGrupos @IDPeriodo";

SqlParameter pam1 = new SqlParameter("@IDPeriodo", IDPeriodo);

return this.Grupos.FromSql(sql, pam1).ToList();


}
//Periodos (Sin Terminar)
public Periodos spConsultarPeriodoActivo()
{
string sql = "spConsultarGrupo";

return this.Periodos.FromSql(sql).SingleOrDefault();
}
public List<Periodos> spConsultarPeriodos(int NumeroInicio, int NumeroFin)
{
string sql = "spConsultarPeriodos @NumeroInicio, @NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);


SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Periodos.FromSql(sql, pam1, pam2).ToList();


}
//Expedientes (Completo)
public List<Expedientes> spConsultarExpedientes(byte IDAlumno)
{
string sql = "spConsultarExpedientes @IDAlumno";

83
SqlParameter pam1 = new SqlParameter("@IDAlumno", IDAlumno);

return this.Expedientes.FromSql(sql, pam1).ToList();


}
//Inscripciones (Sin Terminar)
//Calificaciones (Sin Terminar)

#region CRUD
public Aulas spConsultarAula(byte IDAula)
{
string sql = "spConsultarAula @IDAula";

SqlParameter pam1 = new SqlParameter("@IDAula", IDAula);

return this.Aulas.FromSql(sql, pam1).SingleOrDefault();


}
public List<Aulas> spConsultarRangoAulas(int NumeroInicio, int NumeroFin)
{
string sql = "spConsultarRangoAulas @NumeroInicio, NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);


SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Aulas.FromSql(sql, pam1, pam2).ToList();


}
public List<Aulas> spConsultarAulas()
{
string sql = "spConsultarAulas";

84
return this.Aulas.FromSql(sql).ToList();
}
public Horarios spConsultarHorario(byte IDHorario)
{
string sql = "spConsultarHorario @IDHorario";

SqlParameter pam1 = new SqlParameter("@IDHorario", IDHorario);

return this.Horarios.FromSql(sql, pam1).SingleOrDefault();


}
public List<Horarios> spConsultarRangoHorarios(int NumeroInicio, int
NumeroFin)
{
string sql = "spConsultarRangoHorarios @NumeroInicio, @NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);


SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Horarios.FromSql(sql, pam1, pam2).ToList();


}
public List<Horarios> spConsultarHorarios()
{
string sql = "spConsultarHorarios";
return this.Horarios.FromSql(sql).ToList();
}
public Idiomas spConsultarIdioma(byte IDIdioma)
{
string sql = "spConsultarHorario @IDIdioma";

85
SqlParameter pam1 = new SqlParameter("@IDIdioma", IDIdioma);

return this.Idiomas.FromSql(sql, pam1).SingleOrDefault();


}
public List<Idiomas> spConsultarRangoIdiomas(int NumeroInicio, int
NumeroFin)
{
string sql = "spConsultarRangoIdiomas @NumeroInicio, NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);


SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Idiomas.FromSql(sql, pam1, pam2).ToList();


}
public List<Idiomas> spConsultarIdiomas()
{
string sql = "spConsultarIdiomas";
return this.Idiomas.FromSql(sql).ToList();
}
public Modalidades spConsultarModalidad(byte IDModalidades)
{
string sql = "spConsultarHorario @IDModalidades";

SqlParameter pam1 = new SqlParameter("@IDModalidades",


IDModalidades);

return this.Modalidades.FromSql(sql, pam1).SingleOrDefault();


}

86
public List<Modalidades> spConsultarRangoModalidades(int NumeroInicio,
int NumeroFin)
{
string sql = "spConsultarRangoModalidades @NumeroInicio, NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);


SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Modalidades.FromSql(sql, pam1, pam2).ToList();


}
public List<Modalidades> spConsultarModalidades()
{
string sql = "spConsultarModalidades";
return this.Modalidades.FromSql(sql).ToList();
}
public Niveles spConsultarNivel(byte IDNivel)
{
string sql = "spConsultarNivel @IDNivel";

SqlParameter pam1 = new SqlParameter("@IDNivel", IDNivel);

return this.Niveles.FromSql(sql, pam1).SingleOrDefault();


}
public List<Niveles> spConsultarRangoNiveles(int NumeroInicio, int
NumeroFin)
{
string sql = "spConsultarRangoNiveles @NumeroInicio, NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);

87
SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Niveles.FromSql(sql, pam1, pam2).ToList();


}
public List<Niveles> spConsultarNiveles()
{
string sql = "spConsultarNiveles";
return this.Niveles.FromSql(sql).ToList();
}
public Origenes spConsultarOrigen(byte IDOrigen)
{
string sql = "spConsultarHorario @IDOrigen";

SqlParameter pam1 = new SqlParameter("@IDOrigen", IDOrigen);

return this.Origenes.FromSql(sql, pam1).SingleOrDefault();


}
public List<Origenes> spConsultarRangoOrigenes(int NumeroInicio, int
NumeroFin)
{
string sql = "spConsultarRangoOrigenes @NumeroInicio, NumeroFin";

SqlParameter pam1 = new SqlParameter("@NumeroInicio", NumeroInicio);


SqlParameter pam2 = new SqlParameter("@NumeroFin", NumeroFin);

return this.Origenes.FromSql(sql, pam1, pam2).ToList();


}
public List<Origenes> spConsultarOrigenes()
{

88
string sql = "spConsultarOrigenes";
return this.Origenes.FromSql(sql).ToList();
}
#endregion

#endregion

#region spCrear
public int spCrearAdministrador(Administradores administrador)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearAdministrador";
SqlParameter pammat = new SqlParameter("@MatriculaAdministrador",
administrador.MatriculaAdministrador);
SqlParameter pamnom = new SqlParameter("@Nombre",
administrador.Nombre);
SqlParameter pamapp = new SqlParameter("@ApellidoPaterno",
administrador.ApellidoPaterno);
SqlParameter pamapm = new SqlParameter("@ApellidoMaterno",
administrador.ApellidoMaterno);
SqlParameter pamcor = new SqlParameter("@Correo",
administrador.Correo);
SqlParameter pamcont = new SqlParameter("@Contrasena",
administrador.Contrasena);

89
SqlParameter pamtel = new SqlParameter("@Telefono",
administrador.Telefono);
SqlParameter pamnivel = new SqlParameter("@Nivel",
administrador.Nivel);
SqlParameter pamact = new SqlParameter("@Activo",
administrador.Activo);
cmd.Parameters.Add(pammat);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamapp);
cmd.Parameters.Add(pamapm);
cmd.Parameters.Add(pamcor);
cmd.Parameters.Add(pamcont);
cmd.Parameters.Add(pamtel);
cmd.Parameters.Add(pamnivel);
cmd.Parameters.Add(pamact);
resultado = (int?)cmd.ExecuteScalar();
}

if(resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearProfesor(Profesores profesor)
{

90
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearProfesor";
SqlParameter pammat = new SqlParameter("@MatriculaProfesor",
profesor.MatriculaProfesor);
SqlParameter pamnom = new SqlParameter("@Nombre",
profesor.Nombre);
SqlParameter pamapp = new SqlParameter("@ApellidoPaterno",
profesor.ApellidoPaterno);
SqlParameter pamapm = new SqlParameter("@ApellidoMaterno",
profesor.ApellidoMaterno);
SqlParameter pamcor = new SqlParameter("@Correo", profesor.Correo);
SqlParameter pamcont = new SqlParameter("@Contrasena",
profesor.Contrasena);
SqlParameter pamtel = new SqlParameter("@Telefono",
profesor.Telefono);
SqlParameter pamact = new SqlParameter("@Activo", profesor.Activo);
cmd.Parameters.Add(pammat);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamapp);
cmd.Parameters.Add(pamapm);
cmd.Parameters.Add(pamcor);
cmd.Parameters.Add(pamcont);
cmd.Parameters.Add(pamtel);
cmd.Parameters.Add(pamact);
resultado = (int?)cmd.ExecuteScalar();

91
}

if(resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearAlumno(Alumnos alumno)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearAlumno";
SqlParameter pammat = new SqlParameter("@MatriculaAlumno",
alumno.MatriculaAlumno);
SqlParameter pamnom = new SqlParameter("@Nombre",
alumno.Nombre);
SqlParameter pamapp = new SqlParameter("@ApellidoPaterno",
alumno.ApellidoPaterno);
SqlParameter pamapm = new SqlParameter("@ApellidoMaterno",
alumno.ApellidoMaterno);

92
SqlParameter pamido = new SqlParameter("@IDOrigen_FK",
alumno.IdorigenFk);
SqlParameter pamcor = new SqlParameter("@Correo", alumno.Correo);
SqlParameter pamcont = new SqlParameter("@Contrasena",
alumno.Contrasena);
SqlParameter pamtel = new SqlParameter("@Telefono",
alumno.Telefono);
SqlParameter pamact = new SqlParameter("@Activo", alumno.Activo);
cmd.Parameters.Add(pammat);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamapp);
cmd.Parameters.Add(pamapm);
cmd.Parameters.Add(pamido);
cmd.Parameters.Add(pamcor);
cmd.Parameters.Add(pamcont);
cmd.Parameters.Add(pamtel);
cmd.Parameters.Add(pamact);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}

93
public int spCrearGrupo(Grupos grupo)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearGrupo";
SqlParameter pamnom = new SqlParameter("@Nombre",
grupo.Nombre);
SqlParameter pamaula = new SqlParameter("@IDAula_FK",
grupo.IdaulaFk);
SqlParameter pammat = new SqlParameter("@IDProfesor_FK",
grupo.IdprofesorFk);
SqlParameter pamidi = new SqlParameter("@IDIdioma_FK",
grupo.IdidiomaFk);
SqlParameter pamniv = new SqlParameter("@IDNivel_FK",
grupo.IdnivelFk);
SqlParameter pamper = new SqlParameter("@IDPeriodo_FK",
grupo.IdperiodoFk);
SqlParameter pammod = new SqlParameter("@IDModalidad_FK",
grupo.IdmodalidadFk);
SqlParameter pamhor = new SqlParameter("@IDHorario_FK",
grupo.IdhorarioFk);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamaula);
cmd.Parameters.Add(pammat);
cmd.Parameters.Add(pamidi);
cmd.Parameters.Add(pamniv);

94
cmd.Parameters.Add(pamper);
cmd.Parameters.Add(pammod);
cmd.Parameters.Add(pamhor);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearPeriodo(Periodos periodo)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearPeriodo";
SqlParameter pamnom = new SqlParameter("@Nombre",
periodo.Nombre);
SqlParameter pamfini = new SqlParameter("@FechaInicio",
periodo.FechaInicio);

95
SqlParameter pamffin = new SqlParameter("@FechaFin",
periodo.FechaFin);
SqlParameter pamcur = new SqlParameter("@Cursado",
periodo.Cursado);
SqlParameter pamact = new SqlParameter("@Activo", periodo.Activo);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamfini);
cmd.Parameters.Add(pamffin);
cmd.Parameters.Add(pamcur);
cmd.Parameters.Add(pamact);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearExpediente(Expedientes expediente)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();

96
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearExpediente";
SqlParameter pampidalu = new SqlParameter("@IDAlumno",
expediente.IdalumnoFk);
SqlParameter pamsidido = new SqlParameter("@IDIdioma",
expediente.IdidiomaFk);
SqlParameter pamidniv = new SqlParameter("@IDNivel",
expediente.IdnivelFk);
cmd.Parameters.Add(pampidalu);
cmd.Parameters.Add(pamsidido);
cmd.Parameters.Add(pamidniv);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearCalificacion(Calificaciones calificacion)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{

97
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearCalificacion";
SqlParameter pampeva = new SqlParameter("@PrimeraEvaluacion",
calificacion.PrimeraEvaluacion);
SqlParameter pamseva = new SqlParameter("@SegundaEvaluacion",
calificacion.SegundaEvaluacion);
SqlParameter pamfeva = new SqlParameter("@EvaluacionFinal",
calificacion.EvaluacionFinal);
cmd.Parameters.Add(pampeva);
cmd.Parameters.Add(pamseva);
cmd.Parameters.Add(pamfeva);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearAula(Aulas aula)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())

98
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearAula";
SqlParameter pamnom = new SqlParameter("@Dias", aula.Nombre);
SqlParameter pamcap = new SqlParameter("@Capacidad",
aula.Capacidad);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamcap);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearHorario(Horarios horario)
{
int resultado = 0;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();

99
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearHorario";
cmd.Connection = conexion;
SqlParameter pamdias = new SqlParameter("@Dias", horario.Dias);
SqlParameter pamini = new SqlParameter("@HoraInicio",
horario.HoraInicio);
SqlParameter pamfin = new SqlParameter("@HoraFin",
horario.HoraFin);
cmd.Parameters.Add(pamdias);
cmd.Parameters.Add(pamini);
cmd.Parameters.Add(pamfin);
resultado = (int)cmd.ExecuteScalar();
}

if (resultado == 0)
{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearIdioma(Idiomas idioma)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())

100
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearIdioma";
SqlParameter pamnom = new SqlParameter("@Nombre",
idioma.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
idioma.Descripcion);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamdes);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearModalidad(Modalidades modalidad)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{

101
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearModalidad";
SqlParameter pamnom = new SqlParameter("@Nombre",
modalidad.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
modalidad.Descripcion);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamdes);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearNivel(Niveles nivel)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();

102
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spCrearNivel";
SqlParameter pamnom = new SqlParameter("@Nombre", nivel.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
nivel.Descripcion);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamdes);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
public int spCrearOrigen(Origenes origen)
{
int? resultado;
using (SqlConnection conexion =
(SqlConnection)this.Database.GetDbConnection())
{
SqlCommand cmd = new SqlCommand();
conexion.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;

103
cmd.CommandText = "spCrearOrigen";
SqlParameter pamnom = new SqlParameter("@Nombre",
origen.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
origen.Descripcion);
cmd.Parameters.Add(pamnom);
cmd.Parameters.Add(pamdes);
resultado = (int?)cmd.ExecuteScalar();
}

if (resultado == null || resultado == 0)


{
return 0;
}
else
{
return (int)resultado;
}
}
#endregion

#region spActualizar
public int spActualizarAdministrador(Administradores administrador)
{
string sql = "spActualizarAdministrador @IDAdministrador,
@MatriculaAdministrador, @Nombre, @ApellidoPaterno, @ApellidoMaterno,
@Correo, @Contrasena, @Telefono,@Nivel, @Activo";
SqlParameter pamid = new SqlParameter("@IDAdministrador",
administrador.Idadministrador);

104
SqlParameter pammat = new SqlParameter("@MatriculaAdministrador",
administrador.MatriculaAdministrador);
SqlParameter pamnom = new SqlParameter("@Nombre",
administrador.Nombre);
SqlParameter pamapp = new SqlParameter("@ApellidoPaterno",
administrador.ApellidoPaterno);
SqlParameter pamapm = new SqlParameter("@ApellidoMaterno",
administrador.ApellidoMaterno);
SqlParameter pamcor = new SqlParameter("@Correo",
administrador.Correo);
SqlParameter pamcont = new SqlParameter("@Contrasena",
administrador.Contrasena);
SqlParameter pamtel = new SqlParameter("@Telefono",
administrador.Telefono);
SqlParameter pamnivel = new SqlParameter("@Nivel",
administrador.Nivel);
SqlParameter pamact = new SqlParameter("@Activo",
administrador.Activo);
return this.Database.ExecuteSqlCommand(sql, pamid, pammat, pamnom,
pamapp, pamapm, pamcor, pamcont, pamtel, pamnivel, pamact);
}
public int spActualizarProfesor(Profesores profesor)
{
string sql = "spActualizarProfesor @IDProfesor, @MatriculaProfesor,
@Nombre, @ApellidoPaterno, @ApellidoMaterno, @Correo, @Contrasena,
@Telefono, @Activo";
SqlParameter pamid = new SqlParameter("@IDProfesor",
profesor.Idprofesor);
SqlParameter pammat = new SqlParameter("@MatriculaProfesor",
profesor.MatriculaProfesor);
SqlParameter pamnom = new SqlParameter("@Nombre",
profesor.Nombre);
SqlParameter pamapp = new SqlParameter("@ApellidoPaterno",
profesor.ApellidoPaterno);

105
SqlParameter pamapm = new SqlParameter("@ApellidoMaterno",
profesor.ApellidoMaterno);
SqlParameter pamcor = new SqlParameter("@Correo", profesor.Correo);
SqlParameter pamcont = new SqlParameter("@Contrasena",
profesor.Contrasena);
SqlParameter pamtel = new SqlParameter("@Telefono",
profesor.Telefono);
SqlParameter pamact = new SqlParameter("@Activo", profesor.Activo);
return this.Database.ExecuteSqlCommand(sql, pamid, pammat, pamnom,
pamapp, pamapm, pamcor, pamcont, pamtel, pamact);
}
public int spActualizarAlumno(Alumnos alumno)
{
string sql = "spActualizarAlumno @IDAlumno, @MatriculaAlumno,
@Nombre, @ApellidoPaterno, @ApellidoMaterno, @IDOrigen_FK, @Correo,
@Contrasena, @Telefono, @Activo";
SqlParameter pamid = new SqlParameter("@IDAlumno",
alumno.Idalumno);
SqlParameter pammat = new SqlParameter("@MatriculaAlumno",
alumno.MatriculaAlumno);
SqlParameter pamnom = new SqlParameter("@Nombre",
alumno.Nombre);
SqlParameter pamapp = new SqlParameter("@ApellidoPaterno",
alumno.ApellidoPaterno);
SqlParameter pamapm = new SqlParameter("@ApellidoMaterno",
alumno.ApellidoMaterno);
SqlParameter pamido = new SqlParameter("@IDOrigen_FK",
alumno.IdorigenFk);
SqlParameter pamcor = new SqlParameter("@Correo", alumno.Correo);
SqlParameter pamcont = new SqlParameter("@Contrasena",
alumno.Contrasena);
SqlParameter pamtel = new SqlParameter("@Telefono", alumno.Telefono);
SqlParameter pamact = new SqlParameter("@Activo", alumno.Activo);

106
return this.Database.ExecuteSqlCommand(sql, pamid, pammat, pamnom,
pamapp, pamapm, pamido, pamcor, pamcont, pamtel, pamact);
}
public int spActualizarGrupo(Grupos grupo)
{
string sql = "spActualizarGrupo @IDGrupo, @Nombre, @IDAula_FK,
@IDProfesor_FK, @IDIdioma_FK, @IDNivel_FK, @IDPeriodo_FK,
@IDModalidad_FK, @IDHorario_FK";
SqlParameter pamid = new SqlParameter("@IDGrupo", grupo.Idgrupo);
SqlParameter pamnom = new SqlParameter("@Nombre", grupo.Nombre);
SqlParameter pamaula = new SqlParameter("@IDAula_FK",
grupo.IdaulaFk);
SqlParameter pammat = new SqlParameter("@IDProfesor_FK",
grupo.IdprofesorFk);
SqlParameter pamidi = new SqlParameter("@IDIdioma_FK",
grupo.IdidiomaFk);
SqlParameter pamniv = new SqlParameter("@IDNivel_FK",
grupo.IdnivelFk);
SqlParameter pamper = new SqlParameter("@IDPeriodo_FK",
grupo.IdperiodoFk);
SqlParameter pammod = new SqlParameter("@IDModalidad_FK",
grupo.IdmodalidadFk);
SqlParameter pamhor = new SqlParameter("@IDHorario_FK",
grupo.IdhorarioFk);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamaula,
pammat, pamidi, pamniv, pamper, pammod, pamhor);
}
public int spActualizarPeriodo(Periodos periodo)
{
string sql = "spActualizarPeriodo @IDPeriodo, @Nombre, @FechaInicio,
@FechaFin, @Cursado,@Activo";
SqlParameter pamid = new SqlParameter("@IDPeriodo",
periodo.Idperiodo);

107
SqlParameter pamnom = new SqlParameter("@Nombre",
periodo.Nombre);
SqlParameter pamfini = new SqlParameter("@FechaInicio",
periodo.FechaInicio);
SqlParameter pamffin = new SqlParameter("@FechaFin",
periodo.FechaFin);
SqlParameter pamcur = new SqlParameter("@Cursado", periodo.Cursado);
SqlParameter pamact = new SqlParameter("@Activo", periodo.Activo);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamfini,
pamffin, pamcur, pamact);
}
public int spActualizarExpediente(Expedientes expediente)
{
string sql = "spActualizarExpediente @IDExpediente, @IDAlumno,
@IDIdioma, @IDNivel";
SqlParameter pamid = new SqlParameter("@IDExpediente",
expediente.Idexpediente);
SqlParameter pampidalu = new SqlParameter("@IDAlumno",
expediente.IdalumnoFk);
SqlParameter pamsidido = new SqlParameter("@IDIdioma",
expediente.IdidiomaFk);
SqlParameter pamidniv = new SqlParameter("@IDNivel",
expediente.IdnivelFk);
return this.Database.ExecuteSqlCommand(sql, pamid, pampidalu,
pamsidido, pamidniv);
}
public int spActualizarCalificacion(Calificaciones calificacion)
{
string sql = "spActualizarCalificacion @IDCalificacion,
@PrimeraEvaluacion, @SegundaEvaluacion, @EvaluacionFinal";
SqlParameter pamid = new SqlParameter("@IDCalificacion",
calificacion.Idcalificacion);

108
SqlParameter pampeva = new SqlParameter("@PrimeraEvaluacion",
calificacion.PrimeraEvaluacion);
SqlParameter pamseva = new SqlParameter("@SegundaEvaluacion",
calificacion.SegundaEvaluacion);
SqlParameter pamfeva = new SqlParameter("@EvaluacionFinal",
calificacion.EvaluacionFinal);
return this.Database.ExecuteSqlCommand(sql, pamid, pampeva, pamseva,
pamfeva);
}
public int spActualizarAula(Aulas aula)
{
string sql = "spActualizarAula @IDAula, @Nombre, @Capacidad";
SqlParameter pamid = new SqlParameter("@IDHorario", aula.Idaula);
SqlParameter pamnom = new SqlParameter("@Dias", aula.Nombre);
SqlParameter pamcap = new SqlParameter("@HoraInicio",
aula.Capacidad);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamcap);
}
public int spActualizarHorario(Horarios horario)
{
string sql = "spActualizarHorario @IDHorario, @Dias, @HoraInicio,
@HoraFin";
SqlParameter pamid = new SqlParameter("@IDHorario", horario.Idhorario);
SqlParameter pamdias = new SqlParameter("@Dias", horario.Dias);
SqlParameter pamini = new SqlParameter("@HoraInicio",
horario.HoraInicio);
SqlParameter pamfin = new SqlParameter("@HoraFin", horario.HoraFin);
return this.Database.ExecuteSqlCommand(sql, pamid, pamdias, pamini,
pamfin);
}
public int spActualizarIdioma(Idiomas idioma)

109
{
string sql = "spActualizarIdioma @IDIdioma, @Nombre, @Descripcion";
SqlParameter pamid = new SqlParameter("@IDIdioma", idioma.Ididioma);
SqlParameter pamnom = new SqlParameter("@Nombre", idioma.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
idioma.Descripcion);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamdes);
}
public int spActualizarModalidad(Modalidades modalidad)
{
string sql = "spActualizarModalidad @IDModalidad, @Nombre,
@Descripcion";
SqlParameter pamid = new SqlParameter("@IDModalidad",
modalidad.Idmodalidad);
SqlParameter pamnom = new SqlParameter("@Nombre",
modalidad.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
modalidad.Descripcion);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamdes);
}
public int spActualizarNivel(Niveles nivel)
{
string sql = "spActualizarNivel @IDNivel, @Nombre, @Descripcion";
SqlParameter pamid = new SqlParameter("@IDOrigen", nivel.Idnivel);
SqlParameter pamnom = new SqlParameter("@Nombre", nivel.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
nivel.Descripcion);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamdes);
}
public int spActualizarOrigen(Origenes origen)

110
{
string sql = "spActualizarOrigen @IDOrigen, @Nombre, @Descripcion";
SqlParameter pamid = new SqlParameter("@IDOrigen", origen.Idorigen);
SqlParameter pamnom = new SqlParameter("@Nombre", origen.Nombre);
SqlParameter pamdes = new SqlParameter("@Descripcion",
origen.Descripcion);
return this.Database.ExecuteSqlCommand(sql, pamid, pamnom, pamdes);
}
#endregion

#region spEliminar
public int spEliminarAlumno(int IDAlumno)
{
string sql = "spEliminarAlumno @IDAlumno";
SqlParameter pamid = new SqlParameter("@IDAlumno", IDAlumno);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarProfesor(int IDProfesor)
{
string sql = "spEliminarProfesor @IDProfesor";
SqlParameter pamid = new SqlParameter("@IDProfesor", IDProfesor);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarAdministrador(int IDAdministrador)
{
string sql = "spEliminarAdministrador @IDAdministrador";
SqlParameter pamid = new SqlParameter("@IDAdministrador",
IDAdministrador);
return this.Database.ExecuteSqlCommand(sql, pamid);

111
}
public int spEliminarGrupo(int IDGrupo)
{
string sql = "spEliminarGrupo @IDGrupo";
SqlParameter pamid = new SqlParameter("@IDGrupo", IDGrupo);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarPeriodo(byte IDPeriodo)
{
string sql = "spEliminarPeriodo @IDPeriodo";
SqlParameter pamid = new SqlParameter("@IDPeriodo", IDPeriodo);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarExpediente(int IDExpediente)
{
string sql = "spEliminarExpediente @IDExpediente";
SqlParameter pamid = new SqlParameter("@IDExpediente",
IDExpediente);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarInscripcion(int IDInscripcion)
{
string sql = "spEliminarInscripcion @IDInscripcion";
SqlParameter pamid = new SqlParameter("@IDInscripcion", IDInscripcion);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarCalificacion(int IDCalificacion)
{
string sql = "spEliminarCalificacion @IDCalificacion";

112
SqlParameter pamid = new SqlParameter("@IDCalificacion",
IDCalificacion);
return this.Database.ExecuteSqlCommand(sql, pamid);
}

public int spEliminarAula(byte IDAula)


{
string sql = "spEliminarAula @IDAula";
SqlParameter pamid = new SqlParameter("@IDAula", IDAula);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarHorario(byte IDHorario)
{
string sql = "spEliminarHorario @IDHorario";
SqlParameter pamid = new SqlParameter("@IDHorario", IDHorario);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarIdioma(byte IDIdioma)
{
string sql = "spEliminarIdioma @IDIdioma";
SqlParameter pamid = new SqlParameter("@IDIdioma", IDIdioma);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarModalidad(byte IDModalidad)
{
string sql = "spEliminarModalidad @IDModalidad";
SqlParameter pamid = new SqlParameter("@IDModalidad", IDModalidad);
return this.Database.ExecuteSqlCommand(sql, pamid);
}

113
public int spEliminarNivel(byte IDNivel)
{
string sql = "spEliminarIdioma @IDNivel";
SqlParameter pamid = new SqlParameter("@IDNivel", IDNivel);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
public int spEliminarOrigen(byte IDOrigen)
{
string sql = "spEliminarOrigen @IDOrigen";
SqlParameter pamid = new SqlParameter("@IDOrigen", IDOrigen);
return this.Database.ExecuteSqlCommand(sql, pamid);
}
#endregion

//Procedimientos Almacenados: Fin

protected override void OnModelCreating(ModelBuilder modelBuilder)


{
modelBuilder.Entity<Administradores>(entity =>
{
entity.HasKey(e => e.Idadministrador);

entity.HasIndex(e => e.MatriculaAdministrador)


.HasName("UQ__Administ__2506404272FF32E6")
.IsUnique();

entity.Property(e =>
e.Idadministrador).HasColumnName("IDAdministrador");

114
entity.Property(e => e.ApellidoMaterno)
.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.ApellidoPaterno)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.Contrasena)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.Correo)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.MatriculaAdministrador)


.IsRequired()
.HasMaxLength(36)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)

115
.IsUnicode(false);

entity.Property(e => e.Telefono)


.IsRequired()
.HasMaxLength(20)
.IsUnicode(false);
});

modelBuilder.Entity<Alumnos>(entity =>
{
entity.HasKey(e => e.Idalumno);

entity.HasIndex(e => e.MatriculaAlumno)


.HasName("UQ__Alumnos__5928AEA3625BE639")
.IsUnique();

entity.Property(e => e.Idalumno).HasColumnName("IDAlumno");

entity.Property(e => e.ApellidoMaterno)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.ApellidoPaterno)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

116
entity.Property(e => e.Contrasena)
.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.Correo)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.IdorigenFk).HasColumnName("IDOrigen_FK");

entity.Property(e => e.MatriculaAlumno)


.IsRequired()
.HasMaxLength(36)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.Telefono)


.IsRequired()
.HasMaxLength(20)
.IsUnicode(false);

entity.HasOne(d => d.IdorigenFkNavigation)

117
.WithMany(p => p.Alumnos)
.HasForeignKey(d => d.IdorigenFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Alumnos__IDOrige__1B9317B3");
});

modelBuilder.Entity<Aulas>(entity =>
{
entity.HasKey(e => e.Idaula);

entity.Property(e => e.Idaula)


.HasColumnName("IDAula")
.ValueGeneratedOnAdd();

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
});

modelBuilder.Entity<Calificaciones>(entity =>
{
entity.HasKey(e => e.Idcalificacion);

entity.Property(e => e.Idcalificacion).HasColumnName("IDCalificacion");

entity.Property(e =>
e.IdinscripcionFk).HasColumnName("IDInscripcion_FK");

118
entity.HasOne(d => d.IdinscripcionFkNavigation)
.WithMany(p => p.Calificaciones)
.HasForeignKey(d => d.IdinscripcionFk)
.HasConstraintName("FK__Calificac__IDIns__36470DEF");
});

modelBuilder.Entity<Expedientes>(entity =>
{
entity.HasKey(e => e.Idexpediente);

entity.Property(e => e.Idexpediente).HasColumnName("IDExpediente");

entity.Property(e => e.IdalumnoFk).HasColumnName("IDAlumno_FK");

entity.Property(e => e.IdidiomaFk).HasColumnName("IDIdioma_FK");

entity.Property(e => e.IdnivelFk).HasColumnName("IDNivel_FK");

entity.HasOne(d => d.IdalumnoFkNavigation)


.WithMany(p => p.Expedientes)
.HasForeignKey(d => d.IdalumnoFk)
.HasConstraintName("FK__Expedient__IDAlu__2AD55B43");

entity.HasOne(d => d.IdidiomaFkNavigation)


.WithMany(p => p.Expedientes)
.HasForeignKey(d => d.IdidiomaFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Expedient__IDIdi__2BC97F7C");

119
entity.HasOne(d => d.IdnivelFkNavigation)
.WithMany(p => p.Expedientes)
.HasForeignKey(d => d.IdnivelFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Expedient__IDNiv__2CBDA3B5");
});

modelBuilder.Entity<Grupos>(entity =>
{
entity.HasKey(e => e.Idgrupo);

entity.Property(e => e.Idgrupo).HasColumnName("IDGrupo");

entity.Property(e => e.IdaulaFk).HasColumnName("IDAula_FK");

entity.Property(e => e.IdhorarioFk).HasColumnName("IDHorario_FK");

entity.Property(e => e.IdidiomaFk).HasColumnName("IDIdioma_FK");

entity.Property(e =>
e.IdmodalidadFk).HasColumnName("IDModalidad_FK");

entity.Property(e => e.IdnivelFk).HasColumnName("IDNivel_FK");

entity.Property(e => e.IdperiodoFk).HasColumnName("IDPeriodo_FK");

entity.Property(e => e.IdprofesorFk).HasColumnName("IDProfesor_FK");

120
entity.Property(e => e.Nombre)
.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.HasOne(d => d.IdaulaFkNavigation)


.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdaulaFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDAula_F__1E6F845E");

entity.HasOne(d => d.IdhorarioFkNavigation)


.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdhorarioFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDHorari__24285DB4");

entity.HasOne(d => d.IdidiomaFkNavigation)


.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdidiomaFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDIdioma__2057CCD0");

entity.HasOne(d => d.IdmodalidadFkNavigation)


.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdmodalidadFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDModali__2334397B");

121
entity.HasOne(d => d.IdnivelFkNavigation)
.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdnivelFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDNivel___214BF109");

entity.HasOne(d => d.IdperiodoFkNavigation)


.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdperiodoFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDPeriod__22401542");

entity.HasOne(d => d.IdprofesorFkNavigation)


.WithMany(p => p.Grupos)
.HasForeignKey(d => d.IdprofesorFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Grupos__IDProfes__1F63A897");
});

modelBuilder.Entity<Horarios>(entity =>
{
entity.HasKey(e => e.Idhorario);

entity.Property(e => e.Idhorario)


.HasColumnName("IDHorario")
.ValueGeneratedOnAdd();

122
entity.Property(e => e.Dias)
.IsRequired()
.HasMaxLength(250)
.IsUnicode(false);
});

modelBuilder.Entity<Idiomas>(entity =>
{
entity.HasKey(e => e.Ididioma);

entity.Property(e => e.Ididioma)


.HasColumnName("IDIdioma")
.ValueGeneratedOnAdd();

entity.Property(e => e.Descripcion)


.HasMaxLength(250)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
});

modelBuilder.Entity<Inscripciones>(entity =>
{
entity.HasKey(e => e.Idinscripcion);

123
entity.Property(e => e.Idinscripcion).HasColumnName("IDInscripcion");

entity.Property(e => e.FechaInscripcion).HasColumnType("datetime");

entity.Property(e => e.IdalumnoFk).HasColumnName("IDAlumno_FK");

entity.Property(e => e.IdgrupoFk).HasColumnName("IDGrupo_FK");

entity.HasOne(d => d.IdalumnoFkNavigation)


.WithMany(p => p.Inscripciones)
.HasForeignKey(d => d.IdalumnoFk)
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("FK__Inscripci__IDAlu__32767D0B");

entity.HasOne(d => d.IdgrupoFkNavigation)


.WithMany(p => p.Inscripciones)
.HasForeignKey(d => d.IdgrupoFk)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK__Inscripci__IDGru__336AA144");
});

modelBuilder.Entity<Modalidades>(entity =>
{
entity.HasKey(e => e.Idmodalidad);

entity.Property(e => e.Idmodalidad)


.HasColumnName("IDModalidad")
.ValueGeneratedOnAdd();

124
entity.Property(e => e.Descripcion)
.HasMaxLength(250)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
});

modelBuilder.Entity<Niveles>(entity =>
{
entity.HasKey(e => e.Idnivel);

entity.Property(e => e.Idnivel)


.HasColumnName("IDNivel")
.ValueGeneratedOnAdd();

entity.Property(e => e.Descripcion)


.HasMaxLength(250)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
});

125
modelBuilder.Entity<Origenes>(entity =>
{
entity.HasKey(e => e.Idorigen);

entity.Property(e => e.Idorigen)


.HasColumnName("IDOrigen")
.ValueGeneratedOnAdd();

entity.Property(e => e.Descripcion)


.HasMaxLength(250)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
});

modelBuilder.Entity<Periodos>(entity =>
{
entity.HasKey(e => e.Idperiodo);

entity.Property(e => e.Idperiodo)


.HasColumnName("IDPeriodo")
.ValueGeneratedOnAdd();

entity.Property(e => e.FechaFin).HasColumnType("date");

126
entity.Property(e => e.FechaInicio).HasColumnType("date");

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);
});

modelBuilder.Entity<Profesores>(entity =>
{
entity.HasKey(e => e.Idprofesor);

entity.HasIndex(e => e.MatriculaProfesor)


.HasName("UQ__Profesor__3CF934D323429F9F")
.IsUnique();

entity.Property(e => e.Idprofesor).HasColumnName("IDProfesor");

entity.Property(e => e.ApellidoMaterno)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.ApellidoPaterno)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

127
entity.Property(e => e.Contrasena)
.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.Correo)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.MatriculaProfesor)


.IsRequired()
.HasMaxLength(36)
.IsUnicode(false);

entity.Property(e => e.Nombre)


.IsRequired()
.HasMaxLength(100)
.IsUnicode(false);

entity.Property(e => e.Telefono)


.IsRequired()
.HasMaxLength(20)
.IsUnicode(false);
});
}
}

128
}

REPOSITORIOS

129
130
131
132
133
134
135
136
137
138
139
140
141
142
using SACELEX.Models;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

namespace SACELEX.Repositorios

public class UnitOfWork

//Contexto Entity Framework

private readonly dbSACELEXContext _Context;

//Repositorios

private AdministradoresRepository _AdministradoresRepository;

private AlumnosRepository _AlumnosRepository;

private AulasRepository _AulasRepository;

private CalificacionesRepository _CalificacionesRepository;

private ExpedientesRepository _ExpedientesRepository;

private GruposRepository _GruposRepository;

private HorariosRepository _HorariosRepository;

private IdiomasRepository _IdiomasRepository;

private InscripcionesRepository _InscripcionesRepository;

private ModalidadesRepository _ModalidadesRepository;

private NivelesRepository _NivelesRepository;

private OrigenesRepository _OrigenesRepository;

private PeriodosRepository _PeriodosRepository;

private ProfesoresRepository _ProfesoresRepository;

public UnitOfWork(dbSACELEXContext Context)

143
{

_Context = Context;

public AdministradoresRepository repoAdministradores

get

if(_AdministradoresRepository == null)

_AdministradoresRepository = new AdministradoresReposito


ry(_Context);

return _AdministradoresRepository;

public AlumnosRepository repoAlumnos

get

if (_AlumnosRepository == null)

_AlumnosRepository = new AlumnosRepository(_Context);

return _AlumnosRepository;

144
}

public AulasRepository repoAulas

get

if (_AulasRepository == null)

_AulasRepository = new AulasRepository(_Context);

return _AulasRepository;

public CalificacionesRepository repoCalificaciones

get

if (_CalificacionesRepository == null)

_CalificacionesRepository = new CalificacionesRepository


(_Context);

return _CalificacionesRepository;

145
public ExpedientesRepository repoExpedientes

get

if (_ExpedientesRepository == null)

_ExpedientesRepository = new ExpedientesRepository(_Cont


ext);

return _ExpedientesRepository;

public GruposRepository repoGrupos

get

if (_GruposRepository == null)

_GruposRepository = new GruposRepository(_Context);

return _GruposRepository;

public HorariosRepository repoHorarios

146
get

if (_HorariosRepository == null)

_HorariosRepository = new HorariosRepository(_Context);

return _HorariosRepository;

public IdiomasRepository repoIdiomas

get

if (_IdiomasRepository == null)

_IdiomasRepository = new IdiomasRepository(_Context);

return _IdiomasRepository;

public InscripcionesRepository repoInscripciones

get

if (_InscripcionesRepository == null)

147
{

_InscripcionesRepository = new InscripcionesRepository(_


Context);

return _InscripcionesRepository;

public ModalidadesRepository repoModalidades

get

if (_ModalidadesRepository == null)

_ModalidadesRepository = new ModalidadesRepository(_Cont


ext);

return _ModalidadesRepository;

public NivelesRepository repoNiveles

get

if (_NivelesRepository == null)

_NivelesRepository = new NivelesRepository(_Context);

148
}

return _NivelesRepository;

public OrigenesRepository repoOrigenes

get

if (_OrigenesRepository == null)

_OrigenesRepository = new OrigenesRepository(_Context);

return _OrigenesRepository;

public PeriodosRepository repoPeriodos

get

if (_PeriodosRepository == null)

_PeriodosRepository = new PeriodosRepository(_Context);

return _PeriodosRepository;

149
}

public ProfesoresRepository repoProfesores

get

if (_ProfesoresRepository == null)

_ProfesoresRepository = new ProfesoresRepository(_Contex


t);

return _ProfesoresRepository;

150
VIEWMODELS

151
152
153
154
VIEWS

155
156
157
158
159
160
161
162
163
164
165
166
167
@{

ViewData["Titulo"] = "Administradores";

<!-- Inicio -->

<div class="container-fluid mx-0 pb-3 px-0 fondito" style="min-


height: 100vh;">

<!-- Header -->

<div class="row mx-0 mb-3 color-primario text-light">

<div class="col-12 p-3">

<h3 class="mb-0 text-center">Administradores</h3>

</div>

</div>

<!-- Crear -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<a asp-controller="Administradores" asp-


action="RegistrarAdministrador" class=" btn btn-block btn-info text-
light sombras">

Nuevo Administrador

</a>

</div>

</div>

<!-- Formulario de Busqueda -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<form class=" p-3 bg-dark text-light sombras rounded">

<div class="form-group form-row justify-content-center mx-


0 mb-0">

<!-- Campo de Busqueda -->

168
<div class="col-12 px-0 my-2">

<input type="text" class="form-control text-


center sombras-controles"

id="txtBusquedaAdministradores" placeholder="
Buscar...">

</div>

<!-- Filtros de Busqueda -->

<div class="col-12 px-0 my-2 d-flex flex-wrap justify-


content-center">

<!-- Checkbox Sin Filtros -->

<div class="custom-control custom-checkbox custom-


control-inline my-1">

<input type="checkbox" class="custom-control-


input" id="cbxAdministradoresTodos">

<label class="custom-control-
label" for="cbxAdministradoresTodos">Sin Filtros</label>

</div>

<!-- RadioButton Matricula -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnAdministradoresMatri


cula"

name="FiltroBusquedaAdministradores" clas
s="custom-control-input">

<label class="custom-control-
label" for="rbtnAdministradoresMatricula">Matricula</label>

</div>

<!-- RadioButton Nombre -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnAdministradoresNombr


e" name="FiltroBusquedaAdministradores"

class="custom-control-input">

169
<label class="custom-control-
label" for="rbtnAdministradoresNombre">Nombre</label>

</div>

</div>

<!-- Boton de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="submit" class="btn btn-block btn-


success sombras"

id="btnBusquedaAdministradores" value="Buscar
">

</div>

</div>

</form>

</div>

</div>

<!-- Tabla -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<div class="card bg-light sombras">

<!-- Lista de Administradores -->

<div class="card-body p-3">

<div class="list-group sombras">

<div class="list-group-item d-flex justify-content-


center bg-dark text-light h5 mb-0">

Administradores

</div>

<a href="#" class="list-group-item list-group-item-


action">

<div class="d-flex justify-content-


start justify-content-sm-center">

170
<p class="mb-0"><span class="font-weight-
bold">Matricula: </span>2017132211</p>

</div>

<div class="d-flex justify-content-


start justify-content-sm-center">

<p class="mb-0">

<span class="font-weight-
bold">Nombre: </span>Rafael Estrada Piñon

</p>

</div>

</a>

</div>

</div>

<!-- Navegacion -->

<div class="card-footer p-3">

<nav aria-label="Page navigation example" class="d-


flex justify-content-center">

<ul class="pagination mb-


0 sombras" style="width: fit-content;">

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Previous">

<span aria-hidden="true">&laquo;</span>

</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">1</a>

</li>

<li class="page-item">

171
<a class="page-link border-0 text-
dark" style="box-shadow: none;"

href="#">2</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">3</a>

</li>

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Next">

<span aria-hidden="true">&raquo;</span>

</a>

</li>

</ul>

</nav>

</div>

</div>

</div>

</div>

<!-- Regresar -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<a asp-controller="Administradores" asp-


action="Index" class="btn btn-block btn-info text-light sombras">

Regresar

</a>

</div>

</div>

172
</div>

<!-- Fin -->

@{

ViewData["Titulo"] = "Expedientes";

<!-- Inicio -->

<div class="container-fluid mx-0 pb-3 px-0 fondito" style="min-


height: 100vh;">

<!-- Header -->

<div class="row mx-0 mb-3 color-primario text-light">

<div class="col-12 p-3">

<h3 class="mb-0 text-center">Generar Expediente</h3>

</div>

</div>

<!-- -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<div class="alert alert-success alert-dismissible fade show mb-


0" role="alert">

Registro Exitoso

<button type="button" class="close" data-


dismiss="alert" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

</div>

</div>

</div>

173
<!-- Formulario de Busqueda -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<form class=" p-3 bg-dark text-light sombras rounded">

<div class="form-group form-row justify-content-center mx-


0 mb-0">

<!-- Campo de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="text" class="form-control text-


center sombras-controles"

id="txtBusquedaAlumnos" placeholder="Buscar..
.">

</div>

<!-- Filtros de Busqueda -->

<div class="col-12 px-0 my-2 d-flex flex-wrap justify-


content-center">

<!-- Checkbox Sin Filtros -->

<div class="custom-control custom-checkbox custom-


control-inline my-1">

<input type="checkbox" class="custom-control-


input" id="cbxAlumnosTodos">

<label class="custom-control-
label" for="cbxAlumnosTodos">Sin Filtros</label>

</div>

<!-- RadioButton Matricula -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnAlumnosMatricula" na


me="FiltroBusquedaAlumnos"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnAlumnosMatricula">Matricula</label>

</div>

174
<!-- RadioButton Nombre -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnAlumnosNombre" name=


"FiltroBusquedaAlumnos"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnAlumnosNombre">Nombre</label>

</div>

</div>

<!-- Boton de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="submit" class="btn btn-block btn-


success sombras" id="btnBusquedaAlumnos"

value="Buscar">

</div>

</div>

</form>

</div>

</div>

<!-- Tabla -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<div class="card bg-light sombras">

<!-- Lista de Administradores -->

<div class="card-body p-3">

<div class="list-group sombras">

<div class="list-group-item d-flex justify-content-


center bg-dark text-light h5 mb-0">

Alumnos

175
</div>

<a href="#" onclick="AsignarIDAlumno(1)" class="list


-group-item list-group-item-action"

data-toggle="modal" data-
target="#modalGenerarExpediente"

id="btnModalGenerarExpediente">

<div class="d-flex justify-content-


start justify-content-sm-center">

<p class="mb-0"><span class="font-weight-


bold">Matricula: </span>2017132211</p>

</div>

<div class="d-flex justify-content-


start justify-content-sm-center">

<p class="mb-0">

<span class="font-weight-
bold">Nombre: </span>Rafael Estrada Piñon

</p>

</div>

</a>

</div>

</div>

<!-- Navegacion -->

<div class="card-footer p-3">

<nav aria-label="Page navigation example" class="d-


flex justify-content-center">

<ul class="pagination mb-


0 sombras" style="width: fit-content;">

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Previous">

<span aria-hidden="true">&laquo;</span>

176
</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">1</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">2</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">3</a>

</li>

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Next">

<span aria-hidden="true">&raquo;</span>

</a>

</li>

</ul>

</nav>

</div>

</div>

</div>

</div>

<!-- Regresar -->

177
<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<a class="btn btn-block btn-info text-light sombras">

Regresar

</a>

</div>

</div>

</div>

<!-- Fin -->

<!-- Modal -->

<div class="modal fade" tabindex="-1" role="dialog" aria-


labelledby="ModalGenerarExpediente" aria-hidden="true"

id="modalGenerarExpediente">

<div class="modal-dialog modal-lg modal-dialog-scrollable modal-dialog-


centered" role="document">

<div class="modal-content">

<div class="modal-header text-center">

<h5 class="modal-title w-100">Formulario</h5>

<button type="button" class="close" data-


dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

</div>

<div class="modal-body">

<div class="container-fluid px-0 mx-0">

<div class="row mx-0">

<div class="col-12 px-0">

<form class="p-3 bg-dark text-light rounded">

<div class="form-group form-row mx-


0 justify-content-center">

178
<div class="col-12 col-sm-10 col-md-
8 col-lg-6 my-2 px-0">

<!-- Titulo -->

<h3 class="mb-0 text-


center">Expediente</h3>

</div>

</div>

<div class="form-group form-row mx-


0 justify-content-center">

<!-- ID del Alumno -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="text" class="form-


control" id="txtIDAlumno" readonly>

</div>

<!-- Seleccionar Idioma -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectIdioma">

<option value="">Seleccione un i
dioma...</option>

</select>

</div>

<!-- Seleccionar Nivel -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectNivel">

<option value="">Seleccione un N
ivel...</option>

</select>

</div>

179
</div>

<div class="form-group form-row mx-


0 justify-content-center">

<!-- Generar Expediente -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="submit" class="btn btn-


block btn-info" data-dismiss="modal"

value="Generar" id="btnGenera
rExpediente">

</div>

<!-- Cancelar -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="submit" class="btn btn-


block btn-secondary"

data-
dismiss="modal" value="Cancelar">

</div>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<script>

function AsignarIDAlumno(id) {

let txtIDAlumno = document.getElementById("txtIDAlumno");

180
txtIDAlumno.value = id;

</script>

@{

ViewData["Title"] = "Horarios";

<!-- Inicio -->

<div class="container-fluid mx-0 px-0">

<!-- Header -->

<div class="row mx-0 bg-dark text-light">

<div class="col-12 p-3">

<h3 class="mb-0 text-center">Horarios</h3>

</div>

</div>

<!-- Contenido -->

<div class="row mx-0 my-3 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 px-0">

<div class="container-fluid px-0 mx-0">

<!-- Mensajes -->

<div class="row mx-0 justify-content-center">

<div class="col-12 p-3 color-


primario sombras" id="divMensajesHorario">

<!-- Aqui se mostraran los mensajes -->

</div>

</div>

<!-- Crear -->

181
<div class="row mx-0 justify-content-center color-
secundario">

<div class="col-12 p-3">

<button class="btn btn-block btn-info sombras" data-


toggle="modal"

data-target="#modalHorario">

Nuevo Horario

</button>

</div>

</div>

<!-- Formulario de Busqueda -->

<div class="row mx-0 justify-content-center">

<div class="col-12 p-3 color-primario sombras">

<form class=" p-3 bg-dark text-light sombras">

<div class="form-group form-row justify-content-


center mx-0 mb-0">

<!-- Campo de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="text" class="form-


control text-center" id="txtBusqueda"

placeholder="Buscar...">

</div>

<!-- Filtros de Busqueda -->

<div class="col-12 px-0 my-2 d-flex flex-


wrap justify-content-center">

<div class="custom-control custom-


radio custom-control-inline my-1">

<input type="radio" id="rbtnHorarios


ID" name="FiltroBusquedaHorarios"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnHorariosID">ID</label>

182
</div>

<div class="custom-control custom-


radio custom-control-inline my-1">

<input type="radio" id="rbtnHorarios


Dias" name="FiltroBusquedaHorarios"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnHorariosDias">Dias</label>

</div>

<div class="custom-control custom-


radio custom-control-inline my-1">

<input type="radio" id="rbtnHorarios


HoraInicio"

name="FiltroBusquedaHorarios"
class="custom-control-input">

<label class="custom-control-
label" for="rbtnHorariosHoraInicio">

Hora de

Entrada

</label>

</div>

<div class="custom-control custom-


radio custom-control-inline my-1">

<input type="radio" id="rbtnHorarios


HoraFin" name="FiltroBusquedaHorarios"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnHorariosHoraFin">

Hora de

Salida

</label>

</div>

</div>

183
<!-- Boton de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="submit" class="btn btn-


block btn-success" id="btnBusqueda"

value="Buscar">

</div>

</div>

</form>

</div>

</div>

<!-- Tabla -->

<div class="row mx-0 justify-content-center">

<div class="col-12 p-3 color-secundario">

<div class="card bg-light sombras">

<!-- Lista de Administradores -->

<div class="card-body p-3 contenedor-tabla">

<table class="table tabla">

<thead>

<tr>

<th scope="col">ID</th>

<th scope="col">Dias</th>

<th scope="col">Hora de Entrada<


/th>

<th scope="col">Hora de Salida</


th>

<th scope="col">

</th>

</tr>

</thead>

<tbody id="RegistrosTabla">

184
<!-
- Aquí estarán las vistas parciales -->

@foreach (Horarios horario in ViewBa


g.Lista)

<partial name="HorarioPartialVie
w" model="horario" />

</tbody>

</table>

</div>

<!-- Navegacion -->

<div class="card-footer p-3">

<nav aria-
label="Page navigation example" class="d-flex justify-content-center">

<ul class="pagination mb-0 sombras">

<li class="page-item">

<a class="page-link border-0 bg-


dark text-light"

style="box-
shadow: none;" href="#" aria-label="Previous">

<span aria-
hidden="true">&laquo;</span>

</a>

</li>

<li class="page-item">

<a class="page-link border-


0 text-dark"

style="box-
shadow: none;" href="#">1</a>

</li>

<li class="page-item">

185
<a class="page-link border-0 bg-
dark text-light"

style="box-
shadow: none;" href="#" aria-label="Next">

<span aria-
hidden="true">&raquo;</span>

</a>

</li>

</ul>

</nav>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<!-- Fin -->

<!-- Modal Horario -->

<div class="modal fade" tabindex="-1" role="dialog" aria-


labelledby="ModalCrearRegistro" aria-hidden="true"

id="modalHorario">

<div class="modal-dialog modal-lg modal-dialog-scrollable modal-dialog-


centered" role="document">

<div class="modal-content">

<div class="modal-header text-center">

<h5 class="modal-title w-100">Formulario</h5>

<button type="button" class="close" data-


dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

186
</button>

</div>

<div class="modal-body">

<div class="container-fluid px-0 mx-0">

<div class="row mx-0">

<div class="col-12 px-0">

<form method="post" id="formHorario" class="p-


3 bg-dark text-light rounded">

<div class="form-group form-row mx-


0 justify-content-center">

<!-- Titulo -->

<div class="col-12 col-sm-10 col-md-


8 col-lg-6 my-2 px-0">

<h3 class="mb-0 text-


center">Nueva Aula</h3>

</div>

</div>

<div class="form-group form-row mx-


0 justify-content-center">

<!-- Dias -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="text" class="form-


control" placeholder="Dias..."

id="inputCrearDias">

</div>

<!-- Dias -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select id="seleccion" class="custom


-select">

<option value="value">Selecciona
una opcion...</option>

187
</select>

</div>

<!-- Hora de Entrada -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="time" class="form-


control" placeholder="Hora de Entrada..."

id="inputCrearHoraEntrada">

</div>

<!-- Hora de Salida -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="time" class="form-


control" placeholder="Hora de Salida..."

id="inputCrearHoraSalida">

</div>

</div>

<div class="form-group form-row mx-


0 justify-content-center">

<!-- Boton Crear Tabla -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="submit" class="btn btn-


block btn-info"

value="Crear" id="btnCrearHor
ario">

</div>

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="reset" class="btn btn-


block btn-secondary"

data-
dismiss="modal" value="Cancelar">

188
</div>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<!-- Modal Editar -->

<div class="modal fade" tabindex="-1" role="dialog" aria-


labelledby="ModalEditarRegistroConfirmacion"

aria-hidden="true" id="modalHorarioEditar">

<div class="modal-dialog modal-dialog-centered" role="document">

<div class="modal-content">

<div class="modal-header text-center">

<h5 class="modal-title w-100">Editar Horario</h5>

<button type="button" class="close" data-


dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

</div>

<div class="modal-body">

<p class="mb-0 text-


center">¿Esta seguro que desea modificar este registro?</p>

</div>

<div class="modal-footer">

<button type="button" class="btn btn-danger" data-


dismiss="modal">Cancelar</button>

189
<button type="button" class="btn btn-info" data-
dismiss="modal">Confirmar</button>

</div>

</div>

</div>

</div>

<!-- Modal Eliminar -->

<div class="modal fade" tabindex="-1" role="dialog" aria-


labelledby="ModalEliminarRegistroConfirmacion"

aria-hidden="true" id="modalHorarioEliminar">

<div class="modal-dialog modal-dialog-centered" role="document">

<div class="modal-content">

<div class="modal-header text-center">

<h5 class="modal-title w-100">Eliminar Horario</h5>

<button type="button" class="close" data-


dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

</div>

<div class="modal-body">

<p class="mb-0 text-


center">¿Esta seguro que desea eliminar este registro?</p>

</div>

<div class="modal-footer">

<button type="button" class="btn btn-danger" data-


dismiss="modal">Cancelar</button>

<button type="button" class="btn btn-info" data-


dismiss="modal">Confirmar</button>

</div>

</div>

190
</div>

</div>

<style>

body {

font-family: "nunito";

.fondito {

background-
image: url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHC
AgIBwgHBwcHBwoHBwcHBw8ICQcKIBEiFiAREx8YKCggGBolGxMTITEhJSkrLi4uFx8zODMsNygtL
isBCgoKDQ0NDg0NDysZFRkrLSsrLSsrLS0rKysrLS0rKysrKysrKysrKysrKysrKysrKysrKysrK
ysrKysrKysrK//AABEIALEBHAMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAABAAIFBv/EA
BYQAQEBAAAAAAAAAAAAAAAAAAABEf/EABkBAQEBAQEBAAAAAAAAAAAAAAABAwIFBP/EABURAQEAA
AAAAAAAAAAAAAAAAAAR/9oADAMBAAIRAxEAPwD2oIfS9NJIEkgSSApICkgJBEKBQJgIhQIEgohQI
EggoQhCkgRBBEIQxKIHPBDtokEBQIIhQCkgJgSI0gQJZINIEQwwIGkCiEggUCIiCBQSBIQFAgiIQ
c4INHRQQpQQEskQ6tBAlkgSEg0YyRDCCFJBRCWSBIhAoEQoECgUKiEFJCEKSBzdSDR3SAgpLJClB
BTp0ISkggYWSBIKFJZIlaLJCtFkolJBgGIECWSgUCIiEBIQEhA5oQauqUAFaTJClBA0gRKSyQpLJ
iDRjJBoslEaLJ0K0WSFJBRKUCFKBClAoIhASEIYQgcwINlpWhBSggpQJClAoUlkhWtLJCkhINplo
QkFAwstQCWSg0gRCgQpQMCohBSQkKYQgcsLQ2hShqWFKGrSFJZOoEskKSyQrRZKFaLJBoslErRZI
NFkoNFmECQkGkCIUCCIQEwJAwhBXKCDcpQQUoagrSZIUlkhWtQKFJCCtFlpCkwQiUtMmINFmEK0o
CgYYEDSBQKBAoICYEI0gUHJCDcSCUJZIFBINIECWYQaMZKDRZINFmNIGEFBpAwCQUDCCJSWShSgQ
KBBEQoFAg5ASbiQShQIIhINIIGiyRCRDEGoWTAaLLUQMMBQaLJgNFmFAkFAkIDCEBLJAoFApIHIB
ordEglUoICYEgSCISyQaLJiK0Yy0iEwQg1CyUGizGkDCIQJZKBIIIgoKEQgoQQRBByKKE3EkgSSA
xJATAkCUgJiQGNQJBqGBINQpIGNJATAkCUkCYkCKQIpAkUgokgf/9k=");

background-position: center;

background-repeat: no-repeat;

background-size: cover;

background-attachment: fixed;

.sombras {

box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.25);

191
.sombras-controles:focus {

border: 1px solid rgba(183, 128, 255, 1);

box-shadow: 0px 0px 5px 0px rgba(183, 128, 255, .5);

.color-primario {

box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.25);

background-color: rgb(66, 54, 141);

.color-secundario {

box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.25);

background-color: rgb(114, 100, 201);

.contenedor-tabla {

overflow: auto;

.tabla {

min-width: 750px;

.tabla thead tr th,

.tabla tbody tr th,

.tabla tbody tr td {

min-width: 30px;

vertical-align: middle;

192
}

.input-dias {

width: 200px;

.input-hora {

width: 150px;

</style>

<script>

//Formulario de Creacion

let formHorario = document.getElementById('formHorario');

//Input de Creacion

let inputCrearDias = document.getElementById('inputCrearDias');

let inputCrearHoraEntrada = document.getElementById('inputCrearHoraEntra


da');

let inputCrearHoraSalida = document.getElementById('inputCrearHoraSalida


');

//Panel de Mensajes

let divMensajes = document.getElementById('divMensajesHorario');

//Tabla

tablaHorarios = document.getElementById("tablaHorarios");

formHorario.addEventListener('submit', (e) => {

e.preventDefault();

console.log("Hol");

//Objeto

let oHorario = {

193
Dias: inputCrearDias.value,

HoraInicio: inputCrearHoraEntrada.value,

HoraFin: inputCrearHoraSalida.value

fetch('Administradores/CrearHorario', {

method: 'POST',

headers: {

Accept: 'application/json',

'Content-Type': 'application/json'

},

body: JSON.stringify(oHorario)

})

.then((servidor) => {

if (servidor.ok) {

return servidor.json();

} else {

throw 'Hubo un problema al realizar la peticion al servi


dor';

})

.then((resultados) => {

let mensaje;

let plantillaMensaje;

if (resultados.estado == 1) {

//Se registro exitosamente

mensaje = 'Se realizó el registro con exito';

plantillaMensaje = `<div class="alert alert-


success alert-dismissible fade show mb-0" role="alert">${mensaje}

194
<button type="button" class="close" data-dismiss="alert" aria-
label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

//Se pasa al objeto a la funcion indicada

let plantillaObjeto = `<tr><th scope="row">${resultados.


horario.Idhorario}</th>

<td><input type="text" id="inputDias-


${resultados.horario.Idhorario}" class="form-control input-
dias" value="${resultados.horario.Dias}" readonly /></td>

<td><input type="time" id="inputHoraInicio-


${resultados.horario.Idhorario}" class="form-control input-
hora" value="${resultados.horario.HoraInicio}" readonly /></td>

<td><input type="time" id="inputHoraFin-


${resultados.horario.Idhorario}" class="form-control input-
hora" value="${resultados.horario.HoraFin}" readonly /></td>

<td><button class="btn btn-


info" onclick="EditarHorario(this, ${resultados.horario.Idhorario})">M</butt
on>

<button class="btn btn-


danger" onclick="EliminarHorario(${resultados.horario.Idhorario})">E</button
>

</td></tr>`;

tablaHorarios.innerHTML += plantillaObjeto;

if (resultados.estado == 2) {

//No se pudo registrar al servidor

mensaje = 'No se pudo realizar el registro';

plantillaMensaje = `<div class="alert alert-


danger alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-dismiss="alert" aria-


label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

if (resultados.estado == 3) {

195
//Se ingresó un dato erroneo

mensaje = 'Los datos enviados no son correctos';

plantillaMensaje = `<div class="alert alert-


warning alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-dismiss="alert" aria-


label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

divMensajes.innerHTML = plantillaMensaje;

})

.catch((error) => {

console.error(error);

});

});

function EditarHorario(control, id) {

const dias = document.getElementById(`inputDias-${id}`);

const hinicio = document.getElementById(`inputHoraInicio-${id}`);

const hfin = document.getElementById(`inputHoraFin-${id}`);

if (control.innerText === "M") {

dias.attributes.removeNamedItem("readonly");

hinicio.attributes.removeNamedItem("readonly");

hfin.attributes.removeNamedItem("readonly");

control.innerText = "m";

else {

fetch('Administradores/EditarHorario', {

196
method: 'PUT',

headers: {

Accept: 'application/json',

'Content-Type': 'application/json'

},

body: JSON.stringify({

Idhorario: id,

Dias: dias.value,

HoraInicio: hinicio.value,

HoraFin: hfin.value,

})

})

.then((servidor) => {

if (servidor.ok) {

return servidor.json();

} else {

throw 'Hubo un problema al realizar la peticion al s


ervidor';

})

.then((resultados) => {

let mensaje;

let plantillaMensaje;

if (resultados.estado == 1) {

//Se elimino exitosamente

let contenedorFilas = document.getElementById("conte


nedorFilas");

let fila = document.getElementById(`filaHorario-


${id}`);

197
contenedorFilas.removeChild(fila);

//Muestra mensaje

mensaje = 'Se editó el registro con exito';

plantillaMensaje = `<div class="alert alert-


success alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-


dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

tablaHorarios.innerHTML += plantillaObjeto;

control.innerText = "M";

if (resultados.estado == 2) {

//No se pudo eliminar

mensaje = 'No se pudo editar el registro';

plantillaMensaje = `<div class="alert alert-


danger alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-


dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

dias.attributes.setNamedItem("readonly");

hinicio.attributes.setNamedItem("readonly");

hfin.attributes.setNamedItem("readonly");

if (resultados.estado == 3) {

//Se ingresó un dato erroneo

mensaje = 'Los datos enviados no son correctos';

plantillaMensaje = `<div class="alert alert-


warning alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-


dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

198
}

divMensajes.innerHTML = plantillaMensaje;

})

.catch((error) => {

console.error(error);

});

function EliminarHorario(id) {

fetch('Administradores/EliminarHorario', {

method: 'DELETE',

headers: {

Accept: 'application/json',

'Content-Type': 'application/json'

},

body: JSON.stringify({

id: id

})

})

.then((servidor) => {

if (servidor.ok) {

return servidor.json();

} else {

throw 'Hubo un problema al realizar la peticion al servi


dor';

})

199
.then((resultados) => {

let mensaje;

let plantillaMensaje;

if (resultados.estado == 1) {

//Se elimino exitosamente

let contenedorFilas = document.getElementById("contenedo


rFilas");

let fila = document.getElementById(`filaHorario-${id}`);

contenedorFilas.removeChild(fila);

//Muestra mensaje

mensaje = 'Se eliminó el registro con exito';

plantillaMensaje = `<div class="alert alert-


success alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-dismiss="alert" aria-


label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

tablaHorarios.innerHTML += plantillaObjeto;

if (resultados.estado == 2) {

//No se pudo eliminar

mensaje = 'No se pudo eliminar el registro';

plantillaMensaje = `<div class="alert alert-


danger alert-dismissible fade show mb-0" role="alert">${mensaje}

<button type="button" class="close" data-dismiss="alert" aria-


label="Close"><span aria-hidden="true">&times;</span>

</button></div>`;

divMensajes.innerHTML = plantillaMensaje;

})

200
.catch((error) => {

console.error(error);

});

</script>

@{

ViewData["Titulo"] = "Profesores";

<!-- Inicio -->

<div class="container-fluid mx-0 pb-3 px-0 fondito" style="min-


height: 100vh;">

<!-- Header -->

<div class="row mx-0 mb-3 color-primario text-light">

<div class="col-12 p-3">

<h3 class="mb-0 text-center">Profesores</h3>

</div>

</div>

<!-- Crear -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<a asp-controller="Administradores" asp-


action="RegistrarProfesor" class="btn btn-block btn-info text-
light sombras">

Nuevo Profesor

</a>

</div>

</div>

201
<!-- Formulario de Busqueda -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<form class=" p-3 bg-dark text-light sombras rounded">

<div class="form-group form-row justify-content-center mx-


0 mb-0">

<!-- Campo de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="text" class="form-control text-


center sombras-controles"

id="txtBusquedaProfesores" placeholder="Busca
r...">

</div>

<!-- Filtros de Busqueda -->

<div class="col-12 px-0 my-2 d-flex flex-wrap justify-


content-center">

<!-- Checkbox Sin Filtros -->

<div class="custom-control custom-checkbox custom-


control-inline my-1">

<input type="checkbox" class="custom-control-


input" id="cbxProfesoresTodos">

<label class="custom-control-
label" for="cbxProfesoresTodos">Sin Filtros</label>

</div>

<!-- RadioButton Matricula -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnProfesoresMatricula"


name="FiltroBusquedaProfesores"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnProfesoresMatricula">Matricula</label>

</div>

202
<!-- RadioButton Nombre -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnProfesoresNombre" na


me="FiltroBusquedaProfesores"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnProfesoresNombre">Nombre</label>

</div>

</div>

<!-- Boton de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="submit" class="btn btn-block btn-


success sombras" id="btnBusquedaProfesores"

value="Buscar">

</div>

</div>

</form>

</div>

</div>

<!-- Tabla -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<div class="card bg-light sombras">

<!-- Lista de Administradores -->

<div class="card-body p-3">

<div class="list-group sombras">

<div class="list-group-item d-flex justify-content-


center bg-dark text-light h5 mb-0">

Profesores

203
</div>

<a href="#" class="list-group-item list-group-item-


action">

<div class="d-flex justify-content-


start justify-content-sm-center">

<p class="mb-0"><span class="font-weight-


bold">Matricula: </span>2017132211</p>

</div>

<div class="d-flex justify-content-


start justify-content-sm-center">

<p class="mb-0">

<span class="font-weight-
bold">Nombre: </span>Rafael Estrada Piñon

</p>

</div>

</a>

</div>

</div>

<!-- Navegacion -->

<div class="card-footer p-3">

<nav aria-label="Page navigation example" class="d-


flex justify-content-center">

<ul class="pagination mb-


0 sombras" style="width: fit-content;">

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Previous">

<span aria-hidden="true">&laquo;</span>

</a>

</li>

<li class="page-item">

204
<a class="page-link border-0 text-
dark" style="box-shadow: none;"

href="#">1</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">2</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">3</a>

</li>

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Next">

<span aria-hidden="true">&raquo;</span>

</a>

</li>

</ul>

</nav>

</div>

</div>

</div>

</div>

<!-- Regresar -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

205
<a asp-controller="Administradores" asp-
action="Index" class="btn btn-block btn-info text-light sombras">

Regresar

</a>

</div>

</div>

</div>

<!-- Fin -->

@{

ViewData["Titulo"] = "Grupos";

<!-- Inicio -->

<div class="container-fluid px-0 mx-0">

<div class="row mx-0 contenedor-grupos">

<!-- Informacion del Grupo -->

<div class="col-12 col-lg-8 px-0 grupos-columna-izquierda order-


2 order-lg-1 paleta-1-color-fondo-3 sombras-int"

id="Grupo">

<div class="container-fluid px-0 mx-0">

<div class="row mx-0">

<!-- Detalles -->

<div class="col-12 px-0">

<!-- Titulo -->

<div class="row mx-0 paleta-1-color-fondo-3 sombras-


int">

<div class="col-12 p-3 px-0">

<h2 class="mb-0 text-center">Grupo 5IV9</h2>

206
</div>

</div>

<!-- Cards -->

<div class="row mx-0 paleta-1-color-fondo-1 sombras-


int">

<!-- Idioma -->

<div class="col-12 col-sm-6 col-md-4 px-2 my-2">

<div class="card paleta-1-color-fondo-


2 sombras-int">

<div class="card-body">

<h5 class="card-title">

Idioma</h3>

<select class="custom-
select" value="Portugués" id="SelectIdioma" disabled>

<option value="Portugués">Po
rtugués</option>

</select>

</div>

</div>

</div>

<!-- Nivel -->

<div class="col-12 col-sm-6 col-md-4 px-2 my-2">

<div class="card paleta-1-color-fondo-


2 sombras-int">

<div class="card-body">

<h5 class="card-title">

Nivel</h3>

<select class="custom-
select" id="SelectNivel" disabled>

<option value="Intermedio">I
ntermedio</option>

</select>

207
</div>

</div>

</div>

<!-- Profesor -->

<div class="col-12 col-sm-6 col-md-4 px-2 my-2">

<div class="card paleta-1-color-fondo-


2 sombras-int">

<div class="card-body">

<h5 class="card-title">

Profesor</h3>

<select class="custom-
select" id="SelectProfesor" disabled>

<option value="Juanito Rodri


guez Perez Mendiola">Juanito Rodriguez Perez Mendiola</option>

</select>

</div>

</div>

</div>

<!-- Modalidad -->

<div class="col-12 col-sm-6 col-md-4 px-2 my-2">

<div class="card paleta-1-color-fondo-


2 sombras-int">

<div class="card-body">

<h5 class="card-title">

Modalidad</h3>

<select class="custom-
select" id="SelectModalidad" disabled>

<option value="Intensivo">In
tensivo</option>

</select>

</div>

208
</div>

</div>

<!-- Aula -->

<div class="col-12 col-sm-6 col-md-4 px-2 my-2">

<div class="card paleta-1-color-fondo-


2 sombras-int">

<div class="card-body">

<h5 class="card-title">

Aula</h3>

<select class="custom-
select" id="SelectAula" disabled>

<option value="Salón 435">Sa


lón 435</option>

</select>

</div>

</div>

</div>

<!-- Horario -->

<div class="col-12 col-sm-6 col-md-4 px-2 my-2">

<div class="card paleta-1-color-fondo-


2 sombras-int">

<div class="card-body">

<h5 class="card-title">

Horario</h3>

<select class="custom-
select" id="SelectHorario" disabled>

<option value="Lunes - Viern


es, 12:00 - 14:00">Lunes - Viernes, 12:00 - 14:00</option>

</select>

</div>

</div>

209
</div>

</div>

</div>

<!-- Tabla -->

<div class="col-12 paleta-1-color-fondo-1 sombras-


int px-0">

<div class="row mx-0">

<div class="col-12 p-3 paleta-1-color-fondo-


3 sombras-int">

<h3 class="mb-0 text-center">Alumnos</h3>

</div>

<div class="col-12 p-2 px-0 contenedor-tabla">

<table class="table my-0 tabla">

<thead class="paleta-1-color-fondo-
3 sombras-int">

<tr>

<th scope="col">Matricula</th>

<th scope="col">Nombre</th>

<th scope="col"></th>

</tr>

</thead>

<tbody class="paleta-1-color-fondo-
2 sombras-int" id="TablaGruposAlumnos">

<tr>

<th scope="row">2017132211sd</th
>

<td>Juanito Alfonso Perez Martin


ez Rodriguez</td>

<td>

<button class="btn btn-


danger"><i class="fas fa-trash-alt"></i></button>

</td>

210
</tr>

</tbody>

</table>

</div>

</div>

</div>

</div>

<!-- Operaciones -->

<div class="row mx-0 justify-content-center paleta-1-color-


fondo-3">

<!-- Modificar -->

<div class="col-12 col-sm-10 col-md-6 col-lg-3 px-2 pt-


2 py-md-3 px-0">

<button class="btn btn-block bg-info text-


light" id="btnModificarGrupo">

Modificar <i class="fas fa-edit"></i>

</button>

</div>

<!-- Eliminar -->

<div class="col-12 col-sm-10 col-md-6 col-lg-3 px-2 py-


2 py-md-3 px-0">

<button class="btn btn-block bg-danger text-


light" id="btnEliminarGrupo">

Eliminar <i class="fas fa-trash-alt"></i>

</button>

</div>

</div>

</div>

</div>

<!-- Lista de Grupos -->

211
<div class="col-12 col-lg-4 p-3 paleta-1-color-fondo-3 sombras-
int grupos-columna-derecha order-1 order-lg-2">

<div class="container-fluid px-0 mx-0" style="height: 100%">

<div class="row mx-0 justify-content-center align-items-


between" style="height: 100%">

<!-- Agregar Grupo -->

<div class="col-6 col-lg-12 px-0 pr-1 pr-sm-3 px-lg-


1 py-lg-1 order-1 order-lg-1">

<button data-toggle="modal" data-


target="#modalCrearGrupo"

class="btn btn-block btn-info text-


light sombras" id="btnCrearGrupo">

Agregar Grupo

</button>

</div>

<!-- Lista -->

<div class="col-12 px-0 order-3 order-lg-2 contenedor-


lista">

<div class=" list-group grupos-lista list-group-


lg" id="ListaGrupos">

<!-- Grupos -->

</div>

</div>

<!-- Regresar -->

<div class="col-6 col-lg-12 px-0 pl-1 pl-sm-3 px-lg-


1 py-lg-1 order-2 order-lg-3">

<a asp-controller="Administradores" asp-


action="Index" class="btn btn-block btn-info text-
light sombras">Regresar</a>

</div>

</div>

</div>

</div>

212
</div>

</div>

<!-- Fin -->

<!-- Modal -->

<div class="modal fade" tabindex="-1" role="dialog" aria-


labelledby="myLargeModalLabel" aria-hidden="true"

id="modalCrearGrupo">

<div class="modal-dialog modal-lg modal-dialog-scrollable modal-dialog-


centered" role="document">

<div class="modal-content">

<div class="modal-header text-center">

<h5 class="modal-title w-100">Formulario</h5>

<button type="button" class="close" data-


dismiss="modal" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

</div>

<div class="modal-body">

<div class="container-fluid px-0 mx-0">

<div class="row mx-0">

<div class="col-12 px-0">

<form class="p-3 bg-dark text-


light" style="border-radius: 10px;">

<div class="form-group form-row mx-


0 justify-content-center">

<div class="col-12 col-sm-10 col-md-


8 col-lg-6 my-2 px-0">

<!-- Titulo -->

<h3 class="mb-0 text-


center">Nuevo Grupo</h3>

</div>

</div>

213
<div class="form-group form-row mx-
0 justify-content-center">

<!-- Nombre -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="text" class="form-


control" placeholder="Nombre..." id="txtCrearNombre">

</div>

<!-- Aula -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectCrearAula">

<option value="">Seleccione una


opcion</option>

</select>

</div>

<!-- Profesor -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectCrearProfesor">

<option value="">Seleccione una


opcion</option>

</select>

</div>

<!-- Idioma -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

214
<select class="custom-
select" id="selectCrearIdioma">

<option value="">Seleccione una


opcion</option>

</select>

</div>

<!-- Nivel -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectNivelAula">

<option value="">Seleccione una


opcion</option>

</select>

</div>

<!-- Modalidad -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectCrearModalidad">

<option value="">Seleccione una


opcion</option>

</select>

</div>

<!-- Horario -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<select class="custom-
select" id="selectCrearHorario">

215
<option value="">Seleccione una
opcion</option>

</select>

</div>

</div>

<div class="form-group form-row mx-


0 justify-content-center">

<!-- Boton Crear Tabla -->

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="submit" class="btn btn-


block btn-info" data-dismiss="modal" value="Crear"

id="btnModalCrearGrupo">

</div>

<div class="col-12 col-sm-10 col-md-


8 my-2 px-0">

<input type="submit" class="btn btn-


block btn-secondary" data-dismiss="modal" value="Cancelar">

</div>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<style>

216
.sombras {

box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.25);

/* .sombras-controles:focus {

border: 1px solid rgba(183, 128, 255, 1);

box-shadow: 0px 0px 5px 0px rgba(183, 128, 255, .5);

} */

.sombras-int {

box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.2);

.paleta-1-color-fondo-1 {

background-color: #fff3cd;

color: #574949;

.paleta-1-color-fondo-2 {

background-color: #998787;

color: white;

.paleta-1-color-fondo-3 {

background-color: #574949;

color: white;

.paleta-2-color-fondo-1 {

217
background-color: rgb(57, 53, 70);

color: white;

.paleta-2-color-fondo-2 {

background-color: rgb(43, 40, 54);

color: white;

.contenedor-tabla {

overflow-x: auto;

.tabla {

overflow: hidden;

text-align: center;

box-shadow: 0px 0px 5px 0.5px rgba(0, 0, 0, 0.5);

min-width: 500px;

border-radius: 7.5px 7.5px 7.5px 7.5px;

.tabla tbody tr:hover {

background-color: rgba(250, 250, 250, 0.05);

.tabla thead tr th {

border: none;

218
.tabla tbody tr th,

.tabla tbody tr td {

border: 0;

vertical-align: middle;

min-width: 30px;

.contenedor-grupos {

width: 100%;

height: 100vh;

@@media (min-width: 0px) and (max-width: 992px) {

.grupos-columna-izquierda {

height: 70%;

overflow-y: auto;

.grupos-columna-derecha {

height: 30%;

overflow-y: auto;

.grupos-lista {

flex-direction: row;

.lista-grupos-grupo {

min-width: 300px;

219
}

.contenedor-lista {

overflow-x: auto;

height: auto;

@@media (min-width: 992px) {

.grupos-columna-izquierda {

height: 100vh;

overflow-y: auto;

.grupos-columna-derecha {

height: 100vh;

overflow-y: auto;

.grupos-lista {

flex-direction: column;

.contenedor-lista {

overflow-x: auto;

height: 70vh;

220
</style>

<script>

const btnCrearGrupo = $("#btnCrearGrupo");

const btnModificarGrupo = $("#btnModificarGrupo");

const btnEliminarGrupo = $("#btnEliminarGrupo");

let modificando = false;

const GrupoSelect = [

$("#SelectAula"),

$("#SelectHorario"),

$("#SelectIdioma"),

$("#SelectModalidad"),

$("#SelectNivel"),

$("#SelectProfesor"),

btnModificarGrupo.click(() => {

console.log("Hola Mundo");

if (!modificando) {

GrupoSelect.forEach((elemento) => {

elemento.attr("disabled", false);

});

modificando = true;

} else {

GrupoSelect.forEach((elemento) => {

elemento.attr("disabled", true);

});

modificando = false;

221
}

});

btnCrearGrupo.click(() => {

$("#ListaGrupos").append(`

<a href="#" class="list-group-item list-group-item-action lista-


grupos-grupo">

<div class="d-flex justify-content-around align-items-center">

<p class="h5 mb-1">6IV9</p>

</div>

<div>

<p class="mb-0 text-center">

<span class="h6 mb-0">Intensivo</span>/

<span class="h6 mb-0">Portugues</span>/

<span class="h6 mb-0">Intermedio</span>

</p>

</div>

</a>

`);

});

</script>

<script>

let json = {

Aulas: [

valor: 1,

valor: 1,

222
valor: 1,

valor: 1

},

valor: 1,

valor: 1,

valor: 1,

valor: 1

},

valor: 1,

valor: 1,

valor: 1,

valor: 1

],

Profesores: [

valor: 1,

valor: 1,

valor: 1,

valor: 1

},

valor: 1,

valor: 1,

valor: 1,

valor: 1

},

223
{

valor: 1,

valor: 1,

valor: 1,

valor: 1

],

Horarios: [

valor: 1,

valor: 1,

valor: 1,

valor: 1

},

valor: 1,

valor: 1,

valor: 1,

valor: 1

},

valor: 1,

valor: 1,

valor: 1,

valor: 1

</script>

224
@model SACELEX.Models.Administradores

@{

ViewData["Titulo"] = "RegistrarAdministrador";

<div class="container-fluid px-0 mx-0">

<!-- Seccion Formulario -->

<div class="row mx-0 justify-content-center">

<div class="col-12 col-sm-10 col-md-8 col-lg-6 col-xl-5 p-3">

<form asp-controller="Administradores" asp-


action="RegistrarAdministrador" method="post" class="p-3 bg-dark text-
light shadow rounded">

<div class="form-group form-row my-0 mx-0 justify-content-


center">

<!-- Titulo -->

<div class="col-10 my-3">

<h2 class="mb-0 text-


center">Registrar Administrador</h2>

</div>

<!-- Matricula -->

<div class="col-10 my-2">

<input asp-
for="MatriculaAdministrador" type="text" class="form-
control" placeholder="Matricula..." />

</div>

<!-- Nombre -->

<div class="col-10 my-2">

<input asp-for="Nombre" type="text" class="form-


control" placeholder="Nombre..." id="txtNombre">

225
</div>

<!-- Apellido Paterno -->

<div class="col-10 my-2">

<input asp-
for="ApellidoPaterno" type="text" class="form-
control" placeholder="Apellido Paterno..."

id="txtApellidoPaterno">

</div>

<!-- Apellido Materno -->

<div class="col-10 my-2">

<input asp-
for="ApellidoMaterno" type="text" class="form-
control" placeholder="Apellido Materno..."

id="txtApellidoMaterno">

</div>

<!-- Correo -->

<div class="col-10 my-2">

<input asp-for="Correo" type="email" class="form-


control" placeholder="Correo..." id="txtCorreo">

</div>

<!-- Contraseña -->

<div class="col-10 my-2">

<input asp-
for="Contrasena" type="password" class="form-
control" placeholder="Contraseña..." id="txtContraseña">

</div>

<!-- Confirmar Contraseña -->

<div class="col-10 my-2">

<input type="password" class="form-


control" placeholder="Confirmar Contraseña..."

id="txtConfirmarContraseña">

</div>

226
<!-- Telefono -->

<div class="col-10 my-2">

<input asp-for="Telefono" type="tel" class="form-


control" placeholder="Telefono..." id="txtTelefono">

</div>

<!-- Nivel -->

<div class="col-10 my-2">

<select asp-for="Nivel" class="custom-


select" id="SelectNivel">

<option value="">Seleccione una opcion</option>

<option value="1">1</option>

<option value="2">2</option>

<option value="3">3</option>

</select>

</div>

<!-- Activo -->

<div class="col-10 my-2 d-flex justify-content-center">

<div class="custom-control custom-switch">

<input asp-
for="Activo" type="checkbox" class="custom-control-input" id="cbxActivo">

<label class="custom-control-
label" for="cbxActivo">Activo</label>

</div>

</div>

<!-- Registrar -->

<div class="col-10 my-2 d-flex justify-content-center">

<button type="submit" class="btn btn-success btn-


block" id="btnRegistrar">Registrar</button>

</div>

</div>

</form>

227
</div>

</div>

<!-- Seccion Regresar -->

<div class="row mx-0 justify-content-center">

<div class="col-4 p-3">

<a asp-controller="Administradores" asp-


action="Index" class="btn btn-block btn-info text-
light shadow rounded" id="btnRegresar">Regresar</a>

</div>

</div>

</div>

@{

ViewData["Title"] = "RegistrarAlumno";

<!-- Inicio -->

<div class="container-fluid px-0 mx-0">

<div class="row mx-0 justify-content-center">

<div class="col-12 col-sm-10 col-md-8 col-lg-6 col-xl-5 p-3">

<form class="p-3 bg-dark text-light shadow rounded">

<div class="form-group form-row my-0 mx-0 justify-content-


center">

<!-- Titulo -->

<div class="col-10 my-4">

<h2 class="mb-0 text-center">Registrar Alumno</h2>

</div>

228
<!-- Matricula -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Matricula...">

</div>

<!-- Nombre -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Nombre...">

</div>

<!-- Apellido Paterno -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Apellido Paterno...">

</div>

<!-- Apellido Materno -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Apellido Materno...">

</div>

<!-- Origen -->

<div class="col-10 my-2">

<select class="custom-select">

<option value="">Origen</option>

</select>

</div>

<!-- Correo -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Correo...">

</div>

229
<!-- Contraseña -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Contraseña...">

</div>

<!-- Confirmar Contraseña -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Confirmar Contraseña...">

</div>

<!-- Telefono -->

<div class="col-10 my-2">

<input type="text" class="form-


control" placeholder="Telefono...">

</div>

<!-- Activo -->

<div class="col-10 my-2 d-flex justify-content-center">

<div class="custom-control custom-switch">

<input type="checkbox" class="custom-control-


input">

<label class="custom-control-
label">Activo</label>

</div>

</div>

<!-- Registrar -->

<div class="col-10 my-2 d-flex justify-content-center">

<button type="submit" class="btn btn-success btn-


block">Registrar</button>

</div>

</div>

</form>

230
</div>

</div>

<div class="row mx-0 justify-content-center">

<div class="col-4 p-3">

<a asp-controller="Administradores" asp-


action="Index" class="btn btn-block btn-info text-
light shadow rounded">Regresar</a>

</div>

</div>

</div>

<!-- Fin -->

@model SACELEX.Models.Administradores

@{

ViewData["Titulo"] = "RegistrarAdministrador";

<div class="container-fluid px-0 mx-0">

<!-- Seccion Formulario -->

<div class="row mx-0 justify-content-center">

<div class="col-12 col-sm-10 col-md-8 col-lg-6 col-xl-5 p-3">

<form asp-controller="Administradores" asp-


action="RegistrarAdministrador" method="post" class="p-3 bg-dark text-
light shadow rounded">

<div class="form-group form-row my-0 mx-0 justify-content-


center">

<!-- Titulo -->

<div class="col-10 my-3">

<h2 class="mb-0 text-


center">Registrar Administrador</h2>

231
</div>

<!-- Matricula -->

<div class="col-10 my-2">

<input asp-
for="MatriculaAdministrador" type="text" class="form-
control" placeholder="Matricula..." />

</div>

<!-- Nombre -->

<div class="col-10 my-2">

<input asp-for="Nombre" type="text" class="form-


control" placeholder="Nombre..." id="txtNombre">

</div>

<!-- Apellido Paterno -->

<div class="col-10 my-2">

<input asp-
for="ApellidoPaterno" type="text" class="form-
control" placeholder="Apellido Paterno..."

id="txtApellidoPaterno">

</div>

<!-- Apellido Materno -->

<div class="col-10 my-2">

<input asp-
for="ApellidoMaterno" type="text" class="form-
control" placeholder="Apellido Materno..."

id="txtApellidoMaterno">

</div>

<!-- Correo -->

<div class="col-10 my-2">

<input asp-for="Correo" type="email" class="form-


control" placeholder="Correo..." id="txtCorreo">

</div>

<!-- Contraseña -->

232
<div class="col-10 my-2">

<input asp-
for="Contrasena" type="password" class="form-
control" placeholder="Contraseña..." id="txtContraseña">

</div>

<!-- Confirmar Contraseña -->

<div class="col-10 my-2">

<input type="password" class="form-


control" placeholder="Confirmar Contraseña..."

id="txtConfirmarContraseña">

</div>

<!-- Telefono -->

<div class="col-10 my-2">

<input asp-for="Telefono" type="tel" class="form-


control" placeholder="Telefono..." id="txtTelefono">

</div>

<!-- Nivel -->

<div class="col-10 my-2">

<select asp-for="Nivel" class="custom-


select" id="SelectNivel">

<option value="">Seleccione una opcion</option>

<option value="1">1</option>

<option value="2">2</option>

<option value="3">3</option>

</select>

</div>

<!-- Activo -->

<div class="col-10 my-2 d-flex justify-content-center">

<div class="custom-control custom-switch">

<input asp-
for="Activo" type="checkbox" class="custom-control-input" id="cbxActivo">

233
<label class="custom-control-
label" for="cbxActivo">Activo</label>

</div>

</div>

<!-- Registrar -->

<div class="col-10 my-2 d-flex justify-content-center">

<button type="submit" class="btn btn-success btn-


block" id="btnRegistrar">Registrar</button>

</div>

</div>

</form>

</div>

</div>

<!-- Seccion Regresar -->

<div class="row mx-0 justify-content-center">

<div class="col-4 p-3">

<a asp-controller="Administradores" asp-


action="Index" class="btn btn-block btn-info text-
light shadow rounded" id="btnRegresar">Regresar</a>

</div>

</div>

</div>

@{

ViewData["Titulo"] = "Alumnos";

<!-- Inicio -->

234
<div class="container-fluid mx-0 pb-3 px-0 fondito" style="min-
height: 100vh;">

<!-- Header -->

<div class="row mx-0 mb-3 color-primario text-light">

<div class="col-12 p-3">

<h3 class="mb-0 text-center">Alumnos</h3>

</div>

</div>

<!-- Crear -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<a asp-controller="Administradores" asp-


action="RegistrarAlumno" class=" btn btn-block btn-info text-light sombras">

Nuevo Alumno

</a>

</div>

</div>

<!-- Formulario de Busqueda -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<form class=" p-3 bg-dark text-light sombras rounded">

<div class="form-group form-row justify-content-center mx-


0 mb-0">

<!-- Campo de Busqueda -->

<div class="col-12 px-0 my-2">

<input type="text" class="form-control text-


center sombras-controles"

id="txtBusquedaAlumnos" placeholder="Buscar..
.">

</div>

235
<!-- Filtros de Busqueda -->

<div class="col-12 px-0 my-2 d-flex flex-wrap justify-


content-center">

<!-- Checkbox Sin Filtros -->

<div class="custom-control custom-checkbox custom-


control-inline my-1">

<input type="checkbox" class="custom-control-


input" id="cbxAlumnosTodos">

<label class="custom-control-
label" for="cbxAlumnosTodos">Sin Filtros</label>

</div>

<!-- RadioButton Matricula -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnAlumnosMatricula" na


me="FiltroBusquedaAlumnos"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnAlumnosMatricula">Matricula</label>

</div>

<!-- RadioButton Nombre -->

<div class="custom-control custom-radio custom-


control-inline my-1">

<input type="radio" id="rbtnAlumnosNombre" name=


"FiltroBusquedaAlumnos"

class="custom-control-input">

<label class="custom-control-
label" for="rbtnAlumnosNombre">Nombre</label>

</div>

</div>

<!-- Boton de Busqueda -->

<div class="col-12 px-0 my-2">

236
<input type="submit" class="btn btn-block btn-
success sombras" id="btnBusquedaAlumnos"

value="Buscar">

</div>

</div>

</form>

</div>

</div>

<!-- Tabla -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-


secundario">

<div class="card bg-light sombras">

<!-- Lista de Administradores -->

<div class="card-body p-3">

<div class="list-group sombras">

<div class="list-group-item d-flex justify-content-


center bg-dark text-light h5 mb-0">

Alumnos

</div>

<!-- Seccion del Partial View -->

@foreach (SACELEX.ViewModels.ListaAlumnosViewModel m
odelo in ViewBag.ListaAlumnos)

<partial name="AlumnoPartialView" model="modelo"


/>

</div>

</div>

<!-- Navegacion -->

<div class="card-footer p-3">

237
<nav aria-label="Page navigation example" class="d-
flex justify-content-center">

<ul class="pagination mb-


0 sombras" style="width: fit-content;">

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Previous">

<span aria-hidden="true">&laquo;</span>

</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">1</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">2</a>

</li>

<li class="page-item">

<a class="page-link border-0 text-


dark" style="box-shadow: none;"

href="#">3</a>

</li>

<li class="page-item">

<a class="page-link border-0 bg-dark text-


light" style="box-shadow: none;" href="#"

aria-label="Next">

<span aria-hidden="true">&raquo;</span>

</a>

238
</li>

</ul>

</nav>

</div>

</div>

</div>

</div>

<!-- Regresar -->

<div class="row mx-0 justify-content-center">

<div class="col-11 col-sm-10 col-md-8 col-xl-6 p-3 color-primario">

<a asp-controller="Administradores" asp-


action="Index" class="btn btn-block btn-info text-light sombras">

Regresar

</a>

</div>

</div>

</div>

<!-- Fin -->

CSS, JSON, JS

239
240
241
242
243
244
245
246
247
248
Conclusion

El programa SACELEX será factible a causa de las siguientes cuestiones:

 Se solucionará una problemática social.


 Sera una automatización casi total de los procesos que se realizan en el
CELEX.
 No representa ningún aumento de costos para el CELEX, sino por el
contrario.
 Influirá un decremento en la compra de materiales de oficina y en el uso de
tiempo requerido para realizar los trámites que él o los usuarios requieran.
 Los alumnos y profesores podrán analizar la información de manera más
cómoda desde sus computadoras hasta sus dispositivos móviles, de esta
manera se reducirá el tiempo para la realización de trámites o análisis de
información.
 No representa un costo para nosotros como programadores.

Con base en lo anterior se denota que el programa SACELEX será factible tanto
para el CELEX que es a quien va dirigido el programa como para nosotros como
alumnos, ya que se solucionara una problemática y de esta manera nosotros como
alumnos podremos realizar nuestro proyecto de grado.

249

También podría gustarte