示例#1
0
 private void recuperarSalvarRegistros(int v1, int v2, Type item)
 {
     if (modelocrud.TotalRegistro(item, BDcomum.conecta2) >
         modelocrud.Modelos.Where(m => m.GetType() == item || m.GetType().IsSubclassOf(item)).ToList().Count)
     {
         while (v1 <= v2)
         {
             if (modelocrud.Modelos.Where(m => m.GetType() == item).ToList().FirstOrDefault(i => i.Id == v1) == null)
             {
                 modelocrud m          = null;
                 modelocrud m2         = null;
                 var        listaTypes = modelocrud.listTypesSon(modelocrud.ReturnBase(item));
                 foreach (var i in listaTypes)
                 {
                     m  = (modelocrud)Activator.CreateInstance(i);
                     m2 = (modelocrud)Activator.CreateInstance(i);
                     m.stringConexao  = BDcomum.conecta2;
                     m2.stringConexao = BDcomum.conecta1;
                     if (m.recuperar(v1) && !m2.recuperar(v1))
                     {
                         m.Id            = 0;
                         m.stringConexao = BDcomum.conecta1;
                         m.salvar(BDcomum.conecta1);
                         modelocrud.Modelos.Add(m);
                         notifyIcon.ShowBalloonTip(5000, "Info",
                                                   $"Uma informação do banco de dados remoto foi inserida neste programa. - {m.GetType().Name} - {m.Id}",
                                                   ToolTipIcon.Info);
                     }
                 }
             }
             v1++;
         }
     }
 }
示例#2
0
        private void buscarLista(object list, Type itemType, SqlDataReader dr2)
        {
            IList collection = (IList)list;

            while (dr2.Read())
            {
                var        num = int.Parse(Convert.ToString(dr2["Id"]));
                modelocrud mod = null;
                if (itemType.IsAbstract)
                {
                    mod = modelocrud.buscarConcreto(itemType, num);
                }
                else
                {
                    mod = (modelocrud)Activator.CreateInstance(itemType);
                }
                mod.Id            = num;
                mod.executando    = true;
                mod.stringConexao = BDcomum.conecta1;
                if (mod.recuperar(mod.Id))
                {
                    collection.Add(mod);
                }
            }
        }
示例#3
0
        private void VerficaPropertyClassSetProperties(Type tipo, int id)
        {
            try
            {
                foreach (var item in tipo.GetProperties().Where(p => !p.PropertyType.IsAbstract &&
                                                                p.PropertyType != typeof(string) && p.PropertyType != typeof(DateTime) &&
                                                                p.PropertyType.Name != "List`1" && p.PropertyType.IsClass &&
                                                                p.GetType().GetProperties()
                                                                .Where(pr => p.ReflectedType == pr.DeclaringType && pr.Name == "Id").ToList().Count == 1).ToList())
                {
                    object     objeto = Activator.CreateInstance(item.PropertyType);
                    modelocrud modelo = (modelocrud)objeto;
                    modelo.Id            = id;
                    modelo.stringConexao = BDcomum.conecta1;
                    modelo.executando    = true;
                    if (modelo.GetType().GetProperties()
                        .Where(p => p.ReflectedType == p.DeclaringType && p.Name == "Id").ToList().Count == 1)
                    {
                        modelo.recuperar(Model.Id);
                    }

                    foreach (var item2 in Model.GetType().GetProperties())
                    {
                        if (item == item2)
                        {
                            item2.SetValue(Model, modelo);
                        }
                    }
                }
            }
            catch (Exception ex) { throw new Exception(ex.InnerException.Message); }
        }
