public IActionResult Consultar(Int32?ProductoId)
        {
            ResponseModel responseModel = new ResponseModel();

            try
            {
                if (ProductoId == null || ProductoId <= 0)
                {
                    responseModel.Codigo  = CodeEN.Warning;
                    responseModel.Mensaje = "Datos inválidos";

                    return(BadRequest(responseModel));
                }

                ProductoBL productoBL = new ProductoBL();

                List <ProductoAux> lstProductoAuxes = productoBL.Consultar(ProductoId.GetValueOrDefault());


                List <Genero> Generos = new List <Genero>();

                Producto producto = new Producto();
                producto.Requisitos = new List <Requisito>();
                producto.Fotos      = new List <ProductoFoto>();
                producto.Portada    = new ProductoFoto();

                if (lstProductoAuxes != null)
                {
                    if (lstProductoAuxes.Count > 0)
                    {
                        lstProductoAuxes.ForEach(productoAux =>
                        {
                            producto.ProductoId       = productoAux.ProductoId;
                            producto.Nombre           = productoAux.Nombre;
                            producto.DescripcionCorta = productoAux.DescripcionCorta;
                            producto.DescripcionLarga = productoAux.DescripcionLarga;
                            producto.FechaLanzamiento = productoAux.FechaLanzamiento;
                            producto.Compania         = productoAux.Compania;
                            producto.Precio           = productoAux.Precio;
                            producto.EdadMinima       = productoAux.EdadMinima;

                            if (Generos.Count > 0)
                            {
                                if (!Generos.Exists(x => x.GeneroId == productoAux.Genero.GeneroId))
                                {
                                    Generos.Add(productoAux.Genero);
                                }
                            }
                            else
                            {
                                Generos.Add(productoAux.Genero);
                            }

                            if (producto.Requisitos.Count > 0)
                            {
                                if (!producto.Requisitos.Exists(x => x.RequisitoId == productoAux.Requisito.RequisitoId))
                                {
                                    producto.Requisitos.Add(productoAux.Requisito);
                                }
                            }
                            else
                            {
                                producto.Requisitos.Add(productoAux.Requisito);
                            }

                            if (producto.Fotos.Count > 0)
                            {
                                if ((!producto.Fotos.Exists(x => x.ProductoFotoId == productoAux.ProductoFoto.ProductoFotoId)) && productoAux.ProductoFoto.Tipo != "2")
                                {
                                    producto.Fotos.Add(productoAux.ProductoFoto);
                                }
                            }
                            else
                            {
                                if (productoAux.ProductoFoto.Tipo != "2")
                                {
                                    producto.Fotos.Add(productoAux.ProductoFoto);
                                }
                            }

                            if (productoAux.ProductoFoto.Tipo == "2")
                            {
                                producto.Portada = productoAux.ProductoFoto;
                            }
                        });
                    }

                    producto.Generos = Generos.Select(x => x.Nombre).ToList().Aggregate((i, j) => i + "," + j);

                    responseModel.Codigo  = CodeEN.Success;
                    responseModel.Mensaje = "Se consulta la información del producto de manera satisfactoria";
                    responseModel.Data    = producto;

                    return(Ok(responseModel));
                }
                else
                {
                    responseModel.Codigo  = CodeEN.Error;
                    responseModel.Mensaje = "No se pudo obtener la información del producto";

                    return(StatusCode(StatusCodes.Status500InternalServerError, responseModel));
                }
            }
            catch (Exception ex)
            {
                responseModel.Codigo  = CodeEN.Exception;
                responseModel.Mensaje = "Ocurrió una excepción";

                return(StatusCode(StatusCodes.Status500InternalServerError, responseModel));
            }
        }