public AdminModule(IdeastrikeContext dbContext, Settings settings, IUserRepository users, IIdeaRepository ideas, IActivityRepository activities) : base("/admin") { this.RequiresAuthentication(); this.RequiresValidatedClaims(c => c.Contains("admin")); _settings = settings; _users = users; _ideas = ideas; _activities = activities; Get["/"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; return(View["Admin/Index", m]); }; Get["/users"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; m.Users = users.GetAll(); return(View["Admin/Users", m]); }; Get["/moderation"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; return(View["Admin/Moderation", m]); }; Get["/settings"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.SiteTitle = _settings.SiteTitle; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; m.MaxThumbnailWidth = _settings.MaxThumbnailWidth; return(View["Admin/Settings", m]); }; Post["/settings"] = _ => { _settings.WelcomeMessage = Request.Form.welcomemessage; _settings.SiteTitle = Request.Form.sitetitle; _settings.Name = Request.Form.yourname; _settings.HomePage = Request.Form.homepage; _settings.GAnalyticsKey = Request.Form.analyticskey; _settings.MaxThumbnailWidth = Request.Form.maxthumbnailwidth; return(Response.AsRedirect("/admin/settings")); }; Get["/search"] = _ => ""; Get["/forums"] = _ => ""; Get["/forum/{forumId}"] = _ => ""; Get["/uservoice"] = _ => View["Admin/Uservoice", Context.Model("Admin")]; Post["/uservoice"] = _ => { var client = new WebClient(); var suggestions = GetSuggestions(client, Request.Form.channel, Request.Form.forumid, Request.Form.apikey, Request.Form.trusted); foreach (var s in suggestions) { string title = s.title; //If the idea exists, skip it if (ideas.FindBy(i => i.Title == title).Any()) { continue; } string date = s.created_at; var idea = new Idea { Title = title, Description = s.text, Time = DateTime.Parse(date.Substring(0, date.Length - 5)), }; string status = string.Empty; switch ((string)s.state) { case "approved": status = "Active"; break; case "closed": if (s.status.key == "completed") { status = "Completed"; } else { status = "Declined"; } break; default: status = "New"; break; } idea.Status = status; //Get the author, or create string name = s.creator.name; var existing = users.FindBy(u => u.UserName == name).FirstOrDefault(); if (existing != null) { idea.Author = existing; } else { idea.Author = NewUser(s.creator); users.Add(idea.Author); } ideas.Add(idea); //Process all comments var comments = GetComments(client, (string)s.id, Request.Form.channel, Request.Form.forumid, Request.Form.apikey, Request.Form.trusted); List <Activity> ideaComments = new List <Activity>(); foreach (var c in comments) { string commentdate = c.created_at; var comment = new Comment { Time = DateTime.Parse(commentdate), Text = c.text }; string commentname = c.creator.name; existing = users.FindBy(u => u.UserName == commentname).FirstOrDefault(); if (existing != null) { comment.User = existing; } else { comment.User = NewUser(c.creator); users.Add(comment.User); } activities.Add(idea.Id, comment); } //Process all votes var votes = GetVotes(client, (string)s.id, Request.Form.channel, Request.Form.forumid, Request.Form.apikey, Request.Form.trusted); foreach (var v in votes) { string votername = v.user.name; string votesfor = v.votes_for; int vote; if (Int32.TryParse(votesfor, out vote)) { existing = users.FindBy(u => u.UserName == votername).FirstOrDefault(); if (existing != null) { ideas.Vote(idea.Id, existing.Id, vote); } else { var author = NewUser(v.user); users.Add(author); ideas.Vote(idea.Id, author.Id, vote); } } } } return(Response.AsRedirect("/admin")); }; }
public AdminModule(IdeastrikeContext dbContext, Settings settings, IUserRepository users, IIdeaRepository ideas, IActivityRepository activities) : base("/admin") { this.RequiresAuthentication(); this.RequiresValidatedClaims(c => c.Contains("admin")); _settings = settings; _users = users; _ideas = ideas; _activities = activities; Get["/"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; return View["Admin/Index", m]; }; Get["/users"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; m.Users = users.GetAll(); return View["Admin/Users", m]; }; Get["/moderation"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; return View["Admin/Moderation", m]; }; Get["/settings"] = _ => { var m = Context.Model(string.Format("Admin - {0}", (string)_settings.SiteTitle)); m.Name = _settings.Name; m.SiteTitle = _settings.SiteTitle; m.WelcomeMessage = _settings.WelcomeMessage; m.HomePage = _settings.HomePage; m.GAnalyticsKey = _settings.GAnalyticsKey; m.MaxThumbnailWidth = _settings.MaxThumbnailWidth; return View["Admin/Settings", m]; }; Post["/settings"] = _ => { _settings.WelcomeMessage = Request.Form.welcomemessage; _settings.SiteTitle = Request.Form.sitetitle; _settings.Name = Request.Form.yourname; _settings.HomePage = Request.Form.homepage; _settings.GAnalyticsKey = Request.Form.analyticskey; _settings.MaxThumbnailWidth = Request.Form.maxthumbnailwidth; return Response.AsRedirect("/admin/settings"); }; Get["/search"] = _ => ""; Get["/forums"] = _ => ""; Get["/forum/{forumId}"] = _ => ""; Get["/uservoice"] = _ => View["Admin/Uservoice", Context.Model("Admin")]; Post["/uservoice"] = _ => { var client = new WebClient(); var suggestions = GetSuggestions(client, Request.Form.channel, Request.Form.forumid, Request.Form.apikey, Request.Form.trusted); foreach (var s in suggestions) { string title = s.title; //If the idea exists, skip it if (ideas.FindBy(i => i.Title == title).Any()) continue; string date = s.created_at; var idea = new Idea { Title = title, Description = s.text, Time = DateTime.Parse(date.Substring(0, date.Length - 5)), }; string status = string.Empty; switch ((string)s.state) { case "approved": status = "Active"; break; case "closed" : if (s.status.key == "completed") status = "Completed"; else status = "Declined"; break; default: status = "New"; break; } idea.Status = status; //Get the author, or create string name = s.creator.name; var existing = users.FindBy(u => u.UserName == name).FirstOrDefault(); if (existing != null) idea.Author = existing; else { idea.Author = NewUser(s.creator); users.Add(idea.Author); } ideas.Add(idea); //Process all comments var comments = GetComments(client, (string)s.id, Request.Form.channel, Request.Form.forumid, Request.Form.apikey, Request.Form.trusted); List<Activity> ideaComments = new List<Activity>(); foreach (var c in comments) { string commentdate = c.created_at; var comment = new Comment { Time = DateTime.Parse(commentdate), Text = c.text }; string commentname = c.creator.name; existing = users.FindBy(u => u.UserName == commentname).FirstOrDefault(); if (existing != null) comment.User = existing; else { comment.User = NewUser(c.creator); users.Add(comment.User); } activities.Add(idea.Id, comment); } //Process all votes var votes = GetVotes(client, (string)s.id, Request.Form.channel, Request.Form.forumid, Request.Form.apikey, Request.Form.trusted); foreach (var v in votes) { string votername = v.user.name; string votesfor = v.votes_for; int vote; if (Int32.TryParse(votesfor, out vote)) { existing = users.FindBy(u => u.UserName == votername).FirstOrDefault(); if (existing != null) ideas.Vote(idea.Id, existing.Id, vote); else { var author = NewUser(v.user); users.Add(author); ideas.Vote(idea.Id, author.Id, vote); } } } } return Response.AsRedirect("/admin"); }; }
public ActionResult Uservoice(string channel, string forumid, string apikey, bool trusted) { var client = new WebClient(); var suggestions = GetSuggestions(client, channel, forumid, apikey, trusted); foreach (var s in suggestions) { string title = s.title; //If the idea exists, skip it if (_ideas.FindBy(i => i.Title == title).Any()) { continue; } string date = s.created_at; var idea = new Idea { Title = title, Description = s.text, Time = DateTime.Parse(date.Substring(0, date.Length - 5)), }; string status = string.Empty; switch ((string)s.state) { case "approved": status = "Active"; break; case "closed": status = s.status.key == "completed" ? "Completed" : "Declined"; break; default: status = "New"; break; } idea.Status = status; //Get the author, or create string name = s.creator.name; var existing = _users.FindBy(u => u.UserName == name).FirstOrDefault(); if (existing != null) { idea.Author = existing; } else { idea.Author = NewUser(s.creator); _users.Add(idea.Author); } _ideas.Add(idea); //Process all comments var comments = GetComments(client, (string)s.id, channel, forumid, apikey, trusted); foreach (var c in comments) { string commentdate = c.created_at; var comment = new Comment { Time = DateTime.Parse(commentdate), Text = c.text }; string commentname = c.creator.name; existing = _users.FindBy(u => u.UserName == commentname).FirstOrDefault(); if (existing != null) { comment.User = existing; } else { comment.User = NewUser(c.creator); _users.Add(comment.User); } _activities.Add(idea.Id, comment); } //Process all votes var votes = GetVotes(client, (string)s.id, channel, forumid, apikey, trusted); foreach (var v in votes) { string votername = v.user.name; string votesfor = v.votes_for; int vote; if (Int32.TryParse(votesfor, out vote)) { existing = _users.FindBy(u => u.UserName == votername).FirstOrDefault(); if (existing != null) { _ideas.Vote(idea.Id, existing.Id, vote); } else { var author = NewUser(v.user); _users.Add(author); _ideas.Vote(idea.Id, author.Id, vote); } } } } return(Redirect("/admin")); }