got Abstraction

This commit is contained in:
Paul Schneider
2023-03-19 16:02:50 +00:00
parent ca9af3f5a0
commit 6fe0dad775
11 changed files with 118 additions and 80 deletions

View File

@ -1,12 +0,0 @@
using System.Resources;
using System.Reflection;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyCopyright("Copyright © Paul Schneider 2014-2019")]
[assembly: AssemblyTrademark("Yavsc")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguage("fr")]
[assembly: AssemblyVersion("1.0.6.1")]

View File

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.ComponentModel.DataAnnotations" />
</ItemGroup>
</Project>

View File

@ -1,62 +0,0 @@
{
"version": "1.0.8-*",
"title": "Yavsc - l'abstrait",
"description": "Yavsc common objects",
"authors": [
"Paul Schneider <paul@pschneider.fr>"
],
"packOptions": {
"repository": {
"type": "git",
"url": "https://github.com/pazof/yavsc"
},
"licenseUrl": "https://github.com/pazof/yavsc/blob/vnext/LICENSE",
"requireLicenseAcceptance": true,
"owners": [
"Paul Schneider <paul@pschneider.fr>"
],
"summary": "Yet another very small company",
"projectUrl": "http://yavsc.pschneider.fr",
"tags": [
"Blog",
"PoS",
"Chat"
]
},
"buildOptions": {
"nowarn": ["IDE1006"]
},
"tooling": {
"defaultNamespace": "Yavsc"
},
"dependencies": {
"Newtonsoft.Json": "7.0.1"
},
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0"
}
},
"net46": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0"
}
},
"net461": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0"
}
},
"net452": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0"
}
},
"net451": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0"
}
}
}
}

View File

@ -9,6 +9,7 @@ using System.Collections.Generic;
using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.Extensions.Localization;
using Microsoft.AspNet.Authorization;
using System.Linq;
namespace Yavsc.Controllers
{
@ -148,5 +149,36 @@ namespace Yavsc.Controllers
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
[Authorize("AdministratorOnly")]
public async Task<IActionResult> DeleteAllLike(long? id)
{
if (id == null)
{
return HttpNotFound();
}
Bug bugref = await _context.Bug.SingleAsync(m => m.Id == id);
if (bugref == null)
{
return null;
}
var bugs = _context.Bug.Where(b => b.Description == bugref.Description);
return View(bugs);
}
// POST: Bug/Delete/5
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize("AdministratorOnly")]
public async Task<IActionResult> DeleteAllLikeConfirmed(long id)
{
Bug bug = await _context.Bug.SingleAsync(m => m.Id == id);
var bugs = await _context.Bug.Where(b => b.Description == bug.Description).ToArrayAsync();
foreach (var btd in bugs)
_context.Bug.Remove(btd);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
}
}

View File

@ -14,14 +14,18 @@ namespace Yavsc.Services
{
readonly SiteSettings siteSettings;
readonly SmtpSettings smtpSettings;
private readonly ILogger logger;
public MailSender(
IOptions<SiteSettings> sitesOptions,
IOptions<SmtpSettings> smtpOptions
IOptions<SmtpSettings> smtpOptions,
ILoggerFactory loggerFactory
)
{
siteSettings = sitesOptions?.Value;
smtpSettings = smtpOptions?.Value;
logger = loggerFactory.CreateLogger<MailSender>();
}
/// <summary>
@ -40,6 +44,7 @@ namespace Yavsc.Services
EmailSentViewModel model = new EmailSentViewModel{ EMail = email };
try
{
logger.LogInformation($"SendEmailAsync for {email}: {message}");
MimeMessage msg = new MimeMessage();
msg.From.Add(new MailboxAddress(
siteSettings.Owner.Name,
@ -59,6 +64,7 @@ namespace Yavsc.Services
smtpSettings.Host,
smtpSettings.Port,
SecureSocketOptions.Auto);
if (smtpSettings.UserName!=null) {
NetworkCredential creds = new NetworkCredential(
smtpSettings.UserName, smtpSettings.Password, smtpSettings.Domain);
@ -68,6 +74,7 @@ namespace Yavsc.Services
await sc.SendAsync(msg);
model.MessageId = msg.MessageId;
model.Sent = true; // a duplicate info to remove from the view model, that equals to MessageId == null
logger.LogInformation($"Sent : {msg}");
}
}
catch (Exception ex)

View File

@ -398,6 +398,7 @@ namespace Yavsc
options.AuthenticationDescriptions.Clear();
options.AutomaticAuthentication = false;
});
app.UseSession();
ConfigureOAuthApp(app);

View File

@ -0,0 +1,53 @@
@model IEnumerable<Yavsc.Models.IT.Fixing.Bug>
@inject IStringLocalizer<Yavsc.Models.IT.Fixing.Resources> SRR
@{
ViewData["Title"] = @SR["DeleteAllLike"];
}
<h2>@SR["Index"]</h2>
<p>
<a asp-action="Create">@SR["Create New"]</a>
</p>
<table class="table">
<tr>
<td>
@SR[Html.DisplayNameFor(model => model.Id)]
</td>
<td>
@SR[Html.DisplayNameFor(model => model.Title)]
</td>
<th>
@SR[Html.DisplayNameFor(model => model.FeatureId)]
</th>
<th>
@SR[Html.DisplayNameFor(model => model.Status)]
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(model => item.Id)
</td>
<td>
@Html.DisplayFor(model => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.FeatureId)
</td>
<td>
@SRR[typeof(Yavsc.Models.IT.Fixing.BugStatus).GetEnumNames()[(int)item.Status]]
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Id">@SR["Edit"]</a> |
<a asp-action="Details" asp-route-id="@item.Id">@SR["Details"]</a> |
<a asp-action="DeleteAllLike" asp-route-id="@item.Id">@SR["Delete"]</a>
</td>
</tr>
}
</table>