private void btnAgregar_Click(object sender, EventArgs e)
 {
     if (!string.IsNullOrEmpty(txtDescripción.Text))
     {
         if (lstUnidadMedida.Items.Count > 0)
         {
             _product = new ProductModel
             {
                 Id = Guid.NewGuid(),
                 Description = txtDescripción.Text,
                 IdUnit = (Guid)lstUnidadMedida.SelectedValue,
                 DescriptionUnit = lstUnidadMedida.Text,
                 FreeProduct = checkBox1.Checked
             };
             dtgProducto.DataSource = _productData.SaveProduct(_product);
         }
         else
         {
             btnAgregar.Enabled = false;
             MessageBox.Show("Error - revise la configuración del sistema");
         }
     }
     else {
         MessageBox.Show("No ha ingresado ningún dato en la descripción del producto");
     }
     _product = new ProductModel();
 }
 public List<ProductModel> GetProduct(ProductModel product)
 {
     try
     {
         using (FacturandoEntities context = new FacturandoEntities())
         {
             return context.Product
                 .Where(x => x.Description.ToLower()
                 .Contains(product.Description.ToLower()))
                 .Select(x => new ProductModel
                 {
                     Id = x.Id,
                     Description = x.Description,
                     IdUnit = x.IdUnit.Value,
                     DescriptionUnit = x.UnitMeasure.Description,
                     FreeProduct = x.Free == null ? false : x.Free.Value
                 })
                 .ToList();
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 private void dtgProducto_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
 {
     _product = (ProductModel)(((List<ProductModel>)dtgProducto.DataSource))[e.RowIndex];
     txtDescripción.Text = _product.Description;
     lstUnidadMedida.SelectedValue = _product.IdUnit;
     checkBox1.Checked = _product.FreeProduct;
 }
 public List<ProductModel> SaveProduct(ProductModel product)
 {
     try
     {
         List<ProductModel> result = new List<ProductModel>();
         using (FacturandoEntities context = new FacturandoEntities())
         {
             var productTemp = context.Product.Where(x => x.Id == product.Id).FirstOrDefault();
             if (productTemp == null)
             {
                 context.Product.Add(new Product
                 {
                     Id = product.Id,
                     Description = product.Description,
                     IdUnit = product.IdUnit,
                     Free = product.FreeProduct                            
                 });
             }
             else
             {
                 productTemp.Description = product.Description;
                 productTemp.IdUnit = product.IdUnit;
                 productTemp.Free = product.FreeProduct;
             }
             context.SaveChanges();
             result.Add(product);
             return result;
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 private void btnEditar_Click(object sender, EventArgs e)
 {
     if (_product.Id == Guid.Empty)
     {
         MessageBox.Show("No ha seleccionado un producto para editar");
     }
     else
     {
         _product.Description = txtDescripción.Text;
         _product.IdUnit = (Guid)lstUnidadMedida.SelectedValue;
         _product.DescriptionUnit = lstUnidadMedida.Text;
         _product.FreeProduct = checkBox1.Checked;
         dtgProducto.DataSource = _productData.SaveProduct(_product);
     }
     _product = new ProductModel();
 }