public MarkdownStoryService(IWebHostEnvironment webHostEnvironment)
        {
            //TODO: Set path to AppData
            string rootPath = Path.Combine(webHostEnvironment.ContentRootPath, "AppData");

            MarkdownPersistEngine.SetRootFolderPath(rootPath);
        }
        public UserStory SaveStory(UserStory story)
        {
            DateTime  now      = DateTime.Now;
            UserStory oldStory = null;

            try
            {
                oldStory = GetStory(story.Id);
            }
            catch { }
            //BusinessRule: Set Sequence to 1 when Done
            //TODO: Don't use explicit string.
            string oldStatus = oldStory?.Status.ToLower();
            string newStatus = story.Status.ToLower();

            //BusinessRule: Set dates depending on status
            if (newStatus != oldStatus)
            {
                if (newStatus == "backlog")
                {
                    story.StartedOn = null; story.CompletedOn = null;
                }
                if (newStatus == "in process" | newStatus == "waiting")
                {
                    if (!story.StartedOn.HasValue)
                    {
                        story.StartedOn = now;
                    }
                    story.CompletedOn = null;
                }
                if (newStatus == "done")
                {
                    if (!story.StartedOn.HasValue)
                    {
                        story.StartedOn = now;
                    }
                    if (!story.CompletedOn.HasValue)
                    {
                        story.CompletedOn = now;
                    }
                    story.Sequence = 1;
                }
            }

            MarkdownPersistEngine.WriteUserStory(story);
            return(story);
        }
 public UserStory GetStory(string id)
 {
     return(MarkdownPersistEngine.ReadUserStoryFromId(id));
 }
 public IEnumerable <UserStory> GetStoriesWithStatus(params string[] status)
 {
     return(MarkdownPersistEngine.GetUserStories()
            .Where(a => status.Contains(a.Status, StringComparer.InvariantCultureIgnoreCase)));
 }
 public IEnumerable <UserStory> GetStories()
 {
     return(MarkdownPersistEngine.GetUserStories());
 }
 public void DeleteStory(string id)
 {
     MarkdownPersistEngine.DeleteUserStory(id);
 }