public async Task <IActionResult> Punishments(ulong guildId, [FromServices] IDiscordGuildService guildService)
        {
            var punishments = await _entityServicePunishments.Get(x => x.GuildId == guildId);

            var punishmentModels = new List <PunishmentModel>();

            var roles = await guildService.GetRoles(guildId);

            foreach (var p in punishments)
            {
                var role = roles.FirstOrDefault(r => r.Id == p.RoleId);

                punishmentModels.Add(new PunishmentModel
                {
                    PunishDuration   = p.PunishDuration,
                    PunishType       = p.PunishType,
                    RoleId           = p.RoleId,
                    WarningThreshold = p.WarningThreshold,
                    WarningType      = p.WarningType,
                    Role             = new SelectList(roles, "Id", "Name", role),
                    DeletePunishment = false,
                    PunishmentId     = p.Id
                });
            }

            var vm = new PunishmentsViewModel
            {
                Punishments = punishmentModels
            };

            return(View(vm));
        }
        public async Task <IActionResult> Punishments(ulong guildId, PunishmentsViewModel vm)
        {
            var punishments = vm.Punishments ?? new List <PunishmentModel>();

            var punishmentsToRemove = new List <Punishment>();

            foreach (var model in punishments.Where(x => x.DeletePunishment))
            {
                if (model.PunishmentId.HasValue)
                {
                    punishmentsToRemove.Add(ConvertModelPunishment(guildId, model));
                }
            }

            await _entityServicePunishments.RemoveBulk(punishmentsToRemove);

            return(RedirectToAction("punishments"));
        }