module Data.TTask.Command.Delete 
  ( deleteTask 
  , deleteStory 
  , deleteSprint 
  ) where
import Data.TTask.Types

deleteTask :: Id -> Project -> Project
deleteTask i pj = pj
  { projectBacklog  = map (deleteTaskFromStory i) $ projectBacklog pj 
  , projectSprints = map (deleteTaskFromSprint i) $ projectSprints pj 
  }

deleteStory :: Id -> Project -> Project
deleteStory i pj = pj
  { projectBacklog  = filter (\u -> storyId u /= i) $ projectBacklog pj
  , projectSprints = map (deleteStoryFromSprint i) $ projectSprints pj 
  }

deleteSprint :: Id -> Project -> Project
deleteSprint i pj 
  = pj { projectSprints = filter (\s -> sprintId s /= i) $ projectSprints pj }

----

deleteTaskFromStory :: Id -> UserStory -> UserStory
deleteTaskFromStory i s 
  = s { storyTasks = filter (\t -> taskId t /= i) $ storyTasks s }

deleteTaskFromSprint :: Id -> Sprint -> Sprint
deleteTaskFromSprint i s 
  = s { sprintStorys = map (deleteTaskFromStory i) $ sprintStorys s }

deleteStoryFromSprint :: Id -> Sprint -> Sprint
deleteStoryFromSprint i s 
  = s { sprintStorys = filter (\u -> storyId u /= i) $ sprintStorys s }