@@ -6,8 +6,14 @@ pragma solidity ^0.8.0;
66import "./BaseTask.sol " ;
77
88contract TaskManagement is BaseTask {
9- function createTask (uint reward ) public payable isCreatorRole (reward) {
10- require (msg .value >= reward, "reward must be deposited " );
9+ // Event to log task creation
10+ event TaskCreated (uint id , string details , address creator , uint timestamp );
11+
12+ function createTask (
13+ uint reward ,
14+ uint stakeValue
15+ ) internal isCreatorRole (reward, stakeValue) {
16+ require (stakeValue >= reward, "reward must be deposited " );
1117
1218 Task storage newTask = tasks[taskCounter];
1319 newTask.id = taskCounter;
@@ -25,13 +31,13 @@ contract TaskManagement is BaseTask {
2531 _;
2632 }
2733
28- modifier isCreatorRole (uint reward ) {
34+ modifier isCreatorRole (uint reward , uint stakeValue ) {
2935 require (
30- msg . value >= CREATOR_STAKE,
36+ stakeValue >= CREATOR_STAKE,
3137 "Insufficient stake for task creation "
3238 );
3339 require (
34- msg . value >= reward + CREATOR_STAKE,
40+ stakeValue >= reward + CREATOR_STAKE,
3541 "Reward and stake must be deposited, currently reward is {$reward} stake {$CREATOOR_STAKE} "
3642 );
3743 _;
@@ -42,4 +48,51 @@ contract TaskManagement is BaseTask {
4248
4349 // _;
4450 // }
51+
52+ // Get incomplete tasks
53+ function getAvailableTasks () public view returns (TaskSummary[] memory ) {
54+ uint count = 0 ;
55+
56+ // Count the number of incomplete tasks
57+ for (uint i = 0 ; i < taskCounter; i++ ) {
58+ if (! tasks[i].isActive) {
59+ count++ ;
60+ }
61+ }
62+
63+ // Create a temporary array to hold TaskSummary
64+ TaskSummary[] memory availableTasks = new TaskSummary [](count);
65+ uint index = 0 ;
66+
67+ for (uint i = 0 ; i < taskCounter; i++ ) {
68+ if (! tasks[i].isActive) {
69+ availableTasks[index] = TaskSummary ({
70+ id: tasks[i].id,
71+ description: "assigned " ,
72+ isActive: tasks[i].isActive,
73+ assignedTo: tasks[i].creator
74+ });
75+ index++ ;
76+ }
77+ }
78+
79+ return availableTasks;
80+ }
81+ // Get task details by ID
82+ // function getTaskById(uint taskId) public view returns (Task memory) {
83+ // require(taskId < nextTaskId, "Task ID does not exist");
84+ // return taskById[taskId];
85+ // }
86+
87+ // Get the last task added
88+ function getLastTask () public view returns (TaskSummary memory ) {
89+ require (taskCounter > 0 , "No tasks available " );
90+ TaskSummary memory availableTasks = TaskSummary ({
91+ id: tasks[taskCounter - 1 ].id,
92+ description: "assigned " ,
93+ isActive: tasks[taskCounter - 1 ].isActive,
94+ assignedTo: tasks[taskCounter - 1 ].creator
95+ });
96+ return availableTasks;
97+ }
4598}
0 commit comments