Exemple #1
0
        private void BtnBuscar_Click(object sender, EventArgs e)
        {
            try
            {

                #region Validaciones

                var filtrosSeteados = false;
                var exceptionMessage = string.Empty;

                if (!ValidadorDeTipos.IsEmpty(TxtCodigo.Text))
                    filtrosSeteados = true;

                if (!ValidadorDeTipos.IsEmpty(TxtDesdeKg.Text))
                    filtrosSeteados = true;

                if (!ValidadorDeTipos.IsEmpty(TxtDesdePasaje.Text))
                    filtrosSeteados = true;

                if (!ValidadorDeTipos.IsEmpty(TxtHastaKg.Text))
                    filtrosSeteados = true;

                if (!ValidadorDeTipos.IsEmpty(TxtHastaPasaje.Text))
                    filtrosSeteados = true;

                if (CmbTipoServicio.Text != "SERVICIO")
                    filtrosSeteados = true;

                if (CmbCiudadOrigen.Text != "CIUDAD ORIGEN")
                    filtrosSeteados = true;

                if (CmbCiudadDestino.Text != "CIUDAD DESTINO")
                    filtrosSeteados = true;

                if (!filtrosSeteados)
                    exceptionMessage = "No se puede realizar la busqueda porque no ingreso ningun filtro";

                if (!ValidadorDeTipos.IsEmpty(exceptionMessage))
                    throw new Exception(exceptionMessage);

                #endregion

                #region Cargo los filtros ingresados en el objeto RutaFiltros
                int? cod;
                if (!ValidadorDeTipos.IsEmpty(TxtCodigo.Text)) cod = Int32.Parse(TxtCodigo.Text);
                else cod =null;

                double? desdeKg;
                if (!ValidadorDeTipos.IsEmpty(TxtDesdeKg.Text)) desdeKg = double.Parse(TxtDesdeKg.Text);
                else desdeKg = null;

                double? hastaKg;
                if (!ValidadorDeTipos.IsEmpty(TxtHastaKg.Text)) hastaKg = double.Parse(TxtHastaKg.Text);
                else hastaKg = null;

                double? desdePje;
                if (!ValidadorDeTipos.IsEmpty(TxtDesdePasaje.Text)) desdePje = double.Parse(TxtDesdePasaje.Text);
                else desdePje = null;

                double? hastaPje;
                if (!ValidadorDeTipos.IsEmpty(TxtHastaPasaje.Text)) hastaPje = double.Parse(TxtHastaPasaje.Text);
                else hastaPje = null;

                var filtros = new RutaFiltros
                {
                    Codigo = cod,
                    TipoServicio = (CmbTipoServicio.Text != "SERVICIO") ? CmbTipoServicio.Text : null,
                    CiudadDestino = (CmbCiudadDestino.Text != "CIUDAD DESTINO") ? CmbCiudadDestino.Text : null,
                    CiudadOrigen = (CmbCiudadOrigen.Text != "CIUDAD ORIGEN") ? CmbCiudadOrigen.Text : null,
                    PrecioDesdeKg = desdeKg,
                    PrecioHastaKg = hastaKg,
                    PrecioDesdePasaje = desdePje,
                    PrecioHastaPasaje = hastaPje
                };

                #endregion

                var rutas = RutaPersistencia.ObtenerRutasPorParametros(filtros);

                if (rutas == null || rutas.Count == 0)
                    throw new Exception("No se encontraron rutas según los filtros informados.");

                //Recargo los valores de la grilla a partir de los resultados obtenidos en la busqueda
                ActualizarPantalla(rutas);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
            }
        }
        public static List<Ruta> ObtenerRutasPorParametros(RutaFiltros filtros)
        {
            var param = new List<SPParameter>
            {
                new SPParameter("Codigo_Ruta", filtros.Codigo ?? (object)DBNull.Value),
                new SPParameter("Ciudad_Origen", filtros.CiudadOrigen ?? (object)DBNull.Value),
                new SPParameter("Ciudad_Destino", filtros.CiudadDestino ?? (object)DBNull.Value),
                new SPParameter("Desde_Kg", filtros.PrecioDesdeKg ?? (object)DBNull.Value),
                new SPParameter("Hasta_Kg", filtros.PrecioHastaKg ?? (object)DBNull.Value),
                new SPParameter("Desde_Pasaje", filtros.PrecioDesdePasaje ?? (object)DBNull.Value),
                new SPParameter("Hasta_Pasaje", filtros.PrecioHastaPasaje ?? (object)DBNull.Value),
                new SPParameter("Tipo_Servicio", filtros.TipoServicio ?? (object)DBNull.Value),
            };

            var sp = new StoreProcedure(DBQueries.Ruta.SPFiltrarRutas, param);

            return sp.ExecuteReader<Ruta>();
        }
        private void BtnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                #region Validaciones

                var exceptionMessage = string.Empty;

                if (string.IsNullOrEmpty(TxtCodigo.Text))
                    exceptionMessage += "El código de la ruta no puede ser vacío.";

                if (string.IsNullOrEmpty(TxtBaseKg.Text))
                    exceptionMessage += Environment.NewLine + "Debe ingresar un precio base por Kg.";

                if (string.IsNullOrEmpty(TxtBasePasaje.Text))
                    exceptionMessage += Environment.NewLine + "Debe ingresar un precio base por pasaje";

                if (!string.IsNullOrEmpty(exceptionMessage))
                    throw new Exception(exceptionMessage);

                #endregion

                if (!modoModificacion)
                {
                    #region Valido que no exista una ruta con la descripcion informada
                    var filtro = new RutaFiltros();
                    filtro.Codigo = Int32.Parse(TxtCodigo.Text);
                    filtro.CiudadOrigen = CmbCiudadOrigen.Text;
                    filtro.CiudadDestino = CmbCiudadDestino.Text;
                    filtro.TipoServicio = CmbTipoServicio.Text;
                    filtro.PrecioDesdeKg = double.Parse(TxtBaseKg.Text);
                    filtro.PrecioHastaKg = double.Parse(TxtBaseKg.Text);
                    filtro.PrecioDesdePasaje = double.Parse(TxtBasePasaje.Text);
                    filtro.PrecioHastaPasaje = double.Parse(TxtBasePasaje.Text);

                    var rutas = RutaPersistencia.ObtenerRutasPorParametros(filtro);
                    var mensajeExcepcion = string.Empty;

                    if (rutas.Count!=0)
                        throw new Exception("Ya existe una ruta con los datos ingresados");

                    #endregion

                    if (filtro.CiudadOrigen == filtro.CiudadDestino)
                        mensajeExcepcion += "No puede crear una ruta con la misma ciudad de origen y destino";

                    if(!(ValidadorDeTipos.IsNumeric(TxtCodigo.Text)))
                        mensajeExcepcion += Environment.NewLine + "El código de ruta debe ser un número";

                    if (!(ValidadorDeTipos.IsNumeric(TxtBaseKg.Text)))
                        mensajeExcepcion += Environment.NewLine + "El precio base del KG debe ser un número";

                    if (!(ValidadorDeTipos.IsNumeric(TxtBasePasaje.Text)))
                        mensajeExcepcion += Environment.NewLine + "El precio base del pasaje debe ser un número";

                    if (!ValidadorDeTipos.IsEmpty(mensajeExcepcion))
                        throw new Exception(mensajeExcepcion);

                    //TODO Por qué no me muestra el mensaje de error que le dije??

                    #region Inserto una nueva ruta

                    var ruta = new Ruta();
                    ruta.Codigo_Ruta = (int)(filtro.Codigo);
                    ruta.ID_Ciudad_Origen = CiudadPersistencia.ObtenerIDPorNombreDeCiudad(filtro.CiudadOrigen);
                    ruta.ID_Ciudad_Destino = CiudadPersistencia.ObtenerIDPorNombreDeCiudad(filtro.CiudadDestino);
                    ruta.ID_Servicio = ServicioPersistencia.ObtenerIDPorNombreDeServicio(filtro.TipoServicio);
                    ruta.Precio_Base_KG = (double)filtro.PrecioDesdeKg;   //ES INDISTINTO PONER DESDE O HASTA PORQUE EN ESTE CASO SON IGUALES
                    ruta.Precio_Base_Pasaje = (double)filtro.PrecioDesdePasaje;  //ES INDISTINTO PONER DESDE O HASTA PORQUE EN ESTE CASO SON IGUALES
                    ruta.Habilitado = !(ChkInhabilitado.Checked);

                    var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar la nueva ruta?", "Atencion", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        //Impacto en la base
                        RutaPersistencia.InsertarRuta(ruta);
                        AccionCompleta = true;
                        Close();
                    }

                    #endregion

                }
                else
                {
                    #region Modifico una ruta existente

                    var rutaAModificar = RutaActual;
                    RutaActual.Codigo_Ruta = Int32.Parse(TxtCodigo.Text);
                    RutaActual.ID_Ciudad_Origen = CiudadPersistencia.ObtenerIDPorNombreDeCiudad(CmbCiudadOrigen.Text);
                    RutaActual.ID_Ciudad_Destino = CiudadPersistencia.ObtenerIDPorNombreDeCiudad(CmbCiudadDestino.Text);
                    RutaActual.ID_Servicio = ServicioPersistencia.ObtenerIDPorNombreDeServicio(CmbTipoServicio.Text);
                    RutaActual.Precio_Base_KG = double.Parse(TxtBaseKg.Text);   //ES INDISTINTO PONER DESDE O HASTA PORQUE EN ESTE CASO SON IGUALES
                    RutaActual.Precio_Base_Pasaje = double.Parse(TxtBasePasaje.Text);  //ES INDISTINTO PONER DESDE O HASTA PORQUE EN ESTE CASO SON IGUALES
                    RutaActual.Habilitado = !(ChkInhabilitado.Checked);

                    var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere modificar la ruta {0} de {1} a {2}?", rutaAModificar.Codigo_Ruta, RutaPersistencia.ObtenerCiudadPorID(rutaAModificar.ID_Ciudad_Origen), RutaPersistencia.ObtenerCiudadPorID(rutaAModificar.ID_Ciudad_Destino)), "Atención", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        //Impacto en la base
                        RutaPersistencia.ModificarRuta(RutaActual);
                        AccionCompleta = true;
                        Close();
                    }

                    #endregion
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
            }
        }