public IActionResult Certidao_Isencao(CertidaoViewModel model) { int _codigo = 0; int _numero = tributarioRepository.Retorna_Codigo_Certidao(Functions.TipoCertidao.Isencao); bool _existeCod = false; string _numero_processo = ""; CertidaoViewModel certidaoViewModel = new CertidaoViewModel(); ViewBag.Result = ""; if (model.Inscricao != null) { _codigo = Convert.ToInt32(model.Inscricao); if (_codigo < 100000) { _existeCod = _imovelRepository.Existe_Imovel(_codigo); } } if (!Captcha.ValidateCaptchaCode(model.CaptchaCode, HttpContext)) { ViewBag.Result = "Código de verificação inválido."; return(View(certidaoViewModel)); } if (!_existeCod) { ViewBag.Result = "Imóvel não cadastrado."; return(View(certidaoViewModel)); } decimal SomaArea = _imovelRepository.Soma_Area(_codigo); bool bImune = _imovelRepository.Verifica_Imunidade(_codigo); bool bIsentoProcesso = false; List <IsencaoStruct> ListaIsencao = null; if (!bImune) { ListaIsencao = _imovelRepository.Lista_Imovel_Isencao(_codigo, DateTime.Now.Year); if (ListaIsencao.Count > 0) { bIsentoProcesso = true; _numero_processo = ListaIsencao[0].Numprocesso ?? ""; } } List <ProprietarioStruct> listaProp = _imovelRepository.Lista_Proprietario(_codigo, true); ImovelStruct _dados = _imovelRepository.Dados_Imovel(_codigo); Certidao reg = new Certidao() { Codigo = _dados.Codigo, Inscricao = _dados.Inscricao, Endereco = _dados.NomeLogradouro, Endereco_Numero = (int)_dados.Numero, Endereco_Complemento = _dados.Complemento, Bairro = _dados.NomeBairro ?? "", Nome_Requerente = listaProp[0].Nome, Ano = DateTime.Now.Year, Numero = _numero, Quadra_Original = _dados.QuadraOriginal ?? "", Lote_Original = _dados.LoteOriginal ?? "", Controle = _numero.ToString("00000") + DateTime.Now.Year.ToString("0000") + "/" + _codigo.ToString() + "-CI", Numero_Processo = _numero_processo, Area = SomaArea }; if (ListaIsencao.Count > 0) { reg.Percentual_Isencao = (decimal)ListaIsencao[0].Percisencao; reg.Data_Processo = (DateTime)ListaIsencao[0].dataprocesso; } decimal nPerc; string reportName; if (bImune) { reportName = "Certidao_Imunidade.rpt"; nPerc = 100; } else { if (bIsentoProcesso) { reportName = "Certidao_Isencao_Processo.rpt"; nPerc = (decimal)ListaIsencao[0].Percisencao; } else { if (SomaArea <= 65) { //Se tiver área < 65m² mas tiver mais de 1 imóvel, perde a isenção. int nQtdeImovel = _imovelRepository.Qtde_Imovel_Cidadao(_codigo); if (nQtdeImovel > 1) { ViewBag.Result = "Este imóvel não esta isento da cobrança de IPTU no ano atual."; return(View(certidaoViewModel)); } nPerc = 100; reportName = "Certidao_Isencao_65metros.rpt"; } else { ViewBag.Result = "Este imóvel não esta isento da cobrança de IPTU no ano atual."; return(View(certidaoViewModel)); } } } List <Certidao> certidao = new List <Certidao>(); Models.Certidao_isencao regCert = new Certidao_isencao() { Ano = reg.Ano, Codigo = reg.Codigo, Data = DateTime.Now, Descbairro = reg.Bairro, Inscricao = reg.Inscricao, Logradouro = reg.Endereco, Nomecidadao = reg.Nome_Requerente, Li_lotes = reg.Lote_Original, Li_compl = reg.Endereco_Complemento, Li_num = reg.Endereco_Numero, Li_quadras = reg.Quadra_Original, Numero = reg.Numero, Area = SomaArea, Numprocesso = reg.Numero_Processo ?? "", Dataprocesso = reg.Data_Processo, Percisencao = nPerc }; reg.Numero_Ano = reg.Numero.ToString("00000") + "/" + reg.Ano; certidao.Add(reg); Exception ex = tributarioRepository.Insert_Certidao_Isencao(regCert); if (ex != null) { ViewBag.Result = "Ocorreu um erro no processamento das informações."; return(View(certidaoViewModel)); } ReportDocument rd = new ReportDocument(); rd.Load(hostingEnvironment.ContentRootPath + "\\Reports\\" + reportName); try { rd.SetDataSource(certidao); Stream stream = rd.ExportToStream(ExportFormatType.PortableDocFormat); return(File(stream, "application/pdf", "Certidao_Isencao.pdf")); } catch { throw; } }