private void btnAceptar_Click(object sender, EventArgs e) { Review analisis = new Review(); if (lstProductos.SelectedIndex == -1) { MessageBox.Show("Favor seleccionar un producto antes de guardar el análisis.", "Información"); } else { try { analisis.productId = Producto.CodigoProducto(lstProductos.SelectedItem.ToString()); analisis.reviewerName = txtNombre.Text.ToString(); analisis.emailAddress = txtEmail.Text.ToString(); analisis.rating = int.Parse(txtValor.Text.ToString()); analisis.comments = txtComentarios.Text.ToString(); analisis.reviewDate = DateTime.Now; analisis.modifiedDate = DateTime.Now; if (analisis.rating > 5 || analisis.rating < 0) { throw new CustomException("El rango permitido para la valoración está entre 0 y 5"); } else if (Review.InsertarReview(analisis)) { MessageBox.Show("¡Su análisis ha sido registrado con éxito!", "Información"); } else { throw new CustomException("Hubo un error al momento de ingresar su análisis..."); } } catch(FormatException) { MessageBox.Show("Sólo se permiten valores en el rango entre 0 y 5", "Información"); } catch (CustomException ex) { MessageBox.Show(ex.Message, "Información"); } } }
public static bool InsertarReview(Review review) { SqlConnection conn = new SqlConnection(@"server = .\sqlexpress; integrated security = true; database = AdventureWorks2014"); string sql; sql = "Insert into Production.ProductReview (ProductId, ReviewerName, ReviewDate, EmailAddress, Rating, Comments, ModifiedDate) Values (@productId, @name, @reviewDate, @email, @rating, @comments, @modifiedDate)"; SqlCommand cmd = new SqlCommand(sql, conn); try { conn.Open(); if (!new EmailAddressAttribute().IsValid(review.emailAddress)) throw new CustomException("¡Dirección de correo no válida! Favor verifique.", "Información"); using (cmd) { cmd.Parameters.Add("@productId", SqlDbType.Int).Value = review.productId; cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = review.reviewerName; cmd.Parameters.Add("@reviewDate", SqlDbType.DateTime).Value = review.reviewDate; cmd.Parameters.Add("@email", SqlDbType.NVarChar, 50).Value = review.emailAddress; cmd.Parameters.Add("@rating", SqlDbType.Int).Value = review.rating; cmd.Parameters.Add("@comments", SqlDbType.NVarChar, 3850).Value = review.comments; cmd.Parameters.Add("@modifiedDate", SqlDbType.DateTime).Value = review.modifiedDate; cmd.ExecuteNonQuery(); } return true; } catch (CustomException ex) { throw ex; } finally { conn.Close(); } }