コード例 #1
0
 public void GetObjectsById()
 {
     UsuarioCreador    = UsuarioPersistance.GetById(_usuarioCreador);
     Visibilidad       = VisibilidadPersistance.GetById(_visibilidad);
     EstadoPublicacion = EstadoPublicacionPersistance.GetById(_estadoPublicacion);
     TipoPublicacion   = TipoPublicacionPersistance.GetById(_tipoPublicacion);
     Rubros            = RubroPersistance.GetByPublicationId(ID);
     Compras           = CompraPersistance.GetByPublicationId(ID);
 }
コード例 #2
0
        private void RefreshComboBoxSources()
        {
            //Lleno los combobox
            CboTipoPublicacion.DisplayMember = "Descripcion";
            CboTipoPublicacion.ValueMember   = "ID";
            CboTipoPublicacion.DataSource    = _publicationTypes = TipoPublicacionPersistance.GetAll();

            CboVisibilidad.DisplayMember = "Descripcion";
            CboVisibilidad.ValueMember   = "ID";
            CboVisibilidad.DataSource    = _visibilities = VisibilidadPersistance.GetAllActive();

            CboEstadoPublicacion.DisplayMember = "Descripcion";
            CboEstadoPublicacion.ValueMember   = "ID";
            CboEstadoPublicacion.DataSource    = _publicationStatus = EstadoPublicacionPersistance.GetAll();
        }
コード例 #3
0
        public ItemFactura ConvertToItemFactura()
        {
            if (Visibilidad == null)
            {
                Visibilidad = VisibilidadPersistance.GetById(_visibilidad);
            }

            return(new ItemFactura
            {
                Publicacion = this,
                Monto = Visibilidad.PrecioPublicar,
                Cantidad = 1,
                ContadorBonificacion = false
            });
        }
コード例 #4
0
        private void RefreshSources(List <Estadistica> estadisticas)
        {
            #region Load sources

            //Cargo el combo de años
            var dataSourceAño = new List <object>();
            for (var i = 1980; i <= Convert.ToInt32(Configuration.ConfigurationVariables.FechaSistema.Year); i++)
            {
                dataSourceAño.Add(new { Name = i.ToString(), Value = i });
            }
            CboAño.DataSource    = dataSourceAño;
            CboAño.ValueMember   = "Value";
            CboAño.DisplayMember = "Name";

            //Cargo el combo de trimestres
            var dataSourceTrimestre = new List <object>();
            dataSourceTrimestre.Add(new { Name = "Enero - Marzo", Value = 1 });
            dataSourceTrimestre.Add(new { Name = "Abril - Junio", Value = 2 });
            dataSourceTrimestre.Add(new { Name = "Julio - Septiembre", Value = 3 });
            dataSourceTrimestre.Add(new { Name = "Octubre - Diciembre", Value = 4 });
            CboTrimestre.ValueMember   = "Value";
            CboTrimestre.DisplayMember = "Name";
            CboTrimestre.DataSource    = dataSourceTrimestre;

            //Cargo el combo con los posibles listados a pedir
            var dataSourceListado = new List <object>();
            dataSourceListado.Add(new { Name = "[Vendedores] Mayor cant. de productos no vendidos", Value = 1 });
            dataSourceListado.Add(new { Name = "[Vendedores] Mayor facturación", Value = 2 });
            dataSourceListado.Add(new { Name = "[Vendedores] Mayores calificaciones", Value = 3 });
            dataSourceListado.Add(new { Name = "[Clientes] Mayor cant. de publicaciones sin calificar", Value = 4 });
            CboListado.DataSource    = dataSourceListado;
            CboListado.ValueMember   = "Value";
            CboListado.DisplayMember = "Name";

            //Cargo las visibilidades para los filtros de la primera estadística
            var dataSourceVisibilidad = VisibilidadPersistance.GetAll();
            var visibilidadTodos      = new Visibilidad();
            visibilidadTodos.ID          = 0;
            visibilidadTodos.Descripcion = "Todos";
            dataSourceVisibilidad.Add(visibilidadTodos);
            CboVisibilidad.DataSource    = dataSourceVisibilidad;
            CboVisibilidad.ValueMember   = "ID";
            CboVisibilidad.DisplayMember = "Descripcion";

            #endregion

            ClearDataGridView();
        }
