public ActionResult Create([Bind(Include = "idUser,Rut,Nombre,Apellido,MailInstitucional,Contrasena,Activo,idRole")] Administrator administrator)
        {
            foreach (User u in db.User.ToList())
            {
                if (u.MailInstitucional.Equals(administrator.MailInstitucional))
                {
                    ViewBag.CIDisponible = "Correo institucional se encuentra en uso";
                    ViewBag.idRole       = new SelectList(db.Role, "idRole", "Nombre", administrator.idRole);
                    return(View(administrator));
                }
            }
            foreach (Functionary f in db.Functionary.ToList())
            {
                if (f.CorreoPersonal.Equals(administrator.MailInstitucional))
                {
                    ViewBag.CIDisponible = "Correo institucional se encuentra en uso";
                    ViewBag.idRole       = new SelectList(db.Role, "idRole", "Nombre", administrator.idRole);
                    return(View(administrator));
                }
            }
            if (ModelState.IsValid)
            {
                administrator.Contrasena = encoder.EncodePasswordMd5(administrator.Contrasena);
                administrator.idUser     = Guid.NewGuid();
                db.Administrator.Add(administrator);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.idRole = new SelectList(db.Role, "idRole", "Nombre", administrator.idRole);
            return(View(administrator));
        }
Beispiel #2
0
        public ActionResult Create([Bind(Include = "idProcess,Criterio,Descripcion")] Process process)
        {
            if (ModelState.IsValid)
            {
                db.Process.Add(process);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(process));
        }
        public ActionResult Create([Bind(Include = "idCareer,Nombre,Descripcion")] Career career)
        {
            if (ModelState.IsValid)
            {
                career.idCareer = Guid.NewGuid();
                db.Career.Add(career);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(career));
        }
        public ActionResult Create([Bind(Include = "idRole,Nombre,Descripcion")] Role role)
        {
            if (ModelState.IsValid)
            {
                role.idRole = Guid.NewGuid();
                db.Role.Add(role);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(role));
        }
Beispiel #5
0
 /*Function that add the Tasks from the Operations existing
  * in the process related to the Activity
  */
 public static void GenerateTasks(Activity activity)
 {
     using (SMGPAContext db = new SMGPAContext())
     {
         Process          proceso     = db.Process.Find(activity.idProcess);
         List <Operation> operaciones = proceso.Operations.ToList();
         Activity         actividad   = db.Activity.Find(activity.idActivity);
         foreach (Operation o in operaciones)
         {
             Tasks tarea = new Tasks();
             tarea.idTask    = Guid.NewGuid();
             tarea.Operacion = o;
             tarea.Actividad = actividad;
             if (o.idPredecesora != null)
             {
                 Operation    predecesora = db.Operation.Find(o.idPredecesora);
                 List <Tasks> tareas      = actividad.Tareas.ToList();
                 foreach (Tasks ta in tareas)
                 {
                     Tasks aux = db.Task.Find(ta.idTask);
                     if (aux.Operacion.idOperation == predecesora.idOperation)
                     {
                         tarea.Predecesora = ta;
                     }
                 }
             }
             actividad.Tareas.Add(tarea);
             db.SaveChanges();
         }
     }
 }
Beispiel #6
0
        public ActionResult Create([Bind(Include = "idActivity,state,start_date,end_date,Nombre,idProcess, idCareer")] Activity activity)
        {
            if (ModelState.IsValid)
            {
                activity.idActivity = Guid.NewGuid();
                if (db.Activity.Where(a => a.Nombre.Equals(activity.Nombre) && a.idProcess.Equals(activity.idProcess)).FirstOrDefault() == null)
                {
                    ViewBag.Existe = "Actividad ya Existe";
                }
                db.Activity.Add(activity);
                db.SaveChanges();
                GenerateTasks(activity);
                return(RedirectToAction("Index"));
            }

            ViewBag.idProcess = new SelectList(db.Process, "idProcess", "Criterio", activity.idProcess);
            ViewBag.idCareer  = new SelectList(db.Career, "idCareer", "Nombre");
            return(View(activity));
        }
Beispiel #7
0
 static void addNotification(string Cuerpo, Guid?idFunctionary, DateTime?Fecha, string URL)
 {
     using (SMGPAContext db = new SMGPAContext())
     {
         Functionary  User = db.Functionary.Find(idFunctionary);
         Notificacion n    = new Notificacion();
         n.idNotification = Guid.NewGuid();
         n.Funcionario    = User;
         n.Cuerpo         = Cuerpo;
         n.Fecha          = Fecha;
         n.UrlAction      = URL;
         User.Notificaciones.Add(n);
         db.SaveChanges();
     }
 }
Beispiel #8
0
        public ActionResult Create([Bind(Include = "idEntities,Nombre,Descripcion,Activo")] Entities entities)
        {
            if (ModelState.IsValid)
            {
                entities.idEntities = Guid.NewGuid();
                db.Entity.Add(entities);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(entities));
        }
Beispiel #9
0
        public ActionResult Register([Bind(Include = "idUser,Rut,Nombre,Apellido,Nombre_Apellido,MailInstitucional,Contrasena,Activo,NumeroTelefono,CorreoPersonal,idCareer")] Functionary functionary)
        {
            foreach (User u in db.User.ToList())
            {
                if (u.MailInstitucional.Equals(functionary.MailInstitucional) || functionary.CorreoPersonal.Equals(u.MailInstitucional))
                {
                    ViewBag.CIDisponible = !functionary.CorreoPersonal.Equals(u.MailInstitucional) ? "Correo institucional se encuentra en uso" : null;
                    ViewBag.CPDisponible = functionary.CorreoPersonal.Equals(u.MailInstitucional) ? "Correo Personal ingresado se encuentra en uso" : null;
                    ViewBag.idCareer     = new SelectList(db.Career, "idCareer", "Nombre", functionary.idCareer);
                    return(View());
                }
            }
            foreach (Functionary f in db.Functionary.ToList())
            {
                if (f.CorreoPersonal.Equals(functionary.CorreoPersonal))
                {
                    ViewBag.CPDisponible = "Correo Personal ingresado se encuentra en uso";
                    ViewBag.idCareer     = new SelectList(db.Career, "idCareer", "Nombre", functionary.idCareer);
                    return(View());
                }
            }
            if (ModelState.IsValid)
            {
                functionary.Contrasena = mdencoder.EncodePasswordMd5(functionary.Contrasena);
                functionary.Activo     = true;;
                functionary.idUser     = Guid.NewGuid();
                db.Functionary.Add(functionary);
                if (functionary.idCareer != null)
                {
                    Career c = db.Career.Find(functionary.idCareer);
                    if (c.idFaculty != null)
                    {
                        Faculty faculty = db.Faculty.Find(c.idFaculty);
                        faculty.Involucrados.Add(functionary);
                    }
                }
                db.SaveChanges();
                return(RedirectToAction("Login"));
            }

            ViewBag.idCareer = new SelectList(db.Career, "idCareer", "Nombre", functionary.idCareer);
            return(View(functionary));
        }
Beispiel #10
0
 static void completeActivities()
 {
     using (SMGPAContext db = new SMGPAContext())
     {
         List <Activity> Activities  = db.Activity.ToList();
         List <Activity> Actividades = Activities.Where(a => a.state.Equals(States.Activa)).ToList();
         if (Actividades != null)
         {
             foreach (Activity a in Actividades)
             {
                 List <Tasks> TareasCompletadas = a.Tareas.Where(t => t.Estado.Equals(StatusEnum.COMPLETADA) || t.Estado.Equals(StatusEnum.CERRADA_SIN_CONCLUIR)).ToList();
                 if (TareasCompletadas.Count == a.Tareas.Count)
                 {
                     Console.WriteLine("Updating Activities status from Active to Complete");
                     a.state = States.Completada;
                 }
             }
         }
         db.SaveChanges();
     }
 }
Beispiel #11
0
 static void updateActivities()
 {
     using (SMGPAContext db = new SMGPAContext())
     {
         List <Activity> Activities  = db.Activity.ToList();
         List <Activity> Actividades = Activities.Where(a => a.state.Equals(States.Inactiva)).ToList();
         if (Actividades != null)
         {
             foreach (Activity a in Actividades)
             {
                 foreach (Tasks t in a.Tareas)
                 {
                     if (t.Estado.Equals(StatusEnum.EN_PROGRESO) || t.Estado.Equals(StatusEnum.ACTIVA))
                     {
                         Console.WriteLine("Updating Activities status from Inactiva to Active");
                         a.state = States.Activa;
                     }
                 }
             }
             db.SaveChanges();
         }
     }
 }
Beispiel #12
0
 static void UpdatePendiente()
 {
     using (SMGPAContext db = new SMGPAContext())
     {
         DateTime Today     = DateTime.Now;
         string   DateToday = Today.ToString("yyyy-MM-dd HH:mm");
         DateTime myDate    = DateTime.ParseExact(DateToday, "yyyy-MM-dd HH:mm",
                                                  System.Globalization.CultureInfo.InvariantCulture);
         List <Tasks> Tareas = db.Task.Where(t => t.Estado == StatusEnum.ACTIVA && myDate >= t.fechaFin).ToList();
         Tareas.AddRange(db.Task.Where(t => t.Estado == StatusEnum.EN_PROGRESO && myDate >= t.fechaFin).ToList());
         if (Tareas.Count > 0)
         {
             foreach (Tasks t in Tareas)
             {
                 Tasks tarea = db.Task.Find(t.idTask);
                 if (tarea.Operacion.IteracionesPermitidas > 0)
                 {
                     if (tarea.Reprogramaciones < tarea.Operacion.IteracionesPermitidas)
                     {
                         t.Estado = StatusEnum.PENDIENTE;
                     }
                     else
                     {
                         t.Estado = StatusEnum.CERRADA_SIN_CONCLUIR;
                     }
                 }
                 else
                 {
                     t.Estado = StatusEnum.CERRADA_SIN_CONCLUIR;
                 }
                 Console.WriteLine("Task: " + t.idTask + " updated to Pendiente");
             }
         }
         db.SaveChanges();
     }
 }
Beispiel #13
0
        public async Task <ActionResult> UploadFile(HttpPostedFileBase fileDoc)
        {
            if (fileDoc == null)
            {
                return(Content("Error, no hay archivo seleccionado"));
            }
            if (ModelState.IsValid)
            {
                Guid  id   = (Guid)TempData["Tarea"];
                Tasks task = db.Task.Single(t => t.idTask == id);
                if (Request.Files.Count > 0)
                {
                    HttpPostedFileBase file = Request.Files[0];
                    if (file.ContentLength > 0)
                    {
                        var    pathToSave   = "~/uploads";
                        var    fileName     = Path.GetFileName(file.FileName);
                        int    count        = 1;
                        string fileNameOnly = Path.GetFileNameWithoutExtension(fileName);
                        string extension    = Path.GetExtension(fileName);
                        string path         = Path.GetDirectoryName(fileName);
                        string newFullPath  = fileName;
                        string absolutePath = HttpContext.Server.MapPath(pathToSave + '/' + newFullPath);
                        bool   exists       = System.IO.File.Exists(absolutePath);
                        while (System.IO.File.Exists(absolutePath))
                        {
                            string tempFileName = string.Format("{0}({1})", fileNameOnly, count++);
                            newFullPath  = Path.Combine(path, tempFileName + extension);
                            absolutePath = HttpContext.Server.MapPath(pathToSave + '/' + newFullPath);
                        }
                        string Ruta = Path.Combine(
                            Server.MapPath(pathToSave), newFullPath);
                        file.SaveAs(Ruta);
                        Document documento = new Document {
                            idDocument = Guid.NewGuid(), Path = newFullPath, idTask = task.idTask, Fecha = DateTime.Today
                        };
                        task.Documentos.Add(documento);
                        task.Estado = StatusEnum.EN_PROGRESO;
                    }
                    string       link        = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Authority + Url.Action("Details", "Tasks", new { id = task.idTask });
                    Notification notificator = new Notification();
                    Functionary  user        = await db.Functionary.FindAsync((Guid)Session["UserID"]);

                    Operation Operacion = db.Operation.Find(task.idOperation);
                    if (Operacion.Validable)
                    {
                        foreach (Functionary f in task.Participantes.Involucrados)
                        {
                            if (f.idUser != user.idUser)
                            {
                                Notificacion n = new Notificacion();
                                n.idNotification = Guid.NewGuid();
                                n.Fecha          = DateTime.Now;
                                n.Funcionario    = f;
                                n.Cuerpo         = "El Funcionario " + user.Nombre + " " + user.Apellido + " ha subido un Documento en la Tarea: " + task.Operacion.Nombre;
                                n.UrlAction      = link;
                                n.Vista          = false;
                                f.Notificaciones.Add(n);
                                await notificator.NotificateParticipants(user, db.Functionary.Find(f.idUser), task, link);
                            }
                        }
                    }
                    if (Operacion.Type.Equals(OperationType.ENTIDAD))
                    {
                        foreach (Functionary f in task.ResponsableEntity.Involucrados)
                        {
                            if (f.idUser != user.idUser)
                            {
                                Notificacion n = new Notificacion();
                                n.idNotification = Guid.NewGuid();
                                n.Fecha          = DateTime.Now;
                                n.Funcionario    = f;
                                n.Cuerpo         = "El Funcionario " + user.Nombre + " " + user.Apellido + " ha subido un Documento en la Tarea: " + task.Operacion.Nombre;
                                n.UrlAction      = link;
                                n.Vista          = false;
                                f.Notificaciones.Add(n);
                                await notificator.NotificateParticipants(user, db.Functionary.Find(f.idUser), task, link);
                            }
                        }
                    }
                    if (Operacion.Type.Equals(OperationType.FUNCIONARIO))
                    {
                        task.Estado = StatusEnum.COMPLETADA;
                    }

                    db.SaveChanges();
                    Tasks updatedTask = db.Task.Find(task.idTask);
                    return(Redirect(Request.UrlReferrer.ToString()));
                }
            }
            return(HttpNotFound());
        }
Beispiel #14
0
 static void UpdateActiva()
 {
     using (SMGPAContext db = new SMGPAContext())
     {
         DateTime Today     = DateTime.Now;
         string   DateToday = Today.ToString("yyyy-MM-dd HH:mm");
         DateTime myDate    = DateTime.ParseExact(DateToday, "yyyy-MM-dd HH:mm",
                                                  System.Globalization.CultureInfo.InvariantCulture);
         List <Tasks> Tasks   = db.Task.ToList();
         List <Tasks> _Tareas = Tasks.Where(t => t.Estado.Equals(StatusEnum.INACTIVA)).ToList();
         List <Tasks> Tareas  = _Tareas.Where(t => myDate >= t.fechaInicio).ToList();
         if (Tareas.Count > 0)
         {
             Console.WriteLine("Updating Inactive to Active Status on Tasks");
             foreach (Tasks t in Tareas)
             {
                 t.Estado = StatusEnum.ACTIVA;
                 Activity actividad = db.Activity.Where(a => a.idActivity.Equals(t.idActivity)).FirstOrDefault();
                 actividad.state = States.Activa;
                 string       link        = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                 Notification notificator = new Notification();
                 if (t.idFunctionary != null)
                 {
                     string DestinatarioA   = db.Functionary.Find(t.idFunctionary).MailInstitucional;
                     string DestinatarioA_1 = db.Functionary.Find(t.idFunctionary).CorreoPersonal;
                     notificator.NotificateAll(DestinatarioA, DestinatarioA_1, link, 1);
                     string CuerpoA = "Haz sido asignado como Responsable a la Tarea " + t.Operacion.Nombre;
                     addNotification(CuerpoA, t.idFunctionary, t.fechaInicio, link);
                 }
                 if (t.idResponsable != null)
                 {
                     foreach (Functionary f in t.ResponsableEntity.Involucrados)
                     {
                         string DestinatarioB   = db.Functionary.Find(f.idUser).MailInstitucional;
                         string DestinatarioB_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                         if (f.idUser != t.idFunctionary)
                         {
                             string CuerpoB = "Haz sido asignado como Responsable a la Tarea " + t.Operacion.Nombre;
                             notificator.NotificateAll(DestinatarioB, DestinatarioB_1, link, 2);
                             addNotification(CuerpoB, f.idUser, t.fechaInicio, link);
                         }
                     }
                 }
                 if (t.idEntities != null)
                 {
                     foreach (Functionary f in t.Participantes.Involucrados)
                     {
                         string DestinatarioC   = db.Functionary.Find(f.idUser).MailInstitucional;
                         string DestinatarioC_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                         if (f.idUser != t.idFunctionary)
                         {
                             string CuerpoB = "Haz sido asignado como Validador a la Tarea " + t.Operacion.Nombre;
                             notificator.NotificateAll(DestinatarioC, DestinatarioC_1, link, 2);
                             addNotification(CuerpoB, f.idUser, t.fechaInicio, link);
                         }
                     }
                 }
                 Console.WriteLine("Task: " + t.idTask + " updated ");
             }
         }
         db.SaveChanges();
     }
 }
Beispiel #15
0
        static void ReSchedule()
        {
            using (SMGPAContext db = new SMGPAContext())
            {
                List <Tasks> Pendientes = db.Task.Where(t => t.Estado == StatusEnum.PENDIENTE).ToList();
                if (Pendientes.Count > 0)
                {
                    foreach (Tasks t in Pendientes)
                    {
                        DateTime initialDate = (DateTime)t.fechaInicio;
                        DateTime endDate     = (DateTime)t.fechaFin;
                        TimeSpan difference  = endDate - initialDate;
                        t.Estado = StatusEnum.ACTIVA;
                        var days = difference.TotalDays;
                        t.fechaInicio      = DateTime.Now;
                        t.fechaFin         = DateTime.Now.AddDays(days);
                        t.Reprogramaciones = t.Reprogramaciones == null ? 1 : t.Reprogramaciones + 1;
                        Console.WriteLine("Task: " + t.idTask + " Scheduled");
                        string       link        = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                        Notification notificator = new Notification();
                        Tasks        tarea       = db.Task.Find(t.idTask);
                        switch (tarea.Operacion.Type)
                        {
                        case OperationType.ENTIDAD:
                            if (tarea.Operacion.Validable)
                            {
                                foreach (Functionary f in t.Participantes.Involucrados)
                                {
                                    string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                    string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                    string Cuerpo         = "Tarea " + t.Operacion.Nombre + " ha sido reprogramada debido a falta de gestión";
                                    addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                    notificator.NotificateAll(Destinatario, Destinatario_1, link, 3);
                                    notificator.sendSMS(f, "Se ha reprogramado una Tarea debido a falta de gestión, por favor resolver conflictos a la brevedad");
                                }
                            }
                            else
                            {
                                foreach (Functionary f in t.ResponsableEntity.Involucrados)
                                {
                                    string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                    string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                    string Cuerpo         = "Tarea " + t.Operacion.Nombre + " ha sido reprogramada debido a falta de gestión";
                                    addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                    notificator.NotificateAll(Destinatario, Destinatario_1, link, 3);
                                    notificator.sendSMS(f, "Se ha reprogramado una Tarea debido a falta de gestión, por favor resolver conflictos a la brevedad");
                                }
                            }
                            break;

                        case OperationType.FUNCIONARIO:
                            if (tarea.Operacion.Validable)
                            {
                                foreach (Functionary f in t.Participantes.Involucrados)
                                {
                                    string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                    string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                    string Cuerpo         = "Tarea " + t.Operacion.Nombre + " ha sido reprogramada debido a falta de gestión";
                                    addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                    notificator.NotificateAll(Destinatario, Destinatario_1, link, 3);
                                    notificator.sendSMS(f, "Se ha reprogramado una Tarea debido a falta de gestión, por favor resolver conflictos a la brevedad");
                                }
                            }
                            else
                            {
                                string Destinatario   = db.Functionary.Find(t.idFunctionary).MailInstitucional;
                                string Destinatario_1 = db.Functionary.Find(t.idFunctionary).CorreoPersonal;
                                string Cuerpo         = "Tarea " + t.Operacion.Nombre + " ha sido reprogramada debido a falta de gestión";
                                addNotification(Cuerpo, t.idFunctionary, t.fechaInicio, link);
                                notificator.NotificateAll(Destinatario, Destinatario_1, link, 3);
                                notificator.sendSMS(db.Functionary.Find(t.idFunctionary), "Se ha reprogramado una Tarea debido a falta de gestión, por favor resolver conflictos a la brevedad");
                            }
                            break;
                        }

                        Console.WriteLine("Task: " + t.idTask + " updated ");
                    }
                }
                db.SaveChanges();
            }
        }