Example #1
0
        public ActionResult Add(NewSnippetPageViewModel model)
        {
            var loggedUserId = User.Identity.GetUserId();
            var user         = this.Data.Users.All().FirstOrDefault(u => u.Id == loggedUserId);

            if (model == null)
            {
                return(View(model));
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var language = this.Data.ProgrammingLanguages.All().Where(l => l.Name == model.Snippet.Language).FirstOrDefault();

            if (language == null)
            {
                return(View(model));
            }

            var labels = model.Snippet.Labels.Split(';');

            var newSnippet = new Snippet()
            {
                Title       = model.Snippet.Title,
                Description = model.Snippet.Description,
                Code        = model.Snippet.Code,
                Language    = language,
                Labels      = new HashSet <Label>(),
                AuthorId    = loggedUserId,
                CreatedOn   = DateTime.Now
            };

            foreach (var labelName in labels)
            {
                string name = labelName.Trim();

                var label = this.Data.Labels.All().Where(l => l.Text == name).FirstOrDefault();

                if (label == null)
                {
                    label = new Label()
                    {
                        Text = name
                    };

                    this.Data.Labels.Add(label);
                    this.Data.SaveChanges();
                }

                newSnippet.Labels.Add(label);
            }

            this.Data.Snippets.Add(newSnippet);
            this.Data.SaveChanges();

            return(RedirectToAction("Details", "Snippets", new { Id = newSnippet.Id }));
        }
Example #2
0
        public ActionResult Edit(int id)
        {
            var snippet = this.Data.Snippets.All()
                          .Where(s => s.Id == id)
                          .FirstOrDefault();

            if (snippet == null)
            {
                return(HttpNotFound());
            }

            var loggedUserId = this.User.Identity.GetUserId();

            if (snippet.AuthorId != loggedUserId)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var allLanguages = this.Data.ProgrammingLanguages.All();
            var languages    = new List <SelectListItem>();

            foreach (var language in allLanguages)
            {
                languages.Add(new SelectListItem {
                    Text = language.Name, Value = language.Name
                });
            }

            var model = new NewSnippetPageViewModel()
            {
                Snippet = new AddSnippetViewModel()
                {
                    Id          = snippet.Id,
                    Title       = snippet.Title,
                    Description = snippet.Description,
                    Code        = snippet.Code,
                    Labels      = string.Join("; ", snippet.Labels.Select(l => l.Text)),
                    Language    = snippet.Language.Name
                },
                Languages = new SelectList(languages, "text", "value", 1)
            };

            return(View(model));
        }
Example #3
0
        public ActionResult Add()
        {
            var allLanguages = this.Data.ProgrammingLanguages.All();
            var languages    = new List <SelectListItem>();

            foreach (var language in allLanguages)
            {
                languages.Add(new SelectListItem {
                    Text = language.Name, Value = language.Name
                });
            }

            var model = new NewSnippetPageViewModel()
            {
                Languages = new SelectList(languages, "text", "value", 1)
            };

            return(View(model));
        }
Example #4
0
        public ActionResult Edit(int id, NewSnippetPageViewModel model)
        {
            var snippet = this.Data.Snippets.All()
                          .Where(s => s.Id == id)
                          .FirstOrDefault();

            if (snippet == null)
            {
                return(HttpNotFound());
            }

            var loggedUserId = this.User.Identity.GetUserId();
            var user         = this.Data.Users.All().FirstOrDefault(u => u.Id == loggedUserId);

            if (snippet.AuthorId != loggedUserId)
            {
                return(RedirectToAction("Index", "Home"));
            }

            if (model == null)
            {
                return(View(model));
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var language = this.Data.ProgrammingLanguages.All().Where(l => l.Name == model.Snippet.Language).FirstOrDefault();

            if (language == null)
            {
                return(View(model));
            }

            var labels = model.Snippet.Labels.Split(';');

            snippet.Title       = model.Snippet.Title;
            snippet.Description = model.Snippet.Description;
            snippet.Code        = model.Snippet.Code;
            snippet.Language    = language;
            snippet.Labels      = new HashSet <Label>();

            foreach (var labelName in labels)
            {
                string name = labelName.Trim();

                var label = this.Data.Labels.All().Where(l => l.Text == name).FirstOrDefault();

                if (label == null)
                {
                    label = new Label()
                    {
                        Text = name
                    };

                    this.Data.Labels.Add(label);
                    this.Data.SaveChanges();
                }

                snippet.Labels.Add(label);
            }

            this.Data.SaveChanges();

            return(RedirectToAction("Details", "Snippets", new { Id = id }));
        }