Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.24;
- import "./Storage.sol";
- contract Items is Storage {
- /*
- Name: getItemCount
- Description: Returns number of registered items in the contract
- Inputs: None
- Outputs: Integer (number of items)
- */
- function getItemCount() public view returns (uint) {
- return itemIds.length;
- }
- /*
- Name: addItem
- Description: adds a new item to the contract (restricted to manager users)
- Inputs: _itemName = name of item
- _itemType = type of item
- _itemStatus = type of item
- Outputs: Emits ItemEvent
- */
- function addItem(
- uint _assetNumber,
- string _itemName,
- string _itemType,
- string _itemStatus
- )
- isManager public
- {
- items[itemCounter] = Item(
- itemCounter,
- _assetNumber,
- _itemName,
- _itemType,
- false,
- false,
- false,
- address(this),
- "None",
- _itemStatus
- );
- itemIds.push(itemCounter);
- emit ItemEvent(
- "Add Item",
- itemCounter,
- _assetNumber,
- _itemName,
- _itemType,
- _itemStatus,
- "None",
- address(this)
- );
- itemCounter++;
- }
- /*
- Name: removeItem
- Description: sends item to graveyard (restricted to manager users)
- Inputs: _itemId = ID of item
- Outputs: Emits ItemEvent
- */
- function removeItem(uint _itemId) isManager public {
- if (items[_itemId].returnPending) {
- items[_itemId].returnPending = false;
- items[_itemId].checkedOut = false;
- } else {
- // require that no employee is current owner of this item
- require(items[_itemId].owner == address(this));
- }
- items[_itemId].trashed = true;
- emit ItemEvent(
- "Remove Item",
- items[_itemId].itemId,
- items[_itemId].assetNumber,
- items[_itemId].itemName,
- items[_itemId].itemType,
- items[_itemId].itemStatus,
- items[_itemId].ownerName,
- items[_itemId].owner
- );
- }
- /*
- Name: restoreItem
- Description: removes item from graveyard
- Inputs _itemId = ID of item
- Outputs: Emits ItemEvent
- */
- function restoreItem(uint _itemId) isManager public {
- require(items[_itemId].trashed, "Items must be in the graveyard to be restored.");
- items[_itemId].trashed = false;
- emit ItemEvent(
- "Restore Item",
- items[_itemId].itemId,
- items[_itemId].assetNumber,
- items[_itemId].itemName,
- items[_itemId].itemType,
- items[_itemId].itemStatus,
- items[_itemId].ownerName,
- items[_itemId].owner
- );
- }
- /*
- Name: editItem
- Description: edits an item (restricted to manager)
- Inputs: _itemId = item to be edited
- _newName = new name of item
- _newType = new type of item
- _newStatus = new status of item
- Outputs: Emits ItemEvent
- */
- function editItem(
- uint _itemId,
- uint _assetNumber,
- string _newName,
- string _newType,
- string _newStatus
- )
- isManager public
- {
- items[_itemId].assetNumber = _assetNumber;
- items[_itemId].itemName = _newName;
- items[_itemId].itemType = _newType;
- items[_itemId].itemStatus = _newStatus;
- emit ItemEvent(
- "Edit Item",
- _itemId,
- _assetNumber,
- _newName,
- _newType,
- _newStatus,
- items[_itemId].ownerName,
- items[_itemId].owner
- );
- }
- /*
- Name: editStatus
- Description: edits the status of an item
- Inputs: _itemId = item to be edited
- _newStatus = new status of item
- Outputs: None
- */
- function editStatus(uint _itemId, string _newStatus) isEmployee public {
- //function will change itemStatus if item belongs to user or user is a manager
- require(
- items[_itemId].owner == msg.sender ||
- users[msg.sender].isManager,
- "You must be a manager to edit an item."
- );
- items[_itemId].itemStatus = _newStatus;
- emit ItemEvent(
- "Item Status Update",
- items[_itemId].itemId,
- items[_itemId].assetNumber,
- items[_itemId].itemName,
- items[_itemId].itemType,
- items[_itemId].itemStatus,
- items[_itemId].ownerName,
- items[_itemId].owner
- );
- }
- }
Add Comment
Please, Sign In to add comment