@@ -47,6 +47,28 @@ public IActionResult GetAllWorkers()
47
47
using ( var context = new Models . tasktDatabaseContext ( ) )
48
48
{
49
49
var workers = context . Workers . ToList ( ) ;
50
+
51
+ //get pools
52
+ var workerPools = context . WorkerPools . Include ( f => f . PoolWorkers ) ;
53
+
54
+ foreach ( var pool in workerPools )
55
+ {
56
+ if ( pool . PoolWorkers . Count == 0 )
57
+ continue ;
58
+
59
+ var worker = new Worker
60
+ {
61
+ WorkerID = pool . WorkerPoolID ,
62
+ UserName = string . Concat ( "Pool '" , pool . WorkerPoolName , "'" )
63
+ } ;
64
+
65
+ workers . Add ( worker ) ;
66
+
67
+ }
68
+
69
+
70
+
71
+
50
72
return Ok ( workers ) ;
51
73
}
52
74
@@ -128,14 +150,17 @@ public IActionResult CheckInWorker(Guid workerID, bool engineBusy)
128
150
Models . PublishedScript publishedScript = null ;
129
151
130
152
131
-
132
153
if ( ! engineBusy )
133
154
{
155
+
156
+
157
+
134
158
scheduledTask = context . Tasks . Where ( f => f . WorkerID == workerID && f . Status == "Scheduled" ) . FirstOrDefault ( ) ;
135
159
160
+
136
161
if ( scheduledTask != null )
137
162
{
138
-
163
+ //worker directly scheduled
139
164
140
165
publishedScript = context . PublishedScripts . Where ( f => f . PublishedScriptID . ToString ( ) == scheduledTask . Script ) . FirstOrDefault ( ) ;
141
166
@@ -151,8 +176,40 @@ public IActionResult CheckInWorker(Guid workerID, bool engineBusy)
151
176
152
177
153
178
}
179
+ else
180
+ {
181
+ //check if any pool tasks
182
+
183
+ var workerPools = context . WorkerPools
184
+ . Include ( f => f . PoolWorkers )
185
+ . Where ( f => f . PoolWorkers . Any ( s => s . WorkerID == workerID ) ) . ToList ( ) ;
186
+
187
+ foreach ( var pool in workerPools )
188
+ {
189
+ scheduledTask = context . Tasks . Where ( f => f . WorkerID == pool . WorkerPoolID && f . Status == "Scheduled" ) . FirstOrDefault ( ) ;
190
+
191
+ if ( scheduledTask != null )
192
+ {
193
+ //worker directly scheduled
194
+
195
+ publishedScript = context . PublishedScripts . Where ( f => f . PublishedScriptID . ToString ( ) == scheduledTask . Script ) . FirstOrDefault ( ) ;
154
196
155
-
197
+ if ( publishedScript != null )
198
+ {
199
+ scheduledTask . Status = "Deployed" ;
200
+ }
201
+ else
202
+ {
203
+ scheduledTask . Status = "Deployment Failed" ;
204
+ }
205
+
206
+ break ;
207
+
208
+ }
209
+
210
+ }
211
+
212
+ }
156
213
}
157
214
158
215
context . SaveChanges ( ) ;
@@ -326,7 +383,7 @@ public IActionResult UpdateTask(Guid taskID, string status, Guid workerID, strin
326
383
//Todo: Needs Testing
327
384
using ( var context = new Models . tasktDatabaseContext ( ) )
328
385
{
329
- var taskToUpdate = context . Tasks . Where ( f => f . TaskID == taskID && f . WorkerID == workerID ) . FirstOrDefault ( ) ;
386
+ var taskToUpdate = context . Tasks . Where ( f => f . TaskID == taskID ) . FirstOrDefault ( ) ;
330
387
331
388
if ( status == "Completed" )
332
389
{
@@ -363,14 +420,29 @@ public IActionResult ScheduleTask([FromBody] NewTaskRequest request)
363
420
return BadRequest ( ) ;
364
421
}
365
422
423
+
424
+ //find worker
366
425
var workerRecord = context . Workers . Where ( f => f . WorkerID == request . workerID ) . FirstOrDefault ( ) ;
426
+
427
+ //if worker wasnt found then search for pool
428
+
367
429
if ( workerRecord == null )
368
430
{
369
- return BadRequest ( ) ;
431
+ //find from pool
432
+ var poolExists = context . WorkerPools . Any ( s => s . WorkerPoolID == request . workerID ) ;
433
+
434
+ //if pool wasnt found
435
+ if ( ! poolExists )
436
+ {
437
+ //return bad request
438
+ return BadRequest ( ) ;
439
+ }
370
440
}
371
441
442
+
443
+ //create new task
372
444
var newTask = new Models . Task ( ) ;
373
- newTask . WorkerID = workerRecord . WorkerID ;
445
+ newTask . WorkerID = request . workerID ;
374
446
newTask . TaskStarted = DateTime . Now ;
375
447
newTask . Status = "Scheduled" ;
376
448
newTask . ExecutionType = "Remote" ;
@@ -474,6 +546,88 @@ public IActionResult GetAllAssignments()
474
546
475
547
}
476
548
549
+ [ HttpPost ( "/api/Assignments/Add" ) ]
550
+ public IActionResult AddAssignment ( [ FromBody ] Assignment assignment )
551
+ {
552
+ using ( var context = new Models . tasktDatabaseContext ( ) )
553
+ {
554
+ context . Assignments . Add ( assignment ) ;
555
+ context . SaveChanges ( ) ;
556
+ return Ok ( assignment ) ;
557
+
558
+ }
559
+
560
+
561
+
562
+ }
563
+ [ HttpPost ( "/api/BotStore/Add" ) ]
564
+ public IActionResult AddDataToBotStore ( [ FromBody ] BotStoreModel storeData )
565
+ {
566
+
567
+ using ( var context = new Models . tasktDatabaseContext ( ) )
568
+ {
569
+
570
+ if ( ! context . Workers . Any ( f => f . WorkerID == storeData . LastUpdatedBy ) )
571
+ {
572
+ return Unauthorized ( ) ;
573
+ }
574
+
575
+ if ( context . BotStore . Any ( f => f . BotStoreName == storeData . BotStoreName ) )
576
+ {
577
+ var existingItem = context . BotStore . Where ( f => f . BotStoreName == storeData . BotStoreName ) . FirstOrDefault ( ) ;
578
+ existingItem . BotStoreValue = storeData . BotStoreValue ;
579
+ existingItem . LastUpdatedOn = DateTime . Now ;
580
+ existingItem . LastUpdatedBy = storeData . LastUpdatedBy ;
581
+ }
582
+ else
583
+ {
584
+ storeData . LastUpdatedOn = DateTime . Now ;
585
+ context . BotStore . Add ( storeData ) ;
586
+ }
587
+
588
+ context . SaveChanges ( ) ;
589
+ return Ok ( storeData ) ;
590
+
591
+ }
592
+
593
+
594
+
595
+ }
596
+ [ HttpPost ( "/api/BotStore/Get" ) ]
597
+ public IActionResult GetDataBotStore ( [ FromBody ] BotStoreRequest requestData )
598
+ {
599
+
600
+ using ( var context = new Models . tasktDatabaseContext ( ) )
601
+ {
602
+
603
+ if ( ! context . Workers . Any ( f => f . WorkerID == requestData . workerID ) )
604
+ {
605
+ return Unauthorized ( ) ;
606
+ }
607
+
608
+
609
+ var requestedItem = context . BotStore . Where ( f => f . BotStoreName == requestData . BotStoreName ) . FirstOrDefault ( ) ;
610
+
611
+ if ( requestedItem == null )
612
+ {
613
+ return NotFound ( ) ;
614
+ }
615
+
616
+ switch ( requestData . requestType )
617
+ {
618
+ case BotStoreRequest . RequestType . BotStoreValue :
619
+ return Ok ( requestedItem . BotStoreValue ) ;
620
+ case BotStoreRequest . RequestType . BotStoreModel :
621
+ return Ok ( requestedItem ) ;
622
+ default :
623
+ return StatusCode ( 400 ) ;
624
+ }
625
+
626
+ }
627
+
628
+
629
+
630
+ }
477
631
478
632
479
633
}
0 commit comments