public ActionResult Produto(MercadoriaViewModel mercadoriaViewModel, FormCollection form) { var mercadoria = repositorioDeMercadorias.Obter(mercadoriaViewModel.Id); var merViewModel = Mapper.Map<Mercadoria, MercadoriaViewModel>(mercadoria); var tamDisponiveis = merViewModel.TamanhosDisponiveis(); if ((tamDisponiveis.Count > 1) && (form["TamanhoEscolhido"] == "nenhum")) { ViewBag.FalhouTamanho = true; ViewData[MercadoriasViewModel.Mercadorias] = new MercadoriasViewModel(repositorioDeCategorias.ObterTodos()); return View(merViewModel); } var tamanhoEscolhido = string.Empty; if (tamDisponiveis.Count == 1) tamanhoEscolhido = tamDisponiveis[0]; else { for (int i = 0; i < tamDisponiveis.Count; i++) { var tam = "tamanho" + i; if (tam != form["TamanhoEscolhido"]) continue; tamanhoEscolhido = tamDisponiveis[i]; break; } } var produto = mercadoria.Produtos.FirstOrDefault(prod => prod.Tamanho == tamanhoEscolhido); return RedirectToAction("AdicionarProduto", "Carrinho", produto); }
public ActionResult Adicionar(MercadoriaViewModel mercadoriaViewModel, FormCollection form, HttpPostedFileBase file) { if (form[MercadoriasViewModel.CategoriasSelecionadas] != null) { var ids = form[MercadoriasViewModel.CategoriasSelecionadas].Split(','); mercadoriaViewModel.Categorias = new List<Categoria>(); foreach (var id in ids) { mercadoriaViewModel.Categorias.Add(repositorioDeCategorias.Obter(Guid.Parse(id))); } } if (mercadoriaViewModel.QuantidadeDeTamanhos != null) { mercadoriaViewModel.Tamanhos = new List<KeyValuePair<string, string>>((int)mercadoriaViewModel.QuantidadeDeTamanhos); for (int i = 0; i < mercadoriaViewModel.QuantidadeDeTamanhos; i++) { if ((form["tamanho" + (i + 1)] != null) && (form["quantidadeTamanho" + (i + 1)] != null)) { mercadoriaViewModel.Tamanhos.Add(new KeyValuePair<string, string>(form["tamanho" + (i + 1)], form["quantidadeTamanho" + (i + 1) ])); } } } mercadoriaViewModel.Arquivos = new List<HttpPostedFileWrapper>(); for (int i = 0; i < Request.Files.Count; i++) { var imagem = Request.Files[i] as HttpPostedFileWrapper; if ((imagem != null) && (imagem.ContentLength > 0)) { mercadoriaViewModel.Arquivos.Add(imagem); } } mercadoriaViewModel.Imagens.AddRange(FabricaDeImagem.Instancia().CriarImagens(mercadoriaViewModel.Arquivos)); for (int i = 0; i < MercadoriasViewModel.NumeroDeFotosPermitidas; i++) { var imagem = "imagem" + i; var nomeImagem = imagem + "Nome"; var conteudoImagem = imagem + "Conteudo"; var tamanhoImagem = imagem + "Tamanho"; var formatoImagem = imagem + "Formato"; if ((form[imagem] != null) && (form[imagem] != string.Empty)) { mercadoriaViewModel.Imagens.Add(FabricaDeImagem.Instancia().CriarImagem(form[nomeImagem], form[formatoImagem], form[conteudoImagem], form[tamanhoImagem])); } } if ((mercadoriaViewModel.Categorias == null) || (mercadoriaViewModel.Categorias.Count == 0)) ModelState.AddModelError("Cat", "* É necessário selecionar pelo menos uma Categoria."); if ((mercadoriaViewModel.Cores == null) || (mercadoriaViewModel.Cores.Count == 0)) ModelState.AddModelError("Cor", "* É necessário selecionar pelo menos uma Cor."); foreach (var tamanho in mercadoriaViewModel.Tamanhos) { int quantidade; try { quantidade = Convert.ToInt32(tamanho.Value); } catch { ModelState.AddModelError("Tamanho", "* A quantidade especificada para o tamanho " + tamanho.Key + " é inválida."); continue; } if (quantidade < 0) ModelState.AddModelError("Tamanho", "* A quantidade especificada para o tamanho " + tamanho.Key + " deve ser maior que zero."); } if (mercadoriaViewModel.Imagens.Count == 0) ModelState.AddModelError("Foto", "* É necessário carregar pelo menos uma Foto."); if (!ModelState.IsValid) { ViewData[MercadoriasViewModel.Mercadorias] = new MercadoriasViewModel(repositorioDeCategorias.ObterTodos()); return View(mercadoriaViewModel); } var mercadoria = Mapper.Map<MercadoriaViewModel, Mercadoria>(mercadoriaViewModel); FabricaDeMercadoria.Instancia() .CriarMercadoria(mercadoria, mercadoriaViewModel.Tamanhos, mercadoriaViewModel.Arquivos); bool adicionado = false; for (int i = 0; i < mercadoriaViewModel.Categorias.Count; i++) { var categoria = repositorioDeCategorias.Obter(mercadoriaViewModel.Categorias[i].Id); categoria.AdicionarMercadoria(mercadoria); if (repositorioDeCategorias.Editar(categoria)) adicionado = true; else { adicionado = false; break; } } if (adicionado) return RedirectToAction("Listar"); ViewBag.Errou = true; ViewBag.Mensagem = "Não foi possível cadastrar a Mercadoria. Por favor informe ao administrador do sistema."; ViewData[MercadoriasViewModel.Mercadorias] = new MercadoriasViewModel(repositorioDeCategorias.ObterTodos()); return View(mercadoriaViewModel); }
public ActionResult Adicionar() { ViewData[MercadoriasViewModel.Mercadorias] = new MercadoriasViewModel(repositorioDeCategorias.ObterTodos()); MercadoriaViewModel mercadoriaViewModel = new MercadoriaViewModel(); return View(mercadoriaViewModel); }