public ActionResult Index([Bind(Include = "Tipo, ServicosSelecionados, ISS, PIS, COFINS, ValorISS, ValorPIS, ValorCOFINS, ModeloId, OportunidadeId")] ImpostosExcecaoViewModel viewModel) { var servicosSelecionados = (viewModel?.ServicosSelecionados is int[] servicosArr && servicosArr.Length > 0); if (!servicosSelecionados) { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Nenhum serviço foi selecionado"); ObterServicos(viewModel); return(View(viewModel)); } if (viewModel.Tipo == TiposExcecoesImpostos.ImpostoDiferenciado) { if (viewModel.ValorISS.ToDecimal() == 0 && viewModel.ValorPIS.ToDecimal() == 0 && viewModel.ValorCOFINS.ToDecimal() == 0) { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Pelo menos um valor de imposto deverá ser informado"); ObterServicos(viewModel); foreach (var servico in viewModel.Servicos) { servico.Selecionado = viewModel.ServicosSelecionados.Any(c => c == servico.ServicoId); } return(View(viewModel)); } } else { if (viewModel.ISS == false && viewModel.PIS == false && viewModel.COFINS == false) { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Pelo menos um valor de imposto deverá ser marcado"); ObterServicos(viewModel); foreach (var servico in viewModel.Servicos) { servico.Selecionado = viewModel.ServicosSelecionados.Any(c => c == servico.ServicoId); } return(View(viewModel)); } } if (ModelState.IsValid) { var model = new ImpostosExcecaoDTO { ModeloId = viewModel.ModeloId, OportunidadeId = viewModel.OportunidadeId, Tipo = viewModel.Tipo, ISS = viewModel.ISS, PIS = viewModel.PIS, COFINS = viewModel.COFINS, ValorISS = viewModel.ValorISS.ToDecimal(), ValorPIS = viewModel.ValorPIS.ToDecimal(), ValorCOFINS = viewModel.ValorCOFINS.ToDecimal(), ServicosSelecionados = viewModel.ServicosSelecionados }; _impostosExcecaoRepositorio.GravarServicos(model); return(RedirectToAction(nameof(Index), new { viewModel.ModeloId, viewModel.OportunidadeId })); } ObterServicos(viewModel); return(View(viewModel)); }
private void ObterServicos(ImpostosExcecaoViewModel viewModel) { viewModel.Servicos = _impostosExcecaoRepositorio.ObterServicos(viewModel.ModeloId, viewModel.OportunidadeId); }