Untitled

 avatar
unknown
plain_text
2 years ago
3.9 kB
6
Indexable
FilmsIndex



<table class="table mt-2">
    <thead>
        <tr>
            <th>Id</th>
            <th>Title</th>
            <th>Released</th>
            <th>Free</th>
            <th>Director</th>
            <th>Description</th>
            <th>FilmUrl</th>
        </tr>
    </thead>

    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.Id</td>
                <td>@item.Title</td>
                <td>@item.Released</td>
                <td>@(item.Free ? "Free" : "Paid")</td>
                <td>@item.DirectorName</td>
                <td>@item.Description.Truncate(50)</td>
                <td>@item.FilmUrl</td>
                <td>
                    <div class="d-flex me-1 justify-content-end">
                        <button class="btn btn-outline-primary rounded-0 me-1" @onclick="@(() => OnClick.InvokeAsync(new ClickModel(PageType.Edit, item.Id)))">Edit</button>
                        <button class="btn btn-outline-danger rounded-0" @onclick="@(() => OnClick.InvokeAsync(new ClickModel(PageType.Delete, item.Id)))">Delete</button>"
                    </div>
                </td>
            </tr>
        }
    </tbody>
</table>

@code {
    [Parameter] public List<FilmDTO> Model { get; set; } = new();
    [Parameter] public EventCallback<ClickModel> OnClick { get; set; }
}




FilmsPortal



@inject IAdminService AdminService
<h3>@Navigation</h3>

@if (!string.IsNullOrEmpty(Alert))
{
    <div class="d-flex">
        <div class="alert alert-danger alert-dismissible fade show" role="alert">
            <strong>@Alert</strong>
            <button type="button" @onclick="CloseAlert" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
    </div>
}

@if (Navigation == PageType.Create)
{
    <ChangeFilm Page="@Navigation" OnChange="OnChange"></ChangeFilm>
}
@if (Navigation == PageType.Delete || Navigation == PageType.Edit)
{
    <ChangeFilm Page="@Navigation" OnChange="OnChange" Model="Film"></ChangeFilm>
}



<div class="d-flex me-1">
    <a href="/" class="btn btn-outline-secondary rounded-0 me-1">Home</a>
    <button type="button" class="btn btn-outline-primary rounded-0 me-1" @onclick="()=>ChangePageType(PageType.Index)">Index</button>
    <button type="button" class="btn btn-outline-success rounded-0" @onclick="()=>ChangePageType(PageType.Create)">Create</button>
</div>


<FilmsIndex OnClick="OnClick" Model="Model"></FilmsIndex>

@code {
    string Navigation { get; set; } = PageType.Index;
    List<FilmDTO> Model { get; set; } = new(); //Den här har jag ovanför Navigation
    string Alert { get; set; } = string.Empty;
    public FilmDTO Film { get; set; } = new();
    void CloseAlert() => Alert = string.Empty; //dessa två metoder har jag tvärsom
    void ChangePageType(string pageType) => Navigation = pageType; //denna

    protected override async Task OnInitializedAsync()
    {
        Alert = "";
            
        //await AdminService.CreateAsync<FilmCreateDTO>($"Films", new FilmCreateDTO()
            //{
            //    Title = "Testfilmen",
            //    Free = true,
            //    Description = "sadadadada",
            //    DirectorId = 2,
            //    FilmUrl = "wwww.www.www",
            //    Released = new DateTime(10, 10, 10)
            //});
            
    }

    async Task OnClick(ClickModel model)
    {
        if (model.PageType.Equals(PageType.Edit) || model.PageType.Equals(PageType.Delete))
            Film = await AdminService.SingleAsync<FilmDTO>($"Films/{model.Id}") ?? new();

        ChangePageType(model.PageType);
    }

    async Task OnChange(string alert)
    {
        try
        {
            Alert = alert;
            Model = await AdminService.GetAsync<FilmDTO>("films");
            ChangePageType(PageType.Index);
        }
        catch
        {
            Alert = "Warning warning";
        }
    }
}

Editor is loading...