/* * EFE: Crea todas las tablas necesarias para el procedimiento de almacenamiento de plan de mejora * REQ: plan: plan de mejora con lo que se quiere crear * MOD: la base de datos si el procedimiento almacenado tiene exito */ public void savePlan(PlanDeMejora plan) { // Creacion de la tabla de planDeMejora y Asociacion de plan de mejora con formulario List <DataTable> planYAsocPlanFormulario = this.getPlanTableYAsocPlanFormularios(plan); DataTable planTable = planYAsocPlanFormulario[0]; DataTable asocPlanFormTable = planYAsocPlanFormulario[1]; // Creacion de la tabla de objetivos y Asociacion de objetivos con secciones de un formulario List <DataTable> objetivosYAsocObjetivosSecciones = this.getObjetivosTableYAsocObjetivosSecciones(plan); DataTable objetivosTable = objetivosYAsocObjetivosSecciones[0]; DataTable asocObjetivosSeccionesTable = objetivosYAsocObjetivosSecciones[1]; // Creacion de la tabla de planDeMejora y Asociacion de plan de mejora con formulario List <DataTable> accionesYAsocAccionesPreguntas = this.getAccionesDeMejoraTableYAsocAccionesPreguntas(plan); DataTable accionesDeMejoraTable = accionesYAsocAccionesPreguntas[0]; DataTable asocAccionesPreguntasTable = accionesYAsocAccionesPreguntas[1]; // Creacion de la tabla de planDeMejora y Asociacion de plan de mejora con formulario DataTable accionablesTable = this.getAccionablesTable(plan); // Creacion de la tabla de asociacion de plan de mejora con profesores DataTable asocProfesPlanTable = this.getTablaProfesPlan(plan); this.enviarTablasAlmacenamiento( planTable, "tablaPlan", objetivosTable, "tablaObjetivos", accionesDeMejoraTable, "tablaAcciones", accionablesTable, "tablaAccionables", asocPlanFormTable, "tablaAsocPlanFormularios", asocObjetivosSeccionesTable, "tablaAsocObjetivosSecciones", asocAccionesPreguntasTable, "tablaAsocAccionesPreguntas", asocProfesPlanTable, "tablaAsocPlanProfesores" ); }
public ViewResult Detalles(int id) { ViewBag.IdPlan = id; PlanDeMejora planDeMejora = db.PlanDeMejora.Find(id); List <AppIntegrador.Models.Persona> profesoresNombreLista = new List <Persona>(); List <string> profesoresLista = db.ObtenerCorreosDeProfesoresDelPlan(id).ToList(); foreach (var profe in profesoresLista) { profesoresNombreLista.Add(db.Persona.Find(profe)); } ViewBag.ProfesoresNombreLista = profesoresNombreLista; List <AppIntegrador.Models.Formulario> formulariosNombreLista = new List <Formulario>(); List <string> formulariosLista = db.ObtenerFormulariosAsociados(id).ToList(); foreach (var form in formulariosLista) { formulariosNombreLista.Add(db.Formulario.Find(form)); } ViewBag.Profesores = profesoresNombreLista; ViewBag.Formularios = formulariosNombreLista; return(View("DetallesPlanDeMejora", planDeMejora)); }
public void TestSetCodigoEmptyDB() { // Se crea una base de datos vacia DataIntegradorEntities test = new DataIntegradorEntities(); var db = new Mock <DataIntegradorEntities>(); // Datos del plan de mejora temporal String planNombre = "Plan de prueba"; DateTime inicio = new DateTime(2019, 12, 01); DateTime Fin = new DateTime(2020, 12, 01); // Crando un plan de mejora temporal PlanDeMejora plan = new PlanDeMejora() { nombre = planNombre, fechaInicio = inicio, fechaFin = Fin }; // controlador planes de mejora BI var controller = new PlanDeMejoraBI(); // Metodo que agrega el codigo al plan de mejora controller.setCodigoAPlanDeMejora(test, plan); // Vemos que se le asigne un codigo con sentido al plan de mejora controller.setCodigoAPlanDeMejora(test, plan); Assert.IsNotNull(plan.codigo); }
/** * EFE: * Metodo que se encarga de crear una tabla con los datos de los accionables del plan de mejora * Tambien crea la tabla de aociación de acciones de mejora con preguntas. * REQ: * plan: plan de mejora que se coloca dentro de la lista * MOD: * ---- */ public DataTable getAccionablesTable(PlanDeMejora plan) { DataTable dt = new DataTable(); // Creando las columnas dt.Columns.Add("codigoPlan"); dt.Columns.Add("nombreObj"); dt.Columns.Add("descripcionAccion"); dt.Columns.Add("descripcion"); dt.Columns.Add("fechaInicio"); dt.Columns.Add("fechaFin"); dt.Columns.Add("tipo"); dt.Columns.Add("peso"); dt.Columns.Add("pesoPorcentaje"); // Lista de los objetivos del plan ICollection <Objetivo> objetivos = plan.Objetivo; if (objetivos != null) { //Ahora se agregan las tuplas a la tabla correspondiente foreach (var obj in objetivos) { ICollection <AccionDeMejora> acciones = obj.AccionDeMejora; if (acciones != null) { foreach (var acc in acciones) { ICollection <Accionable> accionables = acc.Accionable; if (accionables != null) { foreach (var accio in accionables) { char tipoTemp = accio.tipo[0]; int? pesoTemp = accio.peso; int? porTemp = accio.pesoPorcentaje; dt.Rows.Add( plan.codigo, obj.nombre, acc.descripcion, accio.descripcion, accio.fechaInicio, accio.fechaFin, tipoTemp, pesoTemp, porTemp); } } } } } } return(dt); }
/** * EFE: * Metodo que se encarga de crear una tabla con los datos de las acciones de mejora del plan * Tambien crea una tabla de las asociaciones de los objetivos con secciones de un formulario * REQ: * plan: plan de mejora que se coloca dentro de la lista * MOD: * ---- */ public List <DataTable> getAccionesDeMejoraTableYAsocAccionesPreguntas(PlanDeMejora plan) { DataTable dt = new DataTable(); DataTable dt2 = new DataTable(); // Creando las columnas dt2.Columns.Add("codigoPlan"); dt2.Columns.Add("nombreObjetivo"); dt2.Columns.Add("descripcionAccion"); dt2.Columns.Add("codigoPregunta"); // Creando las columnas dt.Columns.Add("codigoPlan"); dt.Columns.Add("nombreObj"); dt.Columns.Add("descripcion"); dt.Columns.Add("fechaInicio"); dt.Columns.Add("fechaFin"); dt.Columns.Add("codPlantilla"); dt.Columns.Add("borrado"); // Lista de los objetivos del plan ICollection <Objetivo> objetivos = plan.Objetivo; if (objetivos != null) { //Ahora se agregan las tuplas a la tabla correspondiente foreach (var obj in objetivos) { ICollection <AccionDeMejora> acciones = obj.AccionDeMejora; if (acciones != null) { foreach (var acc in acciones) { dt.Rows.Add(plan.codigo, acc.nombreObj, acc.descripcion, acc.fechaInicio, acc.fechaFin, null, 0); // Realizando la tupla de la asociacion ICollection <Pregunta> preguntas = acc.Pregunta; if (preguntas != null) { foreach (var preg in preguntas) { dt2.Rows.Add(plan.codigo, obj.nombre, acc.descripcion, preg.Codigo); } } } } } } List <DataTable> lista = new List <DataTable>(); lista.Add(dt); lista.Add(dt2); return(lista); }
public void DetallesTest() { var controller = new PlanDeMejoraController(); var result = controller.Detalles(1); PlanDeMejora retornado = (PlanDeMejora)result.ViewData.Model; Assert.AreEqual("DetallesPlanDeMejora", result.ViewName); Assert.IsInstanceOfType(result.ViewData.Model, typeof(PlanDeMejora)); Assert.AreEqual(1, retornado.codigo); Assert.AreEqual("Plan prueba para la profesora Alexandra", retornado.nombre); controller.Dispose(); }
//Agregado por: Johan Córdoba //Historia a la que pertenece: MOS-25 "como usuario quiero tener una interfaz que muestre de forma clara las jerarquías entre las distintas partes del subsistema de creación de planes de mejora" //permite editar los datos de un plan de mejora //retorna la vista de editar para que puedan ser añadidos los objetivos, acciones y acionables al mismo public ActionResult EditarPlanDeMejora(int id) { if (!permissionManager.IsAuthorized(Permission.EDITAR_PLANES_MEJORA)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } ViewBag.IdPlan = id; PlanDeMejora planDeMejora = db.PlanDeMejora.Find(id); ViewBag.Editar = true; return(View("EditarPlanDeMejora2", planDeMejora)); }
/* * EFE: hace la busqueda de los profesores y los agrega al plan * REQ: * plan: al que se le asignan los formularios * listaProfesores: lista de los codigos de los formularios * MOD: * plan */ public void insertProfesores(PlanDeMejora plan, List <string> correoProfesores, DataIntegradorEntities db) { List <Profesor> result = new List <Profesor>(); if (correoProfesores != null) { foreach (var correo in correoProfesores) { Profesor profe = db.Profesor.Find(correo); result.Add(profe); } } plan.Profesor = result; }
/* * EFE: hace la busqueda de los formularios * REQ: * plan: al que se le asignan los formularios * listaFormularios: lista de los codigos de los formularios * MOD: * plan */ public void insertFormularios(PlanDeMejora plan, List <string> codFormularios, DataIntegradorEntities db) { List <Formulario> result = new List <Formulario>(); if (codFormularios != null) { foreach (var codigo in codFormularios) { Formulario formulario = db.Formulario.Find(codigo); result.Add(formulario); } } plan.Formulario = result; }
// Method that deletes one "PlanDeMejora" public ActionResult BorrarPlan(int codigoPlan) { if (!permissionManager.IsAuthorized(Permission.BORRAR_PLANES_MEJORA)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } PlanDeMejora planDeMejora = db.PlanDeMejora.Find(codigoPlan); //db.PlanDeMejora.Remove(planDeMejora); db.BorrarPlan(codigoPlan); db.SaveChanges(); return(RedirectToAction("Index")); }
//Modificado por: Christian Asch //Historia a la que pertenece: MOS-1.4.2 "Como usuario administrativo quiero que se notifique a los involucrados sobre el inicio de un plan, objetivo o acción de mejora para que los involucrados puedan estar informados" //Envía un correo cada profesor que está asignado al plan avisándole que ha sido asignado. private void EnviarCorreoSobreCreacionPlan(PlanDeMejora plan, List <string> correos) { Utilities.EmailNotification emailNotification = new Utilities.EmailNotification(); string asunto = "Creación de un nuevo plan de mejora"; string texto = "Usted ha sido involucrado en el plan de mejora llamado: " + plan.nombre + "<br>Con código: " + plan.codigo; texto += "<br>Este plan iniciará el " + plan.fechaInicio.ToString(); texto += "<br>Favor no responder directamente a este correo"; string textoAlt = "<body><p>" + texto + "</p></body>"; _ = emailNotification.SendNotification(correos, asunto, texto, textoAlt); }
/** * EFE: * Metodo que se encarga de crear una tabla con los datos del objetivo que ingresamos * Tambien crea una tabla de las asociaciones entre el plan y los formularios * REQ: * plan: plan de mejora que se coloca dentro de la lista * MOD: * ---- */ public List <DataTable> getObjetivosTableYAsocObjetivosSecciones(PlanDeMejora plan) { DataTable dt = new DataTable(); DataTable dt2 = new DataTable(); //Crando las columnas dt2.Columns.Add("codigoPlan"); dt2.Columns.Add("nombreObjetivo"); dt2.Columns.Add("codigoSeccion"); // Creando las columnas dt.Columns.Add("codigoPlan"); dt.Columns.Add("nombre"); dt.Columns.Add("descripcion"); dt.Columns.Add("fechaInicio"); dt.Columns.Add("fechaFin"); dt.Columns.Add("nombreTipoObj"); dt.Columns.Add("codPlantilla"); dt.Columns.Add("borrado"); // Lista de los objetivos del plan ICollection <Objetivo> objetivos = plan.Objetivo; if (objetivos != null) { //Ahora se agregan las tuplas a la tabla correspondiente foreach (var obj in objetivos) { dt.Rows.Add(plan.codigo, obj.nombre, obj.descripcion, obj.fechaInicio, obj.fechaFin, obj.nombTipoObj, null, 0); // Realizando la tupla de la asociacion ICollection <Seccion> secciones = obj.Seccion; if (secciones != null) { foreach (var sec in secciones) { dt2.Rows.Add(plan.codigo, obj.nombre, sec.Codigo); } } } } List <DataTable> lista = new List <DataTable>(); lista.Add(dt); lista.Add(dt2); return(lista); }
public void CrearPlanDeMejoraIntegrationTest() { String planNombre = "Plan de prueba de integración"; DateTime inicio = new DateTime(2019, 12, 01); DateTime Fin = new DateTime(2020, 12, 01); PlanDeMejora plan = new PlanDeMejora() { nombre = planNombre, fechaInicio = inicio, fechaFin = Fin }; var controller = new PlanDeMejoraController(); var result = controller.Crear(plan); Assert.IsNotNull(result); }
public ActionResult EditarPlanDeMejora2([Bind(Include = "codigo,nombre,fechaInicio,fechaFin")] PlanDeMejora planDeMejora) { if (!permissionManager.IsAuthorized(Permission.EDITAR_PLANES_MEJORA)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } if (ModelState.IsValid) { db.Entry(planDeMejora).State = EntityState.Modified; db.SaveChanges(); } ViewBag.profesores = new SelectList(db.Profesor, "correo", "correo"); ViewBag.IdPlan = planDeMejora.codigo; return(View("EditarPlanDeMejora2", planDeMejora)); }
public void insertFormulariosTestSinForms() { PlanDeMejora plan = new PlanDeMejora(); List <string> codFormularios = new List <string>(); DataIntegradorEntities db = new DataIntegradorEntities(); //Seteo de valor nulo plan.Formulario = null; var controller = new PlanDeMejoraBI(); controller.insertFormularios(plan, codFormularios, db); Boolean result = plan.Formulario.Count > 0 ? true : false; Assert.IsFalse(result); }
/* * EFE: * Le asigna al plan de mejora un código diferente, siento este 1000 para el primer plan * y en caso contrario va asignando con un aumento de 1 al código del plan anterior * REQ: * db: instancia de la conexión de la base de datos * plan: instancia del nuevo plan de mejora que se quiere realizar * MOD: * El plan que se le envía como parametro */ public void setCodigoAPlanDeMejora(DataIntegradorEntities db, PlanDeMejora plan) { // Primero analizamos tomamos la totalidad de los planes de mejora var totalPlanes = db.PlanDeMejora.ToList(); var ultimoCodigo = -1; if (totalPlanes != null) { foreach (var item in totalPlanes) { ultimoCodigo = item.codigo; } } plan.codigo = ultimoCodigo + 1; // Este metodo tambien deja el borrado en 0 ya que es un plan que se esta creando plan.borrado = false; }
public ActionResult Crear([Bind(Include = "nombre,fechaInicio,fechaFin")] PlanDeMejora plan, List <String> ProfeSeleccionado = null, List <String> FormularioSeleccionado = null, List <Objetivo> Objetivo = null, Dictionary <String, String> SeccionConObjetivo = null, Dictionary <String, String> PreguntaConAccion = null) { if (!permissionManager.IsAuthorized(Permission.CREAR_PLANES_MEJORA)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } // Objeto de ayuda business intelligence planes de mejora PlanDeMejoraBI planesHelper = new PlanDeMejoraBI(); // Asignacion del codigo al nuevo plan de mejora planesHelper.setCodigoAPlanDeMejora(this.db, plan); //Agregando los objetivos al plan plan.Objetivo = Objetivo; //Agregando las secciones a los objetivos planesHelper.insertSeccionesEnObjetivos(plan.Objetivo, SeccionConObjetivo, db); //Agregando las preguntas a las acciones planesHelper.insertPreguntasEnAcciones(plan.Objetivo, PreguntaConAccion, db); //Agrgando los formularios al plan de mejora planesHelper.insertFormularios(plan, FormularioSeleccionado, db); //Agregando los profesores seleccionados al plan de mejora planesHelper.insertProfesores(plan, ProfeSeleccionado, db); // Almacenamiento del plan por medio de un procedimiento almacenado planesHelper.savePlan(plan); db.SaveChanges(); PlanDeMejora planTemporal = db.PlanDeMejora.Find(plan.codigo); if (planTemporal != null && ProfeSeleccionado != null) { if (ProfeSeleccionado.Count > 0) { this.EnviarCorreoSobreCreacionPlan(planTemporal, ProfeSeleccionado); } } return(Json(new { success = true, responseText = "Your message successfuly sent!" }, JsonRequestBehavior.AllowGet)); }
public void TestDetallesIntegracion() { //Arrange var mockDb = new Mock <DataIntegradorEntities>(); int codigo = 1; PlanDeMejora plan = new PlanDeMejora() { codigo = 1, nombre = "planUno" }; mockDb.Setup(m => m.PlanDeMejora.Find(codigo)).Returns(plan); PlanDeMejoraController controller = new PlanDeMejoraController(mockDb.Object); // Act ViewResult result = controller.Detalles(codigo) as ViewResult; // Assert Assert.AreEqual(result.Model, plan); }
/* * EFE: Se encarga de crear la tabla de asociacion de profesores con el plan de mejora * REQ: plan, instancia de plan de mejora con los profesores asignados dentro del mismo * MOD: --- */ public DataTable getTablaProfesPlan(PlanDeMejora plan) { DataTable dt = new DataTable(); // Creando las columnas dt.Columns.Add("codigoPlan"); dt.Columns.Add("correoProfe"); var listaProfes = plan.Profesor; if (listaProfes != null) { foreach (var prof in listaProfes) { dt.Rows.Add(plan.codigo, prof.Correo); } } return(dt); }
public void CrearPlanDeMejoraDataMockTest() { DataIntegradorEntities test = new DataIntegradorEntities(); var db = new Mock <DataIntegradorEntities>(); String planNombre = "Plan de prueba"; DateTime inicio = new DateTime(2019, 12, 01); DateTime Fin = new DateTime(2020, 12, 01); PlanDeMejora plan = new PlanDeMejora() { nombre = planNombre, fechaInicio = inicio, fechaFin = Fin }; db.Setup(m => m.PlanDeMejora.Add(plan)); db.Setup(m => m.SaveChanges()); var controller = new PlanDeMejoraController(db.Object); var result = controller.Crear(plan); Assert.IsNotNull(result); controller.Dispose(); }
/* * Modificado por: Johan Córdoba, Christian Asch * Historia a la que pertenece: MOS-1.2 "agregar, modificar, borrar y consultar los objetivos de un plan de mejora" * Para no tener que crear la vista parcial dento de la carpeta de planes de mejora cambié el controlador. * Ahora este redirige a la vista de objetivos y la que está en planes de mejora "_objetivosPlan" ya no es necesaria */ public ActionResult Crear(PlanDeMejora plan = null) { if (!permissionManager.IsAuthorized(Permission.CREAR_PLANES_MEJORA)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } if (plan == null) { plan = new PlanDeMejora(); } List <String> ProfesoresNombreLista = new List <String>(); List <String> tiposDeObjetivo = new List <String>(); foreach (var tipo in db.TipoObjetivo) { tiposDeObjetivo.Add(tipo.nombre); } ViewBag.ProfesoresLista = db.Profesor.ToList(); String name = "NombreCompleto"; ObjectParameter name_op; foreach (var profe in ViewBag.ProfesoresLista) { name_op = new ObjectParameter(name, ""); db.GetTeacherName(profe.Correo, name_op); ProfesoresNombreLista.Add(name_op.Value.ToString()); } ViewBag.ProfesoresNombreLista = ProfesoresNombreLista; ViewBag.FormulariosLista = db.Formulario.ToList(); ViewBag.tiposDeObjetivo = tiposDeObjetivo.Select(x => new SelectListItem() { Text = x }); ; return(View("Crear", plan)); }
public void insertFormulariosTestConForms() { PlanDeMejora plan = new PlanDeMejora(); List <string> codFormularios = new List <string>(); DataIntegradorEntities db = new DataIntegradorEntities(); //Agregnado elementos for (int var = 0; var < 5; var++) { codFormularios.Add(var + ""); } //Seteo de valor nulo plan.Formulario = null; var controller = new PlanDeMejoraBI(); controller.insertFormularios(plan, codFormularios, db); Boolean result = plan.Formulario.Count > 0 ? true : false; Assert.IsTrue(result); }
/** * EFE: * Metodo que se encarga de crear una tabla con los datos del plan de mejora que ingresamos * Tambien crea la tabla de relacion de plan de mejora con formulario * REQ: * plan: plan de mejora que se coloca dentro de la lista * MOD: * ---- */ public List <DataTable> getPlanTableYAsocPlanFormularios(PlanDeMejora plan) { DataTable dt = new DataTable(); DataTable dt2 = new DataTable(); // Creando las columnas dt2.Columns.Add("codigoPlan"); dt2.Columns.Add("codigoForm"); // Agregando las filas IEnumerable <Formulario> formularios = plan.Formulario; if (formularios != null) { foreach (var form in formularios) { dt2.Rows.Add(plan.codigo, form.Codigo); } } // Creando las columnas dt.Columns.Add("codigo"); dt.Columns.Add("nombre"); dt.Columns.Add("fechaInicio"); dt.Columns.Add("fechaFin"); dt.Columns.Add("borrado"); //Agregando las filas dt.Rows.Add(plan.codigo, plan.nombre, plan.fechaInicio, plan.fechaFin, plan.borrado); List <DataTable> lista = new List <DataTable>(); lista.Add(dt); lista.Add(dt2); return(lista); }