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 }