Guest User

Untitled

a guest
Jun 24th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. pragma solidity ^0.4.24;
  2.  
  3. import "./Storage.sol";
  4.  
  5. contract Items is Storage {
  6. /*
  7. Name: getItemCount
  8. Description: Returns number of registered items in the contract
  9. Inputs: None
  10. Outputs: Integer (number of items)
  11. */
  12. function getItemCount() public view returns (uint) {
  13. return itemIds.length;
  14. }
  15.  
  16. /*
  17. Name: addItem
  18. Description: adds a new item to the contract (restricted to manager users)
  19. Inputs: _itemName = name of item
  20. _itemType = type of item
  21. _itemStatus = type of item
  22. Outputs: Emits ItemEvent
  23. */
  24. function addItem(
  25. uint _assetNumber,
  26. string _itemName,
  27. string _itemType,
  28. string _itemStatus
  29. )
  30. isManager public
  31. {
  32. items[itemCounter] = Item(
  33. itemCounter,
  34. _assetNumber,
  35. _itemName,
  36. _itemType,
  37. false,
  38. false,
  39. false,
  40. address(this),
  41. "None",
  42. _itemStatus
  43. );
  44. itemIds.push(itemCounter);
  45. emit ItemEvent(
  46. "Add Item",
  47. itemCounter,
  48. _assetNumber,
  49. _itemName,
  50. _itemType,
  51. _itemStatus,
  52. "None",
  53. address(this)
  54. );
  55.  
  56. itemCounter++;
  57. }
  58.  
  59. /*
  60. Name: removeItem
  61. Description: sends item to graveyard (restricted to manager users)
  62. Inputs: _itemId = ID of item
  63. Outputs: Emits ItemEvent
  64. */
  65. function removeItem(uint _itemId) isManager public {
  66. if (items[_itemId].returnPending) {
  67. items[_itemId].returnPending = false;
  68. items[_itemId].checkedOut = false;
  69. } else {
  70. // require that no employee is current owner of this item
  71. require(items[_itemId].owner == address(this));
  72. }
  73. items[_itemId].trashed = true;
  74.  
  75. emit ItemEvent(
  76. "Remove Item",
  77. items[_itemId].itemId,
  78. items[_itemId].assetNumber,
  79. items[_itemId].itemName,
  80. items[_itemId].itemType,
  81. items[_itemId].itemStatus,
  82. items[_itemId].ownerName,
  83. items[_itemId].owner
  84. );
  85. }
  86.  
  87. /*
  88. Name: restoreItem
  89. Description: removes item from graveyard
  90. Inputs _itemId = ID of item
  91. Outputs: Emits ItemEvent
  92. */
  93. function restoreItem(uint _itemId) isManager public {
  94. require(items[_itemId].trashed, "Items must be in the graveyard to be restored.");
  95.  
  96. items[_itemId].trashed = false;
  97. emit ItemEvent(
  98. "Restore Item",
  99. items[_itemId].itemId,
  100. items[_itemId].assetNumber,
  101. items[_itemId].itemName,
  102. items[_itemId].itemType,
  103. items[_itemId].itemStatus,
  104. items[_itemId].ownerName,
  105. items[_itemId].owner
  106. );
  107. }
  108.  
  109. /*
  110. Name: editItem
  111. Description: edits an item (restricted to manager)
  112. Inputs: _itemId = item to be edited
  113. _newName = new name of item
  114. _newType = new type of item
  115. _newStatus = new status of item
  116. Outputs: Emits ItemEvent
  117. */
  118. function editItem(
  119. uint _itemId,
  120. uint _assetNumber,
  121. string _newName,
  122. string _newType,
  123. string _newStatus
  124. )
  125. isManager public
  126. {
  127. items[_itemId].assetNumber = _assetNumber;
  128. items[_itemId].itemName = _newName;
  129. items[_itemId].itemType = _newType;
  130. items[_itemId].itemStatus = _newStatus;
  131.  
  132. emit ItemEvent(
  133. "Edit Item",
  134. _itemId,
  135. _assetNumber,
  136. _newName,
  137. _newType,
  138. _newStatus,
  139. items[_itemId].ownerName,
  140. items[_itemId].owner
  141. );
  142. }
  143.  
  144. /*
  145. Name: editStatus
  146. Description: edits the status of an item
  147. Inputs: _itemId = item to be edited
  148. _newStatus = new status of item
  149. Outputs: None
  150. */
  151. function editStatus(uint _itemId, string _newStatus) isEmployee public {
  152. //function will change itemStatus if item belongs to user or user is a manager
  153. require(
  154. items[_itemId].owner == msg.sender ||
  155. users[msg.sender].isManager,
  156. "You must be a manager to edit an item."
  157. );
  158. items[_itemId].itemStatus = _newStatus;
  159.  
  160. emit ItemEvent(
  161. "Item Status Update",
  162. items[_itemId].itemId,
  163. items[_itemId].assetNumber,
  164. items[_itemId].itemName,
  165. items[_itemId].itemType,
  166. items[_itemId].itemStatus,
  167. items[_itemId].ownerName,
  168. items[_itemId].owner
  169. );
  170. }
  171. }
Add Comment
Please, Sign In to add comment