예제 #1
0
        public void Main()
        {
            Console.Beep(800, 500);
            Console.ForegroundColor = ConsoleColor.White;

            bool automatic;

            Console.Write("Iniciar Con Datos Automaticos? (Y/N): ");
            if (Console.ReadLine() == "Y")
            {
                automatic = true;
            }
            else
            {
                automatic = false;
            }

            if (automatic == false)
            {
                goto noAuto;
            }

            #region
            Vehiculo vehiculo1 = new Vehiculo("001", "A", 1200, false, false, true);
            Vehiculo vehiculo2 = new Vehiculo("002", "F", 2300, false, false, true);
            Vehiculo vehiculo3 = new Vehiculo("003", "E", 2300);
            Vehiculo vehiculo4 = new Vehiculo("004", "A", 98610, true, true, true);
            Vehiculo vehiculo5 = new Vehiculo("005", "A", 990, false, false, true);
            Vehiculo vehiculo6 = new Vehiculo("006", "A", 253300, true, true, true);

            Dictionary <Vehiculo, int> diccionarioStock = new Dictionary <Vehiculo, int>
            {
                { vehiculo1, 3 },
                { vehiculo2, 8 },
                { vehiculo3, 8 },
                { vehiculo4, 8 },
                { vehiculo5, 8 },
                { vehiculo6, 8 },
            };


            Sucursal sucursal1 = new Sucursal("S001",
                                              new List <Vehiculo>()
            {
                vehiculo1, vehiculo2, vehiculo3, vehiculo4
                , vehiculo5, vehiculo6
            }, diccionarioStock);

            Persona persona1 = new Persona("P0001", new List <string> {
                "B"
            });
            Empresa empresa1 = new Empresa("E0001", new List <string> {
                "F", "A", "E"
            });



            Institucion institucion1 = new Institucion("I0001", new List <string> {
                "A", "B", "C"
            });
            Accesorio accesorio1 = new Accesorio("A001", 210);
            Accesorio accesorio2 = new Accesorio("A002", 2864);

            listaClientes.Add(persona1);
            listaClientes.Add(institucion1);
            listaClientes.Add(empresa1);

            listaVehiculos.Add(vehiculo1);
            listaVehiculos.Add(vehiculo2);
            listaVehiculos.Add(vehiculo3);
            listaVehiculos.Add(vehiculo4);
            listaVehiculos.Add(vehiculo5);
            listaVehiculos.Add(vehiculo6);


            listaAccesorios.Add(accesorio1);
            listaAccesorios.Add(accesorio2);


            listaSucursal.Add(sucursal1);


            Transaccion transaccion1 = new Transaccion(1, persona1, vehiculo1,
                                                       sucursal1, listaAccesorios, 2000, 4);

            listaTransacciones.Add(transaccion1);


            #endregion

noAuto:

            while (true)
            {
                CommandInterface();
            }
        }
