<repo_name>Renancp01/ColetorDeDados<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/GravaRegistros.cs
﻿using System;
using System.Data;
using System.Windows.Forms;
using ColetorDeDados.Forms;
using System.Windows.Forms;
using System.Net.Mail;

namespace ColetorDeDados
{
    public class GravaRegistros
    {
        private readonly DataTable _dtGeral = new DataTable("dtGeral");
        private readonly DataTable _dtDiscos = new DataTable("dtDiscos");
        private readonly DataTable _dtEquipamentos = new DataTable("dtEquipamentos");

        public void EnviarRegistros(string[] regGeral)
        {
            var ds = new DataSet("ds");
            ds.Tables.Add(GravaGeral(regGeral));
            ds.Tables.Add(GravaDisco());
            ds.Tables.Add(_dtEquipamentos);

            string strs = Convert.ToString(regGeral[5].Split(' '));
            ds.WriteXml("dados" + strs + ".xml");
            Attachment arquivo = new Attachment("dados" + strs + ".xml");
            try
            {
                EnviaEmail ev = new EnviaEmail();
                ev.Enviar(arquivo);
                MessageBox.Show(@"Informações Enviadas Com Sucesso !", @"Confimação", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                MessageBox.Show(@"Erro ao coletar dados. /r/n Entre em contato com o suporte.", @"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private DataTable GravaGeral(string[] reg)
        {
            _dtGeral.Columns.Add(new DataColumn("id"));
            //_dtGeral.Columns.Add(new DataColumn("Nome"));
            _dtGeral.Columns.Add(new DataColumn("Local"));
            _dtGeral.Columns.Add(new DataColumn("Memoria"));
            _dtGeral.Columns.Add(new DataColumn("ip"));
            _dtGeral.Columns.Add(new DataColumn("NomeComputador"));
            _dtGeral.Columns.Add(new DataColumn("Username"));
            _dtGeral.Columns.Add(new DataColumn("OsVersion"));
            _dtGeral.Columns.Add(new DataColumn("Version"));
            _dtGeral.Columns.Add(new DataColumn("NomeUsuario"));
            _dtGeral.Columns.Add(new DataColumn("MarcaComputador"));
            _dtGeral.Columns.Add(new DataColumn("Modelo"));
            _dtGeral.Columns.Add(new DataColumn("DataAqui"));
            var id = 1;
            //Instancia o Row (Registro)
            var drg = _dtGeral.NewRow();

            //Preenche o Row
            drg["id"] = id++;
            drg["Memoria"] =
                ((new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory / 1024) / 1024).ToString();
            drg["NomeComputador"] = SystemInformation.ComputerName;
            drg["Username"] = SystemInformation.UserName;
            drg["OsVersion"] = Environment.OSVersion;
            drg["Version"] = Environment.Version;
            drg["NomeUsuario"] = reg[0];
            drg["Local"] = reg[1];
            drg["MarcaComputador"] = reg[2];
            drg["Modelo"] = reg[3];
            drg["DataAqui"] = reg[4];

            var ip = string.Empty;
            foreach (var item in System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()))
            {
                if ((item).AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    ip = item.ToString();

            }
            drg["ip"] = ip;

            //Adiciona o row a tabela
            _dtGeral.Rows.Add(drg);

            //Salva as alterações na tabela
            _dtGeral.AcceptChanges();
            return _dtGeral;
        }

        private DataTable GravaDisco()
        {
            _dtDiscos.Columns.Add(new DataColumn("id"));
            _dtDiscos.Columns.Add(new DataColumn("Nome"));
            _dtDiscos.Columns.Add(new DataColumn("Capacidade"));
            _dtDiscos.Columns.Add(new DataColumn("EspacoLivre"));

            int id = 1;
            foreach (var drive in System.IO.DriveInfo.GetDrives())
            {
                if (drive.DriveType == System.IO.DriveType.CDRom || drive.DriveType != System.IO.DriveType.Fixed)
                    continue;
                var drd = _dtDiscos.NewRow();
                drd["id"] = id++;
                drd["Nome"] = drive.Name + " - " + drive.DriveType;
                drd["EspacoLivre"] = " Espaço Livre: " + ((drive.TotalFreeSpace / 1024) / 1024).ToString("N0");
                drd["Capacidade"] = " Capacidade: " + ((drive.TotalSize / 1024) / 1024).ToString("N0");

                _dtDiscos.Rows.Add(drd);
                _dtDiscos.AcceptChanges();
            }
            return _dtDiscos;
        }

        public DataTable GravaEquipamentos(FmEquipamentos fm)
        {
            if (_dtEquipamentos.Columns.Count == 0)
            {
                _dtEquipamentos.Columns.Add(new DataColumn("id"));
                _dtEquipamentos.Columns.Add(new DataColumn("Tipo"));
                _dtEquipamentos.Columns.Add(new DataColumn("Marca"));
                _dtEquipamentos.Columns.Add(new DataColumn("Modelo"));
                _dtEquipamentos.Columns.Add(new DataColumn("Situacao"));
                _dtEquipamentos.Columns.Add(new DataColumn("DataAqui"));
                _dtEquipamentos.Columns.Add(new DataColumn("Observacoes"));
            }
            
            fm.Equipamento.EquipamentoId = 1;
            if (_dtEquipamentos.Rows.Count > 0)
            {
                fm.Equipamento.EquipamentoId = _dtEquipamentos.Rows.Count + 1;
            }

            DataRow drw = _dtEquipamentos.NewRow();
            drw["id"] = fm.Equipamento.EquipamentoId;
            drw["Tipo"] = fm.Equipamento.Tipo;
            drw["Marca"] = fm.Equipamento.Marca;
            drw["Modelo"] = fm.Equipamento.Modelo;
            drw["Situacao"] = fm.Equipamento.Situacao;
            drw["DataAqui"] = fm.Equipamento.DataAquisicao;
            drw["Observacoes"] = fm.Equipamento.Observacoes;

            _dtEquipamentos.Rows.Add(drw);
            drw.AcceptChanges();

            return _dtEquipamentos;
        }
    }
}


<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/Equipamentos.cs
﻿namespace ColetorDeDados
{
    public class Equipamentos
    {
        public int EquipamentoId { get; set; }
        public string Tipo { get; set; }
        public string Marca { get; set; }
        public string Modelo { get; set; }
        public string Situacao { get; set; }
        public string DataAquisicao { get; set; }
        public string Observacoes { get; set; }
    }
}
<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/Grids/TodosDataGrid.cs
﻿using System.Drawing;
using System.Windows.Forms;

namespace ColetorDeDados.Grids
{
    public class TodosDataGrid
    {
        public DataGridView DatagridPrincipal()
        {
            var dg = new DataGridView();
            var headerStyle = new DataGridViewCellStyle
            {
                Alignment = DataGridViewContentAlignment.MiddleCenter,
                BackColor = SystemColors.Control,
                Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Bold, GraphicsUnit.Point, ((byte) (0))),
                ForeColor = SystemColors.WindowText,
                SelectionBackColor = SystemColors.Highlight,
                SelectionForeColor = SystemColors.HighlightText
            };
            var defaultStyle = new DataGridViewCellStyle
            {
                Alignment = DataGridViewContentAlignment.MiddleCenter,
                BackColor = SystemColors.Window,
                Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte) (0))),
                ForeColor = SystemColors.ControlText,
                SelectionBackColor = SystemColors.Highlight,
                SelectionForeColor = SystemColors.HighlightText,
                WrapMode = DataGridViewTriState.False
            };
            var headerDefaultStyle = new DataGridViewCellStyle {Alignment = DataGridViewContentAlignment.TopCenter};
            var alternateStyle = new DataGridViewCellStyle
            {
                BackColor = Color.WhiteSmoke,
                SelectionBackColor = SystemColors.Highlight,
                SelectionForeColor = SystemColors.HighlightText
            };
            dg.AutoGenerateColumns = false;
            dg.TabIndex = 1;
            dg.Enabled = true;
            dg.Visible = true;
            dg.AutoGenerateColumns = false;
            dg.RowTemplate.Height = 18;
            dg.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right)));
            dg.AllowUserToAddRows = false;
            dg.AllowUserToDeleteRows = false;
            dg.AllowUserToOrderColumns = true;
            dg.BackgroundColor = Color.White;
            dg.BorderStyle = BorderStyle.None;
            dg.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
            dg.GridColor = Color.White;
            dg.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            dg.RowHeadersWidth = 20;
            dg.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dg.MultiSelect = false;
            dg.ReadOnly = true;
            dg.AlternatingRowsDefaultCellStyle = alternateStyle;
            dg.ColumnHeadersDefaultCellStyle = headerStyle;
            dg.DefaultCellStyle = defaultStyle;
            dg.RowHeadersDefaultCellStyle = headerDefaultStyle;
            return dg;
        }
    }
}
<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/ColetorDeDados/README.md
# ColetorDeDados
Este programa Serve para coletar informações dos usuarios internos
<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/Forms/FrmPrincipal.cs
﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using ColetorDeDados.Grids;