コード例 #5
0
        private void DgvVisibilidad_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //Only works when user clicks one of the buttons (column index 5 and 6)
            if (e.ColumnIndex < 6 || e.RowIndex == -1)
            {
                return;
            }

            var selectedVisibility = _visibilities.Find(visibility => visibility.ID == (int)DgvVisibilidad.Rows[e.RowIndex].Cells[0].Value);

            if (selectedVisibility != null)
            {
                //El usuario tocó el botón de modificar
                if (e.ColumnIndex == 6)
                {
                    var insertUpdateVisibility = new FrmABMInsertUpdateVisibilidad(selectedVisibility);
                    insertUpdateVisibility.ShowDialog();

                    //Si modificó satisfactoriamante la visibilidad, actualizo la grilla
                    if (insertUpdateVisibility.CompleteAction)
                    {
                        RefreshSources(null);
                    }
                }
                else
                {
                    //El usuario tocó el botón de eliminar

                    //El rol seleccionado ya se encuentra eliminado (baja lógica)
                    if (!selectedVisibility.Activo)
                    {
                        MessageBox.Show("No se puede eliminar la funcionalidad ya que ya se encuentra desactivada", "Atencion");
                        return;
                    }

                    var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere desactivar la visibilidad {0}?", selectedVisibility.Descripcion), "Atención", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        selectedVisibility.Activo = false;
                        VisibilidadPersistance.Update(selectedVisibility);

                        //Vuelvo a cargar la lista de roles
                        RefreshSources(null);
                    }
                }
            }
        }
コード例 #6
0
        private void RefreshSources(List <Visibilidad> visibilities)
        {
            //Borro lo que esta actualmente en la grilla
            ClearDataGridView();
            var visibilitiesDictionary = new Dictionary <int, Visibilidad>();

            #region Get the dictionary of visibilities

            if (visibilities == null)
            {
                //El datasource debe ser todos los registros de visibilidades almacenados en la base de datos
                CleanFiltersUI();
                _visibilities = VisibilidadPersistance.GetAll();
                //Convierto todas las visibilidades a un diccionario con entradas de la forma: (ID, Objeto)
                visibilitiesDictionary = _visibilities.ToDictionary(a => a.ID, a => a);
            }
            else
            {
                //El datasource debe ser una lista de visibilidades obtenidas por parametro
                //Convierto la lista de visibilidades a un diccionario con entradas de la forma: (ID, Objeto)
                visibilitiesDictionary = visibilities.ToDictionary(a => a.ID, a => a);
            }

            #endregion

            //Creo un bind para luego setearselo directamente a la DataGridView
            var bind = visibilitiesDictionary.Values.Select(a => new
            {
                Codigo            = a.ID,
                Descripcion       = a.Descripcion,
                PrecioPorPublicar = string.Format("${0}", a.PrecioPublicar),
                PorcentajeDeVenta = string.Format("{0}%", a.PorcentajeVenta),
                Duracion          = string.Format("{0} dias", a.Duracion),
                Activo            = a.Activo
            });

            DgvVisibilidad.DataSource = bind.ToList();

            //Agrego los botones a cada fila para poder modificar/borrar cada rol
            AddButtonsColumns();
        }
