Ejemplo n.º 1
0
        public ActionResult New(SnippetBindingModel model)
        {
            if (model == null || !this.ModelState.IsValid)
            {
                return this.View();
            }

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

            var snippet = new Snippet()
                {
                    AuthorId = userId,
                    Title = model.Title,
                    Description = model.Description,
                    Code = model.Code,
                    CreatedOn = DateTime.Now,
                };

            snippet.LanguageId = this.GetLanguage(model.Language).Id;
            var labels = this.GetLabels(model.Labels);

            foreach (var label in labels)
            {
                snippet.Labels.Add(label);
            }

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

            this.AddNotification("New snippet created", NotificationType.SUCCESS);
            return this.RedirectToAction("My", "Snippets");
        }
Ejemplo n.º 2
0
        public ActionResult Add(SnippetBindingModel model)
        {
            if (model != null && this.ModelState.IsValid)
            {
                var languagesAll = this.LoadLanguages();
                var snippet = new Snippet()
                {
                    Code = model.Code,
                    Title = model.Title,
                    Description = model.Description,
                    LanguageId = model.LanguageId,
                    Language = this.Data.Languages.Find(model.LanguageId),
                    UserId = this.User.Identity.GetUserId(),
                    CreationTime = DateTime.Now
                };
                this.Data.Snippets.Add(snippet);

                var regex = @"\s*;*([a-zA-Z\-]+);*\s*";
                var labels = Regex.Matches(model.Labels, regex);
                foreach (Match labelFromInput in labels)
                {
                    foreach (Capture text in labelFromInput.Captures)
                    {
                        var label = this.Data.Labels
                        .All()
                        .FirstOrDefault(l => l.Text == text.Value);
                        if (label != null)
                        {
                            snippet.Labels.Add(label);
                            this.Data.SaveChanges();
                        }
                        else
                        {
                            string labelValue = text.Value.Replace(";", "").Replace(" ", "");
                            var newLabel = new Label()
                            {
                                Text = labelValue
                            };
                            this.Data.Labels.Add(newLabel);
                            this.Data.SaveChanges();
                            var newlyCreatedLabel = this.Data.Labels
                            .All()
                            .FirstOrDefault(l => l.Text == text.Value);
                            snippet.Labels.Add(newlyCreatedLabel);
                            this.Data.SaveChanges();
                        }
                    }
                }

                this.Data.SaveChanges();
                this.AddNotification(GlobalConstants.SnippetCreate, NotificationType.SUCCESS);

                return this.RedirectToAction(x => x.Details(snippet.Id));
            }

            this.LoadLanguages();
            return this.View(model);
        }
Ejemplo n.º 3
0
        public ActionResult New()
        {
            var userName = this.User.Identity.GetUserName();

            var newSnippet = new SnippetBindingModel()
                {
                    AuthorUserName = userName
                };

            return this.View(newSnippet);
        }
Ejemplo n.º 4
0
        public ActionResult Edit(int id, SnippetBindingModel model)
        {
            var snippetToEdit = this.Data.Snippets.Find(id);
            if (snippetToEdit == null)
            {
                this.AddNotification(GlobalConstants.SnippetMissing, NotificationType.ERROR);
                return this.RedirectToAction("MySnippets");
            }

            if (model != null && this.ModelState.IsValid)
            {
                snippetToEdit.Code = model.Code;
                snippetToEdit.Title = model.Title;
                snippetToEdit.Description = model.Description;
                snippetToEdit.CreationTime = snippetToEdit.CreationTime;
                snippetToEdit.LanguageId = model.LanguageId;

                var regex = @"\s*;*([a-zA-Z\-]+);*\s*";
                var labels = Regex.Matches(model.Labels, regex);
                foreach (Match labelFromInput in labels)
                {
                    foreach (Capture text in labelFromInput.Captures)
                    {
                        var label = this.Data.Labels
                        .All()
                        .FirstOrDefault(l => l.Text == text.Value);
                        if (label != null)
                        {
                            snippetToEdit.Labels.Add(label);
                            this.Data.SaveChanges();
                        }
                        else
                        {
                            string labelValue = text.Value.Replace(";", "").Replace(" ", "");
                            var newLabel = new Label()
                            {
                                Text = labelValue
                            };
                            this.Data.Labels.Add(newLabel);
                            this.Data.SaveChanges();
                            var newlyCreatedLabel = this.Data.Labels
                            .All()
                            .FirstOrDefault(l => l.Text == text.Value);
                            snippetToEdit.Labels.Add(newlyCreatedLabel);
                            this.Data.SaveChanges();
                        }
                    }
                }

                this.Data.SaveChanges();
                this.AddNotification(GlobalConstants.SnippetEdited, NotificationType.SUCCESS);

                return this.RedirectToAction(x => x.Details(snippetToEdit.Id));
            }

            this.LoadLanguages();
            return this.View(model);
        }