namespace ColetorDeDados.Forms
{
    public partial class FrmPrincipal : Form
    {
        readonly GravaRegistros _gravaRegistros = new GravaRegistros();
        public FrmPrincipal()
        {
            InitializeComponent();
        }

        private void BTNAdicionar_Click(object sender, EventArgs e)
        {
            DialogResult dr;
            FmEquipamentos fm = new FmEquipamentos();
            dr = fm.ShowDialog();
            if (dr == DialogResult.OK)
            {
                DGColetor.DataSource = _gravaRegistros.GravaEquipamentos(fm);
            }
        }

        private void FrmColetor(object sender, EventArgs e)
        {
            var tdg = new TodosDataGrid();
            tdg.DatagridPrincipal();
        }

        private void BTNEnviar_Click(object sender, EventArgs e)
        {
                if (CBLocal.SelectedIndex < 0 || TBUsuario.Text == "")
                {
                    if (CBLocal.SelectedIndex < 0)
                    {
                        CBLocal.Focus();
                        LBVLocal.Visible = true;
                    }

                    if (TBUsuario.Text == "")
                    {
                        TBUsuario.Focus();
                        LBVUsuario.Visible = true;
                    }
                    DialogResult = DialogResult.None;
                    return;
                }
                string[] geral ={ TBUsuario.Text, CBLocal.Text, TBMarca.Text, TBModelo.Text, TBData.Text, TBUsuario.Text};
                _gravaRegistros.EnviarRegistros(geral);
        }