示例#4
0
        public List <modelocrud> BuscarPorRestricao(modelocrud modelo, string tipo, string comando)
        {
            var       comand    = "";
            var       innerjoin = "";
            DataTable dtable    = new DataTable();

            if (modelo is business.classes.Abstrato.Membro)
            {
                innerjoin = " inner join Membro as MEM  on M.Id=MEM.Id inner join PessoaDado as PD on MEM.Id=P.Id"
                            + " inner join Pessoa as P on PD.Id=P.Id";
            }

            if (modelo is business.classes.Abstrato.MembroLgpd)
            {
                innerjoin = " inner join MembroLgpd as MEM  on M.Id=MEM.Id inner join PessoaLgpd as PL on MEM.Id=P.Id"
                            + " inner join Pessoa as P on PD.Id=P.Id";
            }

            if (modelo is business.classes.Pessoas.PessoaDado)
            {
                innerjoin = " inner join PessoaDado as PD on M.Id=P.Id inner join Pessoa as P on PD.Id=P.Id ";
            }

            if (modelo is business.classes.Pessoas.PessoaLgpd)
            {
                innerjoin = " inner join PessoaLgpd as PD on M.Id=P.Id inner join Pessoa as P on PD.Id=P.Id ";
            }

            if (modelo != null)
            {
                comand = $"select * from {modelo.GetType().Name} as M {innerjoin} ";
            }

            if (modelo == null)
            {
                comand = $"select * from {tipo} as M {innerjoin} ";
            }

            if (comando != "")
            {
                comand += $" where {comando} ";
            }

            SqlCommand     c      = new SqlCommand(comand, bd.obterconexao());
            SqlDataAdapter objadp = new SqlDataAdapter(c);

            objadp.Fill(dtable);

            if (modelo == null && tipo == "Pessoa" ||
                modelo == null && tipo == "PessoaLgpd" ||
                modelo is business.classes.Pessoas.Visitante ||
                modelo is business.classes.Pessoas.Crianca ||
                modelo is business.classes.Pessoas.Membro_Aclamacao ||
                modelo is business.classes.Pessoas.Membro_Batismo ||
                modelo is business.classes.Pessoas.Membro_Reconciliacao ||
                modelo is business.classes.Pessoas.Membro_Transferencia ||
                modelo is business.classes.PessoasLgpd.VisitanteLgpd ||
                modelo is business.classes.PessoasLgpd.CriancaLgpd ||
                modelo is business.classes.PessoasLgpd.Membro_AclamacaoLgpd ||
                modelo is business.classes.PessoasLgpd.Membro_BatismoLgpd ||
                modelo is business.classes.PessoasLgpd.Membro_ReconciliacaoLgpd ||
                modelo is business.classes.PessoasLgpd.Membro_TransferenciaLgpd)
            {
                List <modelocrud> l = new List <modelocrud>();
                var listaPessoa     = business.classes.Abstrato.Pessoa.recuperarTodos()
                                      .OfType <business.classes.Abstrato.Pessoa>().ToList();
                var lista = new List <modelocrud>();
                foreach (var itemlista in listaPessoa)
                {
                    lista.Add(itemlista.recuperar(itemlista.IdPessoa)[0]);
                }

                foreach (var item in dtable.Select(""))
                {
                    l.Add(lista.OfType <business.classes.Abstrato.Pessoa>()
                          .First(i => i.IdPessoa == int.Parse(item["IdPessoa"].ToString())));
                }
                return(l);
            }

            if (modelo == null && tipo == "Ministerio" || modelo is business.classes.Ministerio.Lider_Celula ||
                modelo is business.classes.Ministerio.Lider_Celula_Treinamento ||
                modelo is business.classes.Ministerio.Lider_Ministerio ||
                modelo is business.classes.Ministerio.Lider_Ministerio_Treinamento ||
                modelo is business.classes.Ministerio.Supervisor_Celula ||
                modelo is business.classes.Ministerio.Supervisor_Celula_Treinamento ||
                modelo is business.classes.Ministerio.Supervisor_Ministerio ||
                modelo is business.classes.Ministerio.Supervisor_Ministerio_Treinamento)
            {
                List <modelocrud> l = new List <modelocrud>();
                var listaMinisterio = business.classes.Abstrato.Ministerio.recuperarTodosMinisterios()
                                      .OfType <business.classes.Abstrato.Ministerio>().ToList();
                var lista = new List <modelocrud>();
                foreach (var itemlista in listaMinisterio)
                {
                    lista.Add(itemlista.recuperar(itemlista.IdMinisterio)[0]);
                }

                foreach (var item in dtable.Select(""))
                {
                    l.Add(lista.OfType <business.classes.Abstrato.Ministerio>()
                          .First(i => i.IdMinisterio == int.Parse(item["IdMinisterio"].ToString())));
                }
                return(l);
            }

            if (modelo == null && tipo == "Celula" ||
                modelo is business.classes.Celulas.Celula_Adolescente ||
                modelo is business.classes.Celulas.Celula_Adulto ||
                modelo is business.classes.Celulas.Celula_Casado ||
                modelo is business.classes.Celulas.Celula_Crianca ||
                modelo is business.classes.Celulas.Celula_Jovem)
            {
                List <modelocrud> l = new List <modelocrud>();
                var listaCelula     = business.classes.Abstrato.Celula.recuperarTodasCelulas()
                                      .OfType <business.classes.Abstrato.Celula>().ToList();
                var lista = new List <modelocrud>();
                foreach (var itemlista in listaCelula)
                {
                    lista.Add(itemlista.recuperar(itemlista.IdCelula)[0]);
                }

                foreach (var item in dtable.Select(""))
                {
                    l.Add(lista.OfType <business.classes.Abstrato.Celula>()
                          .First(i => i.IdCelula == int.Parse(item["IdCelula"].ToString())));
                }
                return(l);
            }



            if (modelo is business.classes.Historico || modelo is business.classes.Reuniao ||
                modelo is business.classes.Chamada || modelo is business.classes.MudancaEstado ||
                modelo is business.classes.Endereco || modelo is business.classes.Telefone)
            {
                List <modelocrud> l = new List <modelocrud>();
                foreach (var item in dtable.Select(""))
                {
                    l.Add(modelo.recuperar(int.Parse(item["Id"].ToString()))[0]);
                }
                return(l);
            }

            return(null);
        }
