// GET: Projects/Create
        //EFE: Crea un nuevo proyecto.
        public ActionResult Create()
        {
            ViewBag.idClientFK = new SelectList(db.Client, "idClientPK", "clientName");
            var EmployeesController = new EmployeesController();                                         //Controlador de empleados
            var availableEmployees  = EmployeesController.AvailableEmployees();                          //retorna los desarrolladores disponibles.

            ViewBag.idEmployeeFKPK = new SelectList(availableEmployees, "idEmployeePK", "employeeName"); //viewbag para desplegar el dropdown
            ViewBag.status         = SelectListStatus(null);
            return(View());
        }
        public ActionResult Create([Bind(Include = "idProjectPK,projectName,objective,estimatedCost,realCost,startingDate,finishingDate,budget,estimatedDuration,idClientFK,status, realDuration")] Project project, [Bind(Include = "idEmployeeFKPK")] WorksIn employee)
        {
            var EmployeesController = new EmployeesController();                //Controlador de empleados
            var availableEmployees  = EmployeesController.AvailableEmployees(); //retorna los desarrolladores disponibles.
            var fecha = DateTime.Now;

            if (db.Project.Any(x => x.projectName == project.projectName)) //si el nombre del proyecto ya existe
            {
                ModelState.AddModelError("projectName", "Ya existe un proyecto registrado con ese nombre");
                ViewBag.idClientFK     = new SelectList(db.Client, "idClientPK", "clientName");              //viewbag para desplegar el dropdown de clientes
                ViewBag.idEmployeeFKPK = new SelectList(availableEmployees, "idEmployeePK", "employeeName"); //viewbag para desplegar el dropdown
                ViewBag.status         = SelectListStatus(null);
                return(View(project));                                                                       //no guarda cambios y actualiza la vista.
            }
            if (ModelState.IsValid)                                                                          //si el modelo es válido
            {
                if (project.startingDate < project.finishingDate)
                {
                    db.Project.Add(project); //agrega el proyecto a la tabla
                    employee.idProjectFKPK = project.idProjectPK;
                    employee.role          = 1;
                    db.WorksIn.Add(employee); //agrega la relación de lider a la tabla worksIn
                    project.realDuration      = 0;
                    project.estimatedDuration = 0;
                    project.creationDate      = fecha;
                    db.SaveChanges();                  //guarda cambios
                    return(RedirectToAction("Index")); //vuelve al index.
                }
                else
                {
                    ModelState.AddModelError("startingDate", "La fecha de inicio no puede ser despues de la fecha de finalización.");
                }
            }
            //Si no entra en ninguno de los 2 ifs entonces actualiza la vista con los mismos viewbags.
            ViewBag.idClientFK     = new SelectList(db.Client, "idClientPK", "clientName", project.idClientFK);
            ViewBag.idEmployeeFKPK = new SelectList(availableEmployees, "idEmployeePK", "employeeName", employee);
            ViewBag.status         = SelectListStatus(null);
            return(View(project));
        }