module Data.TTask.File.Compatibility.V0_0_1_0
( readProject
) where
import Data.Functor
import Safe
import Data.Time
import Control.Lens
import qualified Data.TTask.Types.Types as T
data Task = Task
{ taskId :: T.Id
, taskDescription :: String
, taskPoint :: Int
, taskStatus :: T.TStatus
, taskWorkTimes :: [T.WorkTime]
} deriving (Show, Read, Eq)
data UserStory = UserStory
{ storyId :: T.Id
, storyDescription :: String
, storyTasks :: [Task]
, storyStatus :: T.TStatus
} deriving (Show, Read, Eq)
data Sprint = Sprint
{ sprintId :: T.Id
, sprintDescription :: String
, sprintStorys :: [UserStory]
, sprintStatus :: T.TStatus
} deriving (Show, Read, Eq)
data Project = Project
{ projectName :: String
, projectBacklog :: [UserStory]
, projectSprints :: [Sprint]
, projectStatus :: T.TStatus
} deriving (Show, Read, Eq)
data TTaskContents
= TTaskProject Project
| TTaskSprint Sprint
| TTaskStory UserStory
| TTaskTask Task
readProject :: String -> Maybe T.Project
readProject = (convert <$>) . readOldProject
readOldProject :: String -> Maybe Project
readOldProject s = readMay s
convert :: Project -> T.Project
convert p = T.Project
{ T._projectName = projectName p
, T._projectBacklog = map convertStory $ projectBacklog p
, T._projectSprints = map convertSprint $ projectSprints p
, T._projectStatus = projectStatus p
}
convertTask :: Task -> T.Task
convertTask t = T.Task
{ T._taskId = taskId t
, T._taskDescription = taskDescription t
, T._taskPoint = taskPoint t
, T._taskStatus = taskStatus t
, T._taskWorkTimes = taskWorkTimes t
}
convertStory :: UserStory -> T.UserStory
convertStory u = T.UserStory
{ T._storyId = storyId u
, T._storyDescription = storyDescription u
, T._storyTasks = map convertTask $ storyTasks u
, T._storyStatus = storyStatus u
}
convertSprint :: Sprint -> T.Sprint
convertSprint s = T.Sprint
{ T._sprintId = sprintId s
, T._sprintDescription = sprintDescription s
, T._sprintStorys = map convertStory $ sprintStorys s
, T._sprintStatus = sprintStatus s
}