Sample Solidity Smart Constract Code for University Certificates

pragma solidity >=0.4.22 <0.7.0;
contract UniversityCertificate{
    //Smart Contract to manage the university degrees
    uint256 public year;
    string public course;
    address public owner;
    string public universityId;
    string public universityName;
   
   
    struct Certificate{
        string data;
        bool isValid;
        string enrollmentId;
    }
   
    event response(address from, string msg, string methodName);
    bytes32[] public allCertificates;
    mapping(bytes32=>Certificate) public certificateById;
   
    modifier onlyOwner{
        require(msg.sender == owner);
        _;
    }
   
    //"B.Tech.",2017,"123456","AKTU"
    constructor(string  memory _course, uint256  _year, string memory _universityId, string memory _universityName) public{
        owner=msg.sender;
        course=_course;
        year=_year;
        universityId=_universityId;
        universityName=_universityName;
    }
   
    function getCourseDetails() public view returns(string memory _course, uint256 _year,  string memory _universityId, string memory _universityName, address _universityAddress) {
        _course=course;
        _year=year;
        _universityId=universityId;
        _universityName=universityName;
        _universityAddress=owner;
       
    }
   
    //"student_data", true, "0x13", "123456"
    function createCertificate(string memory data, bool isValid, bytes32 certId, string memory enrollmentId)public onlyOwner returns (bool status){
        bytes memory tempEmptyStringTest= bytes(certificateById[certId].data);
        require(tempEmptyStringTest.length == 0);
        Certificate memory certi=Certificate(data,isValid,enrollmentId);
        certificateById[certId]=certi;
        allCertificates.push(certId);
        emit response(msg.sender, "Certificate Created", "createCertificate");
        return true;
    }
   
    //"0x13"
    function certificateByCertId(bytes32 certId) public  returns (string memory, bool, string memory){
        emit response(msg.sender, certificateById[certId].data, "certificateByCertId");
        return (certificateById[certId].data, certificateById[certId].isValid, certificateById[certId].enrollmentId);
    }
   
    function invalidCertificate(bytes32 certId, bool status)public  onlyOwner returns(bool){
        bytes memory tempEmptyStringTest=bytes(certificateById[certId].data);
        require(tempEmptyStringTest.length != 0 && certificateById[certId].isValid);
        Certificate storage certi=certificateById[certId];
        certi.isValid=status;
        emit response(msg.sender, "Certificate Status Changed Successfully", "invalidCertificate");
    }
   
    function getAllCertificates() public view returns(bytes32[] memory){
        return allCertificates;
    }
   
}

Comments

Popular posts from this blog

How to import an account to geth?

Why to create a full node?