pragma solidity ^0.4.18; contract Destructor { address public owner; //Constructor //constructor() public { // owner = msg.sender; // } //Modifier for check whether the user is admin or not modifier isAdmin { if (owner != msg.sender) { revert(); }else { _; } } //Method for disable the deployed contract function destruct() public isAdmin { selfdestruct(owner); } } contract Project is Destructor { //event ProjectTransfer( uint indexed ProjectId,uint EstimatedTokens,address createdBy, string timestamp,uint indexed ActualTokens,uint indexed status); event MilestoneTransfer(uint indexed MilestoneID, uint VendorID, address createdBy, string TimeStamp, uint tokens,uint indexed status); event ProjectStatusUpdate(uint indexed ProjectId,address createdBy,string timestamp,uint indexed status); event MilestoneStatusUpdate(uint indexed MilestoneID,uint indexed ProjectId,address createdBy,string timestamp,uint indexed status); struct Projects { string projectName; string description; uint estimatedBudget; uint receivedBudget; string startDate; string endDate; address createdBy; string timestamp; uint ActualTokens; uint status; } struct Milestone { uint projectID; uint vendorID; address createdBy; string timestamp; uint tokens; uint isCompleted; } mapping(uint=>Projects) project; mapping(uint=>Milestone) milestone; /* Project Status ----------- 1- Project created 2- Published for Voting 3- Selected for execution 4- Execution In-progress 5- Project Completed 6- Payment Pending 7- Project Closed 8- On-hold 9- Deleted --------------------------------------------------------------------- Milestone status -------------- 1- New Milestone 2- In-progress 3- completed 4- Awaiting payment 5- Milestone closed 6- on-hold 7- Deleted */ event Vote(uint projectId,uint publicId,uint isVoted); function CreateProject(uint projectId, string projectName, string description,uint estimatedBudget,uint receivedBudget, string startDate,string endDate, address createdBy,string timestamp,uint ActualTokens,uint status) public returns( bool) { project[projectId] = Projects({ projectName : projectName, description: description, estimatedBudget: estimatedBudget, receivedBudget: receivedBudget, startDate:startDate, endDate: endDate, createdBy: createdBy, timestamp: timestamp, ActualTokens: ActualTokens, status: status }); return true; } function CreateMilestone(uint milestoneID, uint projectID, uint vendorID,address createdBy,string timestamp, uint tokens,uint isCompleted) public returns( bool) { milestone[milestoneID] = Milestone({ projectID:projectID, vendorID:vendorID, createdBy:createdBy, timestamp:timestamp, tokens:tokens, isCompleted:isCompleted }); return true; } function UpdateProjectStatus( uint projectId,uint status,uint receivedBudget) public returns( bool) { project[projectId].receivedBudget = receivedBudget; project[projectId].status = status; return true; } function UpdateMilestoneCompletion(uint milestoneID, uint isCompleted) public returns( bool) { milestone[milestoneID].isCompleted = isCompleted; return true; } function UpdateMilestoneAmount(uint milestoneID, uint tokens,uint vendorID) public returns( bool) { milestone[milestoneID].vendorID = vendorID; milestone[milestoneID].tokens = tokens; return true; } }
0.4.18