Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions Claim.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract InsurancePolicy {
struct Policy {
uint policyId;
address policyHolder;
uint coverageAmount;
uint premium;
bool isActive;
}

struct Claim {
uint claimId;
uint policyId;
uint claimAmount;
bool isApproved;
}

mapping(uint => Policy) public policies;
mapping(uint => Claim) public claims;

uint public policyCounter;
uint public claimCounter;

// Function to create a new insurance policy
function createPolicy(address _policyHolder, uint _coverageAmount, uint _premium) public returns (uint) {
policyCounter++;
policies[policyCounter] = Policy(policyCounter, _policyHolder, _coverageAmount, _premium, true);
return policyCounter; // Return the policyId to the user
}

// Function to view a policy by ID
function viewPolicy(uint _policyId) public view returns (uint, address, uint, uint, bool) {
Policy memory policy = policies[_policyId];
return (policy.policyId, policy.policyHolder, policy.coverageAmount, policy.premium, policy.isActive);
}

// Function to submit a claim linked to a policy
function submitClaim(uint _policyId, uint _claimAmount) public returns (uint) {
claimCounter++;
claims[claimCounter] = Claim(claimCounter, _policyId, _claimAmount, false);
return claimCounter; // Return the claimId to the user
}

// Function to approve a claim
function approveClaim(uint _claimId) public {
claims[_claimId].isApproved = true;
}
}
50 changes: 50 additions & 0 deletions InsurancePolicy.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract InsurancePolicy {
struct Policy {
uint policyId;
address policyHolder;
uint coverageAmount;
uint premium;
bool isActive;
}

mapping(uint => Policy) public policies;
uint public policyCounter;

// Event to log policy creation
event PolicyCreated(uint policyId, address policyHolder, uint coverageAmount, uint premium);

// Event to log the result of viewing a policy
event PolicyViewed(uint policyId, address policyHolder, uint coverageAmount, uint premium, bool isActive);

// Function to create a new policy
function createPolicy(address _policyHolder, uint _coverageAmount, uint _premium) public returns (uint) {
policyCounter++;
policies[policyCounter] = Policy(policyCounter, _policyHolder, _coverageAmount, _premium, true);

// Emit event after creating the policy
emit PolicyCreated(policyCounter, _policyHolder, _coverageAmount, _premium);

return policyCounter;
}

// Function to view a policy (no longer view-only since it emits events)
function viewPolicy(uint _policyId) public returns (Policy memory) {
// Ensure the policy exists
require(_policyId > 0 && _policyId <= policyCounter, "Policy does not exist");

// Emit event for viewing the policy (for debugging)
emit PolicyViewed(
_policyId,
policies[_policyId].policyHolder,
policies[_policyId].coverageAmount,
policies[_policyId].premium,
policies[_policyId].isActive
);

return policies[_policyId];
}
}
59 changes: 59 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insurance Claim Portal</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- Header Section -->
<header>
<!-- Logo Image -->
<img src="logo.webp" alt="Insurance Fraud Prevention Logo" class="logo">
<h1>Insurance Fraud Prevention System</h1>
</header>

<!-- Login Form -->
<section id="loginSection" class="fadeIn">
<h2>Login</h2>
<form id="loginForm">
<label for="username">Username</label>
<input type="text" id="username" required>
<label for="password">Password</label>
<input type="password" id="password" required>
<button type="submit">Login</button>
</form>
</section>

<!-- Claim Form -->
<section id="submitClaim" class="fadeIn">
<h2>Submit Your Claim</h2>
<form id="claimForm">
<label for="claimantName">Claimant Name</label>
<input type="text" id="claimantName" required>
<label for="claimAmount">Claim Amount</label>
<input type="number" id="claimAmount" required>
<label for="claimDescription">Claim Description</label>
<textarea id="claimDescription" required></textarea>
<label for="documentUpload">Upload Documentation</label>
<input type="file" id="documentUpload" required>
<button type="submit">Submit Claim</button>
<div id="uploadProgress"></div>
</form>
</section>

<!-- Claim History Section -->
<section id="claimHistory" class="fadeIn">
<h2>Your Claim History</h2>
<div id="claimList"></div>
</section>

<!-- Footer -->
<footer class="fadeIn">
<p>&copy; 2024 Insurance Claim Portal</p>
</footer>

<script src="script.js"></script>
</body>
</html>
Binary file added logo.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
73 changes: 73 additions & 0 deletions script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Handle login functionality
document.getElementById("loginForm").addEventListener("submit", function(event) {
event.preventDefault();
let username = document.getElementById("username").value;
let password = document.getElementById("password").value;

if (username && password) {
alert(`Logged in as ${username}`);
// Redirect to claim submission or dashboard
window.location.href = "#submitClaim";
} else {
alert("Please enter a valid username and password.");
}
});

// Handle claim submission with file upload progress
document.getElementById("claimForm").addEventListener("submit", function(event) {
event.preventDefault();

let claimantName = document.getElementById("claimantName").value;
let claimAmount = document.getElementById("claimAmount").value;
let claimDescription = document.getElementById("claimDescription").value;
let documentUpload = document.getElementById("documentUpload").files[0];

if (claimantName && claimAmount && claimDescription && documentUpload) {
// Simulate upload progress
let progressBar = document.getElementById("uploadProgress");
let progress = 0;
let progressInterval = setInterval(function() {
progress += 10;
progressBar.innerHTML = `<div style="width: ${progress}%"></div>`;
if (progress === 100) {
clearInterval(progressInterval);
alert("Claim submitted successfully!");
// Reset the form
document.getElementById("claimForm").reset();
}
}, 500);
} else {
alert("Please fill in all fields and upload a document.");
}
});

// Display claim history (simulate with static data)
let claimHistory = [
{ claimId: "12345", claimantName: "John Doe", claimAmount: "$5000", status: "Approved" },
{ claimId: "67890", claimantName: "Jane Smith", claimAmount: "$2000", status: "Pending" },
{ claimId: "11223", claimantName: "George Brown", claimAmount: "$1500", status: "Rejected" }
];

// Function to display claim history
function displayClaimHistory() {
let claimHistoryDiv = document.getElementById("claimList");
claimHistoryDiv.innerHTML = ""; // Clear the previous history

claimHistory.forEach(claim => {
let claimDiv = document.createElement("div");
claimDiv.classList.add("claim-item");

claimDiv.innerHTML = `
<h3>Claim ID: ${claim.claimId}</h3>
<p>Claimant Name: ${claim.claimantName}</p>
<p>Claim Amount: ${claim.claimAmount}</p>
<p>Status: <strong>${claim.status}</strong></p>
<hr>
`;

claimHistoryDiv.appendChild(claimDiv);
});
}

// Call the function to display claim history on page load
displayClaimHistory();
Loading