Esempio n. 1
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();
         }
     }
 }
Esempio n. 2
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();
     }
 }
Esempio n. 3
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (!Disabled)
            {
                if (HttpContext.Current.Session["UserID"] != null)
                {
                    string actionName     = filterContext.ActionDescriptor.ActionName;
                    string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;

                    using (SMGPAContext db = new SMGPAContext())
                    {
                        Administrator admin = db.Administrator.Find(HttpContext.Current.Session["UserID"]);
                        if (admin != null)
                        {
                            Role       rol     = db.Role.Find(admin.idRole);
                            Permission Permiso = rol.Permisos.Where(p => p.ActionResult == actionName && p.Controller == controllerName).FirstOrDefault();
                            if (Permiso != null)
                            {
                                return;
                            }
                        }
                    }
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Account", action = "NotAuthorized" }));
                }
                else
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Account", action = "Login" }));
                }
            }
            if (Disabled && Public)
            {
                if (HttpContext.Current.Session["UserID"] == null)
                {
                    return;
                }
            }
            if (Disabled && !Public)
            {
                if (HttpContext.Current.Session["UserID"] != null)
                {
                    return;
                }
                else
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Account", action = "Login" }));
                }
            }
        }
Esempio n. 4
0
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     if (HttpContext.Current.Session["UserID"] != null && HttpContext.Current.Session["Admin"] == null)
     {
         using (SMGPAContext db = new SMGPAContext())
         {
             Guid userId = (Guid)HttpContext.Current.Session["UserID"];
             List <Notificacion> NotificacionesActivas = db.Notificacion.Where(n => n.idUser == userId && !n.Vista).ToList();
             var controller = filterContext.Controller as Controller;
             filterContext.Controller.ViewBag.Total          = NotificacionesActivas.Count();
             filterContext.Controller.ViewBag.Notificaciones = NotificacionesActivas;
             return;
         }
     }
     return;
 }
Esempio n. 5
0
        public async Task <ActionResult> ResetPass(User usuario)
        {
            User user = (User)TempData["account"];

            using (SMGPAContext db = new SMGPAContext())
            {
                db.Configuration.ValidateOnSaveEnabled = false;
                User u = await db.User.FindAsync(user.idUser);

                u.Contrasena = mdencoder.EncodePasswordMd5(usuario.Contrasena);
                db.User.Attach(u);
                db.Entry(u).Property(x => x.Contrasena).IsModified = true;
                await db.SaveChangesAsync();

                ViewBag.MensajeRestablecido = "Contraseña restablecida";
                return(View());
            }
        }
Esempio n. 6
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();
     }
 }
Esempio n. 7
0
 // Function that build the Menu for the logged Administrator
 public PartialViewResult BuildMenu()
 {
     if (Session["Admin"] != null)
     {
         using (SMGPAContext db = new SMGPAContext())
         {
             Administrator     administrator = (Administrator)Session["Admin"];
             List <Permission> permission    = new List <Permission>();
             Role rol = db.Role.Find(administrator.idRole);
             foreach (Permission p in rol.Permisos)
             {
                 if (p.ActiveMenu)
                 {
                     permission.Add(p);
                 }
             }
             return(PartialView(permission));
         }
     }
     return(PartialView());
 }
Esempio n. 8
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();
         }
     }
 }
Esempio n. 9
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();
     }
 }
Esempio n. 10
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();
     }
 }