        private void BTNRemover_Click(object sender, EventArgs e)
        {
            //_dtEquipamentos.Rows.RemoveAt(DGColetor.CurrentRow.Index);
            //DGColetor.DataSource = _dtEquipamentos;
        }

        private void TBUsuario_Enter(object sender, EventArgs e)
        {
            LBVUsuario.Visible = false;

        }

        private void CBLocal_Enter(object sender, EventArgs e)
        {
            LBVLocal.Visible = false;
        }

        private void BTNSair_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}<file_sep>/README.md
# ColetorDeDados
Este programa Serve para coletar informações dos usuarios internos
<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/EnviaEmail.cs
﻿using System.Net;
using System.Net.Mail;
namespace ColetorDeDados
{
    public class EnviaEmail
    {
        public void Enviar(Attachment anexo)
        {
            using (SmtpClient smtp = new SmtpClient())
            {
                smtp.Host = "smtp.office365.com";
                smtp.Port = 587;
                smtp.EnableSsl = true;
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new NetworkCredential("<EMAIL>", "ren<PASSWORD>");
                using (var mail = new MailMessage())
                {
                    mail.From = (new MailAddress("<EMAIL>"));
                    mail.To.Add(new MailAddress("<EMAIL>"));
                    mail.Body = "Oi";
                    mail.Attachments.Add(anexo);
                    smtp.Send(mail);
                }
            }
        }
    }
}
<file_sep>/ColetorDeDados/ColetorDeDados/ColetorDeDados/Forms/FmEquipamentos.cs
﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ColetorDeDados.Forms
{
    public partial class FmEquipamentos : Form
    {
        public Equipamentos Equipamento { get; set; }
        public FmEquipamentos()
        {
            InitializeComponent();
        }

        private void BTNCalcelar_Click(object sender, EventArgs e)
        {

        }

        private void FMEquipamentos_Load(object sender, EventArgs e)
        {
            Equipamento = new Equipamentos();
        }

        private void BTOk_Click(object sender, EventArgs e)
        {
            if (CBTipo.SelectedIndex < 0 || CBSituacao.SelectedIndex <0)
            {
                if (CBSituacao.SelectedIndex < 0)
                {
                    CBSituacao.Focus();
                    LBVSituacao.Visible = true;
                }
 
                if (CBTipo.SelectedIndex < 0 )
                {
                     CBTipo.Focus();
                     LBVTipo.Visible = true;
                }
                 
                DialogResult = DialogResult.None;             
            }

            Equipamento.Tipo = CBTipo.Text;
            Equipamento.Marca = TBMarcaEqui.Text;
            Equipamento.Modelo = TBModeloEqui.Text;
            Equipamento.Situacao = CBSituacao.Text;
            Equipamento.DataAquisicao = TBDataEqui.Text;
            Equipamento.Observacoes = TBObservacoes.Text;

        }

        private void CBTipo_Enter(object sender, EventArgs e)
        {
            LBVTipo.Visible = false;
        }

        private void CBSituacao_Enter(object sender, EventArgs e)
        {
            LBVSituacao.Visible = false;
        }
    }
}
