示例#1
0
        public ActionResult Index()
        {
            ViewBag.Selected = SelectedTab.Popular;
            ViewBag.Items    = _ideas.GetAll();

            return(View());
        }
示例#2
0
 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);
 }
示例#3
0
 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));
     };
 }
示例#4
0
 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");
                         };
 }
示例#5
0
 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);
                         };
 }
示例#6
0
 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"));
     };
 }
示例#7
0
        public async Task <IActionResult> GetIdeas()
        {
            var ideas = await _ideaRepo.GetAll();

            var ideaToReturn = _mapper.Map <IEnumerable <IdeaForListDto> >(ideas);

            return(Ok(ideaToReturn));
        }
示例#8
0
 public HomeModule(IIdeaRepository ideas, ISettingsRepository settings)
 {
     Get["/"] = _ => View["Home/Index", new
                                            {
                                                Ideas= ideas.GetAll(),
                                                Title = settings.Title,
                                                WelcomeMessage = MarkdownHelper.Markdown(settings.WelcomeMessage)
                                            }];
 }
示例#9
0
 public HomeModule(IIdeaRepository ideas, ISettingsRepository settings)
 {
     Get["/"] = _ => View["Home/Index", new
                          {
                              Ideas = ideas.GetAll(),
                              Title = settings.Title,
                              WelcomeMessage = MarkdownHelper.Markdown(settings.WelcomeMessage)
                          }];
 }
示例#10
0
        public ActionResult Index()
        {
            var user          = _users.GetUserFromUserIdentity(Request.GetIdentity());
            var usersIdeas    = _ideas.GetAll().Where(u => u.Author.Id == user.Id).ToList();
            var usersFeatures = _features.GetAll().Where(u => u.User.Id == user.Id).ToList();
            var usersVotes    = _users.GetVotes(user.Id).ToList();

            return(View(new
            {
                Ideas = usersIdeas,
                Features = usersFeatures,
                Votes = usersVotes,
                Id = user.Id,
                UserName = user.UserName,
                Email = user.Email,
                Github = user.Github,
                AvatarUrl = user.AvatarUrl,
            }.ToExpando()));
        }
示例#11
0
        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;
            };
        }
示例#12
0
        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");
                                        };
        }
示例#13
0
        public ProfileModule(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 usersIdeas    = _ideas.GetAll().Where(u => u.Author.Id == user.Id).ToList();
                var usersFeatures = _features.GetAll().Where(u => u.User.Id == user.Id).ToList();
                var usersVotes    = _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 = usersIdeas,
                                Features = usersFeatures,
                                Votes = usersVotes,
                                AvatarUrl = user.AvatarUrl,
                                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"));
            };
        }
示例#14
0
 public IEnumerable <Idea> GetAllIdeas()
 {
     return(_ideaRepository.GetAll());
 }
示例#15
0
 public IEnumerable <Idea> Get()
 {
     // cRud
     return(_repository.GetAll().AsEnumerable());
 }
示例#16
0
 public async Task <List <Idea> > GetAll(PagingParameters pagingParameters)
 {
     return(await _ideaRepository.GetAll(pagingParameters));
 }
示例#17
0
 public ActionResult New()
 {
     ViewBag.Errors = false;
     ViewBag.Ideas  = _ideas.GetAll().OrderByDescending(i => i.Time).Take(5);
     return(View(new Idea()));
 }
示例#18
0
 public IActionResult Index()
 {
     return(View(_repository.GetAll()));
 }
 public IEnumerable <Idea> Get()
 {
     // cRud
     //return _repository.GetAll().AsEnumerable();
     return(_repository.GetAll().ToList());
 }
示例#20
0
        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);
            };
        }
示例#21
0
        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"
                });
            };
        }
示例#22
0
        public IActionResult Index()
        {
            var ideas = _repository.GetAll();

            return(View(ideas));
        }
 public IEnumerable <Idea> Get()
 {
     return(repository.GetAll().AsEnumerable());
 }