Esempio n. 11
0
        public static void dailyNotification()
        {
            if (DailyStamp != null)
            {
                DateTime DateParsed = (DateTime)DailyStamp;
                if (DateTime.Today >= DateParsed.AddDays(1))
                {
                    using (SMGPAContext db = new SMGPAContext())
                    {
                        List <Tasks> _Tareas     = db.Task.ToList();
                        Notification notificator = new Notification();
                        List <Tasks> Tareas      = _Tareas.Where(t => t.Estado.Equals(StatusEnum.ACTIVA) ||
                                                                 t.Estado.Equals(StatusEnum.EN_PROGRESO)).ToList();
                        foreach (Tasks t in Tareas)
                        {
                            Tasks tarea = db.Task.Find(t.idTask);
                            switch (tarea.Operacion.Type)
                            {
                            case OperationType.ENTIDAD:
                                if (tarea.Operacion.Validable)
                                {
                                    foreach (Functionary f in tarea.ResponsableEntity.Involucrados)
                                    {
                                        bool Participa = false;
                                        foreach (Observation o in tarea.Observaciones)
                                        {
                                            if (f.idUser.Equals(o.Funcionario.idUser))
                                            {
                                                Participa = true;
                                            }
                                        }
                                        if (!Participa)    // acá debo informarle que debe participar en tarea
                                        {
                                            string link           = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                                            string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                            string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                            string Cuerpo         = "No ha participado en Tarea:  " + t.Operacion.Nombre + " está corriendo el riesgo que dicha Tarea"
                                                                    + " tenga una reprogramación debido a falta de gestión";
                                            addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                            notificator.NotificateAll(Destinatario, Destinatario_1, link, 4);
                                        }
                                    }
                                    foreach (Functionary f in tarea.Participantes.Involucrados)
                                    {
                                        bool Participa = false;
                                        foreach (Observation o in tarea.Observaciones)
                                        {
                                            if (f.idUser.Equals(o.Funcionario.idUser))
                                            {
                                                Participa = true;
                                            }
                                        }
                                        if (!Participa)    // acá debo informarle que debe participar en tarea
                                        {
                                            string link           = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                                            string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                            string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                            string Cuerpo         = "No ha participado en Tarea:  " + t.Operacion.Nombre + " está corriendo el riesgo que dicha Tarea"
                                                                    + " tenga una reprogramación debido a falta de gestión";
                                            addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                            notificator.NotificateAll(Destinatario, Destinatario_1, link, 4);
                                        }
                                    }
                                }
                                else
                                {
                                    foreach (Functionary f in tarea.ResponsableEntity.Involucrados)
                                    {
                                        bool Participa = false;
                                        foreach (Observation o in tarea.Observaciones)
                                        {
                                            if (f.idUser.Equals(o.Funcionario.idUser))
                                            {
                                                Participa = true;
                                            }
                                        }
                                        if (!Participa)    // acá debo informarle que debe participar en tarea
                                        {
                                            string link           = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                                            string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                            string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                            string Cuerpo         = "No ha participado en Tarea:  " + t.Operacion.Nombre + " está corriendo el riesgo que dicha Tarea"
                                                                    + " tenga una reprogramación debido a falta de gestión";
                                            addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                            notificator.NotificateAll(Destinatario, Destinatario_1, link, 4);
                                        }
                                    }
                                }
                                break;

                            case OperationType.FUNCIONARIO:
                                if (tarea.Operacion.Validable)
                                {
                                    foreach (Functionary f in tarea.Participantes.Involucrados)
                                    {
                                        bool Participa = false;
                                        foreach (Observation o in tarea.Observaciones)
                                        {
                                            if (f.idUser.Equals(o.Funcionario.idUser))
                                            {
                                                Participa = true;
                                            }
                                        }
                                        if (!Participa)    // acá debo informarle que debe participar en tarea
                                        {
                                            string link           = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                                            string Destinatario   = db.Functionary.Find(f.idUser).MailInstitucional;
                                            string Destinatario_1 = db.Functionary.Find(f.idUser).CorreoPersonal;
                                            string Cuerpo         = "No ha participado en Tarea:  " + t.Operacion.Nombre + " está corriendo el riesgo que dicha Tarea"
                                                                    + " tenga una reprogramación debido a falta de gestión";
                                            addNotification(Cuerpo, f.idUser, t.fechaInicio, link);
                                            notificator.NotificateAll(Destinatario, Destinatario_1, link, 4);
                                        }
                                    }
                                }
                                else
                                {
                                    if (t.Documentos.Count == 0)
                                    {
                                        string link           = "http://localhost/SMGPA/Tasks/Details/" + t.idTask;
                                        string Destinatario   = db.Functionary.Find(t.idFunctionary).MailInstitucional;
                                        string Destinatario_1 = db.Functionary.Find(t.idFunctionary).CorreoPersonal;
                                        string Cuerpo         = "No ha participado en Tarea:  " + t.Operacion.Nombre + " está corriendo el riesgo que dicha Tarea"
                                                                + " tenga una reprogramación debido a falta de gestión";
                                        addNotification(Cuerpo, t.idFunctionary, t.fechaInicio, link);
                                        notificator.NotificateAll(Destinatario, Destinatario_1, link, 4);
                                    }
                                }
                                break;
                            }
                        }
                    }
                    DailyStamp = DateTime.Today;
                }
            }
            else
            {
                DailyStamp = DateTime.Today;
            }
        }
