public Quote ToQuote(DatabaseContext context) { var quote = new Quote(); if (Id != 0) quote = context.Quotes.Find(quote.Id); else quote.CreatedAt = DateTime.Now; quote.Text = Text; quote.Context = Context; if(AuthorId != null && !context.Users.Any(u => u.Id == AuthorId)) throw new InvalidOperationException(); if(SubmitterId != null && !context.Users.Any(u => u.Id == SubmitterId)) throw new InvalidOperationException(); User author = null; User submitter = null; if (AuthorId != null) author = context.Users.Find(AuthorId); if (SubmitterId != null) submitter = context.Users.Find(SubmitterId); quote.Submitter = submitter; quote.Author = author; quote.AlternateAuthor = AlternateAuthor; quote.Tags = context.Tags.Where(x => Tags.Contains(x.Text)).ToList(); return quote; }
public async Task<ActionResult> NewQuote(QuoteViewModel vm) { using (var dbContext = new DatabaseContext()) { var quote = new Quote { Text = vm.Text, Submitter = dbContext.Users.Single(u => u.UserName == User.Identity.Name), CreatedAt = DateTime.Now, Tags = new List<Tag>() }; var user = dbContext.Users.SingleOrDefault(x => x.UserName == vm.Author); if (user != null) { quote.Author = user; } else { quote.AlternateAuthor = String.IsNullOrWhiteSpace(vm.Author) ? "Anonymous" : vm.Author; } dbContext.Quotes.Add(quote); vm = new QuoteViewModel(quote); await dbContext.SaveChangesAsync(); QuotesHub.NewQuote(quote); } return PartialView("_Quote", vm); }
public QuoteViewModel(Quote quote) { Id = quote.Id; Text = quote.Text; Author = quote.Author != null ? quote.Author.UserName : quote.AlternateAuthor ?? "Anonymous"; Tags = quote.Tags.Select(tag => new TagViewModel(tag)).ToList(); CreatedAt = quote.CreatedAt; Submitter = quote.Submitter.UserName; }
public QuoteViewModel(Quote q) { Id = q.Id; Text = q.Text; Context = q.Context; AuthorId = q.Author == null ? null : q.Author.Id; SubmitterId = q.Submitter == null ? null : q.Submitter.Id; AlternateAuthor = q.AlternateAuthor; CreatedAt = q.CreatedAt; Tags = q.Tags.Select(x => x.Text).ToList(); }
public static void NewQuote(Quote q) { var quoteVM = new QuoteViewModel(q); var page = Render("_Quote", "Quotes", quoteVM); _context.Value.Clients.All.newQuote(page); var wc = new WebClient(); var jsonObject = new JObject(); jsonObject["channel"] = "#banter"; jsonObject["username"] = "******"; jsonObject["text"] = $"> {q.Text}\n - {quoteVM.Author} {q.CreatedAt.Year}\n(Created by {q.Submitter.UserName} {q.CreatedAt.ToPrettyInterval()})"; jsonObject["icon_emoji"] = ":kappa:"; wc.UploadString(ConfigurationManager.ConnectionStrings["Slack-Banter"].ConnectionString, "POST", jsonObject.ToString()); }