private static void BeginInteractive(Server server) { new Thread(() => { Thread.Sleep(300); while (true) { Console.Clear(); Router.ListPossibleOperations(); var option = ConsolePrompts.ReadUntilValid( prompt: "Codigo de operacion", pattern: "^[0-9]+|(exit)$", errorMsg: "Favor de ingresar un numero o exit"); if (option == "exit") { Process.GetCurrentProcess().Kill(); } Router.RouteOperation(option, new object[] { server }); Console.WriteLine("Presiona enter para continuar"); Console.ReadKey(); } }).Start(); }
public void RemoveSubject() { Console.Clear(); Console.WriteLine("Eliminacion de curso"); Console.WriteLine("--------------------"); Console.WriteLine(""); var subjects = SubjectSrv.GetAllSubjects(); if (subjects.Count() == 0) { Console.WriteLine("No hay cursos registrados en el sistema"); return; } ConsolePrompts.PrintListWithIndices(subjects.Select(s => s.Name)); Console.WriteLine(""); var option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero de la materia a borrar", min: 1, max: subjects.Count()); var subject = subjects.ElementAt(option - 1); SubjectSrv.RemoveSubject(subject.Id); Console.WriteLine(""); }
public void EnrollInSubject() { Console.Clear(); Console.WriteLine("Cargando..."); Client.Send("03", "NOT_MINE"); var subjects = Client.Receive <IEnumerable <Subject> >(); Console.Clear(); Console.WriteLine("Inscripciones"); Console.WriteLine("-------------"); Console.WriteLine(""); if (subjects.Count() == 0) { Console.WriteLine("No hay cursos a los que se pueda registrar"); return; } ConsolePrompts.PrintListWithIndices(subjects.Select(s => s.Name)); Console.WriteLine(""); var option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero de la materia a la que se quiere inscribir", min: 1, max: subjects.Count()); Client.Send("04", subjects.ElementAt(option - 1).Id); Client.Receive(); Console.WriteLine("Esta usted inscripto"); }
public void GradeStudent() { Console.Clear(); Console.WriteLine("Asistente de calificaciones"); Console.WriteLine("---------------------------"); Console.WriteLine(""); var subjects = SubjectSrv.GetAllSubjects(); if (subjects.Count() == 0) { Console.WriteLine("No hay cursos registrados en el sistema"); return; } Console.WriteLine("Materias disponibles"); Console.WriteLine(""); ConsolePrompts.PrintListWithIndices(subjects.Select(s => s.Name)); Console.WriteLine(""); var option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero de la materia deseada", min: 1, max: subjects.Count()); var subject = subjects.ElementAt(option - 1); var students = StudentSrv.GetStudentsEnrolledInSubject(subject.Id); Console.WriteLine(""); if (students.Count() == 0) { Console.WriteLine($"No hay estudiantes inscriptos a {subject.Name}"); return; } Console.WriteLine("Estudiantes inscriptos"); Console.WriteLine(""); ConsolePrompts.PrintListWithIndices(students.Select(s => $"{s.LastName}, {s.FirstName} [{s.Id}]")); Console.WriteLine(""); option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero del estudiante", min: 1, max: subjects.Count()); var student = students.ElementAt(option - 1); Console.WriteLine(""); var grade = ConsolePrompts.ReadNumberUntilValid( prompt: "Nota", min: 1, max: 100); StudentSrv.GradeStudent(student.Id, subject.Id, grade); Srv.SendNotification(student.Id, $"Has recibido una calificacion! Sacaste {grade} en {subject.Name}"); Console.WriteLine(""); Console.WriteLine($"Se notifico a {student.LastName}, {student.FirstName} que su nota para {subject.Name} fue {grade}"); }
static void Main(string[] args) { Console.Clear(); Console.WriteLine("Bienvenido a Gestion 3.0\nPresiona enter para conectarte..."); Console.ReadKey(); var client = new Client(GetValueFromConfig <string>("ip"), GetValueFromConfig <int>("port")); client.Connect(() => { try { AuthenticateAgainstServer(client); var subscription = client.ListenToNotifications(Console.WriteLine); while (true) { Console.Clear(); Router.ListPossibleOperations(); var option = ConsolePrompts.ReadUntilValid( prompt: "Codigo de operacion", pattern: "^[0-9]+|(exit)$", errorMsg: "Favor de ingresar un numero o exit"); if (option == "exit") { break; } try { Router.RouteOperation(option, new object[] { client }); } catch (OperationFailedException) { Console.WriteLine("Ha ocurrido un error, la operacion se ha cancelado"); } Console.WriteLine("Presiona enter para continuar"); Console.ReadKey(); } subscription.Unsubscribe(); } catch (InvalidAuthException) { Console.WriteLine("No pareces estar registrado, contacta a un admin!"); Console.WriteLine("Adios!"); Thread.Sleep(2000); } finally { client.Dispose(); } }); }
public void ViewAvailableCourses() { Console.Clear(); Console.WriteLine("Lista de cursos"); Console.WriteLine("---------------"); Console.WriteLine(""); var subjects = SubjectSrv.GetAllSubjects(); if (subjects.Count() == 0) { Console.WriteLine("No hay cursos registrados en el sistema"); return; } ConsolePrompts.PrintListWithIndices(subjects.Select(s => s.Name)); Console.WriteLine(""); }
public void UploadFileToCourse() { Console.Clear(); Console.WriteLine("Cargando..."); Client.Send("03", "MINE"); var subjects = Client.Receive <IEnumerable <Subject> >(); Console.Clear(); Console.WriteLine("Lista de cursos disponibles"); Console.WriteLine("---------------------------"); Console.WriteLine(""); if (subjects.Count() == 0) { Console.WriteLine("No esta inscripto a ningun curso"); return; } ConsolePrompts.PrintListWithIndices(subjects.Select(s => s.Name)); Console.WriteLine(""); var option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero de la materia a la que quiere subir material", min: 1, max: subjects.Count()); var subject = subjects.ElementAt(option - 1); Console.WriteLine($"El material sera subido a {subject.Name}"); var path = ConsolePrompts.ChooseFile(); Console.WriteLine("Su archivo esta siendo subido..."); Client.SendFile("05", path); var fileRef = Client.Receive <FileRef>(); Client.Send("06", Tuple.Create(subject.Id, fileRef)); Client.Receive(); Console.WriteLine("Archivo subido con exito!"); }
public void RegisterSubject() { Console.Clear(); Console.WriteLine("Registro de curso"); Console.WriteLine("-----------------"); Console.WriteLine(""); var name = ConsolePrompts.ReadUntilValid( prompt: "Nombre", pattern: "^[a-zA-Z0-9 ]+$", errorMsg: "El nombre de la materia puede tener letras de la A a la Z, no importan mayusculas, numeros o espacios. No se aceptan otros caracteres"); var subject = new Subject() { Name = name }; SubjectSrv.RegisterSubject(subject); Console.WriteLine(""); }
private static void AuthenticateAgainstServer(Client c) { try { var userId = ConsolePrompts.ReadUntilValid( prompt: "Numero de estudiante", pattern: "^[0-9]{6}$", errorMsg: "Por favor, ingrese un numero de seis cifras. Complete con ceros a la izquierda de ser necesario."); c.Send("01", userId); var firstName = c.Receive(); Console.WriteLine($"Hola {firstName}!"); Thread.Sleep(1000); c.Authenticate(userId); } catch (OperationFailedException) { throw new InvalidAuthException(); } }
public void ViewGrades() { Console.Clear(); Console.WriteLine("Cargando..."); Client.Send("07", "MINE"); var grades = Client.Receive <IDictionary <string, int> >(); Console.Clear(); Console.WriteLine("Notas"); Console.WriteLine("-----"); Console.WriteLine(""); if (grades.Count() == 0) { Console.WriteLine("No tienes ninguna nota aun"); return; } ConsolePrompts.PrintListWithIndices(grades.Select(entry => $"{entry.Key} - {entry.Value}")); Console.WriteLine(""); }
public void SignupStudent() { Console.Clear(); Console.WriteLine("Registro de estudiante"); Console.WriteLine("----------------------"); Console.WriteLine(""); var id = ConsolePrompts.ReadUntilValid( prompt: "Numero de estudiante", pattern: "^[0-9]{6}$", errorMsg: "Un numero de estudiante tiene solo seis numeros"); var firstName = ConsolePrompts.ReadUntilValid( prompt: "Primer nombre", pattern: "^[a-zA-Z]+$", errorMsg: "Un nombre son letras de la A a la Z, no importan mayusculas. No se aceptan espacios ni ningun otro caracter"); var lastName = ConsolePrompts.ReadUntilValid( prompt: "Primer apellido", pattern: "^[a-zA-Z]+$", errorMsg: "Un apellido son letras de la A a la Z, no importan mayusculas. No se aceptan espacios ni ningun otro caracter"); var student = new Student() { Id = id, FirstName = firstName, LastName = lastName }; Console.WriteLine(""); try { StudentSrv.SignupStudent(student); } catch (DuplicateEntityException) { Console.WriteLine("Un estudiante con ese numero ya existe, cancelando la operacion..."); } }
public void ViewAvailableCourses() { Console.Clear(); Console.WriteLine("Cargando..."); Client.Send("03", "ALL_WITH_STATUS"); var subjects = Client.Receive <IDictionary <string, string> >(); Console.Clear(); Console.WriteLine("Lista de cursos disponibles"); Console.WriteLine("---------------------------"); Console.WriteLine(""); if (subjects.Count() == 0) { Console.WriteLine("No hay cursos registrados en el sistema"); return; } ConsolePrompts.PrintListWithIndices(subjects.Select(s => $"{s.Key} ({s.Value})")); Console.WriteLine(""); }
public void ViewUploadedFiles() { Console.Clear(); Console.WriteLine("Cargando..."); Client.Send("03", "MINE"); var subjects = Client.Receive <IEnumerable <Subject> >(); Console.Clear(); Console.WriteLine("Lista de cursos disponibles"); Console.WriteLine("---------------------------"); Console.WriteLine(""); if (subjects.Count() == 0) { Console.WriteLine("No esta inscripto a ningun curso"); return; } ConsolePrompts.PrintListWithIndices(subjects.Select(s => s.Name)); Console.WriteLine(""); var option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero de la materia", min: 1, max: subjects.Count()); var subject = subjects.ElementAt(option - 1); Client.Send("08", subject.Id); var files = Client.Receive <IEnumerable <FileRef> >(); Console.WriteLine(""); if (files.Count() == 0) { Console.WriteLine("No hay archivos suyos en este curso"); Console.WriteLine(""); return; } Console.WriteLine($"Archivos subidos a {subject.Name}"); Console.WriteLine("-------------------------------------------"); Console.WriteLine(""); ConsolePrompts.PrintListWithIndices(files.Select(s => s.Name)); while (true) { Console.WriteLine(""); option = ConsolePrompts.ReadNumberUntilValid( prompt: "Numero del archivo a descargar o 0 para salir", min: 0, max: files.Count()); if (option == 0) { return; } var fileRef = files.ElementAt(option - 1); Console.WriteLine("Descargando archivo..."); Client.Send("09", fileRef.Path); var fileName = Client.ReceiveFile(); Console.WriteLine($"{fileName} recibido con exito!"); Console.WriteLine(""); } }