コード例 #7
0
        private void FrmGenerarPublicacion_Load(object sender, EventArgs e)
        {
            #region Display all sources

            var publicationTypes = TipoPublicacionPersistance.GetAll();
            CboTipoPublicacion.DisplayMember = "Descripcion";
            CboTipoPublicacion.ValueMember   = "ID";
            CboTipoPublicacion.DataSource    = publicationTypes;

            var publicationStates = EstadoPublicacionPersistance.GetAll();
            CboEstadoPublicacion.DisplayMember = "Descripcion";
            CboEstadoPublicacion.ValueMember   = "ID";
            CboEstadoPublicacion.DataSource    = publicationStates;

            var visibilities = VisibilidadPersistance.GetAll();
            CboVisibilidad.DisplayMember = "Descripcion";
            CboVisibilidad.ValueMember   = "ID";
            CboVisibilidad.DataSource    = visibilities;

            var rubros = RubroPersistance.GetAll();
            LstRubro.DataSource    = rubros;
            LstRubro.DisplayMember = "Descripcion";
            LstRubro.ValueMember   = "ID";

            #endregion

            if (!insertMode)
            {
                #region Load updating publication data

                CurrentPublication.GetObjectsById();

                CboEstadoPublicacion.Text = CurrentPublication.EstadoPublicacion.Descripcion;
                CboTipoPublicacion.Text   = CurrentPublication.TipoPublicacion.Descripcion;
                CboVisibilidad.Text       = CurrentPublication.Visibilidad.Descripcion;
                TxtDescripcion.Text       = CurrentPublication.Descripcion;

                if (CurrentPublication.TipoPublicacion.Descripcion == "Subasta")
                {
                    TxtPrecio.Enabled          = false;
                    TxtValorInicioSubasta.Text = CurrentPublication.Precio.ToString();
                }
                else
                {
                    TxtValorInicioSubasta.Enabled = false;
                    TxtPrecio.Text = CurrentPublication.Precio.ToString();
                }

                TxtStock.Text = CurrentPublication.Stock.ToString();
                ChkRecibirPreguntas.Checked = CurrentPublication.RecibirPreguntas;

                //Marco como chequeados los rubros que ya posee la publicación
                for (int j = 0; j < LstRubro.Items.Count; j++)
                {
                    var checkboxListItem = (Rubro)LstRubro.Items[j];

                    if (CurrentPublication.Rubros.Any(p => p.Descripcion == checkboxListItem.Descripcion))
                    {
                        LstRubro.SetItemChecked(j, true);
                    }
                    else
                    {
                        LstRubro.SetItemChecked(j, false);
                    }
                }

                #endregion

                #region Habilito los controles dependiendo del estado de la publicacion

                switch (CurrentPublication.EstadoPublicacion.Descripcion)
                {
                case "Publicada":
                    #region Publicada

                    DisableUIControls();
                    TxtDescripcion.Enabled       = true;
                    CboEstadoPublicacion.Enabled = true;
                    TxtStock.Enabled             = (CurrentPublication.TipoPublicacion.Descripcion != "Subasta");

                    break;

                    #endregion

                case "Pausada":
                case "Finalizada":
                    #region Pausada y Finalizada

                    LblLimpiar.Enabled = false;
                    DisableUIControls();

                    break;
                    #endregion
                }

                #endregion
            }
        }
