< Summary - Syki

Information
Class: Syki.Front.Pages.Academic.AcademicWebhookPage
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Pages/Academic/AcademicWebhookPage.razor
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 26
Coverable lines: 26
Total lines: 192
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%210%
.ctor()100%210%
OnInitializedAsync()100%210%
Filter()100%210%
GetNotFoundMessage()100%210%

File(s)

/home/runner/work/syki/syki/Front/Pages/Academic/AcademicWebhookPage.razor

#LineLine coverage
 1@using Syki.Front.Features.Academic.GetWebhook
 2
 3@namespace Syki.Front.Pages.Academic
 4
 5@page "/academic/webhooks/{id:guid}"
 6@attribute [Authorize(Roles = "Academic")]
 7
 8<SykiPageTitle Title="Webhook" />
 9
 10<MudContainer Class="my-4 px-4">
 11    <MudCard>
 12        <MudCardContent>
 13            <MudStack Row="true" AlignItems="AlignItems.Center">
 14                <MudIcon Icon="@Icons.Material.Filled.Webhook" Class="mb-1" Size="Size.Large"/>
 015                <MudText Typo="Typo.h5" Class="mt-1" Style="font-weight: bold">@($"Webhook - {_data.Name}")</MudText>
 16            </MudStack>
 17        </MudCardContent>
 18    </MudCard>
 19
 20    <MudContainer Class="px-0 my-4">
 21        <MudGrid Spacing="2">
 22            <MudItem xs="12" sm="9" md="9" lg="9">
 23                <InfoCard Icon="@Icons.Material.Filled.Link" Color="@Colors.Pink.Darken1" Title="Url" Content="@_data.Ur
 24            </MudItem>
 25            <MudItem xs="12" sm="3" md="3" lg="3">
 26                <InfoCard Icon="@Icons.Material.Filled.LockPerson" Color="@Colors.Green.Darken1" Title="Autenticação" Co
 27            </MudItem>
 28            <MudItem xs="12" sm="4" md="4" lg="4">
 29                <InfoCard Icon="@Icons.Material.Filled.AccessTime" Color="@Colors.BlueGray.Darken1" Title="Criação" Cont
 30            </MudItem>
 31            <MudItem xs="12" sm="4" md="4" lg="4">
 32                <InfoCard Icon="@Icons.Material.Filled.StickyNote2" Color="@Colors.Blue.Darken1" Title="Eventos" Content
 33            </MudItem>
 34            <MudItem xs="12" sm="4" md="4" lg="4">
 35                <InfoCard Icon="@Icons.Material.Filled.CallMade" Color="@Colors.Indigo.Darken1" Title="Chamadas" Content
 36            </MudItem>
 37        </MudGrid>
 38    </MudContainer>
 39
 40    <MudContainer Class="px-0 my-4">
 41        <style>
 42            .mud-table-toolbar {
 43                height: auto;
 44            }
 45        </style>
 46        <MudTable
 47            Class="mb-4"
 48            Dense="true"
 49            Hover="true"
 50            RowsPerPage="10"
 51            Loading="@_loading"
 52            Items="@_calls"
 53            T="GetWebhookCallOut"
 54            Breakpoint="Breakpoint.Sm"
 55        >
 56            <ToolBarContent>
 57                <MudStack Style="width: 100%">
 58                    <MudStack Row="true" AlignItems="AlignItems.Center" Class="mt-4" Style="width: 100%">
 59                        <MudIcon Icon="@Icons.Material.Filled.CallMade" Class="mb-1" Size="Size.Medium"/>
 60                        <MudText Typo="Typo.h6" Style="font-weight: bold">Chamadas</MudText>
 61                    </MudStack>
 62                    <MudCard Class="mt-0 mb-4 mr-2" Style="width: 100%" Elevation="0" Outlined="true">
 63                        <MudCardContent>
 64                            <MudGrid Spacing="2">
 65                                <MudItem xs="12" sm="3" md="3" lg="3">
 66                                    <MudSelect
 67                                        Dense="true"
 68                                        Margin="Margin.Dense"
 69                                        Variant="Variant.Outlined"
 70                                        @bind-Value="@_statusFilter"
 71                                        Label="Status"
 72                                        Clearable="true"
 73                                        AdornmentColor="Color.Primary
 74                                    ">
 075                                        @foreach (WebhookCallStatus? item in Enum.GetValues<WebhookCallStatus>())
 76                                        {
 77                                            <MudSelectItem Value="@item">
 78                                                <MudStack Row="true" AlignItems="AlignItems.Center">
 79                                                    <MudIcon Class="mb-1" Icon="@item.Value.GetIcon()" Color="@item.Valu
 080                                                    <MudText>@item.GetDescription()</MudText>
 81                                                </MudStack>
 82                                            </MudSelectItem>
 83                                        }
 84                                    </MudSelect>
 85                                </MudItem>
 86
 87                                <MudItem xs="12" sm="4" md="4" lg="4">
 88                                    <MudSelect
 89                                        Dense="true"
 90                                        Margin="Margin.Dense"
 91                                        Variant="Variant.Outlined"
 92                                        @bind-Value="@_eventTypeFilter"
 93                                        Label="Evento"
 94                                        Clearable="true"
 95                                        AdornmentColor="Color.Primary
 96                                    ">
 097                                        @foreach (WebhookEventType? item in Enum.GetValues<WebhookEventType>())
 98                                        {
 99                                            <MudSelectItem Value="@item">
 0100                                                <MudText>@item.GetDescription()</MudText>
 101                                            </MudSelectItem>
 102                                        }
 103                                    </MudSelect>
 104                                </MudItem>
 105
 106                                <MudItem xs="12" sm="5" md="5" lg="5" Class="d-flex justify-end align-center pt-1">
 107                                <MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
 0108                                        <MudChip T="string" Variant="Variant.Text" Color="Color.Primary" Class="mt-1 pt-
 109                                        <MudButton
 110                                            OnClick="@Filter"
 111                                            Size="Size.Medium"
 112                                            Color="Color.Primary"
 113                                            IconSize="Size.Medium"
 114                                            Variant="Variant.Filled"
 115                                            StartIcon="@Icons.Material.Outlined.FilterList"
 116                                        >
 117                                            Filtrar
 118                                        </MudButton>
 119                                    </MudStack>
 120                                </MudItem>
 121                            </MudGrid>
 122                        </MudCardContent>
 123                    </MudCard>
 124                </MudStack>
 125            </ToolBarContent>
 126
 127            <HeaderContent>
 128                <MudTh>Evento</MudTh>
 129                <MudTh>Criação</MudTh>
 130                <MudTh>Status</MudTh>
 131                <MudTh>Tentativas</MudTh>
 132                <MudTh></MudTh>
 133            </HeaderContent>
 134            <RowTemplate>
 0135                <MudTd DataLabel="Evento">@context.Event.GetDescription()</MudTd>
 0136                <MudTd DataLabel="Criação">@context.CreatedAt.ToMinuteString()</MudTd>
 137                <MudTd DataLabel="Status">
 138                    <WebhookCallStatusChip Status="@context.Status" />
 139                </MudTd>
 0140                <MudTd DataLabel="Tentativas">@context.AttemptsCount.ToThousandSeparated()</MudTd>
 141                <MudTd>
 142                    <MudIconButton Size="@Size.Small" Icon="@Icons.Material.Filled.RemoveRedEye" Href="@($"/academic/web
 143                </MudTd>
 144            </RowTemplate>
 145            <NoRecordsContent>
 0146                @(GetNotFoundMessage())
 147            </NoRecordsContent>
 148            <PagerContent>
 149                <SykiTablePager />
 150            </PagerContent>
 151        </MudTable>
 152    </MudContainer>
 153</MudContainer>
 154
 155@inject NavigationManager Nav
 156@inject GetWebhookClient GetWebhookClient
 157
 158@code
 159{
 160  [Parameter]
 0161  public Guid Id { get; set; }
 162
 163    private bool _loading;
 0164    private GetWebhookOut _data = new();
 0165    private List<GetWebhookCallOut> _calls = [];
 166
 167    private WebhookCallStatus? _statusFilter;
 168    private WebhookEventType? _eventTypeFilter;
 169
 170    protected override async Task OnInitializedAsync()
 171    {
 0172        _loading = true;
 0173        _data = await GetWebhookClient.Get(Id);
 0174        _calls = _data.Calls.Select(x => x).ToList();
 0175        _loading = false;
 0176    }
 177
 178    private void Filter()
 179    {
 0180        _loading = true;
 0181        _calls = _data.Calls.Where(x =>
 0182            (_statusFilter == null || x.Status == _statusFilter) &&
 0183            (_eventTypeFilter == null || x.Event == _eventTypeFilter)
 0184        ).ToList();
 0185        _loading = false;
 0186    }
 187
 188    private string GetNotFoundMessage()
 189    {
 0190        return "Este webhook não possui chamadas.";
 191    }
 192}