Commit e0b17420 authored by Hammad ul Azeem's avatar Hammad ul Azeem

Upload New File

parent 46dcfe7e
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SupplyChain {
enum SupplyChainStatus { Created, InTransit, Delivered }
struct Item {
uint256 id;
string name;
uint256 quantity;
SupplyChainStatus status;
}
mapping(uint256 => Item) public items;
uint256 public itemCount;
event ItemCreated(uint256 indexed id, string name, uint256 quantity);
event ItemInTransit(uint256 indexed id);
event ItemDelivered(uint256 indexed id);
function createItem(string memory _name, uint256 _quantity) external {
itemCount++;
items[itemCount] = Item(itemCount, _name, _quantity, SupplyChainStatus.Created);
emit ItemCreated(itemCount, _name, _quantity);
}
function markItemInTransit(uint256 _id) external {
require(items[_id].status == SupplyChainStatus.Created, "Item is not in a created state");
items[_id].status = SupplyChainStatus.InTransit;
emit ItemInTransit(_id);
}
function markItemDelivered(uint256 _id) external {
require(items[_id].status == SupplyChainStatus.InTransit, "Item is not in transit");
items[_id].status = SupplyChainStatus.Delivered;
emit ItemDelivered(_id);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment