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