create database vio_adriano;
-- vio (venda de ingressos online)

use vio_adriano;

create table usuario (
		cpf char(11) not null unique,
    nome varchar(100) not null,
    email varchar(100) not null unique,
    senha varchar(50) not null,
    telefone char(11) not null,    
    data_nascimento date not null
);

insert into usuario (nome, email, senha, cpf, data_nascimento, telefone) values
('João Silva', '[email protected]', 'senha123', '16123456789', '1990-01-15', '16123456789'),
('Maria Oliveira', '[email protected]', 'senha123', '16987654321', '1985-06-23', '16123456789'),
('Carlos Pereira', '[email protected]', 'senha123', '16123987456', '1992-11-30', '16123456789'),
('Ana Souza', '[email protected]', 'senha123', '16456123789', '1987-04-18', '16123456789'),
('Pedro Costa', '[email protected]', 'senha123', '16789123456', '1995-08-22', '16123456789'),
('Laura Lima', '[email protected]', 'senha123', '16321654987', '1998-09-09', '16123456789'),
('Lucas Alves', '[email protected]', 'senha123', '16654321987', '1993-12-01', '16123456789'),
('Fernanda Rocha', '[email protected]', 'senha123', '16741852963', '1991-07-07', '16123456789'),
('Rafael Martins', '[email protected]', 'senha123', '16369258147', '1994-03-27', '16123456789'),
('Juliana Nunes', '[email protected]', 'senha123', '16258147369', '1986-05-15', '16123456789'),
('Paulo Araujo', '[email protected]', 'senha123', '16159753486', '1997-10-12', '16123456789'),
('Beatriz Melo', '[email protected]', 'senha123', '16486159753', '1990-02-28', '16123456789'),
('Renato Dias', '[email protected]', 'senha123', '16753486159', '1996-11-11', '16123456789'),
('Camila Ribeiro', '[email protected]', 'senha123', '16963852741', '1989-08-03', '16123456789'),
('Thiago Teixeira', '[email protected]', 'senha123', '16852741963', '1992-12-24', '16123456789'),
('Patrícia Fernandes', '[email protected]', 'senha123', '16741963852', '1991-01-10', '16123456789'),
('Rodrigo Gomes', '[email protected]', 'senha123', '16963741852', '1987-06-30', '16123456789'),
('Mariana Batista', '[email protected]', 'senha123', '16147258369', '1998-09-22', '16123456789'),
('Fábio Freitas', '[email protected]', 'senha123', '16369147258', '1994-04-16', '16123456789'),
('Isabela Cardoso', '[email protected]', 'senha123', '16258369147', '1985-11-08' ,'16123456789');
	
create table organizador (
	id_organizador int auto_increment primary key,
	nome varchar(100) not null,
	email varchar(100) not null unique,
	senha varchar(50) not null,
	telefone char(11) not null
);

insert into organizador (nome, email, senha, telefone) values
('Organização ABC', '[email protected]', 'senha123', '11111222333'),
('Eventos XYZ', '[email protected]', 'senha123', '11222333444'),
('Festivais BR', '[email protected]', 'senha123', '11333444555'),
('Eventos GL', '[email protected]', 'senha123', '11444555666'),
('Eventos JQ', '[email protected]', 'senha123', '11555666777');

create table evento (
    id_evento int auto_increment primary key,
    nome varchar(100) not null,
    descricao varchar(255) not null,
    data_hora datetime not null,
    local varchar(255) not null,
    fk_id_organizador int not null,
    foreign key (fk_id_organizador) references organizador(id_organizador)
);

insert into evento (nome, data_hora, local, descricao, fk_id_organizador) values
    ('Festival de Verão', '2024-12-15', 'Praia Central', 'evento de verao', '1'),
    ('Congresso de Tecnologia', '2024-11-20', 'Centro de convencoes', 'Evento de tecnologia', '2'),
    ('Show Internacional', '2024-10-30', 'Arena Principal', 'Evento internacional', '3');

-- criação da tabela com 'tipo' como ENUM
create table ingresso (
    id_ingresso int auto_increment primary key,
    preco decimal(5,2) not null,
    tipo enum('VIP', 'Pista') not null,
    fk_id_evento int not null,
    foreign key (fk_id_evento) references evento(id_evento)
);

insert into ingresso (preco, tipo, fk_id_evento) values
    (500, 'VIP', 1),
    (150, 'Pista', 1),
    (200, 'Pista', 2),
    (600, 'VIP', 3),
    (250, 'Pista', 3);

create table ingresso (
    id_ingresso int auto_increment primary key,
    preco decimal(5,2) not null,
    tipo varchar(10) not null,
    fk_id_evento int not null,
    foreign key (fk_id_evento) references evento(id_evento)
);

insert into ingresso (preco, tipo, fk_id_evento) values
    (500, 'vip', '1'),
    (150, 'pista', '1'),
    (200, 'pista', '2'),
    (600, 'vip', '3'),
    (250, 'pista', '3');

create table compra (
    id_compra int auto_increment primary key,
    data_compra datetime default current_timestamp,
    valor_compra decimal(5,2) not null,
    fk_cpf char(11) not null,
    foreign key (fk_cpf) references usuario(cpf)
);

insert into compra (data_compra, fk_cpf, valor_compra) values
    ("2024-11-14 19:04", "16123456789", 250.50),
    ("2024-11-13 17:00", "16123456789", 300),
    ("2024-11-12 15:30", "16987654321", 450.50),
    ("2024-11-11 14:20", "16987654321", 500.0);

create table ingresso_compra(
    id_ingresso_compra int auto_increment primary key,
    quantidade int not null,
    valor decimal(5,2) not null,
    fk_id_ingresso int not null,
    foreign key (fk_id_ingresso) references ingresso(id_ingresso),
    fk_id_compra int not null,
    foreign key (fk_id_compra) references compra(id_compra)
);

insert into ingresso_compra(fk_id_compra, fk_id_ingresso, quantidade, valor) values
    (1, 4, 5, 230),
    (1, 5, 2, 600),
    (2, 1, 1, 400),
    (2, 2, 2, 250);
     
create table presenca(
    id_presenca int auto_increment primary key,
    data_hora_checkin datetime,
    fk_id_evento int not null,
    foreign key (fk_id_evento) references evento(id_evento),
    fk_id_compra int not null,
    foreign key (fk_id_compra) references compra(id_compra)
);