- Added HistoriquePage component to display user's voting history with detailed statistics and vote cards. - Created UpcomingVotesPage component to show upcoming elections with a similar layout. - Developed CSS styles for both pages to enhance visual appeal and responsiveness. - Integrated API calls to fetch user's votes and upcoming elections. - Added a rebuild script for Docker environment setup and data restoration. - Created a Python script to populate the database with sample data for testing.
421 lines
18 KiB
SQL
421 lines
18 KiB
SQL
-- ================================================================
|
|
-- Population de la base de données avec élections passées
|
|
-- 10 élections passées avec ~600 utilisateurs et leurs votes
|
|
-- ================================================================
|
|
|
|
-- Désactiver les contraintes temporairement
|
|
SET FOREIGN_KEY_CHECKS=0;
|
|
|
|
-- ================================================================
|
|
-- 1. Créer les 10 élections passées
|
|
-- ================================================================
|
|
|
|
INSERT INTO elections (name, description, start_date, end_date, elgamal_p, elgamal_g, is_active, results_published)
|
|
VALUES
|
|
('Présidentielle 2020', 'Election présidentielle - Tour 1', '2020-04-10 08:00:00', '2020-04-10 20:00:00', 23, 5, FALSE, TRUE),
|
|
('Législatives 2020', 'Elections législatives nationales', '2020-06-07 08:00:00', '2020-06-07 19:00:00', 23, 5, FALSE, TRUE),
|
|
('Européennes 2019', 'Elections au Parlement européen', '2019-05-26 08:00:00', '2019-05-26 20:00:00', 23, 5, FALSE, TRUE),
|
|
('Régionales 2021', 'Elections régionales et départementales', '2021-06-20 08:00:00', '2021-06-20 20:00:00', 23, 5, FALSE, TRUE),
|
|
('Municipales 2020', 'Elections municipales', '2020-03-15 08:00:00', '2020-03-15 19:00:00', 23, 5, FALSE, TRUE),
|
|
('Référendum 2022', 'Référendum constitutionnel', '2022-09-04 08:00:00', '2022-09-04 20:00:00', 23, 5, FALSE, TRUE),
|
|
('Sénatoriales 2020', 'Election du Sénat', '2020-09-27 08:00:00', '2020-09-27 19:00:00', 23, 5, FALSE, TRUE),
|
|
('Présidentielle 2022', 'Election présidentielle - 2022', '2022-04-10 08:00:00', '2022-04-10 20:00:00', 23, 5, FALSE, TRUE),
|
|
('Locales 2023', 'Elections locales complémentaires', '2023-02-12 08:00:00', '2023-02-12 19:00:00', 23, 5, FALSE, TRUE),
|
|
('Référendum 2023', 'Référendum sur la réforme', '2023-07-09 08:00:00', '2023-07-09 20:00:00', 23, 5, FALSE, TRUE);
|
|
|
|
-- ================================================================
|
|
-- 2. Créer des candidats simples pour chaque élection (3-5 par élection)
|
|
-- ================================================================
|
|
|
|
-- Election 1: Présidentielle 2020
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(1, 'Candidat A', 'Parti de gauche', 1),
|
|
(1, 'Candidat B', 'Parti de centre', 2),
|
|
(1, 'Candidat C', 'Parti de droite', 3),
|
|
(1, 'Candidat D', 'Parti écologiste', 4);
|
|
|
|
-- Election 2: Législatives 2020
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(2, 'Liste 1', 'Coalition de gauche', 1),
|
|
(2, 'Liste 2', 'Majorité sortante', 2),
|
|
(2, 'Liste 3', 'Opposition', 3);
|
|
|
|
-- Election 3: Européennes 2019
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(3, 'Liste PS', 'Socialistes', 1),
|
|
(3, 'Liste LREM', 'Libéraux', 2),
|
|
(3, 'Liste LR', 'Conservateurs', 3),
|
|
(3, 'Liste Verts', 'Écologistes', 4),
|
|
(3, 'Liste RN', 'Populistes', 5);
|
|
|
|
-- Election 4: Régionales 2021
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(4, 'Région 1 - Liste A', 'Sortante', 1),
|
|
(4, 'Région 1 - Liste B', 'Opposition', 2),
|
|
(4, 'Région 1 - Liste C', 'Alternative', 3);
|
|
|
|
-- Election 5: Municipales 2020
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(5, 'Ville - Liste Sortante', 'Équipe en place', 1),
|
|
(5, 'Ville - Liste A', 'Opposition', 2),
|
|
(5, 'Ville - Liste B', 'Alternatif', 3);
|
|
|
|
-- Election 6: Référendum 2022
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(6, 'OUI', 'Pour la réforme', 1),
|
|
(6, 'NON', 'Contre la réforme', 2);
|
|
|
|
-- Election 7: Sénatoriales 2020
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(7, 'Sénateur 1', 'Parti A', 1),
|
|
(7, 'Sénateur 2', 'Parti B', 2),
|
|
(7, 'Sénateur 3', 'Parti C', 3);
|
|
|
|
-- Election 8: Présidentielle 2022
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(8, 'Sortant', 'Président sortant', 1),
|
|
(8, 'Challenger 1', 'Candidat A', 2),
|
|
(8, 'Challenger 2', 'Candidat B', 3),
|
|
(8, 'Challenger 3', 'Candidat C', 4);
|
|
|
|
-- Election 9: Locales 2023
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(9, 'Commune A', 'Liste 1', 1),
|
|
(9, 'Commune A', 'Liste 2', 2);
|
|
|
|
-- Election 10: Référendum 2023
|
|
INSERT INTO candidates (election_id, name, description, `order`)
|
|
VALUES
|
|
(10, 'OUI', 'Approbation', 1),
|
|
(10, 'NON', 'Rejet', 2),
|
|
(10, 'BLANC', 'Vote blanc', 3);
|
|
|
|
-- ================================================================
|
|
-- 3. Créer ~600 utilisateurs et leurs votes
|
|
-- ================================================================
|
|
|
|
-- Utilisateurs pour l'élection 1 (100 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e1_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election1_', seq.id) as last_name,
|
|
CONCAT('CNI_E1_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2020-04-10 20:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t3,
|
|
(SELECT 0 UNION SELECT 1) t4,
|
|
(SELECT @row:=-1) t0
|
|
) seq
|
|
WHERE seq.id < 100;
|
|
|
|
-- Utilisateurs pour l'élection 2 (100 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e2_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election2_', seq.id) as last_name,
|
|
CONCAT('CNI_E2_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2020-06-07 19:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t3,
|
|
(SELECT 0 UNION SELECT 1) t4,
|
|
(SELECT @row:=99) t0
|
|
) seq
|
|
WHERE seq.id < 200;
|
|
|
|
-- Utilisateurs pour l'élection 3 (100 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e3_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election3_', seq.id) as last_name,
|
|
CONCAT('CNI_E3_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2019-05-26 20:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t3,
|
|
(SELECT 0 UNION SELECT 1) t4,
|
|
(SELECT @row:=199) t0
|
|
) seq
|
|
WHERE seq.id < 300;
|
|
|
|
-- Utilisateurs pour l'élection 4 (100 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e4_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election4_', seq.id) as last_name,
|
|
CONCAT('CNI_E4_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2021-06-20 20:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t3,
|
|
(SELECT 0 UNION SELECT 1) t4,
|
|
(SELECT @row:=299) t0
|
|
) seq
|
|
WHERE seq.id < 400;
|
|
|
|
-- Utilisateurs pour l'élection 5 (100 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e5_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election5_', seq.id) as last_name,
|
|
CONCAT('CNI_E5_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2020-03-15 19:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t3,
|
|
(SELECT 0 UNION SELECT 1) t4,
|
|
(SELECT @row:=399) t0
|
|
) seq
|
|
WHERE seq.id < 500;
|
|
|
|
-- Utilisateurs pour l'élection 6 (60 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e6_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election6_', seq.id) as last_name,
|
|
CONCAT('CNI_E6_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2022-09-04 20:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2) t3,
|
|
(SELECT @row:=499) t0
|
|
) seq
|
|
WHERE seq.id < 560;
|
|
|
|
-- Utilisateurs pour l'élection 7 (50 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e7_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election7_', seq.id) as last_name,
|
|
CONCAT('CNI_E7_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2020-09-27 19:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2) t2,
|
|
(SELECT @row:=559) t0
|
|
) seq
|
|
WHERE seq.id < 610;
|
|
|
|
-- Utilisateurs pour l'élection 8 (50 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e8_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election8_', seq.id) as last_name,
|
|
CONCAT('CNI_E8_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2022-04-10 20:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2) t2,
|
|
(SELECT @row:=609) t0
|
|
) seq
|
|
WHERE seq.id < 660;
|
|
|
|
-- Utilisateurs pour l'élection 9 (50 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e9_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election9_', seq.id) as last_name,
|
|
CONCAT('CNI_E9_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2023-02-12 19:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2) t2,
|
|
(SELECT @row:=659) t0
|
|
) seq
|
|
WHERE seq.id < 710;
|
|
|
|
-- Utilisateurs pour l'élection 10 (50 utilisateurs)
|
|
INSERT INTO voters (email, password_hash, first_name, last_name, citizen_id, has_voted, created_at)
|
|
SELECT
|
|
CONCAT('user_e10_', LPAD(seq.id, 3, '0'), '@voting.local') as email,
|
|
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5EQzS4xjT/rYa' as password_hash,
|
|
CONCAT('FirstName', seq.id) as first_name,
|
|
CONCAT('Election10_', seq.id) as last_name,
|
|
CONCAT('CNI_E10_', LPAD(seq.id, 4, '0')) as citizen_id,
|
|
TRUE as has_voted,
|
|
DATE_SUB('2023-07-09 20:00:00', INTERVAL FLOOR(RAND() * 1000) MINUTE) as created_at
|
|
FROM (
|
|
SELECT @row := @row + 1 as id FROM (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
|
|
(SELECT 0 UNION SELECT 1 UNION SELECT 2) t2,
|
|
(SELECT @row:=709) t0
|
|
) seq
|
|
WHERE seq.id < 760;
|
|
|
|
-- ================================================================
|
|
-- 4. Créer les votes pour chaque utilisateur
|
|
-- ================================================================
|
|
|
|
-- Votes pour l'élection 1
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
1 as election_id,
|
|
(1 + (v.id % 4)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 1))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_1'), 256) as ballot_hash,
|
|
DATE_SUB('2020-04-10 20:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e1_%';
|
|
|
|
-- Votes pour l'élection 2
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
2 as election_id,
|
|
(5 + (v.id % 3)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 2))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_2'), 256) as ballot_hash,
|
|
DATE_SUB('2020-06-07 19:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e2_%';
|
|
|
|
-- Votes pour l'élection 3
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
3 as election_id,
|
|
(8 + (v.id % 5)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 3))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_3'), 256) as ballot_hash,
|
|
DATE_SUB('2019-05-26 20:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e3_%';
|
|
|
|
-- Votes pour l'élection 4
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
4 as election_id,
|
|
(13 + (v.id % 3)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 4))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_4'), 256) as ballot_hash,
|
|
DATE_SUB('2021-06-20 20:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e4_%';
|
|
|
|
-- Votes pour l'élection 5
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
5 as election_id,
|
|
(16 + (v.id % 3)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 5))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_5'), 256) as ballot_hash,
|
|
DATE_SUB('2020-03-15 19:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e5_%';
|
|
|
|
-- Votes pour l'élection 6
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
6 as election_id,
|
|
(19 + (v.id % 2)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 6))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_6'), 256) as ballot_hash,
|
|
DATE_SUB('2022-09-04 20:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e6_%';
|
|
|
|
-- Votes pour l'élection 7
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
7 as election_id,
|
|
(21 + (v.id % 3)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 7))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_7'), 256) as ballot_hash,
|
|
DATE_SUB('2020-09-27 19:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e7_%';
|
|
|
|
-- Votes pour l'élection 8
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
8 as election_id,
|
|
(24 + (v.id % 4)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 8))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_8'), 256) as ballot_hash,
|
|
DATE_SUB('2022-04-10 20:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e8_%';
|
|
|
|
-- Votes pour l'élection 9
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
9 as election_id,
|
|
(28 + (v.id % 2)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 9))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_9'), 256) as ballot_hash,
|
|
DATE_SUB('2023-02-12 19:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e9_%';
|
|
|
|
-- Votes pour l'élection 10
|
|
INSERT INTO votes (voter_id, election_id, candidate_id, encrypted_vote, ballot_hash, timestamp)
|
|
SELECT
|
|
v.id as voter_id,
|
|
10 as election_id,
|
|
(30 + (v.id % 3)) as candidate_id,
|
|
CONCAT('0x', MD5(CONCAT('vote_', v.id, '_', 10))) as encrypted_vote,
|
|
SHA2(CONCAT('ballot_', v.id, '_10'), 256) as ballot_hash,
|
|
DATE_SUB('2023-07-09 20:00:00', INTERVAL FLOOR(RAND() * 720) MINUTE) as timestamp
|
|
FROM voters v
|
|
WHERE v.email LIKE 'user_e10_%';
|
|
|
|
-- Réactiver les contraintes
|
|
SET FOREIGN_KEY_CHECKS=1;
|
|
|
|
-- ================================================================
|
|
-- Confirmation
|
|
-- ================================================================
|
|
SELECT 'Population complète!' as status;
|
|
SELECT COUNT(*) as total_voters FROM voters;
|
|
SELECT COUNT(*) as total_elections FROM elections;
|
|
SELECT COUNT(*) as total_votes FROM votes;
|