module Data.TTask.Types.Status
( getLastStatus
, getStatusTime
, statusToList
, stWait
, stRunning
, stFinished
, stNotAchieved
, stRejected
, isWait
, isRunning
, isFinished
, isNotAchieved
, isRejected
, stRecToContents
, stRecToStatus
, getTaskStatuses
, getStoryStatuses
, getSprintStatuses
, getTaskLastStatus
, getStoryLastStatuses
, getSprintLastStatuses
) where
import Data.Time
import Data.TTask.Types.Types
getLastStatus :: TStatus -> TStatusRecord
getLastStatus (TStatusOne x) = x
getLastStatus (TStatusCons x _) = x
getStatusTime :: TStatusRecord -> LocalTime
getStatusTime (StatusWait t) = t
getStatusTime (StatusRunning t) = t
getStatusTime (StatusFinished t) = t
getStatusTime (StatusNotAchieved t) = t
getStatusTime (StatusReject t) = t
statusToList :: TStatus -> [TStatusRecord]
statusToList (TStatusOne x) = [x]
statusToList (TStatusCons x xs) = x : statusToList xs
stWait :: TStatusRecord -> Bool
stWait (StatusWait _) = True
stWait _ = False
stRunning :: TStatusRecord -> Bool
stRunning (StatusRunning _) = True
stRunning _ = False
stFinished :: TStatusRecord -> Bool
stFinished (StatusFinished _) = True
stFinished _ = False
stNotAchieved :: TStatusRecord -> Bool
stNotAchieved (StatusNotAchieved _) = True
stNotAchieved _ = False
stRejected :: TStatusRecord -> Bool
stRejected (StatusReject _) = True
stRejected _ = False
isWait :: TStatus -> Bool
isWait = stWait . getLastStatus
isRunning :: TStatus -> Bool
isRunning = stRunning . getLastStatus
isFinished :: TStatus -> Bool
isFinished = stFinished . getLastStatus
isNotAchieved :: TStatus -> Bool
isNotAchieved = stNotAchieved . getLastStatus
isRejected :: TStatus -> Bool
isRejected = stRejected . getLastStatus
stRecToContents :: StatusLogRec -> TTaskContents
stRecToContents = fst
stRecToStatus :: StatusLogRec -> TStatusRecord
stRecToStatus = snd
getTaskStatuses :: Task -> [StatusLogRec]
getTaskStatuses t = map (\x -> (TTaskTask t, x)) . statusToList $ taskStatus t
getStoryStatuses :: UserStory -> [StatusLogRec]
getStoryStatuses u =
let uStatus = map (\x -> (TTaskStory u, x)) . statusToList $ storyStatus u
in uStatus ++ concatMap getTaskStatuses (storyTasks u)
getSprintStatuses :: Sprint -> [StatusLogRec]
getSprintStatuses s =
let sStatus = map (\x -> (TTaskSprint s, x)) . statusToList $ sprintStatus s
in sStatus ++ concatMap getStoryStatuses (sprintStorys s)
getTaskLastStatus :: Task -> StatusLogRec
getTaskLastStatus t = (\x -> (TTaskTask t, x)) . getLastStatus $ taskStatus t
getStoryLastStatuses :: UserStory -> [StatusLogRec]
getStoryLastStatuses u =
let uStatus = (\x -> (TTaskStory u, x)) . getLastStatus $ storyStatus u
in uStatus : map getTaskLastStatus (storyTasks u)
getSprintLastStatuses :: Sprint -> [StatusLogRec]
getSprintLastStatuses s =
let sStatus = (\x -> (TTaskSprint s, x)) . getLastStatus $ sprintStatus s
in sStatus : concatMap getStoryLastStatuses (sprintStorys s)