feat: added images for ban screen, added reportscreen, added reportsscreen for mods & admins

This commit is contained in:
limited_dev 2023-02-11 23:04:02 +01:00
parent 75d75a2c84
commit cb7ca62590
43 changed files with 358 additions and 46 deletions

View file

@ -1,8 +1,41 @@
@page "/report/{type}/{board}/{id}"
@using System.ComponentModel.DataAnnotations
<h3>Report</h3>
@using System.Data
@using ImageBoardServerApp.Auth
@using ImageBoardServerApp.Data.Repository
@inject AuthenticationStateProvider authStateProvider
@inject IJSRuntime js
<AuthorizeView>
<Authorized>
<h3>Report @type#@id on /@board/</h3>
<div>
<select name="rule" id="rule" @bind="@selectedItem">
<option value="none">Select</option>
@foreach (var r in RulesConv.dict.Keys)
{
<option value="@r">@RulesConv.dict[r]</option>
}
</select>
</div>
<span>@selectedItem</span>
<span>Explain further (optional)</span>
<div class="pd centered marg">
<RadzenTextArea Placeholder="Specify..." @bind-Value="@explaination" Cols="30" Rows="6" Class="w-100"/>
</div>
<RadzenButton class="pd" Click="@onReportClick" Text="Report"></RadzenButton>
</Authorized>
<NotAuthorized>
<span>Please login to report</span>
</NotAuthorized>
</AuthorizeView>
@code {
private IEnumerable<Rule> rules;
private string selectedItem;
private string explaination;
[Parameter]
[Required]
public string type { get; set; }
@ -14,4 +47,49 @@
[Parameter]
[Required]
public string id { get; set; }
private async Task onReportClick()
{
var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider;
var user = await cauthStateProvder.GetAuthenticationStateAsync();
var usr = user.User;
UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name);
if (foundusr == null)
{
return;
}
if (foundusr.TimeBanned != -1)
{
return;
}
foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds();
await UsersRepository.updateUserAsync(foundusr);
int targetID = 0;
if (type == "op")
{
var post = await PostsRepository.getPostByIdAsync(Int32.Parse(id));
targetID = post.User.UserID;
}
else
{
var comment = await CommentsRepository.getCommentByIdAsync(Int32.Parse(id));
targetID = comment.User.UserID;
}
ReportData reportData = new ReportData()
{
Type = type,
ReportedCommentID = type == "op" ? null : Int32.Parse(id),
ReportedPostID = type == "op" ? Int32.Parse(id) : null,
UserReporterID = foundusr.UserID,
UserReportedID = targetID,
ReportReason = RulesConv.dict[RulesConv.dict2[selectedItem]],
ReportExlaination = explaination
};
var reportID = await ReportsRepository.createReportAsync(reportData);
js.InvokeVoidAsync("window.close");
}
}

View file

@ -0,0 +1,13 @@
.centered {
text-align: center;
justify-content: center;
align-items: center;
}
.pd {
padding: 5px;
}
.marg{
margin: 2px
}