Ejemplo n.º 1
0
 public IEnumerable <Plano> ObterPlanos(TipoCliente tipoPessoa = TipoCliente.PessoaFisica)
 {
     if (tipoPessoa.Equals(TipoCliente.PessoaFisica))
     {
         return(Db.Planos.AsNoTracking()
                .OrderBy(p => p.NomePlano)
                .Where(c => c.IsPJ == false &&
                       c.Deleted == false &&
                       c.DataFimVigencia >= DateTime.Now &&
                       c.ClienteId == null)
                .ToList());
     }
     else
     {
         return(Db.Planos.AsNoTracking()
                .OrderBy(p => p.NomePlano)
                .Where(c => c.IsPJ == true &&
                       c.Deleted == false &&
                       c.DataFimVigencia >= DateTime.Now &&
                       c.ClienteId == null)
                .ToList());
     }
 }
Ejemplo n.º 2
0
        //IMPORTANTE
        //Al momento de seleccionar el vehiculo, siempre aparecera el mensaje de que no se pudo agregar la primera
        //vez, hay que seleccionarlo denuevo. Esto es porque use el ciclo dowhile pensando en que solo entra en el do si la condicion del while da true

        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.White;
            int OpcionesLicencia()
            {
                Console.Write("1. A\n" +
                              "2. B\n" +
                              "3. C\n" +
                              "4. D\n" +
                              "5. E\n" +
                              "6. F\n" +
                              "7. G\n");
                return(Convert.ToInt32(Console.ReadLine()));
            }//Funcion para mostrar y elegir una licencia/tipodevehiculo

            void MostrarVehiculos(Sucursal sucursal)
            {
                int cont = 1;

                foreach (Vehiculo v in sucursal.vehiculos)
                {
                    if (v.estado.Equals(Estados.Disponible))
                    {
                        Console.WriteLine(cont + ". " + v.nombre);
                    }
                    cont += 1;
                }
            } //Funcion para mostrar los vehiculos de la sucursal

            bool PermisoMunicipalidad(TipoVehiculo tipoVehiculo, TipoCliente tipoCliente)
            {
                Random rand = new Random();

                if (tipoCliente.Equals(TipoCliente.Empresa))
                {
                    if (tipoVehiculo.Equals(TipoVehiculo.F) || tipoVehiculo.Equals(TipoVehiculo.G))
                    {
                        if (rand.Next(100) < 63)
                        {
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        if (rand.Next(100) < 80)
                        {
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                if (tipoCliente.Equals(TipoCliente.Organizacion))
                {
                    if (rand.Next(100) < 35)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }

                if (tipoCliente.Equals(TipoCliente.Insitucion))
                {
                    if (rand.Next(100) < 58)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                return(false);
            } //Funcion que ve si la municipalidad da o no el permiso deseado

            List <Sucursal> Sucursales = new List <Sucursal>();

            void Arrendar(Sucursal sucursal, Cliente cliente)
            {
                int precioFinal = 0;

                Console.WriteLine("Que vehiculo desea arrendar(Ingrese el numero): ");
                MostrarVehiculos(sucursal);
                Vehiculo vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];

                precioFinal += vehiculo.precio;
                if ((cliente.GetTipo().Equals(TipoCliente.Persona) && ((int)cliente.Getlicencia() <= vehiculo.GetTipoN())) || vehiculo.GetTipoN().Equals(TipoVehiculo.E))
                {
                    do
                    {
                        Console.BackgroundColor = ConsoleColor.Red;
                        Console.Beep();
                        Console.Beep();
                        Console.WriteLine("No puede arrendar ese vehiculo. Porfavor elija otro.");
                        Console.BackgroundColor = ConsoleColor.Black;
                        MostrarVehiculos(sucursal);
                        vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];
                    } while ((cliente.GetTipo().Equals(TipoCliente.Persona) && ((int)cliente.Getlicencia() <= vehiculo.GetTipoN())) || vehiculo.GetTipoN().Equals(TipoVehiculo.E)); //Esto hace que no pueda arrendar un bus
                    //Si la letra de la licencia de la persona es mayor o igual a la letra del tipo de vehiculo, entonces la persona puede arrendar el vehiculo
                    goto Accesorio;
                }


                else if (cliente.GetTipo().Equals(TipoCliente.Organizacion) || cliente.GetTipo().Equals(TipoCliente.Insitucion) || cliente.GetTipo().Equals(TipoCliente.Empresa))
                {
                    if (!cliente.GetAutorizacion().Contains(vehiculo.GetTipo()))
                    {
                        do
                        {
                            Console.BackgroundColor = ConsoleColor.Red;
                            Console.Beep();
                            Console.Beep();
                            Console.WriteLine("No puede arrendar ese vehiculo. Porfavor elija otro.");
                            Console.BackgroundColor = ConsoleColor.Black;
                            MostrarVehiculos(sucursal);
                            vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];
                        } while (!cliente.GetAutorizacion().Contains(vehiculo.GetTipo())); //Mientras la empresa, sucursal o organizacion no tenga la autorizacion se queda aca
                    }
                    if ((vehiculo.GetTipo().Equals(TipoVehiculo.F) || vehiculo.GetTipo().Equals(TipoVehiculo.G)) && (cliente.GetTipo().Equals(TipoCliente.Organizacion) || cliente.GetTipo().Equals(TipoCliente.Insitucion)))
                    {
                        do
                        {
                            Console.BackgroundColor = ConsoleColor.Red;
                            Console.Beep();
                            Console.Beep();
                            Console.WriteLine("No puede arrendar ese vehiculo. Porfavor elija otro.");
                            Console.BackgroundColor = ConsoleColor.Black;
                            MostrarVehiculos(sucursal);
                            vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];
                        } while ((vehiculo.GetTipo().Equals(TipoVehiculo.F) || vehiculo.GetTipo().Equals(TipoVehiculo.G)) && (cliente.GetTipo().Equals(TipoCliente.Organizacion) || cliente.GetTipo().Equals(TipoCliente.Insitucion)));
                        //Este de arriba hace que las organizaciones e instituciones no puedan arrendar maquinaria pesada
                    }

                    if (vehiculo.GetTipo().Equals(TipoVehiculo.F) || vehiculo.GetTipo().Equals(TipoVehiculo.G)) //Ve lo de maquinaria pesada y empresa
                    {
                        if (vehiculo.GetTipo().Equals(TipoVehiculo.F))
                        {
                            if (cliente.GetPermiso().Contains(TipoVehiculo.F))
                            {
                                Console.WriteLine("Tiene el permiso");
                                goto Accesorio;
                            }
                        }
                        else if (vehiculo.GetTipo().Equals(TipoVehiculo.G))
                        {
                            if (cliente.GetPermiso().Contains(TipoVehiculo.G))
                            {
                                Console.WriteLine("Tiene el permiso");
                                goto Accesorio;
                            }
                        }
                        if (PermisoMunicipalidad(vehiculo.GetTipo(), TipoCliente.Empresa))
                        {
                            Console.WriteLine("La municipalidad le dio el permiso");
                        }
                        else
                        {
                            Console.WriteLine("La municipalidad no le dio el permiso, escoja otro vehiculo");
                            MostrarVehiculos(sucursal);
                            vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];
                            if ((vehiculo.GetTipo().Equals(TipoVehiculo.F)) || vehiculo.GetTipo().Equals(TipoVehiculo.G))
                            {
                                do
                                {
                                    Console.Clear();
                                    Console.WriteLine("No se puede arrendar ese vehiculo. Porfavor elija otro.");
                                    MostrarVehiculos(sucursal);
                                    vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];
                                } while ((vehiculo.GetTipo().Equals(TipoVehiculo.F)) || vehiculo.GetTipo().Equals(TipoVehiculo.G));
                            }
                        }
                    }
                    if (vehiculo.GetTipo().Equals(TipoVehiculo.E))
                    {
                        if (cliente.GetPermiso().Contains(TipoVehiculo.E))
                        {
                            Console.WriteLine("Tiene el permiso");
                            goto Accesorio;
                        }

                        else
                        {
                            if (PermisoMunicipalidad(vehiculo.GetTipo(), cliente.GetTipo()))
                            {
                                Console.WriteLine("La municipalidad le dio el permiso");
                                goto Accesorio;
                            }

                            else
                            {
                                Console.BackgroundColor = ConsoleColor.Red;
                                Console.WriteLine("La municipalidad no le dio el permiso, escoja otro vehiculo");
                                Console.Beep();
                                Console.Beep();
                                Console.BackgroundColor = ConsoleColor.Black;
                                do
                                {
                                    Console.Clear();
                                    Console.WriteLine("No se puede arrendar ese vehiculo. Porfavor elija otro.");
                                    MostrarVehiculos(sucursal);
                                    vehiculo = sucursal.vehiculos[Convert.ToInt32(Console.ReadLine()) - 1];
                                } while (vehiculo.GetTipo().Equals(TipoVehiculo.E));
                            }
                        }
                    }
                }

