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;
|
2018-04-13 02:32:30 -04:00
|
|
|
|
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
|
|
|
|
|
{
|
2018-05-04 00:22:10 -04:00
|
|
|
|
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"]}) " : "";
|
|
|
|
|
|
2018-05-04 00:22:10 -04:00
|
|
|
|
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()
|
|
|
|
|
{
|
2018-06-05 17:31:36 -04:00
|
|
|
|
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,
|
2018-08-03 22:11:58 -04:00
|
|
|
|
PunisherLevel = p.Punisher.Level.ToLocalizedLevelName(),
|
2018-08-07 14:43:09 -04:00
|
|
|
|
PunisherLevelId = (int)p.Punisher.Level,
|
2018-06-26 21:17:24 -04:00
|
|
|
|
#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}",
|
2018-06-26 21:17:24 -04:00
|
|
|
|
#endif
|
2018-02-21 20:29:23 -05:00
|
|
|
|
Type = p.Type.ToString(),
|
|
|
|
|
TimePunished = Utilities.GetTimePassed(p.When, false),
|
2018-06-16 22:11:25 -04:00
|
|
|
|
// show time passed if ban
|
2018-10-25 09:14:39 -04:00
|
|
|
|
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))}",
|
2018-05-30 21:50:20 -04:00
|
|
|
|
Sensitive = p.Type == Penalty.PenaltyType.Flag,
|
|
|
|
|
AutomatedOffense = p.AutomatedOffense
|
2018-03-06 02:22:19 -05:00
|
|
|
|
});
|
|
|
|
|
|
2018-06-26 21:17:24 -04:00
|
|
|
|
#if DEBUG
|
|
|
|
|
penaltiesDto = penaltiesDto.ToList();
|
|
|
|
|
#else
|
2018-04-16 16:31:14 -04:00
|
|
|
|
penaltiesDto = User.Identity.IsAuthenticated ? penaltiesDto.ToList() : penaltiesDto.Where(p => !p.Sensitive).ToList();
|
2018-06-26 21:17:24 -04:00
|
|
|
|
#endif
|
2018-02-21 20:29:23 -05:00
|
|
|
|
return View("_List", penaltiesDto);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|