public IdeaController(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings, IImageRepository imageRepository, IFeatureRepository features) { _ideas = ideas; _users = users; _settings = settings; _features = features; }
public IdeaService(IIdeaRepository ideaRepository, IInviteRepository inviteRepository, IChallengeRepository challengeRepository) { _ideaRepository = ideaRepository; _inviteRepository = inviteRepository; _challengeRepository = challengeRepository; }
public IdeationManager(IIdeaRepository ideaRepository, IIdeationRepository ideationRepository, ICommentRepository commentRepository, IFieldRepository fieldRepository, IProjectManager projectManager) { _ideaRepository = ideaRepository; _ideationRepository = ideationRepository; _commentRepository = commentRepository; _fieldRepository = fieldRepository; _projectManager = projectManager; }
public HomeModule(IIdeaRepository ideas, ISettingsRepository settings) { _ideas = ideas; _settings = settings; Get["/"] = _ => ListIdeas(_ideas.GetAll(), SelectedTab.Popular); Get["/top"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Votes.Count), SelectedTab.Hot); Get["/new"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Time), SelectedTab.New); }
public AdminController(IdeastrikeContext dbContext, ISettingsRepository settings, IUserRepository users, IIdeaRepository ideas, IActivityRepository activities) { _dbContext = dbContext; _settings = settings; _users = users; _ideas = ideas; _activities = activities; }
public IdeaService(IIdeaRepository repository) { _repository = repository; }
public HomeModule(IIdeaRepository ideas, ISettingsRepository settings) { Get["/"] = _ => View["Home/Index", new { Ideas= ideas.GetAll(), Title = settings.Title, WelcomeMessage = MarkdownHelper.Markdown(settings.WelcomeMessage) }]; }
public HomeModule(IIdeaRepository ideas, ISettingsRepository settings) { Get["/"] = _ => View["Home/Index", new { Ideas = ideas.GetAll(), Title = settings.Title, WelcomeMessage = MarkdownHelper.Markdown(settings.WelcomeMessage) }]; }
public IdeaService( IIdeaRepository ideaRepository, IIdeaGranteeRepository ideaGranteeRepository, IIdeaOccasionRepository ideaOccasionRepository) { _ideaRepository = ideaRepository; _ideaGranteeRepository = ideaGranteeRepository; _ideaOccasionRepository = ideaOccasionRepository; }
public ApiModule(IdeastrikeContext db, IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings) : base("/api") { Get["/ideas"] = _ => { return Response.AsJson(db.Ideas.Select(idea => new { id = idea.Id, title = idea.Title, description = idea.Description, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), idea.Time), author = new { id = idea.Author.Id, username = idea.Author.UserName }, vote_count = idea.Votes.Sum(vote => (int?)vote.Value) ?? 0, status = idea.Status })); }; Get["/ideas/{id}"] = _ => { int id = _.id; var o = db.Ideas.Where(idea => idea.Id == id).Select(idea => new { id = idea.Id, title = idea.Title, description = idea.Description, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), idea.Time), author = new { id = idea.Author.Id, username = idea.Author.UserName }, vote_count = idea.Votes.Sum(vote => (int?)vote.Value) ?? 0, features = idea.Features.Select(feature => new { id = feature.Id, text = feature.Text, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), feature.Time) }), votes = idea.Votes.Select(vote => new { user = new { id = vote.UserId, username = vote.User.UserName }, value = vote.Value }) }).FirstOrDefault(); if (o == null) return HttpStatusCode.NotFound; return Response.AsJson(o); }; Get["/ideas/{id}/features"] = _ => { int id = _.id; if (!db.Ideas.Any(idea => idea.Id == id)) return HttpStatusCode.NotFound; return Response.AsJson(db.Features.Where(d => d.Idea.Id == id).Select(feature => new { id = feature.Id, text = feature.Text, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), feature.Time), })); }; Get["/ideas/{id}/votes"] = _ => { int id = _.id; if (!db.Ideas.Any(idea => idea.Id == id)) return HttpStatusCode.NotFound; return Response.AsJson(db.Votes.Where(d => d.IdeaId == id).Select(vote => new { value = vote.Value, user = new { id = vote.UserId, username = vote.User.UserName } })); }; }
public IdeaModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings, IImageRepository imageRepository) : base("/idea") { _ideas = ideas; _settings = settings; _users = users; Get["/{id}"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return View["404"]; User user = Context.GetCurrentUser(_users); if (user != null) { if (idea.Votes.Any(u => u.UserId == user.Id)) idea.UserHasVoted = true; } var viewModel = new IdeaViewModel(idea); var model = Context.Model(string.Format("{0} - {1}", idea.Title, _settings.Title)); model.Idea = viewModel; return View["Idea/Index", model]; }; Get["/image/{id}"] = parameters => { var id = (string)parameters.id; if (id.Contains(".")) { id = id.Substring(0, id.IndexOf(".")); //string .jpg in case it was send in } var image = imageRepository.Get(int.Parse(id)); // TODO: format should be adaptive based on backing source? return Response.FromStream(new MemoryStream(image.ImageBits), "image/jpeg"); }; Get[@"/imagethumb/{id}/{width}"] = parameters => { var image = (Image)imageRepository.Get(parameters.id); using (var memoryStream = new MemoryStream(image.ImageBits)) { var drawingImage = System.Drawing.Image.FromStream(memoryStream); var thumb = drawingImage.ToThumbnail((int)parameters.width); using (var thumbnailStream = new MemoryStream()) { // TODO: format should be adaptive based on backing source? thumb.Save(thumbnailStream, ImageFormat.Jpeg); return Response.FromStream(new MemoryStream(thumbnailStream.GetBuffer()), "image/jpeg"); //massive WTF? If I just use thumnailStream, it doesn't work... } } }; }
public ManageController( IMapper mapper, IUserRepository userRepo, IRepo repo, UserManager <AppUser> userManager, IIdeaRepository ideaRepo) { _mapper = mapper; _userRepo = userRepo; _repo = repo; _userManager = userManager; _ideaRepo = ideaRepo; }
public IdeaController( IIdeaRepository ideaRepo, IMapper mapper, IUserRepository userRepo, IHostingEnvironment host, IRepo repo) { _ideaRepo = ideaRepo; _mapper = mapper; _userRepo = userRepo; _host = host; _repo = repo; }
public HomeModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings) { _ideas = ideas; _users = users; _settings = settings; Get["/"] = _ => ListIdeas(_ideas.GetAll(), SelectedTab.Popular, ""); Get["/top"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Votes.Sum(s => s.Value)), SelectedTab.Hot, ""); Get["/new"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Time), SelectedTab.New, ""); Get["/login"] = _ => { return(ListIdeas(_ideas.GetAll(), SelectedTab.Popular, Strings.HomeModule_LoginRequired)); }; }
public HomeModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings) { _ideas = ideas; _users = users; _settings = settings; Get["/"] = _ => ListIdeas(_ideas.GetAll(), SelectedTab.Popular, ""); Get["/top"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Votes.Count), SelectedTab.Hot, ""); Get["/new"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Time), SelectedTab.New, ""); Get["/login"] = _ => { return(ListIdeas(_ideas.GetAll(), SelectedTab.Popular, "You need to login to do that")); }; }
public HomeModule(IIdeaRepository ideas, IUserRepository users, Settings settings) { _ideas = ideas; _users = users; _settings = settings; Get["/"] = _ => ListIdeas(_ideas.GetAll(), SelectedTab.Popular, ""); Get["/top"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Votes.Sum(s => s.Value)), SelectedTab.Hot, ""); Get["/new"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Time), SelectedTab.New, ""); Get["/login"] = _ => { return ListIdeas(_ideas.GetAll(), SelectedTab.Popular, Strings.HomeModule_LoginRequired); }; }
public HomeModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings) { _ideas = ideas; _users = users; _settings = settings; Get["/"] = _ => ListIdeas(_ideas.GetAll(), SelectedTab.Popular, ""); Get["/top"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Votes.Count), SelectedTab.Hot, ""); Get["/new"] = _ => ListIdeas(_ideas.GetAll().OrderByDescending(i => i.Time), SelectedTab.New, ""); Get["/login"] = _ => { return ListIdeas(_ideas.GetAll(), SelectedTab.Popular, "You need to login to do that"); }; }
public void Setup() { repository = MockRepository.GenerateStub<IIdeaRepository>(); controller = new SiteIdeasController(repository); httpContextMock = new HttpContextMock(); controller.ControllerContext = new ControllerContext(httpContextMock.Context, new RouteData(), controller); resultIdea = new Idea() { Id = 1, Title = "test" }; httpContextMock.Request.Stub(x => x.HttpMethod).Return("GET"); resultIdea = new Idea() { Id = 1, Title = "test" }; ideaVM = new IdeaInList(resultIdea); repository.Stub(x => x.GetById(1)).Return(resultIdea); }
public ApiSecuredModule(IIdeaRepository ideas, Settings settings) : base("/api") { _settings = settings; this.Before.AddItemToEndOfPipeline(ctx => { if (ctx.CurrentUser == null) { return(HttpStatusCode.Unauthorized); } return(null); }); Post["/ideas"] = _ => { var model = this.Bind <EditIdeaModel>(); var idea = new Idea { Title = model.title, Description = model.description, Time = DateTime.UtcNow, Author = (User)Context.CurrentUser, Status = _settings.IdeaStatusDefault }; ideas.Add(idea); return(HttpStatusCode.Created); // TODO: Should return either the generated id or the json body }; Put["/ideas/{id}"] = _ => { var model = this.Bind <EditIdeaModel>(); int id = _.id; var idea = ideas.Get(id); if (idea == null) { return(HttpStatusCode.NotFound); } if (model.title != null) { idea.Title = model.title; } if (model.description != null) { idea.Description = model.description; } ideas.Edit(idea); return(HttpStatusCode.OK); }; }
public IdeaModule(IIdeaRepository ideas) : base("/idea") { Get["/{id}"] = parameters => { int id = parameters.id; Idea idea = ideas.Get(id); if (idea == null) { return(View["Shared/404"]); } return(View["Idea/Index", idea]); }; Post["/"] = _ => { var i = new Idea { Time = DateTime.UtcNow, Title = Request.Form.Title, Description = Request.Form.Description, }; ideas.Add(i); return(Response.AsRedirect("/idea/" + i.Id)); }; Get["/{id}/vote/{userid}"] = parameters => { Idea idea = ideas.Get(parameters.id); ideas.Vote(idea, parameters.userid, 1); return(Response.AsJson(new { Status = "OK", NewVotes = idea.Votes.Sum(v => v.Value) })); }; Get["/{id}/delete"] = parameters => { int id = parameters.id; ideas.Delete(id); return(string.Format("Deleted Item {0}", id)); }; }
public IdeaModule(IIdeaRepository ideas) : base("/idea") { Get["/{id}"] = parameters => { int id = parameters.id; Idea idea = ideas.Get(id); if (idea == null) return View["Shared/404"]; return View["Idea/Index", idea]; }; Post["/"] = _ => { var i = new Idea { Time = DateTime.UtcNow, Title = Request.Form.Title, Description = Request.Form.Description, }; ideas.Add(i); return Response.AsRedirect("/idea/" + i.Id); }; Get["/{id}/vote/{userid}"] = parameters => { Idea idea = ideas.Get(parameters.id); ideas.Vote(idea, parameters.userid, 1); return Response.AsJson(new { Status = "OK", NewVotes = idea.Votes.Sum(v => v.Value) }); }; Get["/{id}/delete"] = parameters => { int id = parameters.id; ideas.Delete(id); return string.Format("Deleted Item {0}", id); }; }
public CommentModule(IIdeaRepository ideas, IActivityRepository activities) : base("/idea") { _ideas = ideas; _activities = activities; Post["/{idea}/comment"] = _ => { int id = _.Idea; var comment = new Comment { Time = DateTime.UtcNow, Text = Request.Form.comment }; _activities.Add(id, comment); return(Response.AsRedirect(string.Format("/idea/{0}#{1}", id, comment.Id))); }; /* * Get["/{idea}/comment/{id}"] = parameters => * { * using (var db = new IdeastrikeContext()) * { * int id = parameters.id; * int idea = parameters.idea; * var comment = db.Comments.FirstOrDefault(i => i.Id == id && i.IdeaId == idea); * return string.Format("Comment Id:{0}", comment.Id); * } * }; * * Get["/{idea}/comment/{id}/delete"] = parameters => * { * using (var db = new IdeastrikeContext()) * { * int id = parameters.id; * int idea = parameters.idea; * * var comment = db.Comments.FirstOrDefault(i => i.Id == id && i.IdeaId == idea); * db.Comments.Remove(comment); * db.SaveChanges(); * return string.Format("Deleted Comment {0} for Idea {1}", id, idea); * } * };*/ }
public CommentModule(IIdeaRepository ideas, IActivityRepository activities) : base("/idea") { _ideas = ideas; _activities = activities; Post["/{idea}/comment"] = _ => { int id = _.Idea; var comment = new Comment { Time = DateTime.UtcNow, Text = Request.Form.comment }; _activities.Add(id, comment); return Response.AsRedirect(string.Format("/idea/{0}#{1}", id, comment.Id)); }; /* Get["/{idea}/comment/{id}"] = parameters => { using (var db = new IdeastrikeContext()) { int id = parameters.id; int idea = parameters.idea; var comment = db.Comments.FirstOrDefault(i => i.Id == id && i.IdeaId == idea); return string.Format("Comment Id:{0}", comment.Id); } }; Get["/{idea}/comment/{id}/delete"] = parameters => { using (var db = new IdeastrikeContext()) { int id = parameters.id; int idea = parameters.idea; var comment = db.Comments.FirstOrDefault(i => i.Id == id && i.IdeaId == idea); db.Comments.Remove(comment); db.SaveChanges(); return string.Format("Deleted Comment {0} for Idea {1}", id, idea); } };*/ }
public CommentModule(IIdeaRepository ideas, IActivityRepository activities, IUserRepository users) : base("/comment") { this.RequiresAuthentication(); _ideas = ideas; _activities = activities; _users = users; Post["/{idea}/add"] = parameters => { int id = parameters.Idea; var user = _users.FindBy(u => u.UserName == Context.CurrentUser.UserName).FirstOrDefault(); if (user == null) { return(Response.AsRedirect(string.Format("/idea/{0}", id))); //TODO: Problem looking up the user? Return an error } var text = Request.Form.comment; if (string.IsNullOrEmpty(text)) // additional validation required { return(Response.AsJson(new { result = "Error" })); } var comment = new Comment { User = user, Time = DateTime.UtcNow, Text = Request.Form.comment }; _activities.Add(id, comment); // why not return JSON here and leave it up to client to render inline? return(Response.AsRedirect(string.Format("/idea/{0}#{1}", id, comment.Id))); }; // TODO: shouldn't these actually sit under the Comment root // TODO: user should be able to edit their own comment Post["/{id}/edit"] = parameters => Response.AsJson(new { result = "Error" }); // TODO: user should be able to remove their own comment Post["/{id}/delete"] = parameters => Response.AsJson(new { result = "Error" }); }
public FeatureModule(IIdeaRepository ideas, IFeatureRepository features) : base("/idea") { _ideas = ideas; _features = features; Post["/{idea}/feature"] = _ => { int id = _.Idea; var feature = new Feature { Time = DateTime.UtcNow, Text = Request.Form.feature }; _features.Add(id, feature); return(Response.AsRedirect(string.Format("/idea/{0}#{1}", id, feature.Id))); }; }
public FeatureModule(IIdeaRepository ideas, IFeatureRepository features) : base("/idea") { _ideas = ideas; _features = features; Post["/{idea}/feature"] = _ => { int id = _.Idea; var feature = new Feature { Time = DateTime.UtcNow, Text = Request.Form.feature }; _features.Add(id, feature); return Response.AsRedirect(string.Format("/idea/{0}#{1}", id, feature.Id)); }; }
public ApiSecuredModule(IIdeaRepository ideas, Settings settings) : base("/api") { _settings = settings; this.Before.AddItemToEndOfPipeline(ctx => { if (ctx.CurrentUser == null) return HttpStatusCode.Unauthorized; return null; }); Post["/ideas"] = _ => { var model = this.Bind<EditIdeaModel>(); var idea = new Idea { Title = model.title, Description = model.description, Time = DateTime.UtcNow, Author = (User)Context.CurrentUser, Status = _settings.IdeaStatusDefault }; ideas.Add(idea); return HttpStatusCode.Created; // TODO: Should return either the generated id or the json body }; Put["/ideas/{id}"] = _ => { var model = this.Bind<EditIdeaModel>(); int id = _.id; var idea = ideas.Get(id); if (idea == null) return HttpStatusCode.NotFound; if (model.title != null) idea.Title = model.title; if (model.description != null) idea.Description = model.description; ideas.Edit(idea); return HttpStatusCode.OK; }; }
public FeatureModule(IIdeaRepository ideas, IFeatureRepository features, IUserRepository users) : base("/idea") { _ideas = ideas; _features = features; this.RequiresAuthentication(); Post["/{idea}/feature"] = _ => { int id = _.Idea; var feature = new Feature { Time = DateTime.UtcNow, Text = Request.Form.feature, User = Context.GetCurrentUser(users) }; _features.Add(id, feature); return(Response.AsRedirect(string.Format("/idea/{0}#{1}", id, feature.Id))); }; }
public CommentModule(IIdeaRepository ideas, IActivityRepository activities) : base("/comment") { _ideas = ideas; _activities = activities; Post["/{idea}/add"] = parameters => { int id = parameters.Idea; int userId = Request.Form.userId; // addtional validation required var text = Request.Form.comment; if (string.IsNullOrEmpty(text)) // additional validation required { return Response.AsJson(new { result = "Error" }); } var comment = new Comment { UserId = userId, Time = DateTime.UtcNow, Text = Request.Form.comment }; _activities.Add(id, comment); // why not return JSON here and leave it up to client to render inline? return Response.AsRedirect(string.Format("/idea/{0}#{1}", id, comment.Id)); }; // TODO: shouldn't these actually sit under the Comment root // TODO: user should be able to edit their own comment Post["/{id}/edit"] = parameters => Response.AsJson(new { result = "Error" }); // TODO: user should be able to remove their own comment Post["/{id}/delete"] = parameters => Response.AsJson(new { result = "Error" }); }
public IdeaModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings, IImageRepository imageRepository) : base("/idea") { _ideas = ideas; _settings = settings; _users = users; Get["/{id}"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) { return(View["404"]); } User user = Context.GetCurrentUser(_users); if (user != null) { if (idea.Votes.Any(u => u.UserId == user.Id)) { idea.UserHasVoted = true; } } var viewModel = new IdeaViewModel(idea); var model = Context.Model(string.Format("{0} - {1}", idea.Title, _settings.Title)); model.Idea = viewModel; return(View["Idea/Index", model]); }; Get["/{id}/activity"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) { return(Response.AsJson(new { Status = "error" })); } var results = idea.Activities.Select(MapToViewModel); return(Response.AsJson(new { Status = "success", Items = results })); }; Get["/image/{id}"] = parameters => { var id = (string)parameters.id; if (id.Contains(".")) { id = id.Substring(0, id.IndexOf(".")); //string .jpg in case it was send in } var image = imageRepository.Get(int.Parse(id)); // TODO: format should be adaptive based on backing source? return(Response.FromStream(new MemoryStream(image.ImageBits), "image/jpeg")); }; Get[@"/imagethumb/{id}/{width}"] = parameters => { var image = (Image)imageRepository.Get(parameters.id); using (var memoryStream = new MemoryStream(image.ImageBits)) { var drawingImage = System.Drawing.Image.FromStream(memoryStream); var thumb = drawingImage.ToThumbnail((int)parameters.width); using (var thumbnailStream = new MemoryStream()) { // TODO: format should be adaptive based on backing source? thumb.Save(thumbnailStream, ImageFormat.Jpeg); return(Response.FromStream(new MemoryStream(thumbnailStream.GetBuffer()), "image/jpeg")); //massive WTF? If I just use thumnailStream, it doesn't work... } } }; Get["/imagesforidea/{id}"] = parameters => { Idea idea = _ideas.Get((int)parameters.id); return(Response.AsJson(idea.Images.Select(i => new ImageFileStatus(i.Id, i.ImageBits.Length, i.Name)) .ToArray() ).WithHeader("Vary", "Accept")); }; }
public CommentController(IIdeaRepository ideas, IActivityRepository activities, IUserRepository users) { _ideas = ideas; _activities = activities; _users = users; }
public void DeleteIdea(Idea idea) { using (IDataProvider provider = base.CreateDataProvider()) using (IIdeaRepository repository = provider.CreateIdeaRepository()) repository.Delete(idea); }
public ApiModule(IdeastrikeContext db, IIdeaRepository ideas, IUserRepository users, Settings settings) : base("/api") { _settings = settings; Get["/ideas"] = _ => { return Response.AsJson(db.Ideas.Select(idea => new { id = idea.Id, title = idea.Title, description = idea.Description, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), idea.Time), author = new { id = idea.Author.Id, username = idea.Author.UserName }, vote_count = idea.Votes.Sum(vote => (int?)vote.Value) ?? 0, status = idea.Status })); }; Get["/ideas/{id}"] = _ => { int id = _.id; var o = db.Ideas.Where(idea => idea.Id == id).Select(idea => new { id = idea.Id, title = idea.Title, description = idea.Description, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), idea.Time), author = new { id = idea.Author.Id, username = idea.Author.UserName }, vote_count = idea.Votes.Sum(vote => (int?)vote.Value) ?? 0, features = idea.Features.Select(feature => new { id = feature.Id, text = feature.Text, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), feature.Time) }), votes = idea.Votes.Select(vote => new { user = new { id = vote.UserId, username = vote.User.UserName }, value = vote.Value }) }).FirstOrDefault(); if (o == null) return HttpStatusCode.NotFound; return Response.AsJson(o); }; Get["/ideas/{id}/features"] = _ => { int id = _.id; if (!db.Ideas.Any(idea => idea.Id == id)) return HttpStatusCode.NotFound; return Response.AsJson(db.Features.Where(d => d.Idea.Id == id).Select(feature => new { id = feature.Id, text = feature.Text, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), feature.Time), })); }; Get["/ideas/{id}/votes"] = _ => { int id = _.id; if (!db.Ideas.Any(idea => idea.Id == id)) return HttpStatusCode.NotFound; return Response.AsJson(db.Votes.Where(d => d.IdeaId == id).Select(vote => new { value = vote.Value, user = new { id = vote.UserId, username = vote.User.UserName } })); }; Post["/activity"] = _ => { string content; using (var reader = new StreamReader(Context.Request.Body)) { content = reader.ReadToEnd(); } var j = JsonConvert.DeserializeObject<dynamic>(content); string repourl = j.repository.url.ToString(); string reponame = j.repository.name.ToString(); var idea = ideas .Include("Activities") .Where(i => i.GithubUrl == repourl || i.GithubName == reponame) .FirstOrDefault(); if (idea == null) return HttpStatusCode.NotFound; foreach (var c in j.commits) { string date = c.timestamp; var activity = new GitHubActivity { Time = DateTime.Parse(date), Message = c.message, CommitUrl = c.url, AuthorName = c.author.name, GravatarUrl = GravatarExtensions.ToGravatarUrl(c.author.email.ToString(), 40), Sha = c.id }; if (!idea.Activities.OfType<GitHubActivity>().Any(a => a.Sha == activity.Sha)) idea.Activities.Add(activity); } ideas.Save(); return HttpStatusCode.Accepted; }; }
public IdeaController(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings, IImageRepository imageRepository) { _ideas = ideas; _users = users; _settings = settings; }
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 IdeaModule(IIdeaRepository ideas, ISettingsRepository settings) : base("/idea") { _ideas = ideas; _settings = settings; Get["/new"] = _ => View["Idea/New", new { Title = string.Format("New Idea - {0}", _settings.Title), Ideas = _ideas.GetAll() }]; Get["/{id}/edit"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return View["404"]; return View["Idea/Edit", new { Title = string.Format("Edit Idea: '{0}' - {1}", idea.Title, _settings.Title), PopularIdeas = _ideas.GetAll(), Idea = idea }]; }; Get["/{id}"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return View["404"]; var viewModel = new IdeaViewModel(idea) { UserHasVoted = false }; return View["Idea/Index", new { Title = string.Format("{0} - {1}", idea.Title, _settings.Title), Idea = viewModel, UserId = 2 // TODO: not hard-code these }]; }; // save result of edit to database Post["/{id}/edit"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return View["404"]; idea.Title = Request.Form.Title; idea.Description = Request.Form.Description; _ideas.Save(); return Response.AsRedirect(string.Format("/idea/{0}", idea.Id)); }; // save result of create to database Post["/new"] = _ => { var i = new Idea { Time = DateTime.UtcNow, Title = Request.Form.Title, Description = Request.Form.Description, }; ideas.Add(i); return Response.AsRedirect("/idea/" + i.Id); }; // someone else votes for the idea Post["/{id}/vote/{userid}"] = parameters => { int votes = ideas.Vote(parameters.id, parameters.userid, 1); return Response.AsJson(new { Status = "OK", NewVotes = votes }); }; // the user decides to repeal his vote Post["/{id}/unvote/{userid}"] = parameters => { int votes = ideas.Unvote(parameters.id, parameters.userid); return Response.AsJson(new { Status = "OK", NewVotes = votes }); }; Post["/{id}/delete"] = parameters => { int id = parameters.id; ideas.Delete(id); ideas.Save(); // TODO: test return Response.AsJson(new { Status = "Error" }); }; }
public SiteIdeasController(IIdeaRepository repo) { _repo = repo; }
public ImageController(IImageRepository imageRepository, ISettingsRepository settingsRepository, IIdeaRepository ideaRepository) { _images = imageRepository; _settings = settingsRepository; _ideas = ideaRepository; }
public AdminIdeasController(IIdeaRepository repo) { _repo = repo; }
public IdeaModule(IIdeaRepository ideas, IUserRepository users, Settings settings, IImageRepository imageRepository) : base("/idea") { _ideas = ideas; _settings = settings; _users = users; Get["/{id}"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return View["404"]; User user = Context.GetCurrentUser(_users); if (user != null) { if (idea.Votes.Any(u => u.UserId == user.Id)) idea.UserHasVoted = true; } var viewModel = new IdeaViewModel(idea); var model = Context.Model(string.Format("{0} - {1}", idea.Title, (string)_settings.SiteTitle)); model.Idea = viewModel; return View["Idea/Index", model]; }; Get["/{id}/activity"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return Response.AsJson(new { Status = "error" }); var results = idea.Activities.OrderBy(a => a.Time).Select(MapToViewModel); return Response.AsJson(new { Status = "success", Items = results }); }; Get["/image/{id}"] = parameters => { var id = (string)parameters.id; if (id.Contains(".")) { id = id.Substring(0, id.IndexOf(".")); //string .jpg in case it was send in } var image = imageRepository.Get(int.Parse(id)); // TODO: format should be adaptive based on backing source? return Response.FromStream(new MemoryStream(image.ImageBits), "image/jpeg"); }; Get[@"/imagethumb/{id}/{width}"] = parameters => { var image = (Image)imageRepository.Get(parameters.id); using (var memoryStream = new MemoryStream(image.ImageBits)) { var drawingImage = System.Drawing.Image.FromStream(memoryStream); int thumbWidth = (int)parameters.width; if (thumbWidth > int.Parse(_settings.MaxThumbnailWidth)) { thumbWidth = int.Parse(_settings.MaxThumbnailWidth); } var thumb = drawingImage.ToThumbnail(thumbWidth); using (var thumbnailStream = new MemoryStream()) { // TODO: format should be adaptive based on backing source? thumb.Save(thumbnailStream, ImageFormat.Jpeg); return Response.FromStream(new MemoryStream(thumbnailStream.GetBuffer()), "image/jpeg"); //massive WTF? If I just use thumnailStream, it doesn't work... } } }; Get["/imagesforidea/{id}"] = parameters => { Idea idea = _ideas.Get((int)parameters.id); return Response.AsJson(idea.Images.Select(i => new ImageFileStatus(i.Id, i.ImageBits.Length, i.Name)) .ToArray() ).WithHeader("Vary", "Accept"); }; }
public IdeasController([Import] IIdeaRepository ideaRepository) { _ideaRepository = ideaRepository; }
public IdeasServiceController(IIdeaRepository repo) { _repo = repo; }
public HomeController(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings) { _ideas = ideas; _users = users; _settings = settings; }
public ApiModule(IdeastrikeContext db, IIdeaRepository ideas) : base("/api") { Get["/ideas"] = _ => { return Response.AsJson(db.Ideas.Select(idea => new { id = idea.Id, title = idea.Title, description = idea.Description, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), idea.Time), Author = new { idea.Author.Id, idea.Author.UserName }, vote_count = idea.Votes.Sum(vote => (int?)vote.Value) ?? 0 })); }; Post["/ideas"] = _ => { var model = this.Bind<EditIdeaModel>(); var idea = new Idea { Title= model.title, Description= model.description, Time = DateTime.UtcNow }; ideas.Add(idea); return HttpStatusCode.Created; // TODO: Should return either the generated id or the json body }; Put["/ideas/{id}"] = _ => { var model = this.Bind<EditIdeaModel>(); int id = _.id; var idea = ideas.Get(id); if (idea == null) return HttpStatusCode.NotFound; if (model.title != null) idea.Title = model.title; if (model.description != null) idea.Description = model.description; ideas.Edit(idea); return HttpStatusCode.OK; }; Get["/ideas/{id}"] = _ => { int id = _.id; var o = db.Ideas.Where(idea => idea.Id == id).Select(idea => new { id = idea.Id, title = idea.Title, description = idea.Description, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), idea.Time), author = new { id = idea.Author.Id, username = idea.Author.UserName }, vote_count = idea.Votes.Sum(vote => (int?)vote.Value) ?? 0, features = idea.Features.Select(feature => new { id = feature.Id, text = feature.Text, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), feature.Time) }), votes = idea.Votes.Select(vote => new { user = new { id = vote.UserId, username = vote.User.UserName }, value = vote.Value }) }).FirstOrDefault(); if (o == null) return HttpStatusCode.NotFound; return Response.AsJson(o); }; Get["/ideas/{id}/features"] = _ => { int id = _.id; if (!db.Ideas.Any(idea => idea.Id == id)) return HttpStatusCode.NotFound; return Response.AsJson(db.Features.Where(d => d.Idea.Id == id).Select(feature => new { id = feature.Id, text = feature.Text, time = SqlFunctions.DateDiff("s", new DateTime(1970, 1, 1), feature.Time), })); }; Get["/ideas/{id}/votes"] = _ => { int id = _.id; if (!db.Ideas.Any(idea => idea.Id == id)) return HttpStatusCode.NotFound; return Response.AsJson(db.Votes.Where(d => d.IdeaId == id).Select(vote => new { value = vote.Value, user = new { id = vote.UserId, username = vote.User.UserName } })); }; }
public IdeasController(IIdeaRepository ideaRepository) { _ideaRepository = ideaRepository; }
public ProfileController(IUserRepository users, IIdeaRepository ideas, IFeatureRepository features) { _users = users; _ideas = ideas; _features = features; }
public IdeaSecuredModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings, IImageRepository imageRepository) : base("/idea") { _ideas = ideas; _settings = settings; _imageRepository = imageRepository; _users = users; this.RequiresAuthentication(); Get["/new"] = _ => { var m = Context.Model(string.Format("New Idea - {0}", _settings.Title)); m.Ideas = _ideas.GetAll(); m.Errors = false; if (Request.Query["validation"] == "failed") { m.Errors = true; } return View["Idea/New", m]; }; Get["/{id}/edit"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); if (idea == null) return View["404"]; if (idea.Author.UserName != Context.CurrentUser.UserName) return View["404"]; var m = Context.Model(string.Format(Strings.IdeaSecuredModule_EditIdea, idea.Title, _settings.Title)); m.PopularIdeas = _ideas.GetAll(); m.Idea = idea; m.StatusChoices = _settings.IdeaStatusChoices.Split(','); m.Errors = false; if (Request.Query["validation"] == "failed") { m.Errors = true; } return View["Idea/Edit", m]; }; // save result of edit to database Post["/{id}/edit"] = parameters => { int id = parameters.id; if (string.IsNullOrEmpty(Request.Form.Title) || string.IsNullOrEmpty(Request.Form.Description)) { return Response.AsRedirect(string.Format("/idea/{0}/edit?validation=failed", id)); } var idea = _ideas.Get(id); if (idea == null) return View["404"]; idea.Title = Request.Form.Title; idea.Description = Request.Form.Description; idea.Status = Request.Form.Status; //Add any images IEnumerable<string> keys = Context.Request.Form; var x = keys.Where(c => c.StartsWith("imageId")); var ids = x.Select(c => Context.Request.Form[c].ToString()).Cast<string>(); var images = ids.Select(y => _imageRepository.Get(Convert.ToInt32(y))); foreach (var i in images) { if (!idea.Images.Contains(i, i)) { idea.Images.Add(i); } } _ideas.Save(); return Response.AsRedirect(string.Format("/idea/{0}", idea.Id)); }; // save result of create to database Post["/new"] = _ => { if (string.IsNullOrEmpty(Request.Form.Title) || string.IsNullOrEmpty(Request.Form.Description)) { return Response.AsRedirect("/idea/new?validation=failed"); } var user = _users.FindBy(u => u.UserName == Context.CurrentUser.UserName).FirstOrDefault(); if (user == null) return Response.AsRedirect("/login"); var idea = new Idea { Author = user, Time = DateTime.UtcNow, Title = Request.Form.Title, Description = Request.Form.Description, Status = settings.IdeaStatusDefault }; IEnumerable<string> keys = Context.Request.Form; var parameters = keys.Where(c => c.StartsWith("imageId")); var ids = parameters.Select(c => Context.Request.Form[c].ToString()).Cast<string>(); var images = ids.Select(id => _imageRepository.Get(Convert.ToInt32(id))); idea.Images = images.ToList(); //i.Images = form.Cast<string>() // .Where(k => k.StartsWith("imageId")) // .Select(k => _imageRepository.Get(Convert.ToInt32(form[k]))) // .ToList(); //is there a way to do this using Nancy? if (idea.Votes.Any(u => u.UserId == user.Id)) idea.UserHasVoted = true; ideas.Add(idea); return Response.AsRedirect("/idea/" + idea.Id); }; // someone else votes for the idea Post["/{id}/vote"] = parameters => { var user = Context.GetCurrentUser(_users); if (user == null) return Response.AsRedirect("/login"); int ideaId = parameters.id; int votes = ideas.Vote(ideaId, user.Id, 1); return Response.AsJson(new { Status = "OK", NewVotes = votes }); }; // the user decides to repeal his vote Post["/{id}/unvote"] = parameters => { var user = Context.GetCurrentUser(_users); int votes = ideas.Unvote(parameters.id, user.Id); return Response.AsJson(new { Status = "OK", NewVotes = votes }); }; Post["/{id}/delete"] = parameters => { int id = parameters.id; ideas.Delete(id); ideas.Save(); // TODO: test return Response.AsJson(new { Status = "Error" }); }; // TODO: do we want unauthenticated users to be allowed to upload posts? Post["/uploadimage"] = parameters => { var user = Context.GetCurrentUser(_users); if (user == null) return Response.AsJson(new { status = "Error" }); var imageFile = Request.Files.FirstOrDefault(); if (imageFile == null) { return null; //TODO: handle error case } var image = new Image { Name = imageFile.Name }; var bytes = new byte[imageFile.Value.Length]; imageFile.Value.Read(bytes, 0, bytes.Length); image.ImageBits = bytes; imageRepository.Add(image); var status = new ImageFileStatus(image.Id, bytes.Length, image.Name); return Response.AsJson(new[] { status }).WithHeader("Vary", "Accept"); }; Delete["/deleteimage/{id}"] = parameters => { var user = Context.GetCurrentUser(_users); if (user == null) return Response.AsJson(new { status = "Error" }); imageRepository.Delete(parameters.id); return null; }; }
public IdeaController(IIdeaRepository ideaRepository) { this.repository = ideaRepository; }
public IdeaSecuredModule(IIdeaRepository ideas, IUserRepository users, ISettingsRepository settings, IImageRepository imageRepository) : base("/idea") { _ideas = ideas; _settings = settings; _imageRepository = imageRepository; _users = users; this.RequiresAuthentication(); Get["/new"] = _ => { var m = Context.Model(string.Format("New Idea - {0}", _settings.Title)); m.Ideas = _ideas.GetAll(); m.Errors = false; if (Request.Query["validation"] == "failed") { m.Errors = true; } return(View["Idea/New", m]); }; Get["/{id}/edit"] = parameters => { int id = parameters.id; var idea = _ideas.Get(id); var m = Context.Model(string.Format(Strings.IdeaSecuredModule_EditIdea, idea.Title, _settings.Title)); m.PopularIdeas = _ideas.GetAll(); m.Idea = idea; m.StatusChoices = _settings.IdeaStatusChoices.Split(','); m.Errors = false; if (Request.Query["validation"] == "failed") { m.Errors = true; } return(View["Idea/Edit", m]); }; // save result of edit to database Post["/{id}/edit"] = parameters => { int id = parameters.id; if (string.IsNullOrEmpty(Request.Form.Title) || string.IsNullOrEmpty(Request.Form.Description)) { return(Response.AsRedirect(string.Format("/idea/{0}/edit?validation=failed", id))); } var idea = _ideas.Get(id); if (idea == null) { return(View["404"]); } idea.Title = Request.Form.Title; idea.Description = Request.Form.Description; idea.Status = Request.Form.Status; //Add any images IEnumerable <string> keys = Context.Request.Form; var x = keys.Where(c => c.StartsWith("imageId")); var ids = x.Select(c => Context.Request.Form[c].ToString()).Cast <string>(); var images = ids.Select(y => _imageRepository.Get(Convert.ToInt32(y))); foreach (var i in images) { if (!idea.Images.Contains(i, i)) { idea.Images.Add(i); } } _ideas.Save(); return(Response.AsRedirect(string.Format("/idea/{0}", idea.Id))); }; // save result of create to database Post["/new"] = _ => { if (string.IsNullOrEmpty(Request.Form.Title) || string.IsNullOrEmpty(Request.Form.Description)) { return(Response.AsRedirect("/idea/new?validation=failed")); } var user = _users.FindBy(u => u.UserName == Context.CurrentUser.UserName).FirstOrDefault(); if (user == null) { return(Response.AsRedirect("/login")); } var idea = new Idea { Author = user, Time = DateTime.UtcNow, Title = Request.Form.Title, Description = Request.Form.Description, Status = settings.IdeaStatusDefault }; IEnumerable <string> keys = Context.Request.Form; var parameters = keys.Where(c => c.StartsWith("imageId")); var ids = parameters.Select(c => Context.Request.Form[c].ToString()).Cast <string>(); var images = ids.Select(id => _imageRepository.Get(Convert.ToInt32(id))); idea.Images = images.ToList(); //i.Images = form.Cast<string>() // .Where(k => k.StartsWith("imageId")) // .Select(k => _imageRepository.Get(Convert.ToInt32(form[k]))) // .ToList(); //is there a way to do this using Nancy? if (idea.Votes.Any(u => u.UserId == user.Id)) { idea.UserHasVoted = true; } ideas.Add(idea); return(Response.AsRedirect("/idea/" + idea.Id)); }; // someone else votes for the idea Post["/{id}/vote"] = parameters => { var user = Context.GetCurrentUser(_users); if (user == null) { return(Response.AsRedirect("/login")); } int ideaId = parameters.id; int votes = ideas.Vote(ideaId, user.Id, 1); return(Response.AsJson(new { Status = "OK", NewVotes = votes })); }; // the user decides to repeal his vote Post["/{id}/unvote"] = parameters => { var user = Context.GetCurrentUser(_users); int votes = ideas.Unvote(parameters.id, user.Id); return(Response.AsJson(new { Status = "OK", NewVotes = votes })); }; Post["/{id}/delete"] = parameters => { int id = parameters.id; ideas.Delete(id); ideas.Save(); // TODO: test return(Response.AsJson(new { Status = "Error" })); }; // TODO: do we want unauthenticated users to be allowed to upload posts? Post["/uploadimage"] = parameters => { var user = Context.GetCurrentUser(_users); if (user == null) { return(Response.AsJson(new { status = "Error" })); } var imageFile = Request.Files.FirstOrDefault(); if (imageFile == null) { return(null); //TODO: handle error case } var image = new Image { Name = imageFile.Name }; var bytes = new byte[imageFile.Value.Length]; imageFile.Value.Read(bytes, 0, bytes.Length); image.ImageBits = bytes; imageRepository.Add(image); var status = new ImageFileStatus(image.Id, bytes.Length, image.Name); return(Response.AsJson(new[] { status }).WithHeader("Vary", "Accept")); }; Delete["/deleteimage/{id}"] = parameters => { var user = Context.GetCurrentUser(_users); if (user == null) { return(Response.AsJson(new { status = "Error" })); } imageRepository.Delete(parameters.id); return(null); }; }
public IdeaServiceController(IIdeaRepository repository) { _repository = repository; }
public UserModule(IUserRepository users, IIdeaRepository ideas, IFeatureRepository features) { _users = users; _ideas = ideas; _features = features; this.RequiresAuthentication(); Get["/profile"] = _ => { User user = Context.GetCurrentUser(_users); if (user == null) return Response.AsRedirect("/"); var i = _ideas.GetAll().Where(u => u.Author.Id == user.Id).ToList(); var f = _features.GetAll().Where(u => u.User.Id == user.Id).ToList(); var v = _users.GetVotes(user.Id).ToList(); return View["Profile/Index", new { Title = "Profile", Id = user.Id, UserName = user.UserName, Email = user.Email, Github = user.Github, Ideas = i, Features = f, Votes = v, Claims = user.Claims.ToList(), IsLoggedIn = Context.IsLoggedIn() }]; }; Get["/profile/edit"] = _ => { User user = Context.GetCurrentUser(_users); if (user == null) return Response.AsRedirect("/"); return View["Profile/Edit", new { Title = "Profile", Id = user.Id, UserName = user.UserName, Email = user.Email, Github = user.Github, Claims = user.Claims.ToList(), IsLoggedIn = Context.IsLoggedIn(), }]; }; Post["/profile/checkuser"] = _ => { string username = Request.Form.username; var userExists = _users.FindBy(u => u.UserName == username).Any(); string msg = ""; if (username == Context.CurrentUser.UserName) msg = ""; else if (string.IsNullOrWhiteSpace(username)) msg = Strings.UserModule_UsernameNotValid; else if (userExists) msg = Strings.UserModule_UsernameTaken; else msg = Strings.UserModule_UsernameAvailable; return Response.AsJson(new { Status = "OK", msg = msg }); }; Post["/profile/save"] = _ => { var user = Context.GetCurrentUser(_users); user.UserName = Request.Form.username; user.Email = Request.Form.email; user.AvatarUrl = user.Email.ToGravatarUrl(40); user.Github = Request.Form.github; _users.Edit(user); return Response.AsRedirect("/profile"); }; }
public IdeaController(IIdeaRepository repository) { _repository = repository; }
public IdeasController(IIdeaRepository repository, IUserRepository userRepository) { _repository = repository; _userRepository = userRepository; }
public List <Idea> GetIdeas(IdeaFilter ideaFilter = null) { using (IDataProvider provider = base.CreateDataProvider()) using (IIdeaRepository repository = provider.CreateIdeaRepository()) return(repository.GetIdeas(ideaFilter)); }