public ABMRecorrido(int idRec)
        {
            InitializeComponent();

            _Modificacion = true;

            _Recorrido = new Recorrido(idRec);

            CargarCombos();

            codigo.Text = _Recorrido.Codigo;
            ciudadOrigen.SelectedValue = _Recorrido.IdCiuOri;
            ciudadDestino.SelectedValue = _Recorrido.IdCiuDest;
            tipoServicio.SelectedValue = _Recorrido.IdTipoServ;
            precioBase.Text = Convert.ToString(_Recorrido.PrecBase);
            precioKilo.Text = Convert.ToString(_Recorrido.PrecKilo);
            tiempoViaje.Text = _Recorrido.TiempoViaje.ToString("HH:mm");

            //Si tiene viajes asociados, algunas cosas no se las dejo modificar
            //por ejemplo la ciudad destino, la ciudad origen y el tipo de servicio
            if (_Recorrido.TieneViajesAsociados())
            {
                ciudadOrigen.Enabled = false;
                ciudadDestino.Enabled = false;
                tipoServicio.Enabled = false;
            }
        }
        private void Guardar_Click(object sender, EventArgs e)
        {
            if (codigo.Text == "")
            {
                MessageBox.Show("El codigo no puede quedar vacío");
                return;
            }

            if (!Validador.esAlfanumerico(codigo.Text))
            {
                MessageBox.Show("El codigo debe ser alfanumérico");
                return;
            }

            if (!Validador.esNumeroReal(precioKilo.Text))
            {
                MessageBox.Show("El precio por kg. debe ser un valor monetario");
                return;
            }

            if (!Validador.esNumeroReal(precioBase.Text))
            {
                MessageBox.Show("El precio de base debe ser un valor monetario");
                return;
            }

            if (!Validador.esHoraValida(tiempoViaje.Text))
            {
                MessageBox.Show("El tiempo de viaje no es válido, debe ser de 00:00 a 23:59");
                return;
            }

            if (_Modificacion)
            {
                if (_Recorrido.IdCiuDest != Convert.ToInt32(ciudadDestino.SelectedValue) ||
                   _Recorrido.IdTipoServ != Convert.ToInt32(tipoServicio.SelectedValue) ||
                   _Recorrido.IdCiuOri != Convert.ToInt32(ciudadOrigen.SelectedValue) ||
                   _Recorrido.Codigo != codigo.Text ||
                   _Recorrido.PrecBase != Convert.ToDouble(precioBase.Text) ||
                   _Recorrido.PrecKilo != Convert.ToDouble(precioKilo.Text) ||
                   _Recorrido.TiempoViaje != DateTime.Parse(tiempoViaje.Text))
                {
                    if (tipoServicio.Enabled && Recorrido.ExisteRecorrido(
                        Convert.ToInt32(tipoServicio.SelectedValue),
                        Convert.ToInt32(ciudadOrigen.SelectedValue),
                        Convert.ToInt32(ciudadDestino.SelectedValue)))
                    {
                        MessageBox.Show("Ya existe un recorrido habilitado para el tipo de servicio y las ciudades de origen y destino");
                        return;
                    }

                    _Recorrido.Codigo = codigo.Text;
                    _Recorrido.IdTipoServ = Convert.ToInt32(tipoServicio.SelectedValue);
                    _Recorrido.IdCiuOri = Convert.ToInt32(ciudadOrigen.SelectedValue);
                    _Recorrido.IdCiuDest = Convert.ToInt32(ciudadDestino.SelectedValue);
                    _Recorrido.PrecBase = Convert.ToDouble(precioBase.Text);
                    _Recorrido.PrecKilo = Convert.ToDouble(precioKilo.Text);
                    _Recorrido.TiempoViaje = Convert.ToDateTime(tiempoViaje.Text);

                    if (!_Recorrido.Modificar())
                    {
                        MessageBox.Show("Ocurrió un error de actualización");
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("No se produjeron modificaciones");
                    return;
                }
            }
            else
            {
                if (Recorrido.ExisteRecorrido(
                    Convert.ToInt32(tipoServicio.SelectedValue),
                    Convert.ToInt32(ciudadOrigen.SelectedValue),
                    Convert.ToInt32(ciudadDestino.SelectedValue)))
                {
                    MessageBox.Show("Ya existe un recorrido habilitado para el tipo de servicio y las ciudades seleccionadas");
                    return;
                }

                _Recorrido = new Recorrido(-1, codigo.Text, Convert.ToInt32(tipoServicio.SelectedValue),
                                   Convert.ToInt32(ciudadOrigen.SelectedValue),
                                   Convert.ToInt32(ciudadDestino.SelectedValue),
                                   Convert.ToDouble(precioBase.Text),
                                   Convert.ToDouble(precioKilo.Text), true,
                                   Convert.ToDateTime(tiempoViaje.Text));

                if (!_Recorrido.Insertar())
                {
                    MessageBox.Show("Ocurrió un error al agregar el nuevo recorrido");
                    return;
                }

            }

            this.Close();
        }