private async Task <ActionResult> Editar(Ministerio ministerio)
        {
            db.Entry(ministerio).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Example #2
0
        private void lstBoxPessoa_SelectedValueChanged(object sender, EventArgs e)
        {
            Ministerio p = null;

            if (modelo != null)
            {
                p = (Ministerio)modelo;
            }
            else
            {
                p = (Ministerio)ModeloNovo;
            }
            try
            {
                if (condicao)
                {
                    SelectedObjectCollection valor = lstBoxPessoa.SelectedItems;
                    var objetos = valor.Cast <Pessoa>().ToList();
                    p.Pessoa = new List <PessoaMinisterio>();
                    foreach (var item in objetos)
                    {
                        p.Pessoa.Add(new PessoaMinisterio {
                            PessoaId     = item.Id, Pessoa = item,
                            MinisterioId = p.Id, Ministerio = p
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Um erro aconteceu " + ex.Message);
            }
        }
        private async Task <ActionResult> Create(Ministerio ministerio)
        {
            db.ministerio.Add((Ministerio)ministerio);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IHttpActionResult> PutMinisterio(int id, Ministerio ministerio)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != ministerio.IdMinisterio)
            {
                return(BadRequest());
            }

            db.Entry(ministerio).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MinisterioExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        private async Task <ActionResult> Create(Ministerio ministerio)
        {
            modelocrud.EntityCrud = true;
            db.ministerio.Add((Ministerio)ministerio);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public ConfirmMinistryView(Ministerio ministerio)
        {
            InitializeComponent();
            viewmodel            = new JoinViewModel();
            viewmodel.Ministerio = ministerio;
            BindingContext       = viewmodel;

            Api = new ApiServices();
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            Ministerio ministerio = await db.ministerio.FindAsync(id);

            db.ministerio.Remove(ministerio);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        private async Task <ActionResult> Editar(Ministerio ministerio)
        {
            modelocrud.EntityCrud      = true;
            db.Entry(ministerio).State = EntityState.Modified;
            db.DadoAlterado.Add(new DadoAlterado {
                Entidade = ministerio.GetType().Name, IdDado = ministerio.Id
            });
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IHttpActionResult> GetMinisterio(int id)
        {
            Ministerio ministerio = await db.ministerio.FindAsync(id);

            if (ministerio == null)
            {
                return(NotFound());
            }

            return(Ok(ministerio));
        }
        public async Task <IHttpActionResult> PostMinisterio(Ministerio ministerio)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.ministerio.Add(ministerio);
            await db.SaveChangesAsync();

            return(CreatedAtRoute("DefaultApi", new { id = ministerio.IdMinisterio }, ministerio));
        }
        // GET: Ministerio/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ministerio ministerio = await db.ministerio.FindAsync(id);

            if (ministerio == null)
            {
                return(HttpNotFound());
            }
            return(View(ministerio));
        }
        public async Task <IHttpActionResult> DeleteMinisterio(int id)
        {
            Ministerio ministerio = await db.ministerio.FindAsync(id);

            if (ministerio == null)
            {
                return(NotFound());
            }

            db.ministerio.Remove(ministerio);
            await db.SaveChangesAsync();

            return(Ok(ministerio));
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            modelocrud.EntityCrud = true;
            Ministerio ministerio = await db.ministerio.FindAsync(id);

            db.ministerio.Remove(ministerio);
            await db.SaveChangesAsync();

            db.DadoExcluido.Add(new DadoExcluido {
                Entidade = ministerio.GetType().Name, IdDado = id
            });
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public DetalheMinisterioViewModel(Ministerio ministerio)
        {
            this.Ministerio   = ministerio;
            ParticiparCommand = new Command(() =>
            {
                MessagingCenter.Send(ministerio, "Participar");
            });

            CelulasCommand = new Command(() =>
            {
                MessagingCenter.Send(ministerio, "Celulas");
            });

            PessoasCommand = new Command(() =>
            {
                MessagingCenter.Send(ministerio, "Pessoas");
            });
        }
        public async Task <IHttpActionResult> DeleteMinisterio(int id)
        {
            Ministerio ministerio = await db.ministerio.FindAsync(id);

            if (ministerio == null)
            {
                return(NotFound());
            }

            db.ministerio.Remove(ministerio);
            await db.SaveChangesAsync();

            db.DadoExcluido.Add(new DadoExcluido {
                Entidade = ministerio.GetType().Name, IdDado = id
            });
            await db.SaveChangesAsync();

            return(Ok(ministerio));
        }
Example #16
0
        public ActionResult ParticiparMinisterio(int Id)
        {
            var usermaneger = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
            var users       = usermaneger.Users.ToList();
            var user        = users.FirstOrDefault(u => u.UserName == User.Identity.GetUserName());

            if (user != null)
            {
                Pessoa     pessoa     = banco.pessoas.First(m => m.Codigo == user.Codigo);
                Ministerio ministerio = banco.ministerio.Find(Id);
                ministerio.RemoverDaLista("PessoaMinisterio", ministerio, new VisitanteLgpd(), pessoa.IdPessoa + ", ");

                ministerio.alterar(Id);
            }

            ViewBag.mensagem = "Parabêns você esta participando do ministério!!!";

            return(View("Index"));
        }
Example #17
0
        private void DadoMinisterio_Load(object sender, EventArgs e)
        {
            this.Text = " - Dados de Ministério";

            lstBoxPessoa.DataSource = modelocrud.Modelos.OfType <Pessoa>().OrderBy(m => m.Id).ToList();
            if (modelocrud.Modelos.OfType <Pessoa>().ToList().Count > 0)
            {
                lstBoxPessoa.SetSelected(0, false);
            }

            Ministerio p = null;

            if (modelo != null)
            {
                p = (Ministerio)modelo;
            }
            else
            {
                p = (Ministerio)ModeloNovo;
            }
            try { txt_nome_ministerio.Text = p.Nome; }
            catch (Exception ex) { MessageBox.Show(modeloErro.exibirMensagemErro(ex, 2)); }
            try { txt_proposito.Text = p.Proposito; }
            catch (Exception ex) { MessageBox.Show(modeloErro.exibirMensagemErro(ex, 2)); }
            try
            {
                if (p.Ministro_ != null)
                {
                    var indice = lstBoxPessoa.Items.IndexOf(modelocrud.Modelos.OfType <Pessoa>().First(m => m.Id == p.Ministro_));
                    lstBoxPessoa.SetSelected(indice, true);
                }
                else
                {
                    ckBoxNulo.Checked = true;
                }
            }
            catch (Exception ex) { MessageBox.Show(modeloErro.exibirMensagemErro(ex, 2)); }

            condicao = true;
        }
        // GET: Ministerio/Create
        public ActionResult Create(string tipo)
        {
            Ministerio ministerio = null;

            if (tipo == "Lider_Celula")
            {
                ministerio = new Lider_Celula();
            }
            if (tipo == "Lider_Celula_Treinamento")
            {
                ministerio = new Lider_Celula_Treinamento();
            }
            if (tipo == "Lider_Ministerio")
            {
                ministerio = new Lider_Ministerio();
            }
            if (tipo == "Lider_Ministerio_Treinamento")
            {
                ministerio = new Lider_Ministerio_Treinamento();
            }
            if (tipo == "Supervisor_Celula")
            {
                ministerio = new Supervisor_Celula();
            }
            if (tipo == "Supervisor_Celula_Treinamento")
            {
                ministerio = new Supervisor_Celula_Treinamento();
            }
            if (tipo == "Supervisor_Ministerio")
            {
                ministerio = new Supervisor_Ministerio();
            }
            if (tipo == "Supervisor_Ministerio_Treinamento")
            {
                ministerio = new Supervisor_Ministerio_Treinamento();
            }

            return(View(ministerio));
        }
Example #19
0
        public ActionResult ParticiparMinisterio(int Id)
        {
            var usermaneger = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
            var users       = usermaneger.Users.ToList();
            var user        = users.FirstOrDefault(u => u.UserName == User.Identity.GetUserName());

            if (user != null)
            {
                Pessoa           pessoa     = banco.pessoas.First(m => m.Codigo == user.Codigo);
                Ministerio       ministerio = banco.ministerio.Find(Id);
                PessoaMinisterio pm         = new PessoaMinisterio {
                    PessoaId = pessoa.Id, MinisterioId = ministerio.Id
                };

                banco.PessoaMinisterio.Add(pm);
                banco.SaveChanges();
            }

            ViewBag.mensagem = "Parabêns você esta participando do ministério!!!";

            return(View("Index"));
        }
Example #20
0
        public async void ParticiparMinisterio(Ministerio Ministerio)
        {
            HttpClient cliente = new HttpClient();

            var json = JsonConvert.SerializeObject(new
            {
                MinisterioId = Ministerio.IdMinisterio,
                PessoaId     = App.UserCurrent.IdPessoa
            });

            var conteudo = new StringContent(json, Encoding.UTF8, "application/json");

            var resposta = await cliente.PostAsync(URL_POST_PARTICIPARMINISTERIO, conteudo);

            if (resposta.IsSuccessStatusCode)
            {
                MessagingCenter.Send <Ministerio>(Ministerio, "SucessoParticiparMinisterio");
            }
            else
            {
                MessagingCenter.Send <ArgumentException>(new ArgumentException(), "FalhaParticiparMinisterio");
            }
        }
Example #21
0
        internal async void SairMinisterio(Ministerio Ministerio)
        {
            HttpClient cliente = new HttpClient();

            var resultadoLista = await cliente.GetStringAsync
                                     (URL_POST_PARTICIPARMINISTERIO + "?$filter=MinisterioId eq " + Ministerio.IdMinisterio.ToString() +
                                     "&$filter=PessoaId eq " + App.UserCurrent.IdPessoa.ToString());

            var listaPessoaMinisterio = JsonConvert.DeserializeObject <PessoaMinisterio[]>(resultadoLista);

            var resposta = await cliente.DeleteAsync(URL_DELETE_PARTICIPARMINISTERIO +
                                                     listaPessoaMinisterio[0].Id.ToString());


            if (resposta.IsSuccessStatusCode)
            {
                MessagingCenter.Send <Ministerio>(Ministerio, "SucessoSairMinisterio");
            }
            else
            {
                MessagingCenter.Send <ArgumentException>(new ArgumentException(), "FalhaSairMinisterio");
            }
        }
Example #22
0
        private async void FormularioListView_Load(object sender, EventArgs e)
        {
            this.Size = new Size(700, 350);

            if (Modelo is MudancaEstado)
            {
                botaoAtualizar.Visible = false;
                botaoDeletar.Visible   = false;
            }

            lista = new List <modelocrud>();
            if (Modelo != null)
            {
                lista = await Task.Run(() => Modelo.recuperar(null));

                if (Modelo is business.classes.Abstrato.Pessoa)
                {
                    Mudanca.Visible = true;
                }
            }
            else
            {
                if (Tipo == "Celula")
                {
                    lista = await Task.Run(() => business.classes.Abstrato.Celula.recuperarTodasCelulas());
                }

                if (Tipo == "Ministerio")
                {
                    lista = await Task.Run(() => Ministerio.recuperarTodosMinisterios());
                }

                if (Tipo == "Pessoa")
                {
                    lista = await Task.Run(() => business.classes.Abstrato.Pessoa.recuperarTodos());

                    Mudanca.Visible = true;
                }

                if (Tipo == "PessoaDado")
                {
                    lista = lista.OfType <PessoaDado>().Select(m => (modelocrud)m).ToList();
                }

                if (Tipo == "PessoaLgpd")
                {
                    lista = lista.OfType <PessoaLgpd>().Select(m => (modelocrud)m).ToList();
                }

                if (Tipo == "MembroLgpd")
                {
                    lista = lista.OfType <MembroLgpd>().Select(m => (modelocrud)m).ToList();
                }

                if (Tipo == "Membro")
                {
                    lista = lista.OfType <Membro>().Select(m => (modelocrud)m).ToList();
                }
            }


            ListView.Dock = DockStyle.Left;

            if (lista != null)
            {
                foreach (var v in lista)
                {
                    ListView.Items.Add(v.ToString());
                }
            }
        }
Example #23
0
        private void PessoasCelulasMinisterio_Load(object sender, EventArgs e)
        {
            this.Text = " - Celulas e pessoas do ministério.";

            this.Proximo.Location   = new Point(600, 150);
            this.Atualizar.Location = new Point(600, 250);
            this.Deletar.Location   = new Point(600, 350);

            lstBoxCelula.DataSource = modelocrud.Modelos.OfType <Celula>().OrderBy(m => m.Id).ToList();
            if (modelocrud.Modelos.OfType <Celula>().ToList().Count > 0)
            {
                lstBoxCelula.SetSelected(0, false);
            }
            lstBoxPessoa.DataSource = modelocrud.Modelos.OfType <Pessoa>().OrderBy(m => m.Id).ToList();
            if (modelocrud.Modelos.OfType <Pessoa>().ToList().Count > 0)
            {
                lstBoxPessoa.SetSelected(0, false);
            }

            Ministerio p = null;

            if (modelo != null)
            {
                p = (Ministerio)modelo;
            }
            else
            {
                p = (Ministerio)ModeloNovo;
            }

            try
            {
                foreach (var item in p.Pessoa)
                {
                    var indice = lstBoxPessoa.Items.IndexOf(item.Pessoa);
                    lstBoxPessoa.SetSelected(indice, true);
                }
            }
            catch (Exception ex)
            {
                var msg = modeloErro.exibirMensagemErro(ex, 2);
                if (msg != "")
                {
                    MessageBox.Show(msg);
                }
            }

            try
            {
                foreach (var item in p.Celulas)
                {
                    var indice = lstBoxCelula.Items.IndexOf(item.Celula);
                    lstBoxCelula.SetSelected(indice, true);
                }
            }
            catch (Exception ex)
            {
                var msg = modeloErro.exibirMensagemErro(ex, 2);
                if (msg != "")
                {
                    MessageBox.Show(msg);
                }
            }

            condicao = true;
        }
Example #24
0
        private async void FazerMudanca_Click(object sender, EventArgs e)
        {
            if (ModeloNovo is Pessoa)
            {
                Pessoa           p   = (Pessoa)ModeloNovo;
                FormProgressBar2 frm = new FormProgressBar2();
                try
                {
                    if (BDcomum.TestarConexao())
                    {
                        frm.StartPosition = FormStartPosition.CenterScreen;
                        frm.Text          = "Aguarde o processamento ...";
                        frm.Show();
                        await new FrmPrincipal().AtualizarDadosRemotos();
                        p.MudarEstado(ModeloVelho.Id, ModeloNovo);
                        frm.Dispose();
                    }
                    else
                    {
                        if (!frm.IsDisposed)
                        {
                            frm.Dispose();
                        }
                        MessageBox.Show("Conecte-se a internet.");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(p.exibirMensagemErro(ex, 2));
                }
            }

            if (ModeloNovo is Ministerio)
            {
                Ministerio       p   = (Ministerio)ModeloNovo;
                FormProgressBar2 frm = new FormProgressBar2();
                try
                {
                    if (BDcomum.TestarConexao())
                    {
                        frm.StartPosition = FormStartPosition.CenterScreen;
                        frm.Text          = "Aguarde o processamento ...";
                        frm.Show();
                        await new FrmPrincipal().AtualizarDadosRemotos();
                        p.MudarEstado(ModeloVelho.Id, ModeloNovo);
                        frm.Dispose();
                    }
                    else
                    {
                        if (!frm.IsDisposed)
                        {
                            frm.Dispose();
                        }
                        MessageBox.Show("Conecte-se a internet.");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(p.exibirMensagemErro(ex, 2));
                }
            }
        }
 public PessoasCelulasMinisterio(Ministerio p, bool Deletar, bool Atualizar, bool Detalhes)
     : base(p, Deletar, Atualizar, Detalhes)
 {
     InitializeComponent();
 }
Example #26
0
        private void Atualizar_Click(object sender, EventArgs e)
        {
            if (modelo is Celula)
            {
                var p = (Celula)modelo;
                if (!string.IsNullOrEmpty(AddNaListaCelulaMinisterios))
                {
                    var listaMinisterio = Ministerio.recuperarTodosMinisterios()
                                          .OfType <Ministerio>().ToList();
                    var arr = AddNaListaCelulaMinisterios.Replace(" ", "").Split(',');
                    foreach (var item in arr)
                    {
                        try
                        {
                            if (listaMinisterio.FirstOrDefault(i => i.IdMinisterio == int.Parse(item)) == null)
                            {
                                AddNaListaCelulaMinisterios.Replace(item, "");
                            }
                        }
                        catch { }
                    }
                    p.RemoverDaLista("MinisterioCelula", p, new Lider_Celula(), AddNaListaCelulaMinisterios);
                }
            }

            if (modelo is Ministerio)
            {
                var p = (Ministerio)modelo;
                if (!string.IsNullOrEmpty(AddNaListaMinisterioPessoas))
                {
                    p.RemoverDaLista("PessoaMinisterio", p, new Visitante(), AddNaListaMinisterioPessoas);
                }

                if (!string.IsNullOrEmpty(AddNaListaMinisterioCelulas))
                {
                    p.RemoverDaLista("MinisterioCelula", p, new Celula_Adolescente(), AddNaListaMinisterioCelulas);
                }
            }

            if (modelo is business.classes.Abstrato.Pessoa)
            {
                var p = (Pessoa)modelo;
                if (!string.IsNullOrEmpty(AddNaListaPessoaMinsterios))
                {
                    p.RemoverDaLista("PessoaMinisterio", p, new Lider_Celula(), AddNaListaPessoaMinsterios);
                }

                if (!string.IsNullOrEmpty(AddNaListaPessoaReunioes))
                {
                    p.RemoverDaLista("ReuniaoPessoa", p, new Reuniao(), AddNaListaPessoaReunioes);
                }
            }

            if (modelo is business.classes.Reuniao)
            {
                var p = (business.classes.Reuniao)modelo;
                if (!string.IsNullOrEmpty(AddNaListaReuniaoPessoas))
                {
                    p.RemoverDaLista("ReuniaoPessoa", p, new Visitante(), AddNaListaReuniaoPessoas);
                }
            }

            var id = 0;

            if (modelo is Pessoa)
            {
                var p = (Pessoa)modelo; id = p.IdPessoa;
            }
            if (modelo is Ministerio)
            {
                var p = (Ministerio)modelo; id = p.IdMinisterio;
            }
            if (modelo is Celula)
            {
                var p = (Celula)modelo; id = p.IdCelula;
            }
            if (modelo is Reuniao)
            {
                var p = (Reuniao)modelo; id = p.IdReuniao;
            }

            modelo.alterar(id);
            MessageBox.Show("Informação atualizada com sucesso.");
        }
Example #27
0
        //identificar e notificar novos registros.
        private async Task Notificar()
        {
            var lc = await Task.Run(() => Celula.recuperarTodasCelulas());

            var lm = await Task.Run(() => Ministerio.recuperarTodosMinisterios());

            var lp = await Task.Run(() => Pessoa.recuperarTodos());

            var lr = await Task.Run(() => new Reuniao().recuperar(null));

            ListaPessoas     = lp.OfType <Pessoa>().Where(p => p.Codigo > UltimoRegistroPessoa).ToList();
            ListaMinisterios = lm.OfType <Ministerio>().Where(m => m.IdMinisterio > UltimoRegistroMinisterio).ToList();
            ListaCelulas     = lc.OfType <Celula>().Where(c => c.IdCelula > UltimoRegistroCelula).ToList();
            ListaReunioes    = lr.OfType <Reuniao>().Where(r => r.IdReuniao > UltimoRegistroReuniao).ToList();

            if (ListaPessoas != null)
            {
                if (ListaPessoas.Count != 0)
                {
                    foreach (var p in ListaPessoas)
                    {
                        notifyIcon.ShowBalloonTip(2000, "Info", "Novo registro de uma pessoa. ID: " + p.Codigo, ToolTipIcon.Info);
                    }

                    ListaPessoas.Clear();
                    UltimoRegistroPessoa = lp.OfType <Pessoa>().OrderBy(m => m.IdPessoa).Last().Codigo;
                }
            }

            if (ListaReunioes != null)
            {
                if (ListaReunioes.Count != 0)
                {
                    foreach (var p in ListaReunioes)
                    {
                        notifyIcon.ShowBalloonTip(2000, "Info", "Novo registro de uma reunião. ID: " + p.IdReuniao, ToolTipIcon.Info);
                    }

                    ListaReunioes.Clear();
                    UltimoRegistroReuniao = lr.OfType <Reuniao>().Last().IdReuniao;
                }
            }

            if (ListaMinisterios != null)
            {
                if (ListaMinisterios.Count != 0)
                {
                    foreach (var p in ListaMinisterios)
                    {
                        notifyIcon.ShowBalloonTip(2000, "Info", "Novo registro de um ministério. ID: " + p.IdMinisterio, ToolTipIcon.Info);
                    }

                    ListaMinisterios.Clear();
                    UltimoRegistroMinisterio = lm.OfType <Ministerio>().Last().IdMinisterio;
                }
            }

            if (ListaCelulas != null)
            {
                if (ListaCelulas.Count != 0)
                {
                    foreach (var p in ListaCelulas)
                    {
                        notifyIcon.ShowBalloonTip(2000, "Info", "Novo registro de uma celula. ID: " + p.IdCelula, ToolTipIcon.Info);
                    }

                    ListaCelulas.Clear();
                    UltimoRegistroCelula = lc.OfType <Celula>().Last().IdCelula;
                }
            }
        }
Example #28
0
        public async Task  imprimir(modelocrud modelo, string tipo)
        {
            List <modelocrud> lista = new List <modelocrud>();
            PdfPTable         table = null;
            var valorTipo           = "";
            var porcentagem         = "";
            var ListaPessoas        = await Task.Run(() => Pessoa.recuperarTodos());

            int totalPessoas     = ListaPessoas.Count;
            var ListaMinisterios = await Task.Run(() => Ministerio.recuperarTodosMinisterios());

            int totalMinisterios = ListaMinisterios.Count;
            var ListaCelulas     = await Task.Run(() => Celula.recuperarTodasCelulas());

            int totalCelulas = ListaCelulas.Count;

            if (modelo != null)
            {
                lista = modelo.recuperar(null);
                var i = 0;
                foreach (var item in lista.ToList())
                {
                    Pessoa     p  = null;
                    Ministerio m  = null;
                    Celula     c  = null;
                    Reuniao    r  = null;
                    var        id = 0;
                    if (modelo is Pessoa)
                    {
                        p = (Pessoa)item; id = p.IdPessoa;
                    }
                    if (modelo is Ministerio)
                    {
                        m = (Ministerio)item; id = m.IdMinisterio;
                    }
                    if (modelo is Celula)
                    {
                        c = (Celula)item; id = c.IdCelula;
                    }
                    if (modelo is Reuniao)
                    {
                        r = (Reuniao)item; id = r.IdReuniao;
                    }

                    lista[i] = item.recuperar(id)[0];
                    i++;
                }
            }


            if (modelo != null && modelo is Pessoa)
            {
                table = new PdfPTable(2);
                var     quant = modelo.recuperar(null).Count;
                decimal p     = (quant / totalPessoas);
                porcentagem = "A procentagem em relação ao total de pessoas é "
                              + p.ToString("F2") + "%. Quantidade de registros é: "
                              + quant;
            }

            if (modelo != null && modelo is Celula)
            {
                var     quant = modelo.recuperar(null).Count;
                decimal p     = (quant / totalCelulas);
                porcentagem = "A procentagem em relação ao total de celulas é "
                              + p.ToString("f2") + "%. Quantidade de registros é: "
                              + quant;
            }

            if (modelo != null && modelo is Ministerio)
            {
                var     quant = modelo.recuperar(null).Count;
                decimal p     = (quant / totalMinisterios);
                porcentagem = "A procentagem em relação ao total de ministérios é "
                              + p.ToString("f2") + "%. Quantidade de registros é: "
                              + quant;
            }

            if (modelo is Reuniao)
            {
                table = new PdfPTable(3);
            }



            if (tipo == "Pessoa" && modelo == null)
            {
                lista = Pessoa.recuperarTodos();
                table = new PdfPTable(2);
                var i = 0;
                foreach (var item in lista.OfType <Pessoa>().ToList())
                {
                    lista[i] = item.recuperar(item.IdPessoa)[0];
                    i++;
                }
            }

            if (tipo == "MembroLgpd" && modelo == null)
            {
                lista = MembroLgpd.recuperarTodosMembros();
                table = new PdfPTable(2);
                var i = 0;
                foreach (var item in lista.OfType <Pessoa>().ToList())
                {
                    lista[i] = item.recuperar(item.IdPessoa)[0];
                    i++;
                }
            }

            if (tipo == "Membro" && modelo == null)
            {
                lista = Membro.recuperarTodosMembros();
                table = new PdfPTable(2);
                var i = 0;
                foreach (var item in lista.OfType <Pessoa>().ToList())
                {
                    lista[i] = item.recuperar(item.IdPessoa)[0];
                    i++;
                }
            }

            if (tipo == "Ministerio" && modelo == null)
            {
                lista = Ministerio.recuperarTodosMinisterios();
                table = new PdfPTable(2);
                var i = 0;
                foreach (var item in lista.OfType <Ministerio>().ToList())
                {
                    lista[i] = item.recuperar(item.IdMinisterio)[0];
                    i++;
                }
            }

            if (tipo == "Celula" && modelo == null)
            {
                lista = Celula.recuperarTodasCelulas();
                table = new PdfPTable(2);
                var i = 0;
                foreach (var item in lista.OfType <Celula>().ToList())
                {
                    lista[i] = item.recuperar(item.IdCelula)[0];
                    i++;
                }
            }

            if (modelo is MudancaEstado)
            {
                table = new PdfPTable(4);
            }

            if (tipo != "")
            {
                valorTipo = tipo;
            }
            else
            {
                valorTipo = modelo.GetType().Name;
            }

            Document doc = new Document(PageSize.A4);

            doc.SetMargins(40, 40, 40, 80);

            string path = Directory.GetCurrentDirectory();

            string caminho = path + @"\relatorio\" + "relatorio-" + valorTipo + "-" + DateTime.Now.ToString("dd-MM-yyyy") + ".pdf";

            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(caminho, FileMode.Create));

            doc.Open();

            Paragraph titulo = new Paragraph();

            titulo.Font      = new Font(Font.FontFamily.COURIER, 40);
            titulo.Alignment = Element.ALIGN_CENTER;
            titulo.Add("Relatório \n\n");
            doc.Add(titulo);



            Paragraph paragrafo = new Paragraph("", new Font(Font.NORMAL, 12));
            string    conteudo  = "Este é um relatório do dia " + DateTime.Now.ToString("dd/MM/yyyy") +
                                  " cujo o conteudo é referente a " + valorTipo + $". {porcentagem} \n\n";

            paragrafo.Add(conteudo);
            doc.Add(paragrafo);



            foreach (var item in lista.OfType <Reuniao>())
            {
                table.AddCell("Id: " + item.IdReuniao.ToString());
                table.AddCell("Data da reunião: " + item.Data_reuniao.ToString());
            }

            foreach (var item in lista.OfType <PessoaDado>())
            {
                table.AddCell("ID: " + item.Codigo.ToString());
                table.AddCell("Nome: " + item.NomePessoa.ToString());
            }

            foreach (var item in lista.OfType <PessoaLgpd>().ToList())
            {
                table.AddCell("ID: " + item.Codigo.ToString());
                table.AddCell("Email: " + item.Email.ToString());
            }

            foreach (var item in lista.OfType <Ministerio>())
            {
                table.AddCell("Id: " + item.IdMinisterio.ToString());
                table.AddCell("Data da reunião: " + item.Nome.ToString());
            }

            foreach (var item in lista.OfType <Celula>())
            {
                table.AddCell("Id: " + item.IdCelula.ToString());
                table.AddCell("Data da reunião: " + item.Nome.ToString());
            }

            foreach (var item in lista.OfType <Historico>())
            {
                table.AddCell("Data de inicio: " + item.Data_inicio.ToString());
                table.AddCell("Data final: " + item.Data_inicio.AddDays(60).ToString());
                table.AddCell("Faltas: " + item.Falta.ToString());
            }

            foreach (var item in lista.OfType <MudancaEstado>())
            {
                table.AddCell("Data da mudança: " + item.DataMudanca.ToString("dd/MM/yyyy"));
                table.AddCell("antigo estado: " + item.velhoEstado);
                table.AddCell("novo estado: " + item.novoEstado);
                table.AddCell("Id da pessoa: " + item.CodigoPessoa);
            }

            doc.Add(table);

            string caminhoImg =
                "http://www.clickfamilia.org.br/oikos2015/wp-content/uploads/2019/07/what-is-family-ministry-lead-300x225.jpg";
            Image img = Image.GetInstance(caminhoImg);

            doc.Add(img);

            doc.Close();

            System.Diagnostics.Process.Start(caminho);
        }