Example #1
0
        public static void Main(string[] args)
        {
            Employee Emp = new Employee();
            string   FullName;

            Console.WriteLine("List Of Companies:");
            foreach (string str in Enum.GetNames(typeof(WorksIn)))
            {
                Console.WriteLine(str);
            }
            Console.WriteLine("Enter the First Name: ");
            Emp.FirstName = Console.ReadLine();
            Console.WriteLine("Enter the Last Name: ");
            Emp.LastName = Console.ReadLine();
            Console.WriteLine("Enter the Company Name:");
            WorksIn Company = (WorksIn)(Enum.Parse(typeof(WorksIn), Console.ReadLine()));

            FullName = Emp.FirstName + " " + Emp.LastName;
            Console.WriteLine("Full Name && Works In: {0},{1}", FullName, Company);
            Console.ReadLine();
        }
        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));
        }
        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));
        }