Untitled

 avatar
unknown
plain_text
2 years ago
3.2 kB
6
Indexable
@inject IAdminService AdminService

@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 {
    List<FilmDTO> Model { get; set; } = new(); //new ser till att det inte är null, så vi slipper exception.
    string Navigation = string.Empty;
    string Alert = string.Empty;
    public FilmDTO Film { get; set; } = new();

    void ChangePageType(string pageType) => Navigation = pageType;
    void CloseAlert() => Alert = string.Empty;

    protected override async Task OnInitializedAsync()
    {
        Alert = string.Empty;

        //await AdminService.CreateAsync<FilmCreateDTO>($"Films", new FilmCreateDTO(){ ThumbnailURL="", Title="FreeGuy", Free = true, Description ="", DirectorId=2, FilmUrl ="", Released= new DateTime(12,01,01)} );
        //await AdminService.EditAsync<FilmDTO>($"Films/1", new FilmDTO());
        //Alert = "Test message";//string.Empty;
        //var film = await AdminService.SingleAsync<FilmDTO>($"Films/1");
        /*await AdminService.CreateAsync<FilmCreateDTO>($"Films", new FilmCreateDTO {
                Description = "adf",
                Title = "Titel",
                DirectorId = 4,
                FilmUrl = "URL",
                Free = true,
                Released = new DateTime(2010,10,10)
            }); */

        Model = await AdminService.GetAsync<FilmDTO>($"Films?freeonly=false"); //Detta laddar upp filminnehållet på sidan.
    }
    /*När man anropar metoden nedan ändrar man Navigation-property till 
     * vad man nu har valt (Edit, Delete ..)*/

    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 = "Couldn't create/edit/delete the film.";
        }
    }

 }
Editor is loading...