Exemple #1
0
        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;
            }
        }