/// <summary> /// Despliega un formulario para ingresar un nuevo cliente a la cotizacion (y al sistema). /// Retorna un nuevo cliente. Si ocurre algun error al ingresar los datos, retorna nulo. /// </summary> /// <param name="sistema"></param> /// <returns></returns> private static Cliente FormularioNuevoCliente(ISistema sistema) { TipoCliente tipoCliente = TipoCliente.Otro; Console.WriteLine("\n>Anadir Cliente"); Console.WriteLine("Ingrese el rut del cliente:"); string rut = Console.ReadLine(); //Comprobacion con la base de datos. Si existe el cliente con tal rut, usarlo. try { Cliente cliente = sistema.BuscarCliente(rut); Console.WriteLine("Utilizando Cliente preregistrado."); return(cliente); } catch (ModelException) { //No se encontro un cliente; Seguir. } Console.WriteLine("Ingrese el nombre del cliente:"); string nombre = Console.ReadLine(); Console.WriteLine("Ingrese el apellido paterno del cliente:"); string apellidoP = Console.ReadLine(); Console.WriteLine("Ingrese el apellido materno del cliente (Opcional):"); string apellidoM = Console.ReadLine(); Console.WriteLine("Ingrese el correo del cliente:"); string correo = Console.ReadLine(); Console.WriteLine("Pertenece el cliente a la unidad interna? [s/n]:"); string interno = Console.ReadLine(); if (interno != null && interno.ToLower().Equals("s")) { tipoCliente = TipoCliente.UnidadInterna; } Persona nuevaPersona = new Persona() { Rut = rut, Nombre = nombre, Paterno = apellidoP, Materno = apellidoM, Email = correo }; try { sistema.Anadir(nuevaPersona, tipoCliente); Console.WriteLine("Se ha anadido un nuevo Cliente."); return(sistema.BuscarCliente(nuevaPersona.Rut)); } catch (ModelException e) { Console.WriteLine(e.Message); //Solo mostrara el primer error que ocurra. } return(null); }
/// <summary> /// Punto de entrada de la aplicacion. /// </summary> /// <param name="args"></param> /// <exception cref="ModelException"></exception> private static void Main(string[] args) { Console.WriteLine("Iniciando la aplicacion..."); ISistema sistema = Startup.BuildSistema(); //NOTA: Use estos usuarios de prueba: Usuario usuarioDirector = new Usuario() { Persona = new Persona() { Rut = "194460880", Nombre = "German", Paterno = "Rojo", Materno = "Arce", Email = "*****@*****.**" }, Password = "******", Tipo = TipoUsuario.Director }; Usuario usuarioProductor = new Usuario() { Persona = new Persona() { Rut = "19691840K", Nombre = "Christian", Paterno = "Farias", Materno = "Aguila", Email = "*****@*****.**" }, Password = "******", Tipo = TipoUsuario.Productor }; Usuario usuarioSupervisor = new Usuario() { Persona = new Persona() { Rut = "130144918", Nombre = "Diego", Paterno = "Urrutia", Materno = "Astorga", Email = "*****@*****.**" }, Password = "******", Tipo = TipoUsuario.Supervisor }; try { sistema.Anadir(usuarioDirector); sistema.Anadir(usuarioProductor); sistema.Anadir(usuarioSupervisor); } catch (ModelException e) { Console.WriteLine(e.Message); return; } int intentos = 3; //Login: Si falla 3 veces en ingresar, el programa termina. while (intentos > 0) { Console.WriteLine("\n(Intentos: {0})", intentos); Console.WriteLine("Ingrese su rut o email: "); string rutEmail = Console.ReadLine(); Console.WriteLine("Ingrese su contrasena: "); string password = Console.ReadLine(); Usuario usuario = null; try { usuario = sistema.Login(rutEmail, password); } catch (ModelException e) { Console.WriteLine(e.Message); intentos--; continue; //Vuelve al while. } intentos = 3; //Mostrar menu segun usuario: Console.WriteLine("\n--------------------------"); Console.WriteLine(" P r e s U P A"); Console.WriteLine("--------------------------"); //Es necesario pasar al usuario por parametro. switch (usuario.Tipo) { case TipoUsuario.Director: Consola.MenuDirector(sistema, usuario); break; case TipoUsuario.Productor: Consola.MenuProductor(sistema, usuario); break; case TipoUsuario.Supervisor: Consola.MenuSupervisor(sistema, usuario); break; } } Console.WriteLine("\nPrograma terminado."); }
/// <summary> /// Despliega un formulario para ingresar una nueva cotizacion al sistema. /// </summary> /// <param name="sistema"></param> private static void FormularioNuevaCotizacion(ISistema sistema) { Console.WriteLine("\n>Anadir Cotizacion"); Console.WriteLine("Ingrese el titulo de la cotizacion:"); string titulo = Console.ReadLine(); Console.WriteLine("Ingrese la descripcion de la cotizacion:"); string descripcion = Console.ReadLine(); //Obtener un nuevo cliente y anadirlo a la cotizacion. Cliente cliente = FormularioNuevoCliente(sistema); while (cliente == null) { Console.WriteLine("Hubo un error al ingresar el Cliente..."); Console.WriteLine("[1] Intentar otra vez"); Console.WriteLine("[Otro] Cancelar cotizacion"); string input = Console.ReadLine(); switch (input) { case "1": cliente = FormularioNuevoCliente(sistema); break; default: return; //Volver al menu anterior. } } //Crea la cotizacion con los datos obtenidos. Cotizacion nuevaCotizacion = new Cotizacion() { Titulo = titulo, Descripcion = descripcion, Cliente = cliente }; Console.WriteLine(">>Anadir Servicios"); //Obtener los servicios y anadirlos a la cotizacion. while (true) { string input = "..."; Servicio nuevoServicio = FormularioNuevoServicio(); //Intentar anadir el servicio a la cotizacion. try { sistema.Anadir(nuevoServicio, nuevaCotizacion); Console.WriteLine("Servicio anadido:\n"); Console.WriteLine(nuevoServicio.ToString()); Console.WriteLine("\n[1] Anadir nuevo servicio"); Console.WriteLine("[Otro] Terminar de anadir servicios"); input = Console.ReadLine(); if (input != null && input.Equals("1")) { //Repite el ciclo. continue; } //Sale del while. break; } catch (ModelException e) { Console.WriteLine(e.Message); Console.WriteLine("Hubo un error al ingresar el servicio..."); Console.WriteLine("[1] Intentar otra vez"); Console.WriteLine("[Otro] Cancelar cotizacion"); input = Console.ReadLine(); switch (input) { case "1": continue; //Repite el ciclo. default: return; //Volver al menu anterior. } } } //Crear cotizacion: try { sistema.Anadir(nuevaCotizacion); //Almacena la cotizacion creada en el formulario. Console.WriteLine("Se ha anadido una nueva cotizacion."); } catch (ModelException e) { Console.WriteLine(e.Message); Console.WriteLine("Cancelando cotizacion..."); } }