Files
panel/scripts/create-sample-projects.js

207 lines
6.3 KiB
JavaScript

import db from '../src/lib/db.js';
import initializeDatabase from '../src/lib/init-db.js';
// Initialize the database
initializeDatabase();
// Sample projects data
const sampleProjects = [
{
contract_id: 1,
project_name: 'Residential Complex Alpha',
address: 'ul. Główna 123',
plot: 'Plot 45/6',
district: 'Śródmieście',
unit: 'Unit A',
city: 'Warszawa',
investment_number: 'INV-2025-001',
finish_date: '2025-06-30',
wp: 'WP-001',
contact: 'Jan Kowalski, tel. 123-456-789',
notes: 'Modern residential building with 50 apartments',
coordinates: '52.2297,21.0122',
project_type: 'design+construction',
project_status: 'registered'
},
{
contract_id: 1,
project_name: 'Office Building Beta',
address: 'al. Jerozolimskie 50',
plot: 'Plot 12/8',
district: 'Mokotów',
unit: 'Unit B',
city: 'Warszawa',
investment_number: 'INV-2025-002',
finish_date: '2025-09-15',
wp: 'WP-002',
contact: 'Anna Nowak, tel. 987-654-321',
notes: 'Commercial office space, 10 floors',
coordinates: '52.2215,21.0071',
project_type: 'construction',
project_status: 'in_progress_design'
},
{
contract_id: 2,
project_name: 'Shopping Mall Gamma',
address: 'pl. Centralny 1',
plot: 'Plot 78/3',
district: 'Centrum',
unit: 'Unit C',
city: 'Kraków',
investment_number: 'INV-2025-003',
finish_date: '2025-12-20',
wp: 'WP-003',
contact: 'Piotr Wiśniewski, tel. 555-123-456',
notes: 'Large shopping center with parking',
coordinates: '50.0647,19.9450',
project_type: 'design+construction',
project_status: 'in_progress_construction'
},
{
contract_id: 2,
project_name: 'Industrial Warehouse Delta',
address: 'ul. Przemysłowa 100',
plot: 'Plot 200/15',
district: 'Przemysłowa',
unit: 'Unit D',
city: 'Łódź',
investment_number: 'INV-2025-004',
finish_date: '2025-08-10',
wp: 'WP-004',
contact: 'Maria Lewandowska, tel. 444-789-012',
notes: 'Logistics warehouse facility',
coordinates: '51.7592,19.4600',
project_type: 'design',
project_status: 'fulfilled'
},
{
contract_id: 1,
project_name: 'Hotel Complex Epsilon',
address: 'ul. Morska 25',
plot: 'Plot 5/2',
district: 'Nadmorze',
unit: 'Unit E',
city: 'Gdańsk',
investment_number: 'INV-2025-005',
finish_date: '2025-11-05',
wp: 'WP-005',
contact: 'Tomasz Malinowski, tel. 333-456-789',
notes: 'Luxury hotel with conference facilities',
coordinates: '54.3520,18.6466',
project_type: 'design+construction',
project_status: 'registered'
},
{
contract_id: 2,
project_name: 'School Complex Zeta',
address: 'ul. Edukacyjna 15',
plot: 'Plot 30/4',
district: 'Edukacyjny',
unit: 'Unit F',
city: 'Poznań',
investment_number: 'INV-2025-006',
finish_date: '2025-07-20',
wp: 'WP-006',
contact: 'Ewa Dombrowska, tel. 222-333-444',
notes: 'Modern educational facility with sports complex',
coordinates: '52.4064,16.9252',
project_type: 'design',
project_status: 'in_progress_design'
},
{
contract_id: 1,
project_name: 'Medical Center Eta',
address: 'al. Zdrowia 8',
plot: 'Plot 67/9',
district: 'Medyczny',
unit: 'Unit G',
city: 'Wrocław',
investment_number: 'INV-2025-007',
finish_date: '2025-10-30',
wp: 'WP-007',
contact: 'Dr. Marek Szymankowski, tel. 111-222-333',
notes: 'Specialized medical center with emergency department',
coordinates: '51.1079,17.0385',
project_type: 'construction',
project_status: 'in_progress_construction'
},
{
contract_id: 2,
project_name: 'Sports Stadium Theta',
address: 'ul. Sportowa 50',
plot: 'Plot 150/20',
district: 'Sportowy',
unit: 'Unit H',
city: 'Szczecin',
investment_number: 'INV-2025-008',
finish_date: '2025-05-15',
wp: 'WP-008',
contact: 'Katarzyna Wojcik, tel. 999-888-777',
notes: 'Multi-purpose sports stadium with seating for 20,000',
coordinates: '53.4289,14.5530',
project_type: 'design+construction',
project_status: 'fulfilled'
},
{
contract_id: 1,
project_name: 'Library Complex Iota',
address: 'pl. Wiedzy 3',
plot: 'Plot 25/7',
district: 'Kulturalny',
unit: 'Unit I',
city: 'Lublin',
investment_number: 'INV-2025-009',
finish_date: '2025-08-25',
wp: 'WP-009',
contact: 'Prof. Andrzej Kowalewski, tel. 777-666-555',
notes: 'Modern library with digital archives and community spaces',
coordinates: '51.2465,22.5684',
project_type: 'design',
project_status: 'registered'
}
];
console.log('Creating sample test projects...\n');
sampleProjects.forEach((projectData, index) => {
try {
// Generate project number based on contract
const contractInfo = db.prepare('SELECT contract_number FROM contracts WHERE contract_id = ?').get(projectData.contract_id);
const existingProjects = db.prepare('SELECT COUNT(*) as count FROM projects WHERE contract_id = ?').get(projectData.contract_id);
const sequentialNumber = existingProjects.count + 1;
const projectNumber = `${sequentialNumber}/${contractInfo.contract_number}`;
const result = db.prepare(`
INSERT INTO projects (
contract_id, project_name, project_number, address, plot, district, unit, city,
investment_number, finish_date, wp, contact, notes, coordinates,
project_type, project_status, created_at, updated_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
`).run(
projectData.contract_id,
projectData.project_name,
projectNumber,
projectData.address,
projectData.plot,
projectData.district,
projectData.unit,
projectData.city,
projectData.investment_number,
projectData.finish_date,
projectData.wp,
projectData.contact,
projectData.notes,
projectData.coordinates,
projectData.project_type,
projectData.project_status
);
console.log(`✓ Created project: ${projectData.project_name} (ID: ${result.lastInsertRowid}, Number: ${projectNumber})`);
} catch (error) {
console.error(`✗ Error creating project ${projectData.project_name}:`, error.message);
}
});
console.log('\nSample test projects created successfully!');