Accesorio:
                Console.WriteLine("¿Desea agregar algun accesorio?(Ingrese el numero) 1. Si\n2. No");
                int        opcion    = Convert.ToInt32(Console.ReadLine());
                Accesorios accesorio = Accesorios.Ninguno;

                if (opcion == 1)
                {
                    int contador = 1;
                    Console.WriteLine("Que accesorio desea agregar: ");
                    foreach (string acc in Enum.GetNames(typeof(Accesorios)))
                    {
                        Console.WriteLine(contador + ". " + acc);
                    }
                    accesorio    = (Accesorios)Convert.ToInt32(Console.ReadLine());
                    precioFinal += 30000;
                }


                Console.Write("Ingrese la fecha de termino del contrato(DD/MM/AAAA): ");
                DateTime fechaTermino = DateTime.Parse(Console.ReadLine());

                Console.Write("Ingrese nombre del arriendo: ");
                sucursal.crearArriendo(new Arriendo(vehiculo, cliente, precioFinal, sucursal, fechaTermino, accesorio));
                vehiculo.estado         = Estados.Arrendado;
                Console.BackgroundColor = ConsoleColor.Green;
                Console.WriteLine("Arriendo creado");
                Console.Beep();
                Console.BackgroundColor = ConsoleColor.Black;
                Console.ReadKey();
            }

            void MenuSucursal(Sucursal sucursal)
            {
Inicio:
                Console.Clear();
                Console.BackgroundColor = ConsoleColor.Red;
                Console.WriteLine("Usted esta en la sucursal " + sucursal.nombre);
                Console.BackgroundColor = ConsoleColor.Black;
                Console.WriteLine("Que desea hacer:\n1. Crear Arriendo\n" +
                                  "2. Agregar Vehiculo\n" +
                                  "3. Salir de la sucursal\n");
                int opcion = Convert.ToInt32(Console.ReadLine());

                if (opcion == 1) // Aqui ingreso al cliente para luego ir a la funcion arrendar
                {
                    Console.Write("¿Es persona(1), organizacion(2), Institucion(3) o Empresa(4)?: ");
                    opcion = Convert.ToInt32(Console.ReadLine());
                    if (opcion == 1)
                    {
                        Console.Write("Ingrese el nombre de la persona: ");
                        string       nombre   = Console.ReadLine();
                        TipoVehiculo licencia = TipoVehiculo.A;
                        if (sucursal.GetClientesNombres().Contains(nombre))
                        {
                            foreach (Persona per in sucursal.clientes)
                            {
                                if (nombre == per.Nombre)
                                {
                                    licencia = per.licenciaPersona;
                                }
                            }
                            Arrendar(sucursal, new Persona(nombre, licencia));
                        }
                        else //Si la persona no esta en la sucursal, aqui se crea
                        {
                            Console.Write("Ingrese su licencia: ");
                            licencia = (TipoVehiculo)OpcionesLicencia();
                            sucursal.agregarCliente(new Persona(nombre, licencia));
                            Arrendar(sucursal, new Persona(nombre, licencia));
                        }
                    }
                    else
                    {
                        List <TipoVehiculo> autorizacion = new List <TipoVehiculo>();
                        List <TipoVehiculo> permisos     = new List <TipoVehiculo>();

                        Console.Write("Ingrese el nombre: ");
                        string Nombre = Console.ReadLine();
                        Console.Write("Ingrese el tipo (1)Organizacion (2)Empresa (3)Institucion");
                        TipoCliente tipo = (TipoCliente)Convert.ToInt32(Console.ReadLine());

                        if (sucursal.GetClientesNombres().Contains(Nombre))
                        {
                            if (tipo.Equals(TipoCliente.Organizacion))
                            {
                                foreach (Organizacion org in sucursal.clientes) //Aqui se revisa si el cliente existe en la sucursal
                                {
                                    if (Nombre == org.Nombre)
                                    {
                                        autorizacion = org.autorizacion;
                                        permisos     = org.permisos;
                                    }
                                }
                                Arrendar(sucursal, new Organizacion(Nombre, autorizacion, permisos));
                            }

                            else if (tipo.Equals(TipoCliente.Empresa))
                            {
                                foreach (Empresa emp in sucursal.clientes)//Aqui se revisa si el cliente existe en la sucursal
                                {
                                    if (Nombre == emp.Nombre)
                                    {
                                        autorizacion = emp.autorizacion;
                                        permisos     = emp.permisos;
                                    }
                                }
                                Arrendar(sucursal, new Empresa(Nombre, autorizacion, permisos));
                            }

                            else if (tipo.Equals(TipoCliente.Insitucion))
                            {
                                foreach (Institucion inst in sucursal.clientes)//Aqui se revisa si el cliente existe en la sucursal
                                {
                                    if (Nombre == inst.Nombre)
                                    {
                                        autorizacion = inst.autorizacion;
                                        permisos     = inst.permisos;
                                    }
                                }
                                Arrendar(sucursal, new Institucion(Nombre, autorizacion, permisos));
                            }
                        }
                        else //Si el cliente no existe en la sucursal, aqui se crea pidiendo las autorizaciones y permisos correspondientes
                        {
                            int deseo = 1;
                            do
                            {
                                Console.WriteLine("Ingrese autorizacion: ");
                                permisos.Add((TipoVehiculo)OpcionesLicencia());
                                Console.Write("¿Desea agregar otro permiso? (1)Si (2)No");
                                deseo = Convert.ToInt32(Console.ReadLine());
                            } while (deseo == 1);
                            do
                            {
                                Console.WriteLine("Ingrese permiso: ");
                                autorizacion.Add((TipoVehiculo)OpcionesLicencia());
                                Console.Write("¿Desea agregar otro permiso? (1)Si (2)No");
                                deseo = Convert.ToInt32(Console.ReadLine());
                            } while (deseo == 1);

                            if (tipo.Equals(TipoCliente.Organizacion))
                            {
                                sucursal.agregarCliente(new Organizacion(Nombre, autorizacion, permisos));
                                Arrendar(sucursal, new Organizacion(Nombre, autorizacion, permisos));
                            }

                            else if (tipo.Equals(TipoCliente.Empresa))
                            {
                                sucursal.agregarCliente(new Empresa(Nombre, autorizacion, permisos));
                                Arrendar(sucursal, new Empresa(Nombre, autorizacion, permisos));
                            }

                            else if (tipo.Equals(TipoCliente.Insitucion))
                            {
                                sucursal.agregarCliente(new Institucion(Nombre, autorizacion, permisos));
                                Arrendar(sucursal, new Institucion(Nombre, autorizacion, permisos));
                            }
                        }
                    }

                    goto Inicio;
                }

                if (opcion == 2) //Agregar vehiculo
                {
                    Console.WriteLine("Que tipo de vehiculo desea agregar:\n 1.Auto\n" +
                                      "2.Moto\n" +
                                      "3.Lancha\n" +
                                      "4.Camion\n" +
                                      "5.Bus\n" +
                                      "6.Tractor\n" +
                                      "7.Retroexcavadora ");
                    opcion = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Ingrese la patente: ");
                    string patente = Console.ReadLine();
                    Console.Write("Ingrese el nombre: ");
                    string nombre = Console.ReadLine();
                    Console.Write("Ingrese el precio: ");
                    int precio = Convert.ToInt32(Console.ReadLine());
                    if (opcion == 1)
                    {
                        sucursal.agregarVehiculo(new Auto(patente, nombre, precio));
                    }

                    else if (opcion == 2)
                    {
                        sucursal.agregarVehiculo(new Moto(patente, nombre, precio));
                    }

                    else if (opcion == 3)
                    {
                        sucursal.agregarVehiculo(new Lancha(patente, nombre, precio));
                    }

                    else if (opcion == 4)
                    {
                        sucursal.agregarVehiculo(new Camion(patente, nombre, precio));
                    }

                    else if (opcion == 5)
                    {
                        sucursal.agregarVehiculo(new Bus(patente, nombre, precio));
                    }

                    else if (opcion == 6)
                    {
                        sucursal.agregarVehiculo(new Tractor(patente, nombre, precio));
                    }

                    else if (opcion == 7)
                    {
                        sucursal.agregarVehiculo(new Retroexcavadora(patente, nombre, precio));
                    }

                    Console.BackgroundColor = ConsoleColor.Green;
                    Console.WriteLine("Vehiculo Agregado");
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.Beep();
                    Console.WriteLine("Preione una tecla para continuar");
                    Console.ReadKey();
                    goto Inicio;
                }
            }

            void Menu()
            {
InicioPrograma:
                Console.Clear();
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("Bienvenido al CarRent");
                Console.BackgroundColor = ConsoleColor.Black;
                Console.WriteLine("Que desea hacer:\n1. Crear sucursal\n" +
                                  "2. Acceder a sucursal\n" +
                                  "3. Salir");
                Console.Write("Opcion: ");
                int eleccion = Convert.ToInt32(Console.ReadLine());

                Console.Clear();
                if (eleccion == 1)
                {
                    Console.Write("Ingrese el nombre de la sucursal: ");
                    Sucursales.Add(new Sucursal(Console.ReadLine()));
                    Console.BackgroundColor = ConsoleColor.Green;
                    Console.Beep();
                    Console.Beep();
                    Console.WriteLine("Sucursal creada.");
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.Write("Presione una tecla");
                    goto InicioPrograma;
                }

                else if (eleccion == 2)
                {
                    if (Sucursales.Count() == 0)
                    {
                        Console.BackgroundColor = ConsoleColor.Red;
                        Console.Beep();
                        Console.Beep();
                        Console.WriteLine("No puede arrendar ese vehiculo. Porfavor elija otro.");
                        Console.BackgroundColor = ConsoleColor.Black;
                        goto InicioPrograma;
                    }
                    Console.WriteLine("A que sucursal desea acceder: ");
                    int cont = 1;
                    foreach (Sucursal s in Sucursales)
                    {
                        Console.WriteLine(cont + ". " + s.nombre);
                    }
                    MenuSucursal(Sucursales[Convert.ToInt32(Console.ReadLine()) - 1]);
                    goto InicioPrograma;
                }
            }

            Menu();
        }