Exemple #1
0
     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
                    }
         };
     }
 }
Exemple #2
0
        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";
        }
Exemple #7
0
        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");
            }
        }
Exemple #8
0
        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();
            }
        }