コード例 #8
0
        private void LblFacturar_Click(object sender, EventArgs e)
        {
            #region Validaciones

            var exceptionMessage = string.Empty;

            if (TypesHelper.IsEmpty(TxtCantidad.Text) || !TypesHelper.IsNumeric(TxtCantidad.Text))
            {
                exceptionMessage = "Ingrese una cantidad correcta de publicaciones a facturar";
            }

            if (PagaConTarjeta)
            {
                #region Validaciones datos tarjeta

                if (TypesHelper.IsEmpty(TxtCodSeguridad.Text))
                {
                    exceptionMessage += Environment.NewLine + "El codigo de seguridad de la tarjeta es obligatorio";
                }

                if (!TypesHelper.IsNumeric(TxtCodSeguridad.Text))
                {
                    exceptionMessage += Environment.NewLine + "El codigo de seguridad de la tarjeta debe ser numerico";
                }

                if (TypesHelper.IsEmpty(TxtDni.Text))
                {
                    exceptionMessage += Environment.NewLine + "El numero de documento del titular de la tarjeta es obligatorio";
                }

                if (!TypesHelper.IsNumeric(TxtDni.Text))
                {
                    exceptionMessage += Environment.NewLine + "El numero de documento del titular de la tarjeta debe ser numerico";
                }

                if (TypesHelper.IsEmpty(TxtNroTarjeta.Text))
                {
                    exceptionMessage += Environment.NewLine + "El numero de la tarjeta es obligatorio";
                }

                if (!TypesHelper.IsNumeric(TxtNroTarjeta.Text))
                {
                    exceptionMessage += Environment.NewLine + "El numero de la tarjeta debe ser numerico";
                }

                if (TypesHelper.IsEmpty(TxtTarjeta.Text))
                {
                    exceptionMessage += Environment.NewLine + "La descripcion de la tarjeta es obligatorio";
                }

                if (TypesHelper.IsEmpty(TxtTitular.Text))
                {
                    exceptionMessage += Environment.NewLine + "El nombre del titular de la tarjeta es obligatorio";
                }

                if (TypesHelper.IsEmpty(TxtVencimiento.Text))
                {
                    exceptionMessage += Environment.NewLine + "La fecha de vencimiento de la tarjeta es obligatorio";
                }

                if (!TypesHelper.IsNumeric(TxtVencimiento.Text))
                {
                    exceptionMessage += Environment.NewLine + "La fecha de vencimiento de la tarjeta debe ser numerico";
                }

                #endregion
            }

            if (!TypesHelper.IsEmpty(exceptionMessage))
            {
                MessageBox.Show(exceptionMessage, "Atencion");
                return;
            }

            #endregion

            #region Obtengo las publicaciones que voy a rendir

            var cant = Convert.ToInt32(TxtCantidad.Text.Trim());
            if (cant > LstPublicaciones.Items.Count)
            {
                cant = LstPublicaciones.Items.Count;
            }

            var listaPublicacionesAFacturar = PublicationsList.GetRange(0, cant);
            var itemsFactura = new List <ItemFactura>();

            #endregion

            #region Obtengo todos los items de la factura

            foreach (var publicacionFacturar in listaPublicacionesAFacturar)
            {
                var comprasPorPublicacion = CompraPersistance.GetByPublicationId(publicacionFacturar.ID);
                if (comprasPorPublicacion != null)
                {
                    //Pueden ser tanto compras inmediatas o subastas, esta hecho de forma polimorfica
                    foreach (var compra in comprasPorPublicacion)
                    {
                        itemsFactura.Add(compra.ConvertToItemFactura());
                    }
                }

                //Agrego el item factura de la publicacion en si misma (aunque no tenga compras)
                itemsFactura.Add(publicacionFacturar.ConvertToItemFactura());
            }

            #endregion

            using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable))
            {
                try
                {
                    var dialogAnswer = MessageBox.Show("¿Está seguro que quiere facturar " + cant + " publicacion/es?", "Atención", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        #region Armo y guardo la factura en si misma

                        var factura = new Factura
                        {
                            Fecha     = ConfigurationVariables.FechaSistema,
                            Numero    = FacturaPersistance.GetUltimoNumeroFactura(transaction) + 1,
                            FormaPago = FormaPagoPersistance.GetById((int)CboFormaPago.SelectedValue, transaction),
                            Usuario   = (Usuario)SessionManager.CurrentUser,
                            Total     = itemsFactura.Sum(item => item.Monto)
                        };

                        //Guardo la factura en la base de datos (y me retorna la factura insertada con el ID correspondiente)
                        factura = FacturaPersistance.InsertFactura(factura, transaction);

                        #endregion

                        if (factura.ID != 0)
                        {
                            Dictionary <int, int> visibilidadesPorUsuario = VisibilidadPersistance.GetAllByUser(SessionManager.CurrentUser, transaction);

                            #region Guardo los items en la base

                            //Creación de los Items de la Factura
                            foreach (var item in itemsFactura)
                            {
                                item.Factura = factura;

                                #region Logica de bonificacion de items

                                /* Realizo la modificacion del contador solo si el item generado surgio a partir
                                 * de una compra y no es el item de la publicacion en si misma. */
                                if (item.ContadorBonificacion)
                                {
                                    var idVisibilidad = item.Publicacion.Visibilidad.ID;

                                    if (visibilidadesPorUsuario.ContainsKey(idVisibilidad))
                                    {
                                        visibilidadesPorUsuario[idVisibilidad]++;
                                    }
                                    else
                                    {
                                        visibilidadesPorUsuario.Add(idVisibilidad, 1);
                                    }

                                    if (visibilidadesPorUsuario[idVisibilidad] == 10)
                                    {
                                        item.Monto = visibilidadesPorUsuario[idVisibilidad] = 0;
                                    }
                                }

                                #endregion
                            }

                            var insertoCorrectamente = ItemFacturaPersistance.InsertItemsFactura(itemsFactura, transaction);

                            if (!insertoCorrectamente)
                            {
                                throw new Exception("Se produjo un error durante la insercion de los items de la factura");
                            }

                            #endregion

                            #region Guardo la informacion de las visibilidades

                            insertoCorrectamente = VisibilidadPersistance.InsertVisibilidadesRendidasPorUsuario(visibilidadesPorUsuario, SessionManager.CurrentUser.ID, transaction);
                            if (!insertoCorrectamente)
                            {
                                throw new Exception("Se produjo un error durante la insercion de la informacion de las visibilidades rendidas por usuario");
                            }

                            #endregion

                            #region Guardo la informacion de la tarjeta de credito

                            if (PagaConTarjeta)
                            {
                                var tarjeta = new TarjetaCredito
                                {
                                    Tarjeta         = TxtTarjeta.Text,
                                    NumeroTarjeta   = Convert.ToInt32(TxtNroTarjeta.Text),
                                    Vencimiento     = Convert.ToInt32(TxtVencimiento.Text),
                                    CodigoSeguridad = Convert.ToInt32(TxtCodSeguridad.Text),
                                    Titular         = TxtTitular.Text,
                                    DniTitular      = Convert.ToInt32(TxtDni.Text),
                                    Factura         = factura
                                };

                                tarjeta = TarjetaCreditoPersistance.Insert(tarjeta, transaction);

                                if (tarjeta.ID == 0)
                                {
                                    throw new Exception("Se produjo un error durante la insercion de la informacion de la tarjeta");
                                }
                            }

                            #endregion

                            transaction.Commit();

                            MessageBox.Show("Se facturaron satisfactoriamente las publicaciones", "Atencion");
                            CompleteAction = true;

                            Close();
                        }
                        else
                        {
                            transaction.Rollback();
                        }
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    TxtCantidad.Clear();
                    MessageBox.Show(ex.Message, "Atencion");
                }
            }
        }
