AcessoBancoDados bd;    //Variável global de acesso ao banco de dados

        // Metodo de cadastro de equipamentos
        public void cadEquip(dto_Equip dto)
        {                        //ini cadEquip
            AcessoBancoDados bd; // Declaração de variável para acesso ao banco de dados

            try
            {   //ini try
                string tipo       = dto.Tipo.Replace("'", "''");
                string fabricante = dto.Fabricante.Replace("'", "''");
                string modelo     = dto.Modelo.Replace("'", "'");
                string sn         = dto.SN.Replace("'", "'");
                string contagem   = dto.Contagem.Replace("'", "'");
                string potencia   = dto.Potencia.Replace("'", "'");
                string polegada   = dto.Polegadas.Replace("'", "'");
                string local      = "RCA Interno";
                string tecent     = "";
                string tecret     = "";
                string tecsaid    = "";
                string tecinstal  = "";
                int    status     = dto.Status;

                bd = AcessoBancoDados.GetInstance;
                bd.conectar();
                string comando = "INSERT INTO equipamentos(tipo, fabricante, modelo, sn, contagem, potencia, polegada, status, local, tecent, tecret, tecsaid, tecinstal) VALUES('" + tipo + "','" + fabricante + "','" + modelo + "','" + sn + "','" + contagem + "','" + potencia + "','" + polegada + "','" + status + "','" + local + "','" + tecent + "','" + tecret + "','" + tecsaid + "','" + tecinstal + "')";
                bd.ExecutarComandoSQL(comando);
            }   //fim try
            catch (Exception ex)
            {
                throw new Exception("Erro ao acadastrar o novo equipamento!" + ex.Message);
            }
            finally
            {
                bd = null;
            }
        }   //fim cadEquip
        }   //fim atualiza entrada

        //Metodos de envio de e-mail
        //--------------------------------------------------------------------------------------------------
        //Metodo de envio de emails de entrada e saída de equipamentos
        public void sendMail(dto_Equip dto)
        {
            //variáveis globais
            MailMessage Email;
            string      sBobdy;
            Stopwatch   Stop = new Stopwatch();

            //Funções
            Email = new MailMessage();
            Email.To.Add(new MailAddress("*****@*****.**")); //destinatario
            Email.From = new MailAddress("*****@*****.**");             //remetente

            //Função verifica operação de entrada e saída e define layout
            if (dto.Status == 0)                                            //status invertido pois no sistema ainda não foi alterado
            {
                Email.Subject = "Entrada de equipamento";                   //Assunto do email
                if (dto.Tipo == "Impressora")
                {
                    sBobdy = "Entrada de equipamentos RCA Informática LTDA<br/><br/>" + "- ID: " + dto.ID + "<br/>" + "- Tipo: " + dto.Tipo + "<br/>" + "- Fabricante: " + dto.Fabricante + "<br/>" + "- Modelo: " + dto.Modelo + "<br/>" + "- Numero de série: " + dto.SN + "<br/>" + "- Contagem de paginas: " + dto.Contagem + "<br/>" + "- Cliente de retirada: " + dto.Local + "<br/>" + "- Técnico de retirada: " + dto.TecRet + "<br/>" + "- Técnico de entrada: " + dto.TecEnt + "<br/><br/>";
                    atualLocalInt(dto);                                     //Chamada da função de atualização da localização do equipamento
                }
                else
                {
                    sBobdy = "Entrada de equipamentos RCA Informática LTDA<br/><br/>" + "- ID: " + dto.ID + "<br/>" + "- Tipo: " + dto.Tipo + "<br/>" + "- Fabricante: " + dto.Fabricante + "<br/>" + "- Modelo: " + dto.Modelo + "<br/>" + "- Numero de série: " + dto.SN + "<br/>" + "- Cliente de retirada: " + dto.Local + "<br/>" + "- Técnico de retirada: " + dto.TecRet + "<br/>" + "- Técnico de entrada: " + dto.TecEnt + "<br/><br/>";
                    atualLocalInt(dto);                                     //Chamada da função de atualização da localização do equipamento
                }
            }
            else
            {
                Email.Subject = "Saída de equipamento";                     //Assunto do email
                if (dto.Tipo == "Impressora")
                {
                    sBobdy = "Saída de equipamentos RCA Informática LTDA<br/><br/>" + "- ID: " + dto.ID + "<br/>" + "- Tipo: " + dto.Tipo + "<br/>" + "- Fabricante: " + dto.Fabricante + "<br/>" + "- Modelo: " + dto.Modelo + "<br/>" + "- Numero de série: " + dto.SN + "<br/>" + "- Contagem de paginas: " + dto.Contagem + "<br/>" + "- Cliente de locação: " + dto.Local + "<br/>" + "- Técnico de instalação: " + dto.TecInstal + "<br/>" + "- Técnico de saída: " + dto.TecSaid + "<br/><br/>";
                }
                else
                {
                    sBobdy = "Saída de equipamentos RCA Informática LTDA<br/><br/>" + "- ID: " + dto.ID + "<br/>" + "- Tipo: " + dto.Tipo + "<br/>" + "- Fabricante: " + dto.Fabricante + "<br/>" + "- Modelo: " + dto.Modelo + "<br/>" + "- Numero de série: " + dto.SN + "<br/>" + "- Cliente de locação: " + dto.Local + "<br/>" + "- Técnico de instalação: " + dto.TecInstal + "<br/>" + "- Técnico de saída: " + dto.TecSaid + "<br/><br/>";
                }
            }

            Email.IsBodyHtml = true;                                        //Habilita html
            Email.Body       = sBobdy;
            using (var smtp = new SmtpClient("smtp.gmail.com"))
            {
                smtp.EnableSsl             = true;                       // GMail requer SSL
                smtp.Port                  = 587;                        // porta para SSL
                smtp.DeliveryMethod        = SmtpDeliveryMethod.Network; // modo de envio
                smtp.UseDefaultCredentials = false;                      // vamos utilizar credencias especificas
                                                                         // seu usuário e senha para autenticação
                smtp.Credentials = new NetworkCredential("*****@*****.**", "Cont12qwaszx!Equip");
                // envia o e-mail
                smtp.Send(Email);
            }
        }
        }   //fim atualiza entrada

        // Metodo para atualizar valor de saída - status = 1 (equipamento externo)
        public void saiEquip(dto_Equip dto)
        {                        //ini atualiza entrada
            AcessoBancoDados bd; // Declaração de variável para acesso ao banco de dados

            try
            {   //ini try
                string local     = dto.Local.Replace("'", "''");
                string tecSaid   = dto.TecSaid.Replace("'", "''");
                string tecInstal = dto.TecInstal.Replace("'", "''");
                string tecEnt    = "";
                string tecRet    = "";
                int    status    = 1; // Variável de atualização de status 0 para 1, ou entrada para saída

                bd = AcessoBancoDados.GetInstance;
                bd.conectar();
                string comando = "UPDATE equipamentos set status = '" + status + "', local = '" + local + "', tecsaid = '" + tecSaid + "', tecinstal = '" + tecInstal + "', tecent = '" + tecEnt + "', tecret = '" + tecRet + "' where id =" + dto.ID;
                bd.ExecutarComandoSQL(comando);
            }   //fim try
            catch (Exception ex)
            {
                throw new Exception("Erro ao dar saída no equipamento!" + ex.Message);
            }
            try
            {
                //sendMailSaid(dto);  //envia email de saída de equipamento
                sendMail(dto);  //envia email de saída de equipamento
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao enviar o email de saída de equipamento!" + ex.Message);
            }
            try
            {
                atualCont(dto); // atualiza a contagem de paginas na entrada de equipamentos
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar a contagem de paginas do equipamento!" + ex.Message);
            }
            finally
            {
                bd  = null;
                dto = null;
            }
        }   //fim atualiza entrada
        }               //fim exibe equipamentos internos

        //Equipamentos externos
        public DataTable exibeEquipExt(dto_Equip dto)
        {   //ini exibe equipamentos externos
            DataTable dt = new DataTable();

            try
            {   //ini excessão
                bd = AcessoBancoDados.GetInstance;
                bd.conectar();
                int status = 1;
                dt = bd.RetDataTable("SELECT id, tipo, fabricante, modelo, sn, contagem, potencia, polegada, local from equipamentos where status =" + status);
            }   //fim excessão
            catch (Exception ex)
            {
                throw new Exception("Falha ao conectar aos equipamentos externos!" + ex.Message);
            }
            finally
            {
                bd = null;
            }
            return(dt); //retorna com os dados dos equipamentos internos
        }               //fim exibe equipamentos externos
        //Metodo de atualização do status dos equipamentos internos
        public void atualLocalInt(dto_Equip dto)
        {
            AcessoBancoDados bd;    // Declaração de variável para acesso ao banco de dados

            try
            {   //ini try
                string local = "RCA Interno";

                bd = AcessoBancoDados.GetInstance;
                bd.conectar();
                string comando = "UPDATE equipamentos set local = '" + local + "' where id =" + dto.ID;
                bd.ExecutarComandoSQL(comando);
            }   //fim try
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar o status de localização de equipamentos para RCA Interno!" + ex.Message);
            }
            finally
            {
                bd = null;
            }
        }
        }               //fim exibe todos os equipamentos

        /*/Equipamentos por tipo
         * public DataTable exibeTipoEquip(dto_Equip dto)
         * {   //ini exibe equipamentos externos
         *  DataTable dt = new DataTable();
         *  try
         *  {   //ini excessão
         *      bd = AcessoBancoDados.GetInstance;
         *      bd.conectar();
         *      if(dto.Tipo == "Impressora")
         *      dt = bd.RetDataTable("SELECT id, tipo, fabricante, modelo, sn, contagem, local, tecent, tecret, tecsaid, tecinstal from equipamentos where tipo =" + dto.Tipo);
         *      else if(dto.Tipo == "Nobreak" || dto.Tipo == "Estabilizador")
         *          dt = bd.RetDataTable("SELECT id, tipo, fabricante, modelo, sn, potencia, local, tecent, tecret, tecsaid, tecinstal from equipamentos where tipo =" + dto.Tipo);
         *
         *      else dt = bd.RetDataTable("SELECT id, tipo, fabricante, modelo, sn, local, tecent, tecret, tecsaid, tecinstal from equipamentos where tipo =" + dto.Tipo);
         *  }   //fim excessão
         *  catch (Exception ex)
         *  {
         *      throw new Exception("Falha ao conectar aos equipamentos externos!" + ex.Message);
         *  }
         *  finally
         *  {
         *      bd = null;
         *  }
         *  return dt;  //retorna com os dados dos equipamentos internos
         * }   //fim exibe equipamentos externos*/

        //--------------------------------------------------------------------------------------------------

        //Metodo de atualização da contagem de paginas do equipamento
        public void atualCont(dto_Equip dto)
        {
            AcessoBancoDados bd;    // Declaração de variável para acesso ao banco de dados

            try
            {   //ini try
                string cont = dto.Contagem.Replace("'", "''");

                bd = AcessoBancoDados.GetInstance;
                bd.conectar();
                string comando = "UPDATE equipamentos set contagem = '" + cont + "' where id =" + dto.ID;
                bd.ExecutarComandoSQL(comando);
            }   //fim try
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar a contagem de paginas da impressora!" + ex.Message);
            }
            finally
            {
                bd = null;
            }
        }