IW4M-Admin/WebfrontCore/ViewComponents/PenaltyListViewComponent.cs

53 lines
2.3 KiB
C#
Raw Normal View History

2018-02-21 20:29:23 -05:00
using Microsoft.AspNetCore.Mvc;
2018-04-08 02:44:42 -04:00
using SharedLibraryCore;
2018-12-17 14:45:16 -05:00
using SharedLibraryCore.Database.Models;
2018-04-08 02:44:42 -04:00
using SharedLibraryCore.Dtos;
using SharedLibraryCore.Objects;
2018-02-21 20:29:23 -05:00
using System;
using System.Linq;
using System.Threading.Tasks;
namespace WebfrontCore.ViewComponents
{
public class PenaltyListViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync(int offset, Penalty.PenaltyType showOnly)
2018-02-21 20:29:23 -05:00
{
2018-12-17 14:45:16 -05:00
string showEvadeString(EFPenalty penalty) => penalty.IsEvadedOffense == true ?
$"({Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_PENALTY_EVADE"]}) " : "";
var penalties = await Program.Manager.GetPenaltyService().GetRecentPenalties(12, offset, showOnly);
2018-02-21 20:29:23 -05:00
var penaltiesDto = penalties.Select(p => new PenaltyInfo()
{
Id = p.PenaltyId,
2018-02-21 20:29:23 -05:00
OffenderId = p.OffenderId,
OffenderName = p.Offender.Name,
PunisherId = p.PunisherId,
PunisherName = p.Punisher.Name,
PunisherLevel = p.Punisher.Level.ToLocalizedLevelName(),
PunisherLevelId = (int)p.Punisher.Level,
#if DEBUG
Offense = !string.IsNullOrEmpty(p.AutomatedOffense) ? p.AutomatedOffense : p.Offense,
#else
2018-12-17 14:45:16 -05:00
Offense = (User.Identity.IsAuthenticated && !string.IsNullOrEmpty(p.AutomatedOffense)) ?
$"{showEvadeString(p)}{p.AutomatedOffense}" :
$"{showEvadeString(p)}{p.Offense}",
#endif
2018-02-21 20:29:23 -05:00
Type = p.Type.ToString(),
TimePunished = Utilities.GetTimePassed(p.When, false),
// show time passed if ban
TimeRemaining = DateTime.UtcNow > p.Expires ? "" : $"{((p.Expires ?? DateTime.MaxValue).Year == DateTime.MaxValue.Year ? Utilities.GetTimePassed(p.When, true) : Utilities.TimeSpanText((p.Expires ?? DateTime.MaxValue) - DateTime.UtcNow))}",
Sensitive = p.Type == Penalty.PenaltyType.Flag,
AutomatedOffense = p.AutomatedOffense
2018-03-06 02:22:19 -05:00
});
#if DEBUG
penaltiesDto = penaltiesDto.ToList();
#else
penaltiesDto = User.Identity.IsAuthenticated ? penaltiesDto.ToList() : penaltiesDto.Where(p => !p.Sensitive).ToList();
#endif
2018-02-21 20:29:23 -05:00
return View("_List", penaltiesDto);
}
}
}