@@ -6,16 +6,19 @@ import kotlinx.coroutines.withContext
6
6
import kotlinx.uuid.UUID
7
7
import kz.seasky.tms.database.TransactionService
8
8
import kz.seasky.tms.database.tables.task.TaskInstanceEntity
9
+ import kz.seasky.tms.enums.Status
9
10
import kz.seasky.tms.exceptions.ErrorException
10
11
import kz.seasky.tms.exceptions.WarningException
11
12
import kz.seasky.tms.extensions.asUUID
12
13
import kz.seasky.tms.model.file.FileInsert
13
14
import kz.seasky.tms.model.paging.Paging
14
15
import kz.seasky.tms.model.paging.PagingResponse
16
+ import kz.seasky.tms.model.statistic.Statistic
15
17
import kz.seasky.tms.model.task.*
16
18
import kz.seasky.tms.utils.FILE_DEFAULT_SIZE
17
19
import kz.seasky.tms.utils.FileHelper
18
20
import kz.seasky.tms.utils.asMiB
21
+ import org.joda.time.DateTime
19
22
import java.io.File
20
23
21
24
class TaskService (
@@ -321,4 +324,28 @@ class TaskService(
321
324
return @transaction if (file.exists()) file else throw ErrorException (" Нет такого файла :c" )
322
325
}
323
326
}
327
+
328
+ suspend fun getAllCount (): Statistic .Task .Status {
329
+ return transactionService.transaction {
330
+ val countsByStatus = repository.countAll()
331
+ return @transaction countsByStatus.extract()
332
+ }
333
+ }
334
+
335
+ suspend fun getActualCount (): Statistic .Task .Status {
336
+ return transactionService.transaction {
337
+ val currentTime = DateTime .now()
338
+ val countsByStatus = repository.countAll(currentTime)
339
+ return @transaction countsByStatus.extract()
340
+ }
341
+ }
342
+
343
+ private fun Map <Short , Long >.extract (): Statistic .Task .Status {
344
+ return Statistic .Task .Status (
345
+ new = getOrDefault(Status .New .value, 0 ),
346
+ inWork = getOrDefault(Status .InWork .value, 0 ),
347
+ canceled = getOrDefault(Status .Canceled .value, 0 ),
348
+ closed = getOrDefault(Status .Closed .value, 0 )
349
+ )
350
+ }
324
351
}
0 commit comments