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