// 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 Edit([Bind(Include = "idProjectPK,projectName,objective,estimatedCost,realCost,startingDate,finishingDate,budget,estimatedDuration,idClientFK, status")] Project project, [Bind(Include = "idEmployeeFKPK")] WorksIn employee)
        {
            var EmployeesController = new EmployeesController();
            var availableEmployees  = EmployeesController.AvailableEmployeesAndLider(project.idProjectPK);
            var WorksInController   = new WorksInsController();
            var lider = WorksInController.GetLiderID(project.idProjectPK);
            var aux   = employee.idEmployeeFKPK;

            if (ModelState.IsValid)
            {
                if (project.startingDate < project.finishingDate)
                {
                    db.Entry(project).State = EntityState.Modified;
                    if (employee.idEmployeeFKPK == lider)
                    {
                        //Si el nuevo id es igual al ya asignado, entonces no hace nada.
                    }
                    else
                    {                      //en caso contrario cambia los datos.
                        if (lider == null) //si no hay lider asignado, crea una nueva relación con el líder elegido
                        {
                            employee.idProjectFKPK = project.idProjectPK;
                            employee.role          = 1;
                            db.WorksIn.Add(employee);
                        }
                        else
                        {                                    //si ya hay uno asignado
                            var exLider = db.Employee.Find(lider);
                            exLider.availability = 0;        //cambia la disponibilidad del antiguo a disponible.
                            var modificating = db.WorksIn.Find(lider, project.idProjectPK);
                            db.WorksIn.Remove(modificating); //remueve la relación del líder anterior (dado que no es modificable)
                            employee.idProjectFKPK = project.idProjectPK;
                            employee.role          = 1;
                            db.WorksIn.Add(employee); //y crea una nueva con el nuevo líder.
                        }
                    }
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("startingDate", "La fecha de inicio no puede ser despues de la fecha de finalización.");
                }
            }
            ViewBag.idClientFK     = new SelectList(db.Client, "idClientPK", "clientName", project.idClientFK);
            ViewBag.idEmployeeFKPK = new SelectList(availableEmployees, "idEmployeePK", "employeeName", lider);
            ViewBag.status         = SelectListStatus(null);
            return(View(project));
        }
Пример #3
0
        // GET: Requeriments/Create
        //EFE: Crea un requerimieno ya asociado a un módulo y proyecto
        public ActionResult Create(int?idProjectFKPK, int?idModuleFKPK)
        {
            if (idProjectFKPK == null || idModuleFKPK == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var         moduleController   = new ModulesController();
            var         employeeController = new EmployeesController();
            Module      module             = moduleController.GetModule(idProjectFKPK, idModuleFKPK);
            Requeriment requeriment        = new Requeriment {
                Module = module, idModuleFKPK = module.idModulePK, idProjectFKPK = module.idProjectFKPK
            };

            ViewBag.idEmployeeFK = employeeController.EmployeeFromTeamSelectList((int)idProjectFKPK, null);
            ViewBag.complexity   = SelectListComplexity(null);
            ViewBag.status       = SelectListStatus(null);
            return(View(requeriment));
        }
Пример #4
0
        // GET: Requeriments/Edit/5
        //EFE: Edita un requerimiento seleccionado
        public ActionResult Edit(int?idProjectFKPK, int?idModuleFKPK, int?idRequerimentPK)
        {
            if (idProjectFKPK == null || idModuleFKPK == null || idRequerimentPK == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Requeriment requeriment = db.Requeriment.Find(idProjectFKPK, idModuleFKPK, idRequerimentPK);

            if (requeriment == null)
            {
                return(HttpNotFound());
            }
            var employeeController = new EmployeesController();

            ViewBag.idEmployeeFK = employeeController.EmployeeFromTeamSelectList(requeriment.idProjectFKPK, Convert.ToInt32(requeriment.idEmployeeFK));
            ViewBag.idModuleFKPK = new SelectList(db.Module.Where(x => x.idProjectFKPK == idProjectFKPK), "idModulePK", "name", requeriment.idModuleFKPK);
            ViewBag.complexity   = SelectListComplexity(requeriment.complexity);
            ViewBag.status       = SelectListStatus(requeriment.status);
            return(View(requeriment));
        }
Пример #5
0
        public ActionResult Create([Bind(Include = "idProjectFKPK,idModuleFKPK,idRequerimentPK,idEmployeeFK,estimatedDuration,realDuration,status,startingDate,endDate,complexity,objective")] Requeriment requeriment)
        {
            if (ModelState.IsValid)
            {
                if (requeriment.startingDate < requeriment.endDate)
                {
                    db.Requeriment.Add(requeriment);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("startingDate", "La fecha de inicio no puede ser despues de la fecha de finalización.");
                }
            }
            var employeeController = new EmployeesController();

            ViewBag.idEmployeeFK = employeeController.EmployeeFromTeamSelectList(requeriment.idProjectFKPK, Convert.ToInt32(requeriment.idEmployeeFK));
            ViewBag.complexity   = SelectListComplexity(requeriment.complexity);
            ViewBag.status       = SelectListStatus(requeriment.status);
            return(View(requeriment));
        }
        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));
        }
        // GET: Projects/Edit/5
        //EFE: Edita el proyecto seleccionado
        // MOD: el proyecto con el id especificado.
        public ActionResult Edit(int?id)
        {
            var EmployeesController = new EmployeesController();                          //Controlador de empleados
            var availableEmployees  = EmployeesController.AvailableEmployeesAndLider(id); //retorna la lista de desarrolladores disponibles incluyendo al líder actual del proyecto
            var WorksInController   = new WorksInsController();                           //Controlador de relaciones desarrollador/proyecto.
            var lider = WorksInController.GetLiderID(id);                                 //Retorna el id del líder el proyecto actual para ponerlo como default en el dropdown

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Project.Find(id);

            if (project == null)
            {
                return(HttpNotFound());
            }
            ViewBag.idClientFK     = new SelectList(db.Client, "idClientPK", "clientName", project.idClientFK);
            ViewBag.idEmployeeFKPK = new SelectList(availableEmployees, "idEmployeePK", "employeeName", lider); //dropdown con lider por defecto
            ViewBag.status         = SelectListStatus(null);
            return(View(project));
        }
Пример #8
0
 // EF: Retorna el nombre del líder de un proyecto (especialmente usado para displays)
 // REQ: Que exista el proyecto.
 public string GetLiderName(int?IdProjectPK)  //similar al alterior con una excepción:
 {
     if (IdProjectPK == null)
     {
         return(null);
     }
     else
     {
         var     worksIn = db.WorksIn.Where(p => p.idProjectFKPK == IdProjectPK && p.role == 1).ToList();
         WorksIn element;
         if (worksIn.Count() <= 0)
         {
             return(null);
         }
         else
         {
             element = worksIn.First();
             var EmployeesController = new EmployeesController();                 //la excepción está en que utiliza el controlador de empleados
             return(EmployeesController.getEmployeeName(element.idEmployeeFKPK)); //para retornar el nombre del desarrollador en lugar del id.
         }
     }
 }