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); }