private static string CreateActivityStatusText(string activityName, BabyActivityStatus activityStatus, bool longForm)
 {
     if (activityStatus.ActivityIsRunning)
     {
         return(longForm
                 ? string.Format(CultureInfo.CurrentCulture,
                                 "{0} {1} since {2}",
                                 activityStatus.BabyGivenName,
                                 ConvertActivityNameToCurrentTense(activityName),
                                 activityStatus.LastActivityStartTime.ToStringWithSystemClock("shorttime shortdate"))
                 : string.Format(CultureInfo.CurrentCulture,
                                 "{0} 🕒 {1:t}",
                                 activityStatus.BabyGivenName,
                                 activityStatus.LastActivityStartTime.ToStringWithSystemClock("shorttime")));
     }
     else if (activityStatus.NextActivityStartTime.HasValue)
     {
         return(longForm
                 ? string.Format(CultureInfo.CurrentCulture,
                                 "{0} due to {1} at {2}",
                                 activityStatus.BabyGivenName,
                                 activityName,
                                 activityStatus.NextActivityStartTime.ToStringWithSystemClock("shorttime shortdate"))
                 : string.Format(CultureInfo.CurrentCulture,
                                 "{0} ⏩ {1:t}",
                                 activityStatus.BabyGivenName,
                                 activityStatus.NextActivityStartTime.ToStringWithSystemClock("shorttime")));
     }
     else
     {
         return(longForm
                 ? string.Format(CultureInfo.CurrentCulture,
                                 "Calculating {0}'s next {1}",
                                 activityStatus.BabyGivenName,
                                 activityName)
                 : string.Format(CultureInfo.CurrentCulture,
                                 "{0} ⏩ ???",
                                 activityStatus.BabyGivenName));
     }
 }
        /// <summary>
        /// Updates a scheduled a tile for this activity with info for the provided baby or creates & schedules a new tile for this activity if one doesn't exist
        /// </summary>
        public static void UpdateBabysActivityStatusTile(this TileUpdater tileUpdater, string activityName, BabyActivityStatus babysActivityStatus)
        {
            var existingTiles = tileUpdater.GetScheduledTileNotifications();
            var existingTile  = existingTiles.SingleOrDefault(tile => tile.Tag == activityName);

            if (existingTile == null)
            {
                CreateActivityTile(tileUpdater, activityName, new[] { babysActivityStatus });
            }
            else
            {
                tileUpdater.RemoveFromSchedule(existingTile);

                var newTileContent = new XmlDocument();
                newTileContent.LoadXml(existingTile.Content.GetXml());
                var babysStatuses = newTileContent.GetElementsByTagName("text")
                                    .Where(text => text.InnerText.StartsWith(babysActivityStatus.BabyGivenName));
                // TODO - handle long & short form for wide & medium tiles respectively
                foreach (var textElement in babysStatuses)
                {
                    textElement.InnerText = CreateActivityStatusText(activityName, babysActivityStatus, false);
                }

                tileUpdater.Update(new TileNotification(newTileContent)
                {
                    Tag = activityName
                });
            }
        }