public FrmGenerarPublicacion(Publicacion publication) { InitializeComponent(); //Trabaja en modo alta cuando se le pasa NULL como parametro insertMode = publication == null; if (!insertMode) CurrentPublication = publication; }
public static int InsertByPublication(Publicacion publication, SqlTransaction transaction) { var regsAffected = 0; foreach (var rubro in publication.Rubros) { var param = new List<SPParameter> { new SPParameter("ID_Rubro", rubro.ID), new SPParameter("ID_Publicacion", publication.ID) }; var sp = (transaction != null) ? new StoreProcedure(DataBaseConst.Rubro.SPInsertRubroByPublicacion, param, transaction) : new StoreProcedure(DataBaseConst.Rubro.SPInsertRubroByPublicacion, param); regsAffected += sp.ExecuteNonQuery(transaction); } return regsAffected; }
public void GetObjectsById() { Factura = FacturaPersistance.GetById(_idFactura); Publicacion = PublicacionPersistance.GetById(_idPublicacion); }
public static int Update(Publicacion publication, SqlTransaction transaction) { var param = new List<SPParameter> { new SPParameter("ID_Publicacion", publication.ID), new SPParameter("ID_Tipo_Publicacion", publication.TipoPublicacion.ID), new SPParameter("Descripcion", publication.Descripcion), new SPParameter("Stock", publication.Stock), new SPParameter("Precio", publication.Precio), new SPParameter("ID_Visibilidad", publication.Visibilidad.ID), new SPParameter("ID_Estado_Publicacion", publication.EstadoPublicacion.ID), new SPParameter("Permitir_Preguntas", publication.RecibirPreguntas) }; var sp = (transaction != null) ? new StoreProcedure(DataBaseConst.Publicacion.SPUpdate, param, transaction) : new StoreProcedure(DataBaseConst.Publicacion.SPUpdate, param); return sp.ExecuteNonQuery(transaction); }
public static int Update(Publicacion publication) { /* Lo tengo que hacer transaccionado ya que no quiero que pueda llegar a quedar un rol insertado sin las funcionalidades asociadas debido a un error */ using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { try { Update(publication, transaction); if (RubroPersistance.DeleteByPublication(publication, transaction) > 0) { if (RubroPersistance.InsertByPublication(publication, transaction) > 0) { //La unica forma que se realice la transaction: borro todas los rubros viejos e inserto los nuevos transaction.Commit(); return 1; } else { //Tuvo que haber insertado por lo menos uno, sino es un error transaction.Rollback(); return 0; } } else { //Tuvo que haber insertado por lo menos uno, sino es un error transaction.Rollback(); return 0; } } catch (Exception) { transaction.Rollback(); throw new Exception("Se produjo un error durante la modificacion de la publicacion"); } } }
public static Publicacion Insert(Publicacion publication, SqlTransaction transaction) { var param = new List<SPParameter> { new SPParameter("ID_Tipo_Publicacion", publication.TipoPublicacion.ID), new SPParameter("Descripcion", publication.Descripcion), new SPParameter("ID_Usuario", publication.UsuarioCreador.ID), new SPParameter("Stock", publication.Stock), new SPParameter("Fecha_Inicio", publication.FechaInicio), new SPParameter("Fecha_Vencimiento", publication.FechaVencimiento), new SPParameter("Precio", publication.Precio), new SPParameter("ID_Visibilidad", publication.Visibilidad.ID), new SPParameter("ID_Estado_Publicacion", publication.EstadoPublicacion.ID), new SPParameter("Permitir_Preguntas", publication.RecibirPreguntas) }; var sp = (transaction != null) ? new StoreProcedure(DataBaseConst.Publicacion.SPInsert, param, transaction) : new StoreProcedure(DataBaseConst.Publicacion.SPInsert, param); publication.ID = Convert.ToInt32(sp.ExecuteScalar(transaction)); return publication; }
public static int Insert(Publicacion publication) { //Tiene que insertar en la tabla TL_Publicacion, TL_Rubro_Publicacion using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { try { publication = Insert(publication, transaction); var categoriesAdded = RubroPersistance.InsertByPublication(publication, transaction); if (categoriesAdded > 0) { transaction.Commit(); return 1; } transaction.Rollback(); return 0; } catch (Exception) { transaction.Rollback(); throw new Exception("Se produjo un error durante la insercion de la publicacion"); } } }
private void LoadObjectFromUIControls(Publicacion publication) { publication.Descripcion = TxtDescripcion.Text; publication.Stock = Convert.ToInt32(TxtStock.Text); publication.TipoPublicacion = ((TipoPublicacion)CboTipoPublicacion.SelectedItem); publication.EstadoPublicacion = ((EstadoPublicacion)CboEstadoPublicacion.SelectedItem); publication.Precio = (Auction) ? Convert.ToDouble(TxtValorInicioSubasta.Text) : Convert.ToDouble(TxtPrecio.Text); publication.RecibirPreguntas = ChkRecibirPreguntas.Checked; publication.Visibilidad = ((Visibilidad)CboVisibilidad.SelectedItem); publication.FechaInicio = ConfigurationVariables.FechaSistema; publication.FechaVencimiento = ConfigurationVariables.FechaSistema.AddDays(publication.Visibilidad.Duracion); publication.UsuarioCreador = SessionManager.CurrentUser; publication.Rubros = new List<Rubro>(); foreach (var checkedItem in LstRubro.CheckedItems) { var category = (Rubro)checkedItem; publication.Rubros.Add(category); } }
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"); } }
public FrmPreguntar(Publicacion unaPublicacion) { InitializeComponent(); CurrentPublication = unaPublicacion; }