174 lines
6.6 KiB
JavaScript
174 lines
6.6 KiB
JavaScript
// Company data (would be loaded from backend in production)
|
|
var companyData = {
|
|
'company1': {
|
|
name: 'Zanzibar Digital Solutions',
|
|
type: 'Startup FZC',
|
|
status: 'Active',
|
|
registrationDate: '2025-04-01',
|
|
purpose: 'Digital solutions and blockchain development',
|
|
plan: 'Startup FZC - $50/month',
|
|
nextBilling: '2025-06-01',
|
|
paymentMethod: 'Credit Card (****4582)',
|
|
shareholders: [
|
|
{ name: 'John Smith', percentage: '60%' },
|
|
{ name: 'Sarah Johnson', percentage: '40%' }
|
|
],
|
|
contracts: [
|
|
{ name: 'Articles of Incorporation', status: 'Signed' },
|
|
{ name: 'Terms & Conditions', status: 'Signed' },
|
|
{ name: 'Digital Asset Issuance', status: 'Signed' }
|
|
]
|
|
},
|
|
'company2': {
|
|
name: 'Blockchain Innovations Ltd',
|
|
type: 'Growth FZC',
|
|
status: 'Active',
|
|
registrationDate: '2025-03-15',
|
|
purpose: 'Blockchain technology research and development',
|
|
plan: 'Growth FZC - $100/month',
|
|
nextBilling: '2025-06-15',
|
|
paymentMethod: 'Bank Transfer',
|
|
shareholders: [
|
|
{ name: 'Michael Chen', percentage: '35%' },
|
|
{ name: 'Aisha Patel', percentage: '35%' },
|
|
{ name: 'David Okonkwo', percentage: '30%' }
|
|
],
|
|
contracts: [
|
|
{ name: 'Articles of Incorporation', status: 'Signed' },
|
|
{ name: 'Terms & Conditions', status: 'Signed' },
|
|
{ name: 'Digital Asset Issuance', status: 'Signed' },
|
|
{ name: 'Physical Asset Holding', status: 'Signed' }
|
|
]
|
|
},
|
|
'company3': {
|
|
name: 'Sustainable Energy Cooperative',
|
|
type: 'Cooperative FZC',
|
|
status: 'Pending',
|
|
registrationDate: '2025-05-01',
|
|
purpose: 'Renewable energy production and distribution',
|
|
plan: 'Cooperative FZC - $200/month',
|
|
nextBilling: 'Pending Activation',
|
|
paymentMethod: 'Pending',
|
|
shareholders: [
|
|
{ name: 'Community Energy Group', percentage: '40%' },
|
|
{ name: 'Green Future Initiative', percentage: '30%' },
|
|
{ name: 'Sustainable Living Collective', percentage: '30%' }
|
|
],
|
|
contracts: [
|
|
{ name: 'Articles of Incorporation', status: 'Signed' },
|
|
{ name: 'Terms & Conditions', status: 'Signed' },
|
|
{ name: 'Cooperative Governance', status: 'Pending' }
|
|
]
|
|
}
|
|
};
|
|
|
|
// Current company ID for modal
|
|
var currentCompanyId = null;
|
|
|
|
// View company details function
|
|
function viewCompanyDetails(companyId) {
|
|
// Store current company ID
|
|
currentCompanyId = companyId;
|
|
|
|
// Get company data
|
|
const company = companyData[companyId];
|
|
if (!company) return;
|
|
|
|
// Update modal title
|
|
document.getElementById('companyDetailsModalLabel').innerHTML =
|
|
`<i class="bi bi-building me-2"></i>${company.name} Details`;
|
|
|
|
// Update general information
|
|
document.getElementById('modal-company-name').textContent = company.name;
|
|
document.getElementById('modal-company-type').textContent = company.type;
|
|
document.getElementById('modal-registration-date').textContent = company.registrationDate;
|
|
|
|
// Update status with appropriate badge
|
|
const statusBadge = company.status === 'Active' ?
|
|
`<span class="badge bg-success">${company.status}</span>` :
|
|
`<span class="badge bg-warning text-dark">${company.status}</span>`;
|
|
document.getElementById('modal-status').innerHTML = statusBadge;
|
|
|
|
document.getElementById('modal-purpose').textContent = company.purpose;
|
|
|
|
// Update billing information
|
|
document.getElementById('modal-plan').textContent = company.plan;
|
|
document.getElementById('modal-next-billing').textContent = company.nextBilling;
|
|
document.getElementById('modal-payment-method').textContent = company.paymentMethod;
|
|
|
|
// Update shareholders table
|
|
const shareholdersTable = document.getElementById('modal-shareholders');
|
|
shareholdersTable.innerHTML = '';
|
|
company.shareholders.forEach(shareholder => {
|
|
const row = document.createElement('tr');
|
|
row.innerHTML = `
|
|
<td>${shareholder.name}</td>
|
|
<td>${shareholder.percentage}</td>
|
|
`;
|
|
shareholdersTable.appendChild(row);
|
|
});
|
|
|
|
// Update contracts table
|
|
const contractsTable = document.getElementById('modal-contracts');
|
|
contractsTable.innerHTML = '';
|
|
company.contracts.forEach(contract => {
|
|
const row = document.createElement('tr');
|
|
const statusBadge = contract.status === 'Signed' ?
|
|
`<span class="badge bg-success">${contract.status}</span>` :
|
|
`<span class="badge bg-warning text-dark">${contract.status}</span>`;
|
|
|
|
row.innerHTML = `
|
|
<td>${contract.name}</td>
|
|
<td>${statusBadge}</td>
|
|
<td><button class="btn btn-sm btn-outline-primary" onclick="viewContract('${contract.name.toLowerCase().replace(/\s+/g, '-')}')">View</button></td>
|
|
`;
|
|
contractsTable.appendChild(row);
|
|
});
|
|
|
|
// Show the modal
|
|
const modal = new bootstrap.Modal(document.getElementById('companyDetailsModal'));
|
|
modal.show();
|
|
}
|
|
|
|
// Switch to entity function
|
|
function switchToEntity(companyId) {
|
|
const company = companyData[companyId];
|
|
if (!company) return;
|
|
|
|
// In a real application, this would redirect to the entity context
|
|
// For now, we'll just show an alert
|
|
alert(`Switching to ${company.name} entity context. All UI will now reflect this entity's governance, billing, and other features.`);
|
|
|
|
// This would typically involve:
|
|
// 1. Setting a session/cookie for the current entity
|
|
// 2. Redirecting to the dashboard with that entity context
|
|
// window.location.href = `/dashboard?entity=${companyId}`;
|
|
}
|
|
|
|
// Switch to entity from modal
|
|
function switchToEntityFromModal() {
|
|
if (currentCompanyId) {
|
|
switchToEntity(currentCompanyId);
|
|
// Close the modal
|
|
const modal = bootstrap.Modal.getInstance(document.getElementById('companyDetailsModal'));
|
|
modal.hide();
|
|
}
|
|
}
|
|
|
|
// View contract function
|
|
function viewContract(contractId) {
|
|
// In a real application, this would open the contract document
|
|
// For now, we'll just show an alert
|
|
alert(`Viewing contract: ${contractId.replace(/-/g, ' ')}`);
|
|
|
|
// This would typically involve:
|
|
// 1. Fetching the contract document from the server
|
|
// 2. Opening it in a viewer or new tab
|
|
// window.open(`/contracts/view/${contractId}`, '_blank');
|
|
}
|
|
|
|
// Initialize when DOM is loaded
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
console.log('Company management script loaded');
|
|
});
|