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); }
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(); }
public ItemFactura ConvertToItemFactura() { if (Visibilidad == null) { Visibilidad = VisibilidadPersistance.GetById(_visibilidad); } return(new ItemFactura { Publicacion = this, Monto = Visibilidad.PrecioPublicar, Cantidad = 1, ContadorBonificacion = false }); }
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(); }
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); } } } }
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(); }
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 } }
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"); } } }
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(); } }
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"); } }