private static void ListarVivienda()
        {
            Boolean   founded = false, canceled = false;
            String    name = "";
            DtoBarrio b    = null;



            while (!founded && !canceled && b == null)
            {
                name = (String)CompleteField("Nombre del barrio", true);

                canceled = name == "-1";

                if (canceled)
                {
                    CanceledOperation();
                }
                else
                {
                    b = wcfBarrio.GetBarrio(name);

                    if (b != null)
                    {
                        MostrarLista(wcfVivienda.GetViviendas(b));
                    }
                    else
                    {
                        Console.WriteLine("\n\tNo se ha encontrado nungún barrio con el nombre: " + name);
                    }

                    PararPantalla();
                }
            }
        }
        private static void ModificarVivienda()
        {
            Boolean modified = false, canceled = false;
            int     id = -1;

            Console.WriteLine("\nModificar Vivienda");

            while (!modified && !canceled)
            {
                id = (int)CompleteField("Id", true, "Int");

                canceled = id == -1;

                if (canceled)
                {
                    CanceledOperation();
                }
                else
                {
                    DtoVivienda v = wcfVivienda.FindById(id);

                    int op = -1;

                    while (!canceled)
                    {
                        while (op < 0 || op > 11)
                        {
                            Console.WriteLine("\tCaracterística a modificar");
                            Console.WriteLine("\t[0] \t--> Salir");
                            Console.WriteLine("\t[1] \t--> Calle");
                            Console.WriteLine("\t[2] \t--> Número de puerta");
                            Console.WriteLine("\t[3] \t--> Barrio");
                            Console.WriteLine("\t[4] \t--> Descripción");
                            Console.WriteLine("\t[5] \t--> Cantidad de baños");
                            Console.WriteLine("\t[6] \t--> Cantidad de dormitorios");
                            Console.WriteLine("\t[7] \t--> Superficie");
                            Console.WriteLine("\t[8] \t--> Precio base");
                            Console.WriteLine("\t[9] \t--> Año de construcción");
                            Console.WriteLine("\t[10] \t--> Habilitación");
                            Console.WriteLine("\t[11] \t--> Vendida");

                            op = (int)CompleteField("Ingrese una opción", false, "Int");
                        }

                        if (op == 0)
                        {
                            canceled = true;
                            CanceledOperation();
                        }
                        else
                        {
                            switch (op)
                            {
                            case 1:
                                String calle = (String)CompleteField("Calle", false);
                                v.calle = calle;
                                break;

                            case 2:
                                int nro_puerta = (int)CompleteField("Número de puerta", false, "Int");
                                v.nro_puerta = nro_puerta;
                                break;

                            case 3:
                                DtoBarrio barrio = (DtoBarrio)CompleteField("Barrio", false, "DtoBarrio");
                                v.barrio = barrio;
                                break;

                            case 4:
                                String descripcion = (String)CompleteField("Descripcion", false);
                                v.descripcion = descripcion;
                                break;

                            case 5:
                                int nro_banios = (int)CompleteField("Cantidad de baños", false, "Int");
                                v.nro_banios = nro_banios;
                                break;

                            case 6:
                                int nro_dormitorios = (int)CompleteField("Cantidad de doemitorios", false, "Int");
                                v.nro_dormitorios = nro_dormitorios;
                                break;

                            case 7:
                                double superficie = (double)CompleteField("Superficie en m2", false, "Double");
                                v.superficie = superficie;
                                break;

                            case 8:
                                double precio_base = (double)CompleteField("Precio base", false, "Double");
                                v.precio_base = precio_base;
                                break;

                            case 9:
                                int anio_construccion = (int)CompleteField("Año de construcción", false, "Int");
                                v.anio_construccion = anio_construccion;
                                break;

                            case 10:
                                Boolean habilitada = (Boolean)CompleteField("Habilitada?", false, "Boolean");
                                v.habilitada = habilitada;
                                break;

                            case 11:
                                if (v.habilitada)
                                {
                                    Boolean vendida = (Boolean)CompleteField("Vendida?", false, "Boolean");
                                    v.vendida = vendida;
                                }
                                else
                                {
                                    Console.WriteLine("La vivienda no esta habilitada para la venta");
                                    PararPantalla();
                                }
                                break;
                            }

                            modified = wcfVivienda.Modificar(v);


                            if (modified)
                            {
                                Console.WriteLine("Modificación correcta");
                            }
                            else
                            {
                                Console.WriteLine("No se pudo modificar");
                            }

                            PararPantalla();

                            canceled = !(Boolean)CompleteField("Desea volver a modificar? [s --> Si, n --> No]", false, "Boolean");

                            op = canceled ? 0 : -1;
                        }
                    }
                }
            }
        }
        private static void AgregarVivienda()
        {
            Boolean added = false, canceled = false;

            int current_year  = DateTime.Now.Year;
            int anio_es_nueva = Convert.ToInt16(wcfParametro.GetParametro("anio_nueva").value) | 2;

            String    calle = "", descripcion = "";
            DtoBarrio barrio = null;
            int       nro_puerta = 0, nro_banios = 0, nro_dormitorios = 0, anio_construccion = 0;
            double    superficie = 0.0, precio_base = 0.0;
            Boolean   vendida = false, habilitada = false, intenta_ser_nueva = false;

            Console.WriteLine("\nAgregar una Vivienda");

            while (!added && !canceled)
            {
                calle    = (String)CompleteField("Calle", true);
                canceled = calle == "-1";

                if (canceled)
                {
                    CanceledOperation();
                }
                else
                {
                    nro_puerta = Convert.ToInt32(CompleteField("Número de puerta", false, "Int"));

                    nro_banios = Convert.ToInt32(CompleteField("Cantidad de baños", false, "Int"));

                    nro_dormitorios = Convert.ToInt32(CompleteField("Cantidad de dormitorios", false, "Int"));

                    anio_construccion = Convert.ToInt32(CompleteField("Año de construcción", false, "Int"));

                    superficie = Convert.ToDouble(CompleteField("Superficie en m2", false, "Double"));

                    intenta_ser_nueva = current_year - anio_construccion < anio_es_nueva;

                    if (intenta_ser_nueva)
                    {
                        Console.Write("\nEl precio es en Unidades Indexadas");
                    }
                    else
                    {
                        Console.Write("\nEl precio es en Dólares");
                    }

                    precio_base = Convert.ToDouble(CompleteField("Precio base", false, "Double"));

                    habilitada = Convert.ToBoolean(CompleteField("Está habilitada? [s --> Si, n --> No]", false, "Boolean"));

                    if (habilitada)
                    {
                        vendida = Convert.ToBoolean(CompleteField("Está vendida? [s --> Si, n --> No]", false, "Boolean"));
                    }

                    descripcion = (String)CompleteField("Descripcion", false);

                    barrio = (DtoBarrio)CompleteField("Nombre del barrio", false, "DtoBarrio");


                    added = wcfVivienda.Agregar(calle, nro_puerta, barrio, descripcion, nro_banios,
                                                nro_dormitorios, superficie, precio_base, anio_construccion, vendida,
                                                habilitada, intenta_ser_nueva);

                    if (added)
                    {
                        Console.WriteLine("Ingreso correcto");
                    }
                    else
                    {
                        Console.WriteLine("Ingreso incorrecto, Vuelva a intentarlo");
                    }

                    PararPantalla();
                }
            }
        }
        private static Object CompleteField(String message, Boolean exit, String data_type)
        {
            Boolean converted = false;
            Object  da        = null;

            switch (data_type)
            {
            case "Int":
                int i = 0;
                while (!converted)
                {
                    converted = int.TryParse((String)CompleteField(message, exit), out i);

                    if (!converted)
                    {
                        Console.WriteLine("\n\tEl dato no es válido\n\tIntente nuevamente!");
                    }
                }
                da = i;
                break;

            case "Double":
                double d = 0;
                while (!converted)
                {
                    converted = double.TryParse((String)CompleteField(message, exit), out d);

                    if (!converted)
                    {
                        Console.WriteLine("\n\tEl dato no es válido\n\tIntente nuevamente!");
                    }
                }
                da = d;
                break;

            case "Boolean":
                Boolean b          = false;
                String  habilitado = "";

                while (habilitado != "n" && habilitado != "N" && habilitado != "s" && habilitado != "S")
                {
                    habilitado = (String)CompleteField(message, exit);

                    habilitado = (habilitado == "") ? "N" : habilitado;

                    if (habilitado != "n" && habilitado != "N" && habilitado != "s" && habilitado != "S")
                    {
                        Console.WriteLine("\n\tEl dato no es válido\n\tIntente nuevamente!");
                    }
                }

                b = (habilitado == "s" || habilitado == "S") ? true : !(habilitado == "n" || habilitado == "N");

                da = b;

                break;

            case "DtoBarrio":
                ListarBarrios(false);

                DtoBarrio ba = null;

                while (ba == null)
                {
                    ba = wcfBarrio.GetBarrio((String)CompleteField(message, exit));

                    if (ba == null)
                    {
                        Console.WriteLine("\n\tEl dato no es válido\n\tIntente nuevamente!");
                    }
                }

                da = ba;

                break;
            }

            return(da);
        }