public ActionResult Create(Enemy enemy)
        {
            if (ModelState.IsValid)
            {
                db.Enemies.Add(enemy);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(enemy));
        }
Exemple #2
0
        public ActionResult Create(Location location)
        {
            if (ModelState.IsValid)
            {
                db.Locations.Add(location);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(location));
        }
        //creating this by hand w/o dbservice on purpose
        public static void CreateFourPagesWithTags(WikiContext context)
        {
            CreatePage("title", "eins zwei drei vier fuenf sechs sieben acht neun zehn elf zwoelf dreizehn test vierzehn fuenfzehn sechzehn siebzehn achtzehn neunzehn zwanzig", context);
            CreatePage("title2", "eins zwei drei vier fuenf sechs sieben acht neun zehn elf zwoelf dreizehn test vierzehn fuenfzehn sechzehn siebzehn achtzehn neunzehn zwanzig", context);
            CreatePage("title3", "eins zwei drei vier fuenf sechs sieben acht neun zehn elf zwoelf dreizehn test vierzehn fuenfzehn sechzehn siebzehn achtzehn neunzehn zwanzig", context);
            CreatePage("title4", "eins zwei drei vier fuenf sechs sieben acht neun zehn elf zwoelf dreizehn NOOO vierzehn fuenfzehn sechzehn siebzehn achtzehn neunzehn zwanzig", context);

            CreateTag("eins", context);
            CreateTag("zwei", context);
            CreateTag("drei", context);
            CreateTag("vier", context);

            CreatePageTagRef(1, 1, context);
            CreatePageTagRef(1, 2, context);
            CreatePageTagRef(1, 3, context);
            CreatePageTagRef(1, 4, context);

            CreatePageTagRef(2, 1, context);
            CreatePageTagRef(2, 2, context);
            CreatePageTagRef(2, 3, context);
            CreatePageTagRef(2, 4, context);

            CreatePageTagRef(3, 1, context);
            CreatePageTagRef(3, 2, context);
            CreatePageTagRef(3, 3, context);
            CreatePageTagRef(3, 4, context);

            CreatePageTagRef(4, 1, context);
            CreatePageTagRef(4, 2, context);
            CreatePageTagRef(4, 3, context);
            CreatePageTagRef(4, 4, context);

            context.SaveChanges();
        }
Exemple #4
0
        private static void WebParseCompanyInfoboxes()
        {
            var stopwatch = Stopwatch.StartNew();

            var webParser = new InfoboxWebParser("https://en.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Template:Infobox_company&limit=500");

            var urls = webParser.GetArticlesUrl();

            Console.WriteLine("Found {0} articles ({1})", urls.Count, stopwatch.Elapsed.ToString());

            var groups = urls.Select((u, i) => new { Url = u, Index = i }).GroupBy(a => a.Index / 1000).ToList();

            Console.WriteLine("Start parsing infoboxes for {0} groups of 1000 articles", groups.Count);
            foreach (var group in groups.Skip(69))
            {
                var boxes = new List <ParsedInfobox>();
                foreach (var url in group)
                {
                    boxes.AddRange(webParser.GetArticleInfobox(url.Url));
                }

                using (var db = new WikiContext())
                {
                    db.ParsedInfoboxes.AddRange(boxes);
                    db.SaveChanges();
                }

                Console.WriteLine("Group #{0} done", group.Key);
            }

            Console.Write("Parsed and persisted company infoboxes in {0}", stopwatch.Elapsed.ToString());
        }
        public IActionResult Add(Guid id, string text)
        {
            var change = new ИсторияПравокСтатьи
            {
                Логин      = User.Identity.Name,
                IdСтатуса  = db.СтатусыПравокСтатьиs.FirstOrDefault(s => s.Наименование == "Рассматривается").IdСтатуса,
                Текст      = text,
                IdСтатьи   = db.ИсторияПравокСтатьиs.FirstOrDefault(h => h.IdПравки == id).IdСтатьи,
                ДатаЗаявки = DateTime.Now,
                FkIdПравки = id,
            };

            db.ИсторияПравокСтатьиs.Add(change);
            db.SaveChanges();

            return(RedirectToAction("UserRequests", "Request"));
        }
        private static void CreateTag(string v, WikiContext context)
        {
            Tag t = new Tag();

            t.Name = v;
            context.Tags.Add(t);
            context.SaveChanges();
        }
        private static void CreatePage(string title, string text, WikiContext context)
        {
            Page p = new Page();

            p.Title   = title;
            p.Content = text;
            context.Pages.Add(p);
            context.SaveChanges();
        }
        private static void CreatePageTagRef(int pId, int tId, WikiContext context)
        {
            PageTag pt = new PageTag();

            pt.PageId = pId;
            pt.TagId  = tId;
            context.PageTags.Add(pt);
            context.SaveChanges();
        }
Exemple #9
0
        public ActionResult Create(Weapon weapon)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    wikiContext.Weapons.Add(weapon);
                    wikiContext.SaveChanges();

                    return(RedirectToAction("Index"));
                }
            }
            catch (Exception e)
            {
                return(Json(new { error = e.Message }, JsonRequestBehavior.AllowGet));
            }

            return(View());
        }