Esempio n. 12
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();
            }
        }
Esempio n. 13
0
        public ActionResult Login(User user)
        {
            using (SMGPAContext db = new SMGPAContext())
            {
                if (user.MailInstitucional != null && user.Contrasena != null)
                {
                    try
                    {
                        ICollection <Administrator> Administrator = db.Administrator.ToList();
                        ICollection <Functionary>   Functionary   = db.Functionary.ToList();

                        foreach (Administrator a in Administrator)
                        {
                            if (a.MailInstitucional.Equals(user.MailInstitucional) && a.Contrasena.Equals(mdencoder.EncodePasswordMd5(user.Contrasena)))
                            {
                                if (a.Activo)
                                {
                                    Session["Admin"]    = a;
                                    Session["UserID"]   = a.idUser;
                                    Session["Username"] = a.Nombre + " " + a.Apellido;
                                    return(View("LoggedInAdmin"));
                                }
                                if (!a.Activo)
                                {
                                    ModelState.AddModelError("", "Usuario inactivo");
                                    ViewBag.validation = "Usuario inactivo";
                                    return(View());
                                }
                            }
                            if (!a.MailInstitucional.Equals(user.MailInstitucional) || !a.Contrasena.Equals(mdencoder.EncodePasswordMd5(user.Contrasena)))
                            {
                                ModelState.AddModelError("", "Usuario o contraseña erróneos");
                                ViewBag.validation = "Usuario o Contraseña incorrecta";
                            }
                        }
                        foreach (Functionary f in Functionary)
                        {
                            if (f.MailInstitucional.Equals(user.MailInstitucional) && f.Contrasena.Equals(mdencoder.EncodePasswordMd5(user.Contrasena)))
                            {
                                if (f.Activo)
                                {
                                    Session["UserID"]      = f.idUser;
                                    Session["Username"]    = f.Nombre + " " + f.Apellido;
                                    ViewBag.Notificaciones = db.Notificacion.Where(n => n.idUser == f.idUser && !n.Vista).ToList();
                                    ViewBag.Total          = db.Notificacion.Where(n => n.idUser == f.idUser && !n.Vista).Count();
                                    return(View("LoggedInFunctionary"));
                                }
                                if (!f.Activo)
                                {
                                    ModelState.AddModelError("", "Usuario inactivo");
                                    ViewBag.validation = "Usuario inactivo";
                                    return(View());
                                }
                            }
                            if (!f.MailInstitucional.Equals(user.MailInstitucional) || !f.Contrasena.Equals(mdencoder.EncodePasswordMd5(user.Contrasena)))
                            {
                                ModelState.AddModelError("", "Usuario o contraseña erróneos");
                                ViewBag.validation = "Usuario o Contraseña incorrecta";
                            }
                        }
                    }
                    catch (SqlException ex) when(ex.Errors.Count > 0)
                    {
                    }
                }
            }
            return(View());
        }