using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text.RegularExpressions; using MahTweets.Mango.Core; using MahTweets.Mango.Core.Models; using MahTweets.Mango.Core.Services; using MahTweets.Mango.Models; using MahTweets.Mango.ViewModels.Status; using WindowsPhoneMVC; using WindowsPhoneMVC.ActionResults; namespace MahTweets.Mango.Controllers { public class StatusController : Controller { private readonly IConnectionManager _connectionManager; private readonly Func> _accounts; public StatusController(IConnectionManager connectionManager, Func> accounts) { _connectionManager = connectionManager; _accounts = accounts; } public PageResult Compose(StatusUpdate replyTo) { var words = replyTo.Text.Split(' '); var additionalContacts = words.Where(w => w.StartsWith("@")).Aggregate(string.Empty, (current, w) => current + (" " + w)); additionalContacts = replyTo.Accounts.Aggregate(additionalContacts, (current, account) => Regex.Replace(current, " @" + account.AccountName, "", RegexOptions.IgnoreCase)); var tweetText = string.Format("@{0} {1}", replyTo.Contact.Name, additionalContacts.Trim()); var composeViewModel = new ComposeViewModel( new ObservableCollection(_accounts()), replyTo.Accounts, replyTo.Id, tweetText); return Page(composeViewModel); } public ActionResult Compose() { return Page(new ComposeViewModel(new ObservableCollection(_accounts()))); } public ActionResult SendStatusUpdate(IEnumerable accountCredentials, string text, string id) { foreach (var connection in _connectionManager.GetConnections(accountCredentials)) { connection.NewStatusUpdate(text, id, null); } //TODO don't go back if status update fails.. return Back(); } } }