コード例 #9
0
        private void LblGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                #region Validations

                var exceptionMessage = string.Empty;

                if (TypesHelper.IsEmpty(TxtDescripcion.Text))
                {
                    exceptionMessage += Environment.NewLine + "La descripción de la visibilidad no puede ser vacía.";
                }

                if (TypesHelper.IsEmpty(TxtDuracion.Text))
                {
                    exceptionMessage += Environment.NewLine + "La duración de la visibilidad no puede ser vacía.";
                }

                if (!TypesHelper.IsNumeric(TxtDuracion.Text))
                {
                    exceptionMessage += Environment.NewLine + "La duración de la visibilidad debe ser numérica.";
                }

                if (TypesHelper.IsEmpty(TxtPorcentajeVenta.Text))
                {
                    exceptionMessage += Environment.NewLine + "El porcentaje de la venta de la visibilidad no puede ser vacío.";
                }

                if (!TypesHelper.IsDecimal(TxtPorcentajeVenta.Text))
                {
                    exceptionMessage += Environment.NewLine + "El porcentaje de la venta de la visibilidad debe ser decimal (o numérico).";
                }

                if (TypesHelper.IsEmpty(TxtPrecioPublicar.Text))
                {
                    exceptionMessage += Environment.NewLine + "El precio por publicar de la visibilidad no puede ser vacío.";
                }

                if (!TypesHelper.IsDecimal(TxtPrecioPublicar.Text))
                {
                    exceptionMessage += Environment.NewLine + "El precio por publicar de la visibilidad debe ser decimal (o numérico).";
                }

                if (!TypesHelper.IsEmpty(exceptionMessage))
                {
                    throw new Exception(exceptionMessage);
                }

                #endregion

                if (insertMode)
                {
                    var filters = new VisibilidadFilters {
                        Descripcion = TxtDescripcion.Text
                    };

                    //Valido que no exista un rol con la descripcion informada
                    if (VisibilidadPersistance.GetAllByParameters(filters).Count > 0)
                    {
                        throw new Exception("Ya existe una visibilidad con la descripcion informada.");
                    }

                    #region Inserto la nueva visibilidad

                    var visibility = new Visibilidad();
                    visibility.Descripcion     = TxtDescripcion.Text;
                    visibility.Duracion        = Convert.ToInt32(TxtDuracion.Text);
                    visibility.PrecioPublicar  = Convert.ToDouble(TxtPrecioPublicar.Text);
                    visibility.PorcentajeVenta = Convert.ToDouble(TxtPorcentajeVenta.Text);
                    visibility.Activo          = ChkActivo.Checked;

                    var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar la nueva visibilidad?", "Atencion", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        if (VisibilidadPersistance.Insert(visibility) == 1)
                        {
                            MessageBox.Show("Se inserto satisfactoriamente la nueva visibilidad", "Atencion");
                            CompleteAction = true;
                            Close();
                        }
                    }

                    #endregion
                }
                else
                {
                    #region Modifico una visibilidad existente

                    if (OldVisibilityActive && !ChkActivo.Checked)
                    {
                        //Si cambió el valor de 'Activo' y existen publicaciones con dicha visibilidad, arrojo una excepcion
                        if (PublicacionPersistance.GetAllByVisibility(CurrentVisibility.ID).Count() > 0)
                        {
                            throw new Exception("No se puede modificar la visibilidad ya que existen publicaciones con dicho valor.");
                        }
                    }

                    CurrentVisibility.Descripcion     = TxtDescripcion.Text;
                    CurrentVisibility.Duracion        = Convert.ToInt32(TxtDuracion.Text);
                    CurrentVisibility.PrecioPublicar  = Convert.ToDouble(TxtPrecioPublicar.Text);
                    CurrentVisibility.PorcentajeVenta = Convert.ToDouble(TxtPorcentajeVenta.Text);
                    CurrentVisibility.Activo          = ChkActivo.Checked;

                    var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere modificar la visibilidad {0}?", CurrentVisibility.Descripcion), "Atencion", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        //Modifico exitosamente si la cantidad de registros afectados es 1
                        if (VisibilidadPersistance.Update(CurrentVisibility) == 1)
                        {
                            MessageBox.Show("Se modifico satisfactoriamente la visibilidad", "Atencion");
                            CompleteAction = true;
                            Close();
                        }
                    }

                    #endregion
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
                Close();
            }
        }
