예제 #1
0
        public static Compra Insert(Compra purchase, SqlTransaction transaction)
        {
            var param = new List<SPParameter>
                {
                    new SPParameter("ID_Publicacion", (purchase.Publicacion != null) ? purchase.Publicacion.ID : purchase.IdPublicacion),
                    new SPParameter("ID_Usuario", (purchase.Usuario != null) ? purchase.Usuario.ID : purchase.IdUsuario),
                    new SPParameter("Compra_Fecha", purchase.Fecha),
                    new SPParameter("Compra_Cantidad", purchase.Cantidad)
                };

            var sp = (transaction != null)
                        ? new StoreProcedure(DataBaseConst.Compra.SPInsertPurchase, param, transaction)
                        : new StoreProcedure(DataBaseConst.Compra.SPInsertPurchase, param);

            purchase.ID = (int)sp.ExecuteScalar(transaction);

            return purchase;
        }
        private void LblComprar_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 ingrese una cantidad válida (mayor a 0 y menor que el stock)
                if (txtCantidad.Text == "" || Int32.Parse(txtCantidad.Text) < 0 || Int32.Parse(txtCantidad.Text) > Int32.Parse(lblStock.Text))
                    throw new Exception("Ingrese una cantidad válida (mayor a 0 y menor que el stock actual)");

                //Creo la nueva compra y la inserto
                Compra newPurchase = new Compra();
                newPurchase.Usuario = SessionManager.CurrentUser;
                newPurchase.Publicacion = CurrentPublication;
                newPurchase.Fecha = ConfigurationVariables.FechaSistema;
                newPurchase.Cantidad = Int32.Parse(txtCantidad.Text);
                newPurchase = CompraPersistance.Insert(newPurchase, null);

                //Resto el stock de la publicación
                CurrentPublication.Stock = CurrentPublication.Stock - newPurchase.Cantidad;
                if (CurrentPublication.Stock == 0)
                    CurrentPublication.EstadoPublicacion = EstadoPublicacionPersistance.GetById(4); //finalizada
                PublicacionPersistance.Update(CurrentPublication);

                //Le muestro al usuario los datos del vendedor
                var frmDatosVendedor = new FrmDatosVendedor(CurrentPublication.UsuarioCreador);
                frmDatosVendedor.ShowDialog();

                RefreshSources();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        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);
            }
        }