示例#5
0
        public bool SetProperties(Type tipo)
        {
            try
            {
                Type t = Model.GetType();
                if (tipo != Model.GetType())
                {
                    while (t != typeof(modelocrud))
                    {
                        if (t.BaseType == tipo)
                        {
                            break;
                        }
                        else
                        {
                            t = t.BaseType;
                        }
                    }
                    Model.Select_padrao = Model.Select_padrao.Replace(t.Name, tipo.Name);
                }

                var propertiesDeclaring = tipo.GetProperties().Where(e => e.ReflectedType == e.DeclaringType).ToList();

                if (Model.conexao == null)
                {
                    Model.conexao = Model.bd.obterconexao(Model.stringConexao);
                }

                if (Model.conexao.State == ConnectionState.Closed)
                {
                    Model.conexao = Model.bd.obterconexao(Model.stringConexao);
                }

                SqlCommand comando = new SqlCommand(Model.Select_padrao, Model.conexao);
                try
                {
                    Model.dr = comando.ExecuteReader();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + " - " + Model.GetType());
                }

                if (Model.conexao != null)
                {
                    if (Model.dr.HasRows == false)
                    {
                        Model.dr.Close();
                        Model.bd.fecharconexao(Model.conexao);
                        return(false);
                    }

                    try
                    {
                        Model.dr.Read();
                        foreach (var property in propertiesDeclaring)
                        {
                            Setar(property);
                        }
                        Model.dr.Close();

                        foreach (var property in propertiesDeclaring)
                        {
                            if (property.PropertyType.Name == "List`1" && !Model.executando)
                            {
                                Type itemType = property.PropertyType.GetGenericArguments()[0];
                                var  lista    = Activator.CreateInstance(property.PropertyType);

                                bool condicao = false;
                                for (var i = 0; i < itemType.Name.Length; i++)
                                {
                                    if (i > 0 && char.IsUpper(itemType.Name[i]) && itemType.BaseType == typeof(modelocrud) &&
                                        itemType.GetProperties().Where(e => e.ReflectedType == e.DeclaringType).ToList().Count == 4 &&
                                        itemType.GetProperties().Where(e => e.ReflectedType == e.DeclaringType &&
                                                                       e.PropertyType == typeof(int)).ToList().Count == 2)
                                    {
                                        condicao = true;
                                        break;
                                    }
                                }

                                if (condicao)
                                {
                                    Type baseModel = modelocrud.ReturnBase(Model.GetType());
                                    var  propert   = itemType.GetProperties().First(p => p.PropertyType == typeof(int) &&
                                                                                    p.Name.ToLower().Contains(baseModel.Name.ToLower()));

                                    SqlCommand comando2 = new SqlCommand($"select Id from {itemType.Name} where {propert.Name}={Model.Id}"
                                                                         , Model.conexao);
                                    SqlDataReader dr2 = comando2.ExecuteReader();
                                    if (dr2.HasRows)
                                    {
                                        buscarLista(lista, itemType, dr2);
                                    }
                                    dr2.Close();
                                    property.SetValue(Model, lista);
                                }
                                else
                                {
                                    Type baseModel = modelocrud.ReturnBase(Model.GetType());
                                    var  propert   = itemType.GetProperties().First(p => p.PropertyType == typeof(int) &&
                                                                                    p.Name.ToLower().Contains(baseModel.Name.ToLower()) ||
                                                                                    p.PropertyType == typeof(int?) && p.Name.ToLower().Contains(baseModel.Name.ToLower()));

                                    SqlCommand comando2 = new SqlCommand($"select Id from {itemType.Name} where {propert.Name}={Model.Id}"
                                                                         , Model.conexao);
                                    SqlDataReader dr2 = comando2.ExecuteReader();
                                    if (dr2.HasRows)
                                    {
                                        buscarLista(lista, itemType, dr2);
                                    }
                                    dr2.Close();
                                    property.SetValue(Model, lista);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Model.dr.Close();
                        Model.TratarExcessao(ex);
                        return(false);
                    }
                    finally
                    {
                        Model.bd.fecharconexao(Model.conexao);
                    }

                    if (Model.GetType().GetProperties().Where(p =>
                                                              p.PropertyType.GetProperties().Where(pr => pr.ReflectedType ==
                                                                                                   pr.DeclaringType && pr.Name == "Id").ToList().Count != 0)
                        .ToList().Count != 0)
                    {
                        VerficaPropertyClassSetProperties(Model.GetType(), Model.Id);
                    }

                    for (int j = 0; j < 5; j++)
                    {
                        if (Model.GetType().GetProperties().ToList().FirstOrDefault(p => p.PropertyType.IsClass &&
                                                                                    p.GetValue(Model) == null && p.PropertyType.IsAbstract ||
                                                                                    p.PropertyType.IsClass && p.GetValue(Model) == null &&
                                                                                    p.PropertyType.BaseType == typeof(modelocrud)) != null)
                        {
                            var prop = Model.GetType().GetProperties().ToList().FirstOrDefault(p => p.PropertyType.IsClass &&
                                                                                               p.GetValue(Model) == null && p.PropertyType.IsAbstract ||
                                                                                               p.PropertyType.IsClass && p.GetValue(Model) == null &&
                                                                                               p.PropertyType.BaseType == typeof(modelocrud));

                            var propInt = Model.GetType().GetProperties().ToList()
                                          .First(p => p.Name.ToLower().Contains(prop.Name.ToLower()));

                            int?valor = (int?)propInt.GetValue(Model, null);

                            modelocrud model = null;
                            if (valor != null)
                            {
                                model = modelocrud.Modelos.FirstOrDefault(m => m.GetType()
                                                                          .IsSubclassOf(prop.PropertyType) && m.Id == valor || m.GetType() == prop.PropertyType && m.Id == valor);
                            }


                            if (model == null && valor != null)
                            {
                                var listaTypes = prop.PropertyType.Assembly.GetTypes()
                                                 .Where(type => !type.IsAbstract && type.IsSubclassOf(prop.PropertyType))
                                                 .Select(type => type).ToList();
                                bool condicao = false;
                                foreach (var item in listaTypes)
                                {
                                    object objeto = Activator.CreateInstance(item);
                                    model               = (modelocrud)objeto;
                                    model.Id            = (int)valor;
                                    model.stringConexao = BDcomum.conecta1;
                                    model.executando    = true;
                                    condicao            = model.recuperar((int)valor);
                                    if (condicao)
                                    {
                                        break;
                                    }
                                }
                                if (model == null)
                                {
                                    object objeto = Activator.CreateInstance(prop.PropertyType);
                                    model               = (modelocrud)objeto;
                                    model.Id            = (int)valor;
                                    model.stringConexao = BDcomum.conecta1;
                                    model.executando    = true;
                                    model.recuperar((int)valor);
                                }
                            }

                            if (model != null)
                            {
                                prop.SetValue(Model, model);
                            }
                        }
                    }

                    Model.T = Model.T.BaseType;
                    return(true);
                }
                return(false);
            }
            catch (Exception ex) { throw new Exception(ex.Message); }
        }
示例#6
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);
        }