コード例 #10
0
        private void LblBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                #region Validations

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

                if (!TypesHelper.IsEmpty(TxtDescripcion.Text))
                {
                    filtersSetted = true;
                }

                if (!TypesHelper.IsEmpty(TxtDuracion.Text))
                {
                    filtersSetted = true;
                    if (!TypesHelper.IsNumeric(TxtDuracion.Text))
                    {
                        exceptionMessage += Environment.NewLine + "La duración de la visibilidad debe ser numérica.";
                    }
                }

                if (!TypesHelper.IsEmpty(TxtPrecioPublicar.Text))
                {
                    filtersSetted = true;
                    if (!TypesHelper.IsDecimal(TxtPrecioPublicar.Text))
                    {
                        exceptionMessage += Environment.NewLine + "El precio por publicar de la visibilidad debe ser decimal (o numérico).";
                    }
                }

                if (!TypesHelper.IsEmpty(TxtPorcentajeVenta.Text))
                {
                    filtersSetted = true;
                    if (!TypesHelper.IsDecimal(TxtPorcentajeVenta.Text))
                    {
                        exceptionMessage += Environment.NewLine + "El porcentaje de la venta de la visibilidad debe ser decimal (o numérico).";
                    }
                }

                if (!filtersSetted)
                {
                    exceptionMessage = "No se puede realizar la busqueda ya que no se informó ningún filtro";
                }

                if (!TypesHelper.IsEmpty(exceptionMessage))
                {
                    throw new Exception(exceptionMessage);
                }

                #endregion

                //Armo el objeto que representa a los filtros a partir de los valores de los controles
                var filters = new VisibilidadFilters
                {
                    Descripcion     = (!TypesHelper.IsEmpty(TxtDescripcion.Text)) ? TxtDescripcion.Text : null,
                    PrecioPublicar  = (!TypesHelper.IsEmpty(TxtPrecioPublicar.Text) && ChkBusquedaExacta.Checked) ? Convert.ToDouble(TxtPrecioPublicar.Text) : (double?)null,
                    PorcentajeVenta = (!TypesHelper.IsEmpty(TxtPorcentajeVenta.Text) && ChkBusquedaExacta.Checked) ? Convert.ToDouble(TxtPorcentajeVenta.Text) : (double?)null,
                    Duracion        = (!TypesHelper.IsEmpty(TxtDuracion.Text) && ChkBusquedaExacta.Checked) ? Convert.ToInt32(TxtDuracion.Text) : (int?)null
                };

                var visibilities = (ChkBusquedaExacta.Checked) ? VisibilidadPersistance.GetAllByParameters(filters) : VisibilidadPersistance.GetAllByParametersLike(filters);

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

                //Cargo la grilla a partir de los registros obtenidos en la busqueda
                RefreshSources(visibilities);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
            }
        }