Skip to content
This repository was archived by the owner on Apr 13, 2022. It is now read-only.

Commit 8045151

Browse files
committed
Now Saving Newsletter Item. This closed #9
1 parent 28d31ce commit 8045151

File tree

4 files changed

+41
-16
lines changed

4 files changed

+41
-16
lines changed

NewsletterCurator.Data/Newsitem.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ public class Newsitem
99
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), Required]
1010
public Guid ID { get; set; }
1111
[Required]
12-
public DateTime DateTime { get; set; }
12+
public DateTimeOffset DateTime { get; set; }
1313
[Required]
1414
public Category Category { get; set; }
1515
[Required]
16+
public Guid CategoryID { get; set; }
17+
[Required]
1618
public string URL { get; set; }
1719
public string ImageURL { get; set; }
1820
[Required]

NewsletterCurator.Web/Controllers/NewsitemController.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Linq;
1+
using System;
2+
using System.Linq;
23
using System.Threading.Tasks;
34
using Microsoft.AspNetCore.Mvc;
45
using NewsletterCurator.Data;
@@ -10,17 +11,17 @@ namespace NewsletterCurator.Web.Controllers
1011
public class NewsitemController : Controller
1112
{
1213
private readonly NewsletterCuratorContext newsletterCuratorContext;
13-
private readonly HTMLScraperService htmlScraperService;
14+
private readonly HTMLScraperService htmlParserService;
1415

1516
public NewsitemController(NewsletterCuratorContext newsletterCuratorContext, HTMLScraperService htmlParserService)
1617
{
1718
this.newsletterCuratorContext = newsletterCuratorContext;
18-
this.htmlScraperService = htmlParserService;
19+
this.htmlParserService = htmlParserService;
1920
}
2021

2122
public async Task<IActionResult> Add(string url)
2223
{
23-
var urlMetaData = await htmlScraperService.Scrape(url);
24+
var urlMetaData = await htmlParserService.Scrape(url);
2425

2526
return View(new AddNewsitemViewModel
2627
{
@@ -31,5 +32,25 @@ public async Task<IActionResult> Add(string url)
3132
Summary = urlMetaData.Summary,
3233
});
3334
}
35+
36+
[HttpPost]
37+
public async Task<IActionResult> Add(AddNewsitemViewModel addNewsitemViewModel)
38+
{
39+
await newsletterCuratorContext.Newsitems.AddAsync(new Newsitem
40+
{
41+
CategoryID = addNewsitemViewModel.CategoryID,
42+
ImageURL = addNewsitemViewModel.ImageURL,
43+
IsAlreadySent = false,
44+
Summary = addNewsitemViewModel.Summary,
45+
Title = addNewsitemViewModel.Title,
46+
URL = addNewsitemViewModel.URL,
47+
DateTime = DateTimeOffset.UtcNow
48+
});
49+
50+
await newsletterCuratorContext.SaveChangesAsync();
51+
52+
return RedirectToAction("Index", "Home");
53+
54+
}
3455
}
3556
}
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using Microsoft.AspNetCore.Mvc.Rendering;
34
using NewsletterCurator.Data;
45

@@ -7,10 +8,11 @@ namespace NewsletterCurator.Web.Models
78
public class AddNewsitemViewModel
89
{
910
public string URL { get; set; }
10-
public Category Category { get; set; }
11+
public Guid CategoryID { get; set; }
1112
public List<SelectListItem> Categories { get; set; }
12-
public string Title { get; internal set; }
13-
public List<string> Images { get; internal set; }
14-
public string Summary { get; internal set; }
13+
public string Title { get; set; }
14+
public string ImageURL { get; set; }
15+
public List<string> Images { get; set; }
16+
public string Summary { get; set; }
1517
}
1618
}

NewsletterCurator.Web/Views/Newsitem/Add.cshtml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@
66
<div class="container">
77
<h1>Add a Newsitem</h1>
88
<hr />
9-
<form>
9+
<form method="post" asp-action="Add">
1010
<div class="form-group">
1111
<label for="url">URL</label>
12-
<input type="url" class="form-control" id="url" placeholder="URL" value="@Model.URL">
12+
<input type="url" class="form-control" name="URL" id="url" placeholder="URL" value="@Model.URL">
1313
</div>
1414
<div class="form-group">
1515
<label for="categories">Category</label>
16-
<select asp-for="Category" asp-items="Model.Categories" class="custom-select"></select>
16+
<select asp-items="Model.Categories" name="CategoryID" class="custom-select"></select>
1717
</div>
1818
<div class="form-group">
1919
<label for="title">Title</label>
20-
<input type="text" class="form-control" id="title" placeholder="Title" value="@Model.Title">
20+
<input type="text" class="form-control" id="title" name="Title" placeholder="Title" value="@Model.Title">
2121
</div>
2222
<div class="form-group">
2323
<label for="summary">Summary</label>
24-
<textarea class="form-control" id="summary" rows="3">@Model.Summary</textarea>
24+
<textarea class="form-control" id="summary" name="Summary" rows="3">@Model.Summary</textarea>
2525
</div>
2626
<div class="form-group">
2727
<label for="image">Image URL</label>
28-
<input type="url" class="form-control" id="image" placeholder="Image URL" value="@Model.Images.FirstOrDefault()">
28+
<input type="url" class="form-control" id="image" name="ImageURL" placeholder="Image URL" value="@Model.Images.FirstOrDefault()">
2929
</div>
3030
<div class="img-Group">
3131
@foreach (var image in Model.Images)

0 commit comments

Comments
 (0)