public ItemFactura ConvertToItemFactura() { if (IsAuction()) { var ofertaGanadora = OfertaPersistance.GetLastOfertaByPublication(Publicacion.ID); return(new ItemFactura { Publicacion = Publicacion, Cantidad = 1, Monto = (ofertaGanadora.Monto * Publicacion.Visibilidad.PorcentajeVenta), ContadorBonificacion = true }); } else { return new ItemFactura { Cantidad = Cantidad, Publicacion = Publicacion, Monto = (Publicacion.Precio * Publicacion.Visibilidad.PorcentajeVenta) * Cantidad, ContadorBonificacion = true } }; } }
private void RefreshSources(List <HistoryOferta> history) { ClearDataGridView(); var historyDictionary = new Dictionary <int, HistoryOferta>(); if (history == null) { //The datasource must be all the publications not calified records stored in the database _history = OfertaPersistance.GetAllOfertasByUsuario(SessionManager.CurrentUser); historyDictionary = _history.ToDictionary(a => a.ID_Oferta, a => a); } else { //The datasource must be the list of publications not calified received as parameter historyDictionary = history.ToDictionary(a => a.ID_Oferta, a => a); } var bind = historyDictionary.Values.Select(a => new { Codigo = a.ID_Oferta, Monto = a.Monto, Fecha = a.Fecha, Descripcion = a.Descripcion, Ganada = a.Ganada }); dgvHistory.DataSource = bind.ToList(); dgvHistory.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dgvHistory.CurrentCell = null; }
private void RefreshSources() { CurrentPublication.GetObjectsById(); //Cargo todos los controles con la publicación actual lblTipoPublicacion.Text = CurrentPublication.TipoPublicacion.Descripcion; lblDescripcion.Text = CurrentPublication.Descripcion; if (CurrentPublication.TipoPublicacion.Descripcion == "Subasta") { //Traigo el monto correspondiente. Si es compra inmediata el precio elegido, y si es subasta //la última oferta Oferta lastOffer = OfertaPersistance.GetLastOfertaByPublication(CurrentPublication.ID); if (lastOffer != null) { lblPrecio.Text = lastOffer.Monto.ToString(); } else { lblPrecio.Text = CurrentPublication.Precio.ToString(); } } else { lblPrecio.Text = CurrentPublication.Precio.ToString(); } lblStock.Text = CurrentPublication.Stock.ToString(); if (CurrentPublication.RecibirPreguntas) { //Cargo las preguntas y respuestas var questionAnswerDictionary = new Dictionary <int, PreguntaRespuesta>(); #region Get the dictionary of questions and answers List <PreguntaRespuesta> _questionanswers = PublicacionPersistance.GetQuestionsAndAnswersById(CurrentPublication.ID); questionAnswerDictionary = _questionanswers.ToDictionary(a => a.IdPregunta, a => a); #endregion var bind = questionAnswerDictionary.Values.Select(a => new { Pregunta = a.TextoPregunta, Respuesta = a.TextoRespuesta }); DgvPreguntasRespuestas.DataSource = bind.ToList(); DgvPreguntasRespuestas.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } else { lblPreguntasText.Visible = false; DgvPreguntasRespuestas.Visible = false; } }
private void UpdateFinishedAuctions() { List <Publicacion> list = PublicacionPersistance.GetFinishedAuctions(); foreach (Publicacion publication in list) { Oferta lastOffer = OfertaPersistance.GetLastOfertaByPublication(publication.ID); //Si tuvo al menos una oferta, genero la nueva compra correspondiente a esta subasta if (lastOffer != null) { var purchase = new Compra(); purchase.IdPublicacion = publication.ID; purchase.IdUsuario = lastOffer.IdUsuario; purchase.Fecha = lastOffer.Fecha; purchase.Cantidad = 1; CompraPersistance.Insert(purchase, null); } //Finalizo la publicacion publication.EstadoPublicacion = EstadoPublicacionPersistance.GetById(4); //finalizada PublicacionPersistance.Update(publication); } }
private void lblOfertar_Click(object sender, EventArgs e) { try { if (SessionManager.CurrentRol.Descripcion == "Administrador General") { throw new Exception("Siendo un administrador no puede comprar ni ofertar"); } List <PublicacionNotCalified> publications = CalificacionPersistance.GetAllPubicacionNotCalified(SessionManager.CurrentUser); if (publications.Count > 5) { throw new Exception("Tiene demasiadas compras sin calificar, por favor califíquelas para poder realizar una compra"); } //Valido que la oferta sea mayor a la última if (txtMonto.Text == "" || Int32.Parse(txtMonto.Text) <= Int32.Parse(lblPrecio.Text)) { throw new Exception("El monto a ofertar debe ser mayor que la oferta actual"); } //Creo la nueva oferta y la inserto Oferta newOffer = new Oferta(); newOffer.IdUsuario = SessionManager.CurrentUser.ID; newOffer.IdPublicacion = CurrentPublication.ID; newOffer.Fecha = ConfigurationVariables.FechaSistema; newOffer.Monto = Int32.Parse(txtMonto.Text); newOffer = OfertaPersistance.Insert(newOffer, null); MessageBox.Show("Se insertó la oferta correctamente"); RefreshSources(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void RefreshSources(List <Publicacion> publications) { ClearDataGridView(); var publicationsDictionary = new Dictionary <int, Publicacion>(); #region Get the dictionary of visibilities if (publications == null) { //El datasource debe contener a todos los registros de publicaciones activas _publications = PublicacionPersistance.GetAllActive(); if (_publications != null) { publicationsDictionary = _publications.ToDictionary(a => a.ID, a => a); } } else { //El datasource debe ser la lista de publicaciones recibida por parámetro publicationsDictionary = _publications.ToDictionary(a => a.ID, a => a); } #endregion #region Cargar publicaciones en la grilla var bind = publicationsDictionary.Values.Select(a => new { ID = a.ID, Descripcion = a.Descripcion, Inicio = a.FechaInicio, Vencimiento = a.FechaVencimiento, Stock = a.Stock, Precio = (OfertaPersistance.GetLastOfertaByPublication(a.ID) != null) ? OfertaPersistance.GetLastOfertaByPublication(a.ID).Monto: a.Precio, RecibirPreguntas = a.RecibirPreguntas, Tipo = a.TipoPublicacion.Descripcion, Visibilidad = a.Visibilidad.Descripcion, Rubros = a.GetTextRubros(), CalificacionVendedor = CalificacionPersistance.GetByUserId(a.UsuarioCreador) }); var bindlist = bind.ToList(); if (bindlist.Count - _offset > 10) { DgvPublicacion.DataSource = bindlist.GetRange(_offset, 10); //paginas de a 10 contenidos } else { DgvPublicacion.DataSource = bindlist.GetRange(_offset, bindlist.Count - _offset); } DgvPublicacion.Columns[9].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; AddButtonsColumns(); #endregion if (bindlist.Count < 10) //si tiene menos de 10 registros no debe paginar { lblFirst.Visible = false; lblPrevious.Visible = false; lblNext.Visible = false; lblLast.Visible = false; } //Cargo los rubros var rubros = RubroPersistance.GetAll(); LstRubro.DataSource = rubros; LstRubro.DisplayMember = "Descripcion"; LstRubro.ValueMember = "ID"; }
private void LblListo_Click(object sender, EventArgs e) { try { #region Validations var exceptionMessage = string.Empty; if (Auction) { if (TypesHelper.IsEmpty(TxtValorInicioSubasta.Text)) { exceptionMessage += Environment.NewLine + "El valor de inicio de la subasta no puede ser vacío."; } if (!TypesHelper.IsDecimal(TxtValorInicioSubasta.Text)) { exceptionMessage += Environment.NewLine + "El valor de inicio de la subasta debe ser decimal (o numérico)."; } } else { if (TypesHelper.IsEmpty(TxtPrecio.Text)) { exceptionMessage += Environment.NewLine + "El precio del articulo no puede ser vacío."; } if (!TypesHelper.IsDecimal(TxtPrecio.Text)) { exceptionMessage += Environment.NewLine + "El precio del articulo debe ser decimal (o numérico)."; } } if (TypesHelper.IsEmpty(TxtDescripcion.Text)) { exceptionMessage += Environment.NewLine + "La descripcion del articulo no puede ser vacío."; } if (TypesHelper.IsEmpty(TxtStock.Text)) { exceptionMessage += Environment.NewLine + "El stock del articulo no puede ser vacío."; } if (!TypesHelper.IsNumeric(TxtStock.Text)) { exceptionMessage += Environment.NewLine + "El stock del articulo debe ser numérico."; } if (LstRubro.CheckedItems.Count == 0) { exceptionMessage += Environment.NewLine + "Debe informar por lo menos un rubro."; } if (!TypesHelper.IsEmpty(exceptionMessage)) { throw new Exception(exceptionMessage); } #endregion if (insertMode) { #region Insert the new publication if (CboVisibilidad.Text == "Gratis" && CboEstadoPublicacion.Text == "Publicada") { var freePublicationsActive = PublicacionPersistance.GetAllActiveAndFreeByUser(SessionManager.CurrentUser.ID); if (freePublicationsActive > 2) { throw new Exception("No se puede generar la publicación, ya que cuenta con tres publicaciones activas con visibilidad 'Gratis'."); } } var publication = new Publicacion(); LoadObjectFromUIControls(publication); var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar la nueva publicacion?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { if (PublicacionPersistance.Insert(publication) == 1) { MessageBox.Show("Se inserto satisfactoriamente la nueva publicacion", "Atencion"); CompleteAction = true; Close(); } } #endregion } else { #region Update an existing publication #region Validations var messageExceptions = string.Empty; //Realizo la validación solo cuando cambió o el estado o el tipo de publicación if (CurrentPublication.EstadoPublicacion.Descripcion != CboEstadoPublicacion.Text || CurrentPublication.Visibilidad.Descripcion != CboVisibilidad.Text) { if (CboVisibilidad.Text == "Gratis" && CboEstadoPublicacion.Text == "Publicada") { var freePublicationsActive = PublicacionPersistance.GetAllActiveAndFreeByUser(SessionManager.CurrentUser.ID); if (freePublicationsActive > 2) { throw new Exception("No se puede generar la publicación, ya que cuenta con tres publicaciones activas con visibilidad 'Gratis'."); } } } if (CurrentPublication.EstadoPublicacion.Descripcion == "Publicada" && CboEstadoPublicacion.Text == "Borrador") { messageExceptions += "No se puede cambiar el estado de una publicacion 'Publicada' a 'Borrador'."; } if (CurrentPublication.EstadoPublicacion.Descripcion == "Publicada" && CurrentPublication.Stock > Convert.ToInt32(TxtStock.Text)) { messageExceptions += Environment.NewLine + "No se puede decrementar el stock de una publicacion en estado 'Publicada'."; } if (!TypesHelper.IsEmpty(messageExceptions)) { throw new Exception(messageExceptions); } #endregion var oldDescription = CurrentPublication.Descripcion; LoadObjectFromUIControls(CurrentPublication); var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere modificar la publicacion {0}?", oldDescription), "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { if (CboTipoPublicacion.Text == "Subasta" && CboEstadoPublicacion.Text == "Finalizada") { using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { if (PublicacionPersistance.Update(CurrentPublication, transaction) == 1) { var lastOffer = OfertaPersistance.GetLastOfertaByPublication(CurrentPublication.ID, transaction); //No tiene ofertas, no genero ningun registro en la tabla de compras if (lastOffer == null) { CommitTransaction(transaction); return; } var purchase = CompraPersistance.Insert(lastOffer.ConvertToPurchase(), transaction); //Commiteo la transaccion solo si pudo insertar la compra en la base de datos if (purchase.ID != 0) { CommitTransaction(transaction); return; } else { transaction.Rollback(); } } else { transaction.Rollback(); } } } else if (PublicacionPersistance.Update(CurrentPublication) == 1) { MessageBox.Show("Se modifico satisfactoriamente la publicacion", "Atencion"); CompleteAction = true; Close(); } } #endregion } } catch (Exception ex) { MessageBox.Show(ex.Message, "Atencion"); } }
private void LblBuscar_Click(object sender, EventArgs e) { try { #region Validations var filtersSetted = false; var exceptionMessage = string.Empty; if (!TypesHelper.IsEmpty(txtCodigo.Text)) { filtersSetted = true; if (!TypesHelper.IsNumeric(txtCodigo.Text)) { exceptionMessage += Environment.NewLine + "El código debe ser numérico."; } } if (!TypesHelper.IsEmpty(txtDesc.Text)) { filtersSetted = true; } if (!TypesHelper.IsEmpty(txtMonto.Text)) { filtersSetted = true; if (!TypesHelper.IsDecimal(txtMonto.Text)) { exceptionMessage += Environment.NewLine + "El precio de la publicacion ser decimal (o numérico)."; } } if (!TypesHelper.IsEmpty(txtFecha.Text)) { filtersSetted = true; } if (!TypesHelper.IsEmpty(txtGanada.Text)) { filtersSetted = true; } 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 var filters = new HistoryOfertaFilters { Codigo = (!TypesHelper.IsEmpty(txtCodigo.Text)) ? Convert.ToInt32(txtCodigo.Text) : (int?)null, Descripcion = (!TypesHelper.IsEmpty(txtDesc.Text)) ? txtDesc.Text : null, Monto = (!TypesHelper.IsEmpty(txtMonto.Text)) ? Convert.ToDouble(txtMonto.Text) : (double?)null, Fecha = (!TypesHelper.IsEmpty(txtFecha.Text)) ? txtFecha.Text : null, Ganada = (!TypesHelper.IsEmpty(txtGanada.Text)) ? txtGanada.Text : null }; var historyCompras = (cBExact.Checked) ? OfertaPersistance.GetAllOfertasByUsuarioByParameters(SessionManager.CurrentUser, filters) : OfertaPersistance.GetAllOfertasByUsuarioByParametersLike(SessionManager.CurrentUser, filters); if (historyCompras == null || historyCompras.Count == 0) { throw new Exception("No se encontraron ofertas según los filtros informados."); } RefreshSources(historyCompras); } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); ClearFiltersAndTable(); } }