Ejemplo n.º 1
0
        private static bool AlumnoAlta()
        {
            LimpiarConsoleLine();
            Console.WriteLine($"2 - 1) Alta de Alumno. de {nomMenu}");
            Console.WriteLine("Para volver sin guardar alumno entra  *.");

            Console.WriteLine("entra el dni:");
            var  dni     = "";
            bool primera = true;

            ValidationResult <string> vrDni = Student.ValidateDni(dni);

            do
            {
                if (!primera)
                {
                    Console.WriteLine(vrDni.AllErrors);
                }
                dni = Console.ReadLine();
                if (dni == "*")
                {
                    return(false);
                }
                primera = false;
            } while (!(vrDni = Student.ValidateDni(dni)).IsSuccess);


            ValidationResult <string> vrName = EntradaNombre("entra el nombre y apellidos:");


            ValidationResult <int> vrChair = EntraNumSilla("entra el número de silla:");


            if (vrDni.IsSuccess && vrName.IsSuccess && vrChair.IsSuccess)
            {
                var student = new Student
                {
                    Dni         = vrDni.ValidatedResult,
                    Name        = vrName.ValidatedResult,
                    ChairNumber = vrChair.ValidatedResult
                };

                var sr  = student.Save();
                var sr2 = StudentRepository.Add(student);
                if (sr.IsSuccess && sr2.IsSuccess)
                {
                    Console.WriteLine($"alumno guardado correctamente");
                    return(true);
                }
                else
                {
                    Console.WriteLine($"uno o más errores han ocurrido y el alumno no se guardado/actualizado: {sr.AllErrors} {sr2.AllErrors}");
                    return(false);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        private static bool AlumnoAltaPruebas(string dni, string name, string chairNumberText)
        {
            ValidationResult <string> vrDni;

            if (!(vrDni = Student.ValidateDni(dni)).IsSuccess)
            {
                Console.WriteLine(vrDni.AllErrors);
            }

            ValidationResult <string> vrName;

            if (!(vrName = Student.ValidateName(name)).IsSuccess)
            {
                Console.WriteLine(vrName.AllErrors);
            }

            ValidationResult <int> vrChair;

            if (!(vrChair = Student.ValidateChairNumber(chairNumberText)).IsSuccess)
            {
                Console.WriteLine(vrChair.AllErrors);
            }

            if (vrDni.IsSuccess && vrName.IsSuccess && vrChair.IsSuccess)
            {
                var student = new Student
                {
                    Dni         = vrDni.ValidatedResult,
                    Name        = vrName.ValidatedResult,
                    ChairNumber = vrChair.ValidatedResult
                };

                var sr  = student.Save();
                var sr2 = StudentRepository.Add(student);
                if (sr.IsSuccess && sr2.IsSuccess)
                {
                    Console.WriteLine($"alumno guardado correctamente");
                    return(true);
                }
                else
                {
                    Console.WriteLine($"uno o más errores han ocurrido y el almuno no se guardado/actualizado: {sr.AllErrors} {sr2.AllErrors}");
                }
            }
            return(false);
        }
Ejemplo n.º 3
0
        static void ShowHandleStudentsMenu()
        {
            CurrentOption = "a";
            Console.WriteLine("Menu de gestionar alumnos.");
            Console.WriteLine("Opciones: a - para añadir un nuevo almuno");
            Console.WriteLine("Opciones: e + dni - para editar un alumno existente");
            Console.WriteLine("Opciones: n - ver información del alumno");
            Console.WriteLine("Opciones: n/e - ver exámenes de alumno");
            Console.WriteLine("Opciones: n/e - ver asignaturas de alumno");
            Console.WriteLine("Presione m para acabar y volver al menú principal");

            while (true)
            {
                var option = Console.ReadLine();

                if (option == "m")
                {
                    break;
                }
                else if (option == "a")
                {
                    Console.WriteLine("Para volver sin guardar alumno escriba  EXIT");
                    Console.WriteLine("escriba el dni de 7 numeros:");

                    #region read dni
                    var dni = Console.ReadLine();

                    if (dni == "EXIT")
                    {
                        break;
                    }

                    ValidationResult <string> dniValRes = Student.ValidateDni(dni, true);

                    while (!dniValRes.IsSuccess)
                    {
                        foreach (var msg in dniValRes.Messages)
                        {
                            Console.WriteLine(msg);
                        }

                        dni       = Console.ReadLine();
                        dniValRes = Student.ValidateDni(dni, true);
                    }

                    if (dni == "EXIT")
                    {
                        break;
                    }

                    #endregion

                    #region read name
                    Console.WriteLine("escriba el nombre y apellidos:");
                    var name = Console.ReadLine();

                    if (name == "EXIT")
                    {
                        break;
                    }

                    ValidationResult <string> nameValRes = Student.ValidateName(name);

                    while (!nameValRes.IsSuccess)
                    {
                        foreach (var msg in dniValRes.Messages)
                        {
                            Console.WriteLine(msg);
                        }

                        name       = Console.ReadLine();
                        nameValRes = Student.ValidateName(name);
                    }

                    #endregion

                    #region read chair number
                    Console.WriteLine("escriba el número de silla:");
                    var chairNumberText = Console.ReadLine();

                    if (chairNumberText == "EXIT")
                    {
                        break;
                    }

                    ValidationResult <int> chairNumValRes = Student.ValidateChairNumber(chairNumberText);

                    while (!chairNumValRes.IsSuccess)
                    {
                        foreach (var msg in chairNumValRes.Messages)
                        {
                            Console.WriteLine(msg);
                        }

                        chairNumberText = Console.ReadLine();
                        chairNumValRes  = Student.ValidateChairNumber(chairNumberText);
                    }

                    #endregion


                    if (dniValRes.IsSuccess && nameValRes.IsSuccess && chairNumValRes.IsSuccess)
                    {
                        var student = new Student
                        {
                            Dni         = dniValRes.ValidatedResult,
                            Name        = nameValRes.ValidatedResult,
                            ChairNumber = chairNumValRes.ValidatedResult
                        };

                        student.Save();

                        if (student.Save())
                        {
                            Console.WriteLine($"alumno guardado correctamente");
                        }
                        else
                        {
                            Console.WriteLine($"uno o más errores han ocurrido y el almuno no se guardado correctamente");
                        }
                    }
                }
            }

            ClearCurrentConsoleLine();
            Console.WriteLine();
            ShowMainMenu();
        }
Ejemplo n.º 4
0
        static void ShowHandleStudentsMenu()
        {
            CurrentOption = "a";
            Console.WriteLine("Menu de gestionar alumnos.");
            Console.WriteLine("Opciones: a - para añadir un nuevo almuno");
            Console.WriteLine("Opciones: e + dni - para editar un alumno existente");
            Console.WriteLine("Opciones: n - ver información del alumno");
            Console.WriteLine("Opciones: n/e - ver exámenes de alumno");
            Console.WriteLine("Opciones: n/e - ver asignaturas de alumno");
            Console.WriteLine("Presione m para acabar y volver al menú principal");

            while (true)
            {
                var option = Console.ReadLine();

                if (option == "m")
                {
                    break;
                }
                else if (option == "a")
                {
                    Console.WriteLine("Para volver sin guardar alumno escriba  *.");
                    Console.WriteLine("escriba el dni:");

                    #region read dni
                    var dni = Console.ReadLine();

                    if (dni == "*")
                    {
                        break;
                    }

                    ValidationResult <string> vrDni;
                    while (!(vrDni = Student.ValidateDni(dni)).IsSuccess)
                    {
                        Console.WriteLine(vrDni.AllErrors);
                        dni = Console.ReadLine();
                    }

                    if (dni == "*")
                    {
                        break;
                    }

                    #endregion

                    #region read name
                    Console.WriteLine("escriba el nombre y apellidos:");
                    var name = Console.ReadLine();

                    if (name == "*")
                    {
                        break;
                    }

                    ValidationResult <string> vrName;
                    while (!(vrName = Student.ValidateName(name)).IsSuccess)
                    {
                        Console.WriteLine(vrName.AllErrors);
                        name = Console.ReadLine();
                    }

                    #endregion

                    #region read chair number
                    Console.WriteLine("escriba el número de silla:");
                    var chairNumberText = Console.ReadLine();

                    if (chairNumberText == "*")
                    {
                        break;
                    }

                    ValidationResult <int> vrChair;
                    while (!(vrChair = Student.ValidateChairNumber(chairNumberText)).IsSuccess)
                    {
                        Console.WriteLine(vrChair.AllErrors);
                        chairNumberText = Console.ReadLine();
                    }

                    #endregion

                    if (vrDni.IsSuccess && vrName.IsSuccess && vrChair.IsSuccess)
                    {
                        var student = new Student
                        {
                            Dni         = vrDni.ValidatedResult,
                            Name        = vrName.ValidatedResult,
                            ChairNumber = vrChair.ValidatedResult
                        };

                        var sr  = student.Save();
                        var sr2 = StudentRepository.Add(student);
                        if (sr.IsSuccess && sr2.IsSuccess)
                        {
                            Console.WriteLine($"alumno guardado correctamente");
                        }
                        else
                        {
                            Console.WriteLine($"uno o más errores han ocurrido y el almuno no se guardado correctamente: {sr.AllErrors} {sr2.AllErrors}");
                        }
                    }
                }
                else if (option == "e")
                {
                    Console.WriteLine("escriba el dni del alumno para editar:");
                    var dni    = Console.ReadLine();
                    var result = StudentRepository.GetStudentByDni(dni);
                    if (result != null)
                    {
                        #region read name
                        Console.WriteLine("escriba el nombre y apellidos:");
                        var name = Console.ReadLine();

                        if (name == "*")
                        {
                            break;
                        }

                        ValidationResult <string> vrName;
                        while (!(vrName = Student.ValidateName(name)).IsSuccess)
                        {
                            Console.WriteLine(vrName.AllErrors);
                            name = Console.ReadLine();
                        }
                        #endregion

                        #region read chair number
                        Console.WriteLine("escriba el número de silla:");
                        var chairNumberText = Console.ReadLine();

                        if (chairNumberText == "*")
                        {
                            break;
                        }

                        ValidationResult <int> vrChair;
                        while (!(vrChair = Student.ValidateChairNumber(chairNumberText)).IsSuccess)
                        {
                            Console.WriteLine(vrChair.AllErrors);
                            chairNumberText = Console.ReadLine();
                        }
                        #endregion
                        if (vrName.IsSuccess && vrChair.IsSuccess)
                        {
                            Student newStudent = new Student
                            {
                                Id          = result.Id,
                                Dni         = result.Dni,
                                Name        = vrName.ValidatedResult,
                                ChairNumber = vrChair.ValidatedResult
                            };
                            StudentRepository.Update(newStudent);
                        }
                    }
                    else
                    {
                        Console.WriteLine("No hay el alumno con este dni!");
                    }
                }
                else if (option == "n")
                {
                    Console.WriteLine("escriba el dni del alumno para ver informacio / * - ver la lista de los todos alumnos:");
                    var dni = Console.ReadLine();
                    if (dni == "*")
                    {
                        foreach (KeyValuePair <string, Student> kvp in StudentRepository.GetAllStudents())
                        {
                            Console.WriteLine("Dni = {0}, Name = {1}, ChairNumber = {2}", kvp.Key, kvp.Value.Name, kvp.Value.ChairNumber);
                        }
                    }
                    else
                    {
                        var result = StudentRepository.GetStudentByDni(dni);
                        if (result != null)
                        {
                            Console.WriteLine("Dni = {0}, Name = {1}, ChairNumber = {2}", result.Dni, result.Name, result.ChairNumber);
                        }
                    }
                }
            }

            ClearCurrentConsoleLine();
            Console.WriteLine();
            ShowMainMenu();
        }
Ejemplo n.º 5
0
        static void ShowHandleStudentsMenu()
        {
            CurrentOption = "a";
            Console.WriteLine("Menu de gestionar alumnos.");
            Console.WriteLine("Opciones: a - para añadir un nuevo almuno");
            Console.WriteLine("Opciones: e + dni - para editar un alumno existente");
            Console.WriteLine("Opciones: n - ver información del alumno");
            Console.WriteLine("Opciones: n/e - ver exámenes de alumno");
            Console.WriteLine("Opciones: n/e - ver asignaturas de alumno");
            Console.WriteLine("Presione m para acabar y volver al menú principal");

            while (true)
            {
                var option = Console.ReadLine();


                if (option == "m")
                {
                    break;
                }
                else if (option == "a")
                {
                    Console.WriteLine("Para volver sin guardar alumno escriba  *.");
                    Console.WriteLine("escriba el dni:");

                    #region read dni
                    var dni = Console.ReadLine();

                    if (dni == "*")
                    {
                        break;
                    }

                    ValidationResult <string> dniValRes = Student.ValidateDni(dni, default(Guid));

                    while (!dniValRes.IsSuccess)
                    {
                        foreach (var msg in dniValRes.Messages)
                        {
                            Console.WriteLine(msg);
                        }

                        dni       = Console.ReadLine();
                        dniValRes = Student.ValidateDni(dni, default(Guid));
                    }

                    if (dni == "*")
                    {
                        break;
                    }

                    #endregion

                    #region read name
                    Console.WriteLine("escriba el nombre y apellidos:");
                    var name = Console.ReadLine();

                    if (name == "*")
                    {
                        break;
                    }

                    ValidationResult <string> nameValRes = Student.ValidateName(name);

                    while (!nameValRes.IsSuccess)
                    {
                        foreach (var msg in nameValRes.Messages)
                        {
                            Console.WriteLine(msg);
                        }

                        name       = Console.ReadLine();
                        nameValRes = Student.ValidateName(name);
                    }

                    #endregion

                    #region read chair number
                    Console.WriteLine("escriba el número de silla:");
                    var chairNumberText = Console.ReadLine();

                    if (chairNumberText == "*")
                    {
                        break;
                    }

                    ValidationResult <int> chairNumValRes = Student.ValidateChairNumber(chairNumberText);

                    while (!chairNumValRes.IsSuccess)
                    {
                        foreach (var msg in chairNumValRes.Messages)
                        {
                            Console.WriteLine(msg);
                        }

                        chairNumberText = Console.ReadLine();
                        chairNumValRes  = Student.ValidateChairNumber(chairNumberText);
                    }

                    #endregion


                    if (dniValRes.IsSuccess && nameValRes.IsSuccess && chairNumValRes.IsSuccess)
                    {
                        var student = new Student
                        {
                            Dni         = dniValRes.ValidatedResult,
                            Name        = nameValRes.ValidatedResult,
                            ChairNumber = chairNumValRes.ValidatedResult
                        };

                        var save = student.Save();

                        if (save)
                        {
                            Console.WriteLine($"alumno guardado correctamente");
                        }
                        else
                        {
                            Console.WriteLine($"uno o más errores han ocurrido y el almuno no se guardado correctamente");
                        }
                    }
                }
                else if (option == "e")
                {
                    // option e + dni - para editar un alumno existente
                    Console.WriteLine("Para volver sin guardar alumno escriba  *.");

                    #region read DNI

                    Console.WriteLine("escriba el dni del alumno que desea editar:");

                    var dni = Console.ReadLine();

                    // opcion 1 - Linq
                    //if (DbContext.Students.Values.Any(s => s.Dni == dni))
                    //{
                    //    var existingStudent = DbContext.Students.Values.First(s => s.Dni == dni);
                    //}

                    // opcion 2 - Linq optimo
                    //var existingStudent = DbContext.Students.Values.FirstOrDefault(s => s.Dni == dni);
                    //if(existingStudent != null)
                    //{
                    //    // hago lo que quiera con el existing Student
                    //}

                    // opcion 3 - Sin Linq

                    if (DbContext.StudentsByDni.ContainsKey(dni))
                    {
                        var existingStudent = DbContext.StudentsByDni[dni];  //CRIS

                        Console.WriteLine("Escriba el nuevo DNI");
                        var dniNuevo = Console.ReadLine();

                        var dniValidResult = Student.ValidateDni(dniNuevo, existingStudent.Id);

                        while (!dniValidResult.IsSuccess)
                        {
                            foreach (var msg in dniValidResult.Messages)
                            {
                                Console.WriteLine(msg);
                            }

                            Console.WriteLine("Escriba de nuevo el nuevo DNI");

                            dniNuevo       = Console.ReadLine();
                            dniValidResult = Student.ValidateDni(dniNuevo, existingStudent.Id);
                        }

                        #endregion

                        #region read DNI

                        Console.WriteLine("escriba el nombre correcto del alumno:");
                        var name = Console.ReadLine();

                        if (name == "*")
                        {
                            break;
                        }

                        ValidationResult <string> nameValRes = Student.ValidateName(name);

                        while (!nameValRes.IsSuccess)
                        {
                            foreach (var msg in nameValRes.Messages)
                            {
                                Console.WriteLine(msg);
                            }

                            name       = Console.ReadLine();
                            nameValRes = Student.ValidateName(name);
                        }

                        #endregion

                        #region read Chairnumber

                        Console.WriteLine("escriba el  nuevo número de silla:");
                        var chairNumberText = Console.ReadLine();

                        if (chairNumberText == "*")
                        {
                            break;
                        }

                        ValidationResult <int> chairNumValRes = Student.ValidateChairNumber(chairNumberText);

                        while (!chairNumValRes.IsSuccess)
                        {
                            foreach (var msg in chairNumValRes.Messages)
                            {
                                Console.WriteLine(msg);
                            }

                            Console.WriteLine("Vuelva a escribir el  nuevo número de silla:");

                            chairNumberText = Console.ReadLine();
                            chairNumValRes  = Student.ValidateChairNumber(chairNumberText);
                        }

                        #endregion


                        if (dniValidResult.IsSuccess && nameValRes.IsSuccess && chairNumValRes.IsSuccess)
                        {
                            existingStudent.Dni         = dniValidResult.ValidatedResult;
                            existingStudent.Name        = nameValRes.ValidatedResult;
                            existingStudent.ChairNumber = chairNumValRes.ValidatedResult;

                            var save = existingStudent.Save();

                            if (save)
                            {
                                if (existingStudent.Save())
                                {
                                    Console.WriteLine($"Las modificaciones se han guardado correctamente");
                                }
                                else
                                {
                                    Console.WriteLine($"uno o más errores han ocurrido y el alumno no se ha modificado correctamente");
                                }
                            }
                        }
                    }


                    else if (option == "n")
                    {
                        for (int count = 0; count < DbContext.Students.Count; count++)
                        {
                            var element = DbContext.Students.ElementAt(count);
                            var Key     = element.Key;
                            var Value   = element.Value;
                            Console.WriteLine(Key + "  " + Value);
                        }
                    }
                }
            }

            ClearCurrentConsoleLine();
            Console.WriteLine();
            ShowMainMenu();
        }
Ejemplo n.º 6
0
        static void ShowHandleStudentsMenu()
        {
            CurrentOption = "a";
            Console.WriteLine("Menu de gestionar alumnos.");
            Console.WriteLine("Opciones: a - para añadir un nuevo almuno");
            Console.WriteLine("Opciones: e + dni - para editar un alumno existente");
            Console.WriteLine("Opciones: n - ver información del alumno");
            Console.WriteLine("Opciones: n/e - ver exámenes de alumno");
            Console.WriteLine("Opciones: n/e - ver asignaturas de alumno");
            Console.WriteLine("Presione m para acabar y volver al menú principal");

            while (true)
            {
                var option = Console.ReadLine();

                if (option == "m")
                {
                    break;
                }
                else if (option == "a")
                {
                    Console.WriteLine("Para volver sin guardar alumno escriba  *.");
                    Console.WriteLine("escriba el dni:");

                    #region read dni
                    var dni = Console.ReadLine();

                    if (dni == "*")
                    {
                        break;
                    }

                    while (!Student.ValidateDni(dni))
                    {
                        Console.WriteLine("el dni está en formato incorrecto, vuelva a escribirlo");
                        dni = Console.ReadLine();
                    }

                    while (DbContext.StudentsByDni.ContainsKey(dni))
                    {
                        Console.WriteLine("ya existe un alumno con ese dni");
                        dni = Console.ReadLine();

                        if (dni == "*")
                        {
                            break;
                        }
                    }


                    if (dni == "*")
                    {
                        break;
                    }

                    #endregion

                    #region read name
                    Console.WriteLine("escriba el nombre y apellidos:");
                    var name = Console.ReadLine();

                    if (name == "*")
                    {
                        break;
                    }

                    while (!Student.ValidateName(name))
                    {
                        Console.WriteLine("el nombre está en formato incorrecto, vuelva a escribirlo");
                        name = Console.ReadLine();
                    }

                    #endregion

                    var student = new Student
                    {
                        Dni  = dni,
                        Name = name
                    };

                    if (student.Save())
                    {
                        Console.WriteLine($"alumno guardado correctamente");
                    }
                    else
                    {
                        Console.WriteLine($"uno o más errores han ocurrido y el almuno no se guardado correctamente");
                    }
                }
            }

            ClearCurrentConsoleLine();
            Console.WriteLine();
            ShowMainMenu();
        }
Ejemplo n.º 7
0
        static void ShowHandleStudentsMenu()
        {
            CurrentOption = "a";
            Console.WriteLine("Menu de gestionar alumnos.");
            Console.WriteLine("Opciones: a - para añadir un nuevo almuno");
            Console.WriteLine("Opciones: e + dni - para editar un alumno existente");
            Console.WriteLine("Opciones: n - ver información del alumno");
            Console.WriteLine("Opciones: n/e - ver exámenes de alumno");
            Console.WriteLine("Opciones: n/e - ver asignaturas de alumno");
            Console.WriteLine("Presione m para acabar y volver al menú principal");

            while (true)
            {
                var option = Console.ReadLine();

                if (option == "m")
                {
                    break;
                }
                else if (option == "a")
                {
                    Console.WriteLine("Para volver sin guardar alumno escriba  *.");
                    Console.WriteLine("escriba el dni:");

                    #region read dni
                    var dni = Console.ReadLine();

                    if (dni == "*")
                    {
                        break;
                    }

                    ValidationResult <string> vrDni;
                    while (!(vrDni = Student.ValidateDni(dni)).IsSuccess)
                    {
                        Console.WriteLine(vrDni.AllErrors);
                        dni = Console.ReadLine();
                    }

                    if (dni == "*")
                    {
                        break;
                    }

                    #endregion

                    #region read name
                    Console.WriteLine("escriba el nombre y apellidos:");
                    var name = Console.ReadLine();

                    if (name == "*")
                    {
                        break;
                    }

                    ValidationResult <string> vrName;
                    while (!(vrName = Student.ValidateName(name)).IsSuccess)
                    {
                        Console.WriteLine(vrName.AllErrors);
                        name = Console.ReadLine();
                    }

                    #endregion

                    #region read chair number
                    Console.WriteLine("escriba el número de silla:");
                    var chairNumberText = Console.ReadLine();

                    if (chairNumberText == "*")
                    {
                        break;
                    }

                    ValidationResult <int> vrChair;
                    while (!(vrChair = Student.ValidateChairNumber(chairNumberText)).IsSuccess)
                    {
                        Console.WriteLine(vrChair.AllErrors);
                        chairNumberText = Console.ReadLine();
                    }

                    #endregion

                    if (vrDni.IsSuccess && vrName.IsSuccess && vrChair.IsSuccess)
                    {
                        var student = new Student
                        {
                            Dni         = vrDni.ValidatedResult,
                            Name        = vrName.ValidatedResult,
                            ChairNumber = vrChair.ValidatedResult
                        };

                        var sr = student.Save();
                        if (sr.IsSuccess)
                        {
                            Console.WriteLine($"alumno guardado correctamente");
                        }
                        else
                        {
                            Console.WriteLine($"uno o más errores han ocurrido y el almuno no se guardado correctamente: {sr.AllErrors}");
                        }
                    }
                }
            }

            ClearCurrentConsoleLine();
            Console.WriteLine();
            ShowMainMenu();
        }
Ejemplo n.º 8
0
        static void ShowHandleStudentsMenu()
        {
            CurrentOption = "a";
            Console.WriteLine("Menu de gestionar alumnos.");
            Console.WriteLine("Opciones: a - para añadir un nuevo almuno");
            Console.WriteLine("Opciones: e - para editar un alumno existente");
            Console.WriteLine("Opciones: n - ver información del alumno");
            Console.WriteLine("Opciones: n/e - ver exámenes de alumno");
            Console.WriteLine("Opciones: n/e - ver asignaturas de alumno");
            Console.WriteLine("Presione m para acabar y volver al menú principal");

            while (true)
            {
                var option = Console.ReadLine();

                if (option == "m")
                {
                    break;
                }
                else if (option == "a")
                {
                    Console.WriteLine("Para volver sin guardar alumno escriba  *.");
                    Console.WriteLine("Escriba el dni:");

                    #region read dni
                    var dni = Console.ReadLine();

                    if (dni == "*")
                    {
                        break;
                    }

                    ValidationResult <string> vrDni;
                    while (!(vrDni = Student.ValidateDni(dni)).IsSuccess)
                    {
                        Console.WriteLine(vrDni.AllErrors);
                        dni = Console.ReadLine();
                    }

                    if (dni == "*")
                    {
                        break;
                    }

                    #endregion

                    #region read name
                    Console.WriteLine("Escriba el nombre y apellidos:");
                    var name = Console.ReadLine();

                    if (name == "*")
                    {
                        break;
                    }

                    ValidationResult <string> vrName;
                    while (!(vrName = Student.ValidateName(name)).IsSuccess)
                    {
                        Console.WriteLine(vrName.AllErrors);
                        name = Console.ReadLine();
                    }

                    #endregion

                    #region read chair number
                    Console.WriteLine("escriba el número de silla:");
                    var chairNumberText = Console.ReadLine();

                    if (chairNumberText == "*")
                    {
                        break;
                    }

                    ValidationResult <int> vrChair;
                    while (!(vrChair = Student.ValidateChairNumber(chairNumberText)).IsSuccess)
                    {
                        Console.WriteLine(vrChair.AllErrors);
                        chairNumberText = Console.ReadLine();
                    }

                    #endregion

                    if (vrDni.IsSuccess && vrName.IsSuccess && vrChair.IsSuccess)
                    {
                        var student = new Student
                        {
                            Dni         = vrDni.ValidatedResult,
                            Name        = vrName.ValidatedResult,
                            ChairNumber = vrChair.ValidatedResult
                        };

                        var sr = student.Save();
                        if (sr.IsSuccess)
                        {
                            Console.WriteLine($"Alumno guardado correctamente");
                        }
                        else
                        {
                            Console.WriteLine($"Uno o más errores han ocurrido y el almuno no se guardado correctamente: {sr.AllErrors}");
                        }
                    }
                }

                else if (option == "e")
                {
                    #region dni
                    Console.WriteLine("Para volver sin guardar escriba *.");
                    Console.WriteLine("Escriba el dni del alumno que desea editar:");
                    var dni = Console.ReadLine();

                    if (dni == "*")
                    {
                        break;
                    }

                    //StudentRepository.StudentsByDni.ContainsKey(dni)

                    var repo          = new Repository <Student>();
                    var entityWithDni = repo.QueryAll().FirstOrDefault(x => x.Dni == dni);


                    if (entityWithDni == null)
                    {
                        Console.WriteLine("El dni introducido no está en la base de datos");
                        Console.WriteLine("Escriba el dni del alumno que desea editar:");
                        dni = Console.ReadLine();
                    }

                    if (!(entityWithDni == null))
                    {
                        var existingStudent = entityWithDni.Clone();

                        Console.WriteLine("Escribe el nuevo dni");
                        Console.WriteLine("Pulse * si no desea editar el dni");
                        var dniNuevo = Console.ReadLine();

                        if (dniNuevo == "*")
                        {
                            break;
                        }



                        ValidationResult <string> vrDni;
                        while (!(vrDni = Student.ValidateDni(dniNuevo)).IsSuccess)
                        {
                            Console.WriteLine(vrDni.AllErrors);
                            dniNuevo = Console.ReadLine();
                            vrDni    = Student.ValidateDni(dniNuevo, existingStudent.Id);
                        }

                        if (dniNuevo == "*")
                        {
                            break;
                        }


                        #endregion

                        #region read name
                        Console.WriteLine("Escriba el nombre y apellidos:");
                        Console.WriteLine("Pulse * si no desea editar el nombre y apellidos");
                        var nameNuevo = Console.ReadLine();

                        if (nameNuevo == "*")
                        {
                            break;
                        }



                        ValidationResult <string> vrName;
                        while (!(vrName = Student.ValidateName(nameNuevo)).IsSuccess)
                        {
                            Console.WriteLine(vrName.AllErrors);
                            nameNuevo = Console.ReadLine();
                        }

                        #endregion

                        #region read chair number
                        Console.WriteLine("escriba el número de silla:");
                        var chairNumberTextNuevo = Console.ReadLine();


                        if (chairNumberTextNuevo == "*")
                        {
                            break;
                        }


                        ValidationResult <int> vrChair;


                        while (!(vrChair = Student.ValidateChairNumber(chairNumberTextNuevo)).IsSuccess)
                        {
                            Console.WriteLine(vrChair.AllErrors);
                            chairNumberTextNuevo = Console.ReadLine();
                        }



                        #endregion


                        if (vrDni.IsSuccess && vrName.IsSuccess && vrChair.IsSuccess)
                        {
                            existingStudent.Dni         = vrDni.ValidatedResult;
                            existingStudent.Name        = vrName.ValidatedResult;
                            existingStudent.ChairNumber = vrChair.ValidatedResult;



                            var save = existingStudent.Save();


                            if (save.IsSuccess)
                            {
                                Console.WriteLine($"Alumno guardado correctamente");
                            }
                            else
                            {
                                Console.WriteLine($"Uno o más errores han ocurrido y el alumno no se guardado correctamente");
                            }
                        }
                    }
                }
            }

            ClearCurrentConsoleLine();
            Console.WriteLine();
            ShowMainMenu();
        }