//pragma solidity ^0.5.0; pragma solidity ^0.4.18; contract Destructor { address public owner; uint public projectCount = 0; //Constructor for version ^0.5.0 //constructor() public { // owner = msg.sender; //} //Constructor for version ^0.4.18 function Destructor() 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 Vote(uint indexed projectId,uint publicId,uint isVoted); struct Projects { string projectName; string description; uint estimatedBudget; uint receivedBudget; string startDate; string endDate; string image; uint ActualTokens; uint status; //string createdBy; //string timestamp; //uint ngoId; } struct Milestone { string name; string description; uint milestoneID; uint vendorID; uint tokens; uint isCompleted; //string createdBy; //string timestamp; } mapping(uint=>Projects) project; mapping(uint=>Milestone[]) milestone; function CreateProject(uint projectId, string projectName, string description,uint estimatedBudget,uint receivedBudget, string startDate,string endDate,uint ActualTokens,uint status,string image) public returns( bool) { project[projectId] = Projects({ projectName : projectName, description: description, estimatedBudget: estimatedBudget, receivedBudget: receivedBudget, startDate:startDate, endDate: endDate, //ngoId:ngoId, //createdBy: createdBy, //timestamp: timestamp, ActualTokens: ActualTokens, status: status, image:image }); projectCount++; return true; } function CreateMilestone(string name,string description,uint milestoneID, uint projectID, uint vendorID,uint tokens,uint isCompleted) public returns( bool) { milestone[projectID].push( Milestone({ name:name, description:description, milestoneID:milestoneID, vendorID:vendorID, tokens:tokens, isCompleted:isCompleted })); return true; } function GetProjectCount() public view returns (uint) { return projectCount; } function GetMilestoneCount(uint projectId) public view returns (uint) { return milestone[projectId].length; } function GetProjectById(uint projectId) public view returns(string, string, uint, uint,string,string,string,uint,uint) { Projects memory projDetails = project[projectId]; return (projDetails.projectName,projDetails.description,projDetails.estimatedBudget,projDetails.receivedBudget, projDetails.startDate,projDetails.endDate,projDetails.image,projDetails.ActualTokens,projDetails.status); } function GetMilestoneById(uint milestoneId,uint projectId) public view returns(string, string, uint, uint,uint) { Milestone memory milestoneDetails = milestone[projectId][milestoneId]; return (milestoneDetails.name,milestoneDetails.description,milestoneDetails.vendorID,milestoneDetails.tokens,milestoneDetails.isCompleted); } 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 projectId, uint isCompleted) public returns( bool) { uint count = milestone[projectId].length; uint index; for (uint i = 0; i < count; i++) { if(milestone[projectId][i].milestoneID==milestoneID) { index = i; break; } } milestone[projectId][index].isCompleted = isCompleted; return true; } function UpdateMilestoneAmount(uint milestoneID, uint projectId, uint tokens,uint vendorID) public returns( bool) { uint count = milestone[projectId].length; uint index; for (uint i = 0; i < count; i++) { if(milestone[projectId][i].milestoneID==milestoneID) { index = i; break; } } milestone[projectId][index].vendorID = vendorID; milestone[projectId][index].tokens = tokens; return true; } }
0.4.18