0% acharam este documento útil (0 voto)
24 visualizações9 páginas

Program 1.01

Enviado por

GEOVANI
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
24 visualizações9 páginas

Program 1.01

Enviado por

GEOVANI
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 9

using System;

using System.Windows.Forms;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Xml.Linq; // Para manipulação de XML
using Newtonsoft.Json;

namespace EMISSOR
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}

public class MainForm : Form


{
private Button btnCadastrarEmpresa;
private Button btnVerEmpresas;
private Button btnImportarXML;
private Button btnSalvarEmpresas; // Novo botão para salvar empresas
private Button btnCarregarEmpresas; // Novo botão para carregar empresas
private List<Empresa> empresasCadastradas;
private ListBox empresasListBox;
private ListBox xmlListBox;
private Label detalhesLabel;
private Button btnAlterar;

public MainForm()
{
empresasCadastradas = new List<Empresa>();
InitializeComponents();
CarregarEmpresas(); // Carregar empresas do arquivo ao iniciar
}

private void InitializeComponents()


{
this.Text = "Cadastro de Empresas";
this.WindowState = FormWindowState.Maximized; // Janela maximizada
this.StartPosition = FormStartPosition.CenterScreen;
this.BackColor = Color.WhiteSmoke;

// Principal FlowLayoutPanel
FlowLayoutPanel mainPanel = new FlowLayoutPanel
{
Dock = DockStyle.Fill,
Padding = new Padding(10),
FlowDirection = FlowDirection.TopDown,
AutoScroll = true
};
this.Controls.Add(mainPanel);

// Card de Cadastrar Empresa


var cardCadastro = CreateCard("Cadastrar Empresa", "🔧", "Cadastrar",
BtnCadastrarEmpresa_Click);
mainPanel.Controls.Add(cardCadastro);

// Card de Ver Empresas


var cardVerEmpresas = CreateCard("Empresas Cadastradas", "📋", "Ver
Empresas", BtnVerEmpresas_Click);
mainPanel.Controls.Add(cardVerEmpresas);

// Card de Importar XML


var cardImportarXML = CreateCard("Importar XML", "📂", "Importar XML",
BtnImportarXML_Click);
mainPanel.Controls.Add(cardImportarXML);

// Card de Salvar Empresas


var cardSalvarEmpresas = CreateCard("Salvar Empresas", "💾", "Salvar
Empresas", BtnSalvarEmpresas_Click);
mainPanel.Controls.Add(cardSalvarEmpresas);

// Card de Carregar Empresas


var cardCarregarEmpresas = CreateCard("Carregar Empresas", "📂",
"Carregar Empresas", BtnCarregarEmpresas_Click);
mainPanel.Controls.Add(cardCarregarEmpresas);

// ListBox para exibir empresas cadastradas


empresasListBox = new ListBox
{
Width = 360,
Height = 160,
BorderStyle = BorderStyle.FixedSingle,
Padding = new Padding(10),
Font = new Font("Arial", 11),
ItemHeight = 30
};
empresasListBox.SelectedIndexChanged +=
EmpresasListBox_SelectedIndexChanged;
mainPanel.Controls.Add(empresasListBox);

// ListBox para exibir dados do XML


xmlListBox = new ListBox
{
Width = 360,
Height = 160,
BorderStyle = BorderStyle.FixedSingle,
Padding = new Padding(10),
Font = new Font("Arial", 11),
ItemHeight = 30
};
mainPanel.Controls.Add(xmlListBox);

// Label para detalhes da empresa


detalhesLabel = new Label
{
Width = 360,
Height = 100,
Text = "Selecione uma empresa para ver os detalhes.",
BorderStyle = BorderStyle.Fixed3D,
TextAlign = ContentAlignment.MiddleCenter,
Padding = new Padding(5),
Font = new Font("Arial", 11),
BackColor = Color.LightYellow
};
mainPanel.Controls.Add(detalhesLabel);

// Botão de Alterar (aparece após seleção)


btnAlterar = new Button
{
Text = "Alterar Dados",
Width = 160,
Height = 40,
BackColor = Color.LightGoldenrodYellow,
Enabled = false,
Font = new Font("Arial", 12, FontStyle.Bold),
ForeColor = Color.Black
};
btnAlterar.Click += BtnAlterar_Click;
mainPanel.Controls.Add(btnAlterar);
}

private Panel CreateCard(string title, string icon, string buttonText,


EventHandler clickEvent)
{
var cardPanel = new Panel
{
Width = 360,
Height = 140,
BackColor = Color.LightSteelBlue,
BorderStyle = BorderStyle.FixedSingle,
Padding = new Padding(10),
Margin = new Padding(5)
};

var titleLabel = new Label


{
Text = $"{icon} {title}",
Font = new Font("Arial", 14, FontStyle.Bold),
Dock = DockStyle.Top,
TextAlign = ContentAlignment.MiddleCenter,
Padding = new Padding(5),
Height = 40
};

var actionButton = new Button


{
Text = buttonText,
Width = 240,
Height = 40,
BackColor = Color.LightGreen,
Font = new Font("Arial", 10, FontStyle.Bold),
Dock = DockStyle.Bottom
};
actionButton.Click += clickEvent;

cardPanel.Controls.Add(titleLabel);
cardPanel.Controls.Add(actionButton);

return cardPanel;
}
private void BtnCadastrarEmpresa_Click(object sender, EventArgs e)
{
CadastroEmpresaForm cadastroForm = new CadastroEmpresaForm();
cadastroForm.EmpresaCadastrada += CadastroForm_EmpresaCadastrada;
cadastroForm.ShowDialog();
}

private void CadastroForm_EmpresaCadastrada(object sender, Empresa e)


{
empresasCadastradas.Add(e);
MessageBox.Show($"Empresa '{e.Nome}' cadastrada com sucesso!",
"Cadastro Completo", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

private void BtnVerEmpresas_Click(object sender, EventArgs e)


{
empresasListBox.Items.Clear();
foreach (var empresa in empresasCadastradas)
{
empresasListBox.Items.Add($"{empresa.Nome} - {empresa.Cnpj}");
}
}

private void BtnImportarXML_Click(object sender, EventArgs e)


{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "Arquivos XML|*.xml",
Title = "Importar Arquivo XML"
};

if (openFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
// Carregar e processar o XML
XDocument xmlDocument =
XDocument.Load(openFileDialog.FileName);
var empresasXML = xmlDocument.Descendants("empresa");

// Limpar a lista antes de adicionar os itens


xmlListBox.Items.Clear();

foreach (var empresaElement in empresasXML)


{
var nome = empresaElement.Element("nome")?.Value;
var cnpj = empresaElement.Element("cnpj")?.Value;
var endereco = empresaElement.Element("endereco")?.Value;

// Exibir no xmlListBox
xmlListBox.Items.Add($"{nome} - {cnpj} - {endereco}");
}
MessageBox.Show("Empresas importadas com sucesso!", "Importação
Completa", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Erro ao importar XML: {ex.Message}", "Erro",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

private void BtnSalvarEmpresas_Click(object sender, EventArgs e)


{
SaveFileDialog saveFileDialog = new SaveFileDialog
{
Filter = "Arquivo JSON|*.json",
Title = "Salvar Empresas"
};

if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
string json = JsonConvert.SerializeObject(empresasCadastradas,
Formatting.Indented);
File.WriteAllText(saveFileDialog.FileName, json);
MessageBox.Show("Empresas salvas com sucesso!", "Salvamento
Completo", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Erro ao salvar empresas: {ex.Message}",
"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

private void BtnCarregarEmpresas_Click(object sender, EventArgs e)


{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "Arquivo JSON|*.json",
Title = "Carregar Empresas"
};

if (openFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
string json = File.ReadAllText(openFileDialog.FileName);
empresasCadastradas =
JsonConvert.DeserializeObject<List<Empresa>>(json);
MessageBox.Show("Empresas carregadas com sucesso!",
"Carregamento Completo", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Erro ao carregar empresas: {ex.Message}",
"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

private void EmpresasListBox_SelectedIndexChanged(object sender, EventArgs


e)
{
if (empresasListBox.SelectedIndex >= 0)
{
var empresaSelecionada =
empresasCadastradas[empresasListBox.SelectedIndex];
detalhesLabel.Text = $"Nome: {empresaSelecionada.Nome}\nCNPJ:
{empresaSelecionada.Cnpj}\nEndereço: {empresaSelecionada.Endereco}";
btnAlterar.Enabled = true;
}
else
{
detalhesLabel.Text = "Selecione uma empresa para ver os detalhes.";
btnAlterar.Enabled = false;
}
}

private void BtnAlterar_Click(object sender, EventArgs e)


{
var empresaSelecionada =
empresasCadastradas[empresasListBox.SelectedIndex];
CadastroEmpresaForm cadastroForm = new
CadastroEmpresaForm(empresaSelecionada);
cadastroForm.EmpresaCadastrada += CadastroForm_EmpresaCadastrada;
cadastroForm.ShowDialog();
}

private void CarregarEmpresas()


{
// Tente carregar empresas de um arquivo JSON (se existir)
string caminhoArquivo = "empresas.json"; // Caminho padrão para salvar
os dados
if (File.Exists(caminhoArquivo))
{
try
{
string json = File.ReadAllText(caminhoArquivo);
empresasCadastradas =
JsonConvert.DeserializeObject<List<Empresa>>(json);
}
catch (Exception ex)
{
MessageBox.Show($"Erro ao carregar empresas do arquivo:
{ex.Message}", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

public class Empresa


{
public string Nome { get; set; }
public string Cnpj { get; set; }
public string Endereco { get; set; }
}

public class CadastroEmpresaForm : Form


{
public event EventHandler<Empresa> EmpresaCadastrada;
private Empresa empresaEditada;
private TextBox nomeTextBox;
private TextBox cnpjTextBox;
private TextBox enderecoTextBox;
private Button salvarButton;
private Button importarButton;

public CadastroEmpresaForm(Empresa empresa = null)


{
empresaEditada = empresa;
InitializeComponents();
}

private void InitializeComponents()


{
this.Text = empresaEditada == null ? "Cadastro de Empresa" : "Editar
Empresa";
this.Width = 450;
this.Height = 350;

Label nomeLabel = new Label { Text = "Nome da Empresa", Left = 20, Top
= 20, Width = 120 };
nomeTextBox = new TextBox { Left = 150, Top = 20, Width = 250 };

Label cnpjLabel = new Label { Text = "CNPJ", Left = 20, Top = 60, Width
= 120 };
cnpjTextBox = new TextBox { Left = 150, Top = 60, Width = 250 };

Label enderecoLabel = new Label { Text = "Endereço", Left = 20, Top =


100, Width = 120 };
enderecoTextBox = new TextBox
{
Left = 150,
Top = 100,
Width = 250,
Height = 60,
Multiline = true,
ScrollBars = ScrollBars.Vertical,
BorderStyle = BorderStyle.Fixed3D
};

salvarButton = new Button


{
Text = empresaEditada == null ? "Salvar" : "Salvar Alterações",
Left = 150,
Top = 180,
Width = 100,
Height = 40,
BackColor = Color.LightGreen
};
salvarButton.Click += SalvarButton_Click;

// Botão para Importar Dados do CNPJ


importarButton = new Button
{
Text = "Importar Dados do CNPJ",
Left = 150,
Top = 230,
Width = 150,
Height = 40,
BackColor = Color.LightBlue
};
importarButton.Click += ImportarButton_Click;

this.Controls.Add(nomeLabel);
this.Controls.Add(nomeTextBox);
this.Controls.Add(cnpjLabel);
this.Controls.Add(cnpjTextBox);
this.Controls.Add(enderecoLabel);
this.Controls.Add(enderecoTextBox);
this.Controls.Add(salvarButton);
this.Controls.Add(importarButton);

if (empresaEditada != null)
{
nomeTextBox.Text = empresaEditada.Nome;
cnpjTextBox.Text = empresaEditada.Cnpj;
enderecoTextBox.Text = empresaEditada.Endereco;
}
}

private void SalvarButton_Click(object sender, EventArgs e)


{
if (empresaEditada == null)
{
empresaEditada = new Empresa
{
Nome = nomeTextBox.Text,
Cnpj = cnpjTextBox.Text,
Endereco = enderecoTextBox.Text
};
EmpresaCadastrada?.Invoke(this, empresaEditada);
}
else
{
empresaEditada.Nome = nomeTextBox.Text;
empresaEditada.Cnpj = cnpjTextBox.Text;
empresaEditada.Endereco = enderecoTextBox.Text;
EmpresaCadastrada?.Invoke(this, empresaEditada);
}
this.Close();
}

private async void ImportarButton_Click(object sender, EventArgs e)


{
string cnpj = cnpjTextBox.Text;
if (!string.IsNullOrEmpty(cnpj))
{
using (HttpClient client = new HttpClient())
{
string url = $"https://www.receitaws.com.br/v1/cnpj/{cnpj}";
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
string jsonResponse = await
response.Content.ReadAsStringAsync();
var data =
JsonConvert.DeserializeObject<dynamic>(jsonResponse);
nomeTextBox.Text = data.nome;
enderecoTextBox.Text = $"{data.logradouro}, {data.numero} -
{data.bairro}, {data.municipio}/{data.uf}";
}
else
{
MessageBox.Show("Não foi possível obter os dados da Receita
Federal.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
else
{
MessageBox.Show("Por favor, informe um CNPJ válido.", "Erro",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

Você também pode gostar