/// <summary>
 /// Returns the view with Filters and Gridview
 /// </summary>
 /// <returns></returns>
 public ActionResult Listar()
 {
     var cat = new CategoriaController();
     var mar = new MarcaController();
     ViewBag.Categorias = cat.GetCategoriesSelectListItem(new CategoriaService().GetAll(), null).OrderBy(x => x.Text).ToList();
     ViewBag.Marca = mar.GetMarkSelectListItem(new MarcaService().GetAll(), null);
     return View("Listar");
 }
        /// <summary>
        /// Returns a view for a "New Product"
        /// </summary>
        /// <returns></returns>
        public ActionResult Novo()
        {
            //Instância das Controllers
            var marcaController = new MarcaController();
            var linhaController = new LinhaController();

            //Instância das Services
            var categoriaService = new CategoriaService();
            var aplicacaoService = new AplicacaoService();
            var idiomaService = new IdiomaService();
            var tipoService = new TipoProdutoService();
            
            //GetAll
            var getAllAplicacoes = aplicacaoService.GetAll();
            var getAllCategorias = categoriaService.GetCategoriesAddMasterCateg();



            var getAllIdiomas = idiomaService.GetAll();
            var getAllTipos = tipoService.GetAll();

            //Adicionando SelectListItens na ViewBag
            ViewBag.Marks = marcaController.GetMarkSelectListItem(new MarcaService().GetAll(), null);
            ViewBag.Lines =
                linhaController.GetLineSelectListItem(new LinhaService()
                                                          .GetAll(), null).OrderBy(x => x.Text).ToList();
            //ViewBag.Skins = tipoPeleController.GetSkinTypeSelectListItem(new TipoPeleService().GetAll(), null);
            ViewBag.Categories = GetProdCategoryListItem(getAllCategorias, null);
            ViewBag.Applications = GetProdAppListItem(getAllAplicacoes, null);
            ViewBag.Types = GetProdTypesListItem(getAllTipos, null);
            ViewBag.Idiomas = getAllIdiomas;
            
            //Adicionando valores selecionados na ViewBag - NULL pois é novo Registro
            ViewBag.selApplications = null;
            ViewBag.selCategories = null;
            ViewBag.selTypes = null;

            return View();
        }
        /// <summary>
        /// Returns a view to edit a product
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Editar(int id)
        {
            //Retorna o produto
            var produto = new ProdutoService().GetById(id);

            //Instância das Controllers
            var marcaController = new MarcaController();
            var linhaController = new LinhaController();
            var tipoPeleController = new TipoPeleController();

            //Instância das Services
            var categoriaService = new CategoriaService();
            var aplicacaoService = new AplicacaoService();
            var idiomaService = new IdiomaService();
            var produtoCategoriaService = new ProdutoCategoriaService();
            var produtoAplicacaoService = new ProdutoAplicacaoService();
            var produtoTipoService = new ProdutoTipoProdutoService();
            var tipoService = new TipoProdutoService();

            //GetAll
            var getAllAplicacoes = aplicacaoService.GetAll();
            var getAllCategorias = categoriaService.GetCategoriesAddMasterCateg();
            var getAllIdiomas = idiomaService.GetAll();
            var getAllTipos = tipoService.GetAll();

            //GetByProductId
            var getAllProdutoCategorias = produtoCategoriaService.GetRecords(x => x.IdProduto == produto.IdProduto);
            var getAllProdutoAplicacoes = produtoAplicacaoService.GetRecords(x => x.IdProduto == produto.IdProduto);
            var getAllProdutoTipos = produtoTipoService.GetRecords(x => x.IdProduto == produto.IdProduto);
            
            //Adicionando SelectListItens na ViewBag
            ViewBag.Marks = marcaController.GetMarkSelectListItem(new MarcaService().GetAll(), null);
            ViewBag.Lines = linhaController.GetLineSelectListItem(new LinhaService().GetAll(), null);
            ViewBag.Skins = tipoPeleController.GetSkinTypeSelectListItem(new TipoPeleService().GetAll(), null);
            ViewBag.Categories = GetProdCategoryListItem(getAllCategorias, null);
            ViewBag.Applications = GetProdAppListItem(getAllAplicacoes, produto.IdProduto);
            ViewBag.Types = GetProdTypesListItem(getAllTipos, null);
            ViewBag.Idiomas = getAllIdiomas;

            //Adicionando valores selecionados na ViewBag
            ViewBag.selApplications = CreateApplicationsSelectedList(getAllAplicacoes,
                                                                     getAllProdutoAplicacoes);

            ViewBag.selCategories = CreateCategoriesSelectedList(getAllCategorias,
                                                                 getAllProdutoCategorias);

            ViewBag.selTypes = CreateTypesSelectedList(getAllTipos,
                                                     getAllProdutoTipos);

            return View(produto);
        }