Example #1
0
        private void btnGuardarCodigo_Click(object sender, EventArgs e)
        {
            string sql;
            //Validamos que el código postal sea válido
            bool isNumeric = int.TryParse(this.txtCodigoPostal.Text.Trim(), out int codigoPostal);

            if (isNumeric == false)
            {
                Mensajes.NoExito("Inserte un código postal válido");
                return;
            }
            //Validamos que haya seleccionado un estado
            if (string.IsNullOrEmpty(this.cbEstado.Text))
            {
                Mensajes.NoExito("Seleccione un estado");
                return;
            }
            //Validamos que haya seleccionado o escrito una ciudad
            if (string.IsNullOrWhiteSpace(this.cbMunicipio.Text))
            {
                Mensajes.NoExito("Seleccione o escriba una ciudad");
                return;
            }


            //Validamos que tenga al menos 1 paquetería
            if (dgvPaqueterias.Rows.Count == 0)
            {
                Mensajes.NoExito("El código postal al menos debe de tener una paquetería");
                return;
            }

            //Recorremos el datagridview para validar que no haya datos vacíos
            foreach (DataGridViewRow fila in dgvPaqueterias.Rows)
            {
                if (fila.Cells["Paqueteria"].Value == null)
                {
                    Mensajes.NoExito("No puede haber datos vacíos");
                    return;
                }
                if (fila.Cells["Ocurre"].Value == null)
                {
                    fila.Cells["Ocurre"].Value = false;
                }
            }

            string estado    = this.cbEstado.Text;
            string municipio = this.cbMunicipio.Text.Trim().ToUpper();


            DialogResult respuesta = DialogResult.None;

            //Validamos que no haya sido registrado ya el código postal
            sql = string.Format("SELECT Id FROM Codigos_postales WHERE CodigoPostal={0};", codigoPostal);
            ds  = Conexion.Ejecutar(sql);
            if (ds.Tables[0].Rows.Count > 0)
            {
                ds.Clear();
                respuesta = Mensajes.Confirmar("¿Deseas actualizar los datos?");
                if (respuesta == DialogResult.No)
                {
                    return;
                }
            }

            sql = string.Format("SELECT Id FROM Ciudades WHERE Ciudad='{0}'", municipio);
            ds  = Conexion.Ejecutar(sql);
            if (ds.Tables[0].Rows.Count == 0)
            {
                ds.Clear();
                sql = string.Format("INSERT INTO Ciudades (Estado, Ciudad) VALUES('{0}', '{1}')", estado, municipio);
                ds  = Conexion.Ejecutar(sql);
            }
            ds.Clear();

            if (respuesta == DialogResult.Yes)
            {
                //Actualizamos el estado y municipio
                sql = string.Format("UPDATE Codigos_postales SET Estado='{0}', Municipio='{1}' WHERE CodigoPostal={2};", estado, municipio, codigoPostal);
                ds  = Conexion.Ejecutar(sql);
                ds.Clear();

                //Borramos la información primero
                sql = string.Format("DELETE FROM Paqueterias_codigos WHERE CodigoPostal={0}", codigoPostal);
                ds  = Conexion.Ejecutar(sql);
                ds.Clear();

                //Recorremos el datagridview para actualizar los datos de los métodos de envío
                foreach (DataGridViewRow fila in dgvPaqueterias.Rows)
                {
                    string paqueteria = fila.Cells["Paqueteria"].Value.ToString();
                    bool   ocurre     = bool.Parse(fila.Cells["Ocurre"].Value.ToString());

                    //Insertamos las paqueterias que tiene ese codigo postal
                    sql = string.Format("INSERT INTO Paqueterias_codigos (CodigoPostal, Paqueteria, Ocurre) VALUES ({0}, '{1}', {2});", codigoPostal, paqueteria, ocurre);
                    ds  = Conexion.Ejecutar(sql);
                    ds.Clear();
                }

                Mensajes.Exito("El código postal se ha actualizado correctamente");
                this.txtCodigoPostal.Clear();
                this.LimpiarFormulario();

                return; //Salimos del proceso
            }

            //Insertamos los datos del codigo postal
            sql = string.Format("INSERT INTO Codigos_postales (CodigoPostal, Estado, Municipio) VALUES({0}, '{1}', '{2}')", codigoPostal, estado, municipio);
            ds  = Conexion.Ejecutar(sql);
            ds.Clear();

            //Recorremos el datagridview para insertar la información en la DB
            foreach (DataGridViewRow fila in dgvPaqueterias.Rows)
            {
                string paqueteria = fila.Cells["Paqueteria"].Value.ToString();
                bool   ocurre     = bool.Parse(fila.Cells["Ocurre"].Value.ToString());

                //Insertamos las paqueterias que tiene ese codigo postal
                sql = string.Format("INSERT INTO Paqueterias_codigos (CodigoPostal, Paqueteria, Ocurre) VALUES ({0}, '{1}', {2});", codigoPostal, paqueteria, ocurre);
                ds  = Conexion.Ejecutar(sql);
                ds.Clear();
            }
            Mensajes.Exito("El código postal se ha registrado correctamente");
            this.txtCodigoPostal.Clear();
            this.LimpiarFormulario();
        }