コード例 #1
0
        private void OnButton1Click(object sender, EventArgs e)
        /// El botón "crear" es pulsado
        {
            Area     area = null;
            Area     otra;
            Database bd = MainForm.mainForm.Db;

            // id y nombre requeridos
            if (textBox1.Text.Length == 0 ||
                textBox2.Text.Length == 0)
            {
                MessageBox.Show(
                    "El nombre y el ID son obligatorios",
                    "Error",
                    MessageBoxButtons.OK
                    );

                goto fin;
            }

            // nombre e id deben ser únicos
            textBox2.Text = Area.NormalizeName(textBox2.Text);
            textBox1.Text = Area.NormalizeName(textBox1.Text);

            Application.DoEvents();

            if ((otra = bd.GetAreaById(textBox2.Text)) != null ||
                (otra = bd.GetAreaByName(textBox1.Text)) != null)
            {
                MessageBox.Show(
                    "Otra área ("
                    + otra
                    + ") ya existe con ese id y/o nombre",
                    "Error"
                    );

                goto fin;
            }

            // Prepare the place -- maybe is a real estate
            Area elLugar = xpLugares.SelectedArea;

            if (elLugar == null)
            {
                MessageBox.Show(
                    "Debe seleccionar un área.",
                    "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error
                    );
            }

            if (elLugar is Estate)
            {
                elLugar = ((Estate)elLugar).Parent;
            }

            // No crear fincas en toplevel
            if (esFinca &&
                elLugar == bd.Root)
            {
                MessageBox.Show(
                    "No es posible crear fincas en el tope de la jerarquía",
                    "Atención"
                    );

                goto fin;
            }

            try {
                // Crear el área adecuada
                if (!esFinca)
                {
                    area = new Place((Place)elLugar, textBox2.Text, textBox1.Text);

                    // Copiar archivos a imágenes
                    if (textBox9.Text.Length > 0)
                    {
                        SaveImage(textBox9.Text,
                                  (( Place )area).GetImageName()
                                  );
                    }
                }
                else
                {
                    double superficie;

                    // Preparar la superficie
                    try {
                        superficie = textBox4.Text.DoubleFromString();
                    }
                    catch (Exception) {
                        superficie = 0;
                    }

                    // Crear la nueva área
                    Estate f = new Estate(
                        textBox2.Text,
                        textBox1.Text,
                        ( Place )elLugar,
                        superficie
                        );

                    area = f;

                    // ¿Es urbana?
                    f.IsUrban = checkBox1.Checked;

                    // Copiar archivos a imágenes
                    if (textBox5.Text.Length > 0)
                    {
                        SaveImage(textBox5.Text, f.GetImageName());
                    }

                    if (textBox6.Text.Length > 0)
                    {
                        SaveImage(textBox6.Text, f.getNombreImagenZona());
                    }
                }
            }
            catch (System.IO.IOException err) {
                MessageBox.Show("Se produjo un error al copiar archivos: "
                                + err.ToString()
                                );
            }
            catch (Exception err) {
                MessageBox.Show("Error creando área: "
                                + err.ToString()
                                );
            }

            area.Remarks = textBox3.Text;

            // Cerrar esta ventana
            Close();

            // Insertarla en la base de datos
            bd.InsertArea((Place)elLugar, area);
            bd.Sync();

            // Crear un visor para la nueva área
            PlaceExplorerEngine.LaunchExplorerFor(area);

fin:
            return;
        }