예제 #2
0
        public void RealizaTransaccion(Cliente cliente)
        {
            Console.Clear();
            int precio = 0;



            Console.WriteLine("INICIO TRANSACCION");


            Console.Write("Selecciones Auto u otro Vehiculo (A/O) >: ");
            string opAuto = Console.ReadLine();

            if (opAuto == "A")
            {
                bool asientos  = false;
                bool dvd       = false;
                bool electrico = false;


                Console.Write("Desea Agregar Corrida Extra de Asientos O Maletero grande? (C/M) >: ");
                string opAsiento = Console.ReadLine();

                Console.Write("Desea que posea DVD? (Y/N) >: ");
                string opDVD = Console.ReadLine();

                Console.Write("Desea que sea electrico? (Y/N) >: ");
                string opElectrico = Console.ReadLine();

                if (opAsiento == "C")
                {
                    asientos = true;
                }
                if (opDVD == "Y")
                {
                    dvd = true;
                }
                if (opElectrico == "Y")
                {
                    electrico = true;
                }


                List <Vehiculo> autosFiltrados1 =
                    listaVehiculos.Where(x => x.corridaAsientoExtra == asientos).ToList <Vehiculo>();

                List <Vehiculo> autosFiltrados2 =
                    autosFiltrados1.Where(x => x.esElectrico == electrico).ToList <Vehiculo>();

                List <Vehiculo> autosFiltrados3 =
                    autosFiltrados2.Where(x => x.tieneDVD == dvd).ToList <Vehiculo>();


                Console.WriteLine("--Mostrando Vehiculos--");

                foreach (Vehiculo vehiculo1 in autosFiltrados3)
                {
                    if (vehiculo1.tipoVehiculo != "A")
                    {
                        continue;
                    }
                    Console.WriteLine($"ID: {vehiculo1.id}");

                    Console.WriteLine($"\tCorrida Extra: {vehiculo1.corridaAsientoExtra}\n" +
                                      $"\tMaletero grande: {!vehiculo1.corridaAsientoExtra}\n" +
                                      $"\tElectrico: {vehiculo1.esElectrico}\n" +
                                      $"\tPosee DVD: {vehiculo1.tieneDVD}\n");

                    Console.WriteLine($"ID: {vehiculo1.id} Permiso: {vehiculo1.tipoVehiculo}" +
                                      $" Precio: {vehiculo1.precio}\n");
                }
                Console.WriteLine("Seleccione ID del Vehiculo:");
                goto afterPrintVehiculos;
            }


            Console.WriteLine("Seleccione ID del Vehiculo:");

            ImprimirVehiculos();
afterPrintVehiculos:
            Console.Write(">: ");
            string idVehiculo = Console.ReadLine();

            Vehiculo vehiculo = (listaVehiculos.Find(x => x.id == idVehiculo));

            precio += vehiculo.precio;

            Console.WriteLine("Seleccione ID de Sucursal:");
            ImprimirSucursales();
            Console.Write(">: ");
            string idSucursal = Console.ReadLine();

            Sucursal sucursal = (listaSucursal.Find(x => x.id == idSucursal));

            List <Accesorio> listaAccesorioArrendar = new List <Accesorio>();



            ImprimirAccesorios();
            Console.WriteLine("0 Para detener");
            while (true)
            {
errorAccesorio:
                string idAccesorio = Console.ReadLine();
                if (idAccesorio == "0")
                {
                    break;
                }
                Accesorio accesorio = (listaAccesorios.Find(x => x.id == idAccesorio));

                if (accesorio == null)
                {
                    Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error"); Console.Beep();; goto errorAccesorio;
                }
                listaAccesorioArrendar.Add(accesorio);
                precio += accesorio.precio;
            }

            Console.Write("Tiempo de arriendo (dias) >: ");
            int tiempoArriendo = Convert.ToInt32(Console.ReadLine());

            bool manejable = cliente.Manejable(vehiculo.tipoVehiculo);
            bool stock     = (sucursal.diccionarioStock[vehiculo] > 0);



            if (vehiculo.tipoVehiculo == "F")
            {
                if ((cliente.GetType() == typeof(Organizacion)) ||
                    (cliente.GetType() == typeof(Institucion)))
                {
                    manejable = false;
                }

                if (cliente.GetType() == typeof(Empresa))
                {
                    if (manejable)
                    {
                        double probabilidad = (new Random()).NextDouble();
                        Console.WriteLine("PROB: " + probabilidad.ToString());
                        if (!(probabilidad <= 0.63))
                        {
                            manejable = false;
                        }
                    }
                }
            }


            if (vehiculo.tipoVehiculo == "E")
            {
                if (cliente.GetType() == typeof(Persona))
                {
                    manejable = false;
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Persona No puede Arrendar!");
                    Console.Beep();
                }

                if ((cliente.GetType() == typeof(Empresa)) ||
                    (cliente.GetType() == typeof(Organizacion)) ||
                    (cliente.GetType() == typeof(Institucion)))
                {
                    double probabilidad = (new Random()).NextDouble();
                    if ((cliente.GetType() == typeof(Empresa)))
                    {
                        if (!(probabilidad <= 0.8))
                        {
                            manejable = false; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Municipalidad No Ha Otorgado"); Console.Beep();
                        }
                    }
                    if ((cliente.GetType() == typeof(Organizacion)))
                    {
                        if (!(probabilidad <= 0.35))
                        {
                            manejable = false; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Municipalidad No Ha Otorgado"); Console.Beep();
                        }
                    }
                    if ((cliente.GetType() == typeof(Institucion)))
                    {
                        if (!(probabilidad <= 0.58))
                        {
                            manejable = false; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Municipalidad No Ha Otorgado"); Console.Beep();
                        }
                    }
                    Console.WriteLine("Probabilidad " + probabilidad.ToString());
                }
            }



            int id = listaIdTransaccion.Count + 1;

            if (manejable && stock)
            {
                Transaccion transaccion = new Transaccion(id, cliente,
                                                          vehiculo, sucursal, listaAccesorioArrendar, precio, tiempoArriendo);

                listaTransacciones.Add(transaccion);
                listaIdTransaccion.Add(id);
                Console.WriteLine("Transaccion Exitosa!...");
                ImprimirTransacciones();
                Console.ReadKey();
                //return transaccion;
            }
            else
            {
                Transaccion transaccion = new Transaccion(id, cliente,
                                                          vehiculo, sucursal, listaAccesorioArrendar, precio, tiempoArriendo);

                Console.WriteLine("Transaccion Fallida!...");
                Console.Beep();
                Console.ReadKey();
                //return transaccion;
            }
        }