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);
        }
        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));
        }