public Int32 UltimoID()
        {
            Dato.Modelo.Producto _entidadToIDAdd = db.ProductoSet.ToList().LastOrDefault();
            Int32 _id = _entidadToIDAdd.ID;

            return(_id);
        }
        public Boolean Create(EntidadNegocio.Entidades.Producto _producto)
        {
            Dato.Modelo.Producto productoToAdd = new Dato.Modelo.Producto(); Boolean resul = false;
            String IDTipo = ""; String IDMarca = ""; String IDModelo = ""; String IDCategoria = "";

            productoToAdd.ID          = _producto.ID;
            productoToAdd.Codigo      = _producto.Codigo;
            productoToAdd.Descripcion = _producto.Descripcion;
            if (_producto.Status == EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo)
            {
                productoToAdd.Estatus = 1;
            }
            else
            {
                productoToAdd.Estatus = 0;
            }

            Int32 iIDTipo = _producto.IDTipo;

            if (iIDTipo == 0)
            {
                TipoController ctrlTipo = new TipoController();
                iIDTipo = ctrlTipo.UltimoID();
            }
            else
            {
                iIDTipo = _producto.IDTipo;
            }
            productoToAdd.IDTipo = iIDTipo;
            IDTipo = iIDTipo.ToString();

            Int32 iIDMarca = _producto.IDMarca;

            productoToAdd.IDMarca = iIDMarca;
            IDMarca = iIDMarca.ToString();

            Int32 iIDModelo = _producto.IDModelo;

            productoToAdd.IDModelo = iIDModelo;
            IDModelo = iIDModelo.ToString();

            Int32 iIDCategoria = _producto.IDCategoria;

            productoToAdd.IDCategoria = iIDCategoria;
            IDCategoria = iIDCategoria.ToString();

            if (!String.IsNullOrEmpty(IDTipo))
            {
                productoToAdd.Tipo = db.TipoSet.FirstOrDefault(c => c.ID == iIDTipo);
            }

            if (productoToAdd.Tipo == null)
            {
                MessageBox.Show(String.Format("El número de IDTipo {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (!String.IsNullOrEmpty(IDMarca))
            {
                productoToAdd.Marca = db.MarcaSet.FirstOrDefault(c => c.ID == iIDMarca);
            }

            if (productoToAdd.Marca == null)
            {
                MessageBox.Show(String.Format("El número de IDMarca {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (!String.IsNullOrEmpty(IDModelo))
            {
                productoToAdd.Modelo = db.ModeloSet.FirstOrDefault(c => c.ID == iIDModelo);
            }

            if (productoToAdd.Modelo == null)
            {
                MessageBox.Show(String.Format("El número de IDModelo {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (!String.IsNullOrEmpty(IDCategoria))
            {
                productoToAdd.Categoria = db.CategoriaSet.FirstOrDefault(c => c.ID == iIDCategoria);
            }

            if (productoToAdd.Categoria == null)
            {
                MessageBox.Show(String.Format("El número de IDCategoria {0} no está registrado en la base de datos."), EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            //valido claves primaria
            if (db.ProductoSet.FirstOrDefault(b => b.ID == productoToAdd.ID) != null)
            {
                MessageBox.Show(EntidadNegocio.Entidades.Mensajes.Info_ErrorAlGuardarViolacionPK, EntidadNegocio.Entidades.Mensajes.Titulo_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (db.Connection.State != System.Data.ConnectionState.Open)
                {
                    db.Connection.Open();
                }

                DbTransaction dbTransaction = db.Connection.BeginTransaction();

                try
                {
                    // Guardar y confirmo.
                    db.AddToProductoSet(productoToAdd);
                    db.SaveChanges();
                    dbTransaction.Commit();
                    /// Si la transaccion es exitosa enviamos true
                    Dato.Modelo.Producto _entidadToIDAdd = db.ProductoSet.ToList().LastOrDefault();
                    Int32 _id = _entidadToIDAdd.ID;
                    _entidadToIDAdd.ID = _id;
                    resul = true;
                }
                catch (Exception ex)
                {
                    dbTransaction.Rollback();
                    HandleException excepcion = new HandleException();
                    String          msjLog    = "Error en " + ObtenerMetodoEnEjecucion(false).ToString() + ".\n" + excepcion.RegistrarExcepcion(ex, ObtenerMetodoEnEjecucion(false).ToString());
                    excepcion.EscribirLogExcepcion(msjLog); String clientMessage = excepcion.HandleExceptionEx(ex); excepcion = null;
                    resul = false;
                }
            }

            return(resul);
        }
        public EntidadNegocio.Entidades.Producto Details(int id)
        {
            Dato.Modelo.Producto _productoDetail = new Dato.Modelo.Producto();
            if (id == 0)
            {
                _productoDetail = new Dato.Modelo.Producto();
            }
            else
            {
                _productoDetail = db.ProductoSet.First(p => p.ID == id);
                _productoDetail.TipoLoad();
                _productoDetail.MarcaLoad();
                _productoDetail.ModeloLoad();
                _productoDetail.CategoriaLoad();
            }
            EntidadNegocio.Entidades.Producto productoDetail = new EntidadNegocio.Entidades.Producto();

            productoDetail.ID = _productoDetail.ID;

            productoDetail.Tipo             = new EntidadNegocio.Entidades.Tipo();
            productoDetail.Tipo.ID          = _productoDetail.IDTipo;
            productoDetail.IDTipo           = _productoDetail.IDTipo;
            productoDetail.Tipo.Codigo      = _productoDetail.Tipo.Codigo;
            productoDetail.Tipo.Descripcion = _productoDetail.Tipo.Descripcion;
            if (_productoDetail.Tipo.Estatus == 1)
            {
                productoDetail.Tipo.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo;
            }
            else
            {
                productoDetail.Tipo.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Inactivo;
            }
            productoDetail.Tipo.Edicion = EntidadNegocio.Enumerados.EnumEstatus.Edicion.Normal;

            productoDetail.Codigo      = _productoDetail.Codigo;
            productoDetail.Descripcion = _productoDetail.Descripcion;

            productoDetail.Marca             = new EntidadNegocio.Entidades.Marca();
            productoDetail.IDMarca           = _productoDetail.IDMarca;
            productoDetail.Marca.ID          = _productoDetail.IDMarca;
            productoDetail.Marca.Codigo      = _productoDetail.Marca.Codigo;
            productoDetail.Marca.Descripcion = _productoDetail.Marca.Descripcion;
            if (_productoDetail.Marca.Estatus == 1)
            {
                productoDetail.Marca.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo;
            }
            else
            {
                productoDetail.Marca.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Inactivo;
            }
            productoDetail.Marca.Edicion = EntidadNegocio.Enumerados.EnumEstatus.Edicion.Normal;

            productoDetail.Modelo             = new EntidadNegocio.Entidades.Modelo();
            productoDetail.IDModelo           = _productoDetail.IDModelo;
            productoDetail.Modelo.ID          = _productoDetail.IDModelo;
            productoDetail.Modelo.Codigo      = _productoDetail.Modelo.Codigo;
            productoDetail.Modelo.Descripcion = _productoDetail.Modelo.Descripcion;
            if (_productoDetail.Modelo.Estatus == 1)
            {
                productoDetail.Modelo.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo;
            }
            else
            {
                productoDetail.Modelo.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Inactivo;
            }
            productoDetail.Modelo.Edicion = EntidadNegocio.Enumerados.EnumEstatus.Edicion.Normal;

            productoDetail.Categoria             = new EntidadNegocio.Entidades.Categoria();
            productoDetail.IDCategoria           = _productoDetail.IDCategoria;
            productoDetail.Categoria.ID          = _productoDetail.IDCategoria;
            productoDetail.Categoria.Codigo      = _productoDetail.Categoria.Codigo;
            productoDetail.Categoria.Descripcion = _productoDetail.Categoria.Descripcion;
            if (_productoDetail.Categoria.Estatus == 1)
            {
                productoDetail.Categoria.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo;
            }
            else
            {
                productoDetail.Categoria.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Inactivo;
            }
            productoDetail.Categoria.Edicion = EntidadNegocio.Enumerados.EnumEstatus.Edicion.Normal;

            if (_productoDetail.Estatus == 1)
            {
                productoDetail.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Activo;
            }
            else
            {
                productoDetail.Status = EntidadNegocio.Enumerados.EnumEstatus.Registro.Inactivo;
            }
            productoDetail.Edicion = EntidadNegocio.Enumerados.EnumEstatus.Edicion.Normal;

            return(productoDetail);
        }