Exemple #10
0
        public ActionResult Submit()
        {
            var title    = Request["title"];
            var category = Request["category"];
            var content  = Request["content"];
            var id       = 0;

            int.TryParse(Request["pId"], out id);

            Page page = null;

            if (content != null && title != null && category != null)
            {
                page = new Page()
                {
                    Name     = title,
                    Category = category,
                    Text     = content,
                    Edits    = new List <EditData>()
                    {
                        new EditData()
                        {
                            Owner = page, Description = "Page Created", Time = DateTime.UtcNow
                        }
                    }
                };
                try
                {
                    var wc = new WikiContext();
                    if (id == 0)
                    {
                        wc.Pages.Add(page);
                    }
                    else
                    {
                        var p = wc.Pages.First(o => o.Id == id);
                        p.Name     = title;
                        p.Text     = content;
                        p.Category = category;
                        p.Edits.Add(new EditData()
                        {
                            Owner = p, Time = DateTime.UtcNow, Description = Request["edit"]
                        });
                        page = p;
                    }
                    wc.SaveChanges();
                } catch { page = null; }
            }
            return(View(page));
        }
Exemple #11
0
        /// <summary>
        /// Extracted from wikipedia dumps (step 1/3).
        /// Browse the wiki dumps and extract the markdown for each company infobox.
        /// </summary>
        private static void ParseCompanyInfoboxesInDumps()
        {
            var generalStopwatch = Stopwatch.StartNew();

            var dumpDir = Utilities.PathToDownloadDirectory;

            foreach (var filePath in Directory.EnumerateFiles(dumpDir))
            {
                Console.WriteLine("Start parsing infoboxes in file {0}", Path.GetFileName(filePath));
                var stopwatch = Stopwatch.StartNew();

                var infoboxes = new List <RawDumpParsedInfobox>();

                var wikiReader = new XmlDumpFileReader(filePath);
                Predicate <string> pageFilterer = s => s.Contains(":"); // Real Wikipedia pages contains ":" (others are conversations etc.)
                var page = wikiReader.ReadNext(pageFilterer);
                while (page != null)
                {
                    var boxes = page.GetInfoboxTexts("company").Select(s => new RawDumpParsedInfobox()
                    {
                        Markdown  = HttpUtility.HtmlDecode(s),
                        PageTitle = page.Title
                    });
                    infoboxes.AddRange(boxes);

                    page = wikiReader.ReadNext(pageFilterer);
                }

                stopwatch.Stop();
                Console.WriteLine("Parsed {0} infoboxes in {1}", infoboxes.Count, stopwatch.Elapsed.ToString());
                stopwatch.Restart();

                // Persist infoboxes
                using (var db = new WikiContext())
                {
                    db.RawDumpParsedInfoboxes.AddRange(infoboxes);
                    db.SaveChanges();
                }

                stopwatch.Stop();
                Console.WriteLine("Persisted {0} infoboxes in {1}", infoboxes.Count, stopwatch.Elapsed.ToString());
                Console.WriteLine("--");
            }


            generalStopwatch.Stop();
            Console.WriteLine("Total infobox parsing time: {0}", generalStopwatch.Elapsed.ToString());
        }
        public ActionResult Create(Comment comment)
        {
            if (ModelState.IsValid)
            {
                db.Comments.Add(comment);
                db.SaveChanges();
            }

            try
            {
                return(RedirectToAction("Index", comment.Category));
            }
            catch (Exception)
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Exemple #13
0
        /// <summary>
        /// Extracted from wikipedia dumps (step 2/3).
        /// Process the markdown for each company infobox and extract the properties (key/value pairs).
        /// </summary>
        private static void ProcessCompanyInfoboxes()
        {
            var batchSize = 1000;
            var index     = 0;

            using (var db = new WikiContext())
            {
                var infoboxes = db.RawDumpParsedInfoboxes.OrderBy(box => box.Id).Skip(index * batchSize).Take(batchSize).ToList();

                while (infoboxes.Any())
                {
                    if (index % 10 == 0)
                    {
                        Console.WriteLine("Start parsing batch #{0}", index);
                    }

                    foreach (var infobox in infoboxes)
                    {
                        var markdownRegex = new Regex(@"(\n\s*\||\|\s*\n)(?=[\sa-zA-Z_]+=)", RegexOptions.Compiled);
                        var parts         = markdownRegex.Split(infobox.Markdown).ToList();
                        var properties    = parts.Where(line => line.Contains("="))
                                            .Select(line => line.Split(new char[] { '=' }, 2))
                                            .Select(tup => new RawInfoboxProperty
                        {
                            PropKey   = tup.First().Trim(),
                            PropValue = tup.Last().Trim(),
                            PageTitle = infobox.PageTitle,
                            InfoboxId = infobox.Id
                        })
                                            .ToList();
                        db.RawInfoboxProperties.AddRange(properties);
                    }

                    db.SaveChanges();

                    index++;
                    infoboxes = db.RawDumpParsedInfoboxes.OrderBy(box => box.Id).Skip(index * batchSize).Take(batchSize).ToList();
                }
            }
            // One infobox doesn't have any property -> ATMNet (normal)
        }
    private static void CreateOverviewPage(WikiContext db)
    {
        Tag t1 = new Tag();

        t1.Name  = "WikiCore";
        t1.Color = 1;
        db.Tags.Add(t1);

        Page p = new Page();

        p.Title   = "Start";
        p.Content = "Welcome to __WikiCore__.\r\n\r\nWikiCore is a modest, small and fast Wiki featuring [MarkDown](https://daringfireball.net/projects/markdown/) editing.\r\n\r\nUnlike regular Wikis pages are organized with tags.\r\n\r\nPlease report Bugs in a [GitHub-Issue](https://github.com/philphilphil/WikiCore/issues).";
        db.Pages.Add(p);

        var pt = new PageTag {
            Tag = t1, Page = p
        };

        db.PageTags.Add(pt);

        db.SaveChanges();
    }
 public void Save()
 {
     db.SaveChanges();
 }