Untitled

 avatar
unknown
plain_text
2 years ago
3.8 kB
4
Indexable
@inject IAdminService AdminService

@*<div class="d-xl-flex justify-content-center">
    <EditForm Model="@Model" OnValidSubmit="OnFormSubmit" class="mb-5 border border-1 border-secondary p-2 w-25">
        <h4>@Page SimilarFilms</h4>
        <DataAnnotationsValidator />
        @if (@Page == PageType.Edit)
        {
            <div class="mb-2">
                <InputText class="form-control" id="Title" @bind-Value=Model.Title disabled></InputText>
                <ValidationMessage For="@(()=>Model.Title)" />
            </div>
            <div class="mb-2">
                <select class="form-control" multiple @bind="SelectedFilms" style="height: 200px;">
                    @foreach (var film in Films)
                    {
                        @if (film.Id != Model.Id)
                        {
                            <option value="@film.Id.ToString()">@film.Title</option>
                        }
                    }
                </select>
            </div>
        }
        @if (Page != PageType.Index)
        {
            <button type="submit" class="btn btn-success">Save</button>
        }

    </EditForm>
</div>*@


@code {
    [Parameter] public string[] SelectedFilms { get; set; } = new string[] { };
    [Parameter] public FilmDTO Model { get; set; } = new();
    [Parameter] public string Page { get; set; } = string.Empty;
    [Parameter] public EventCallback<string> OnChange { get; set; }
    public List<FilmDTO> Films { get; set; } = new();
    public List<SimilarFilmsDTO> SimilarFilms { get; set; } = new();

    protected async override Task OnInitializedAsync()
    {
        Films = await AdminService.GetAsync<FilmDTO>("film");
        SimilarFilms = await AdminService.GetAsync<SimilarFilmsDTO>("similarfilms");
    }


    //private async Task OnFormSubmit()
    //{
    //    try
    //    {
    //        var firstSet = SimilarFilms.Select(sf => sf).Where(sf => sf.FilmId.Equals(Model.Id));
    //        var secondSet = CreateSimilarFilmDTOList();

    //        var toDelete = firstSet.ExceptBy(secondSet.Select(x => x.SimilarFilmId), y => y.SimilarFilmId);
    //        var toCreate = secondSet.ExceptBy(firstSet.Select(x => x.SimilarFilmId), y => y.SimilarFilmId);

    //        foreach (var delete in toDelete)
    //        {
    //            HttpRequestMessage deleteRequest = new HttpRequestMessage
    //                {
    //                    Content = JsonContent.Create(delete),
    //                    Method = HttpMethod.Delete,
    //                    RequestUri = new Uri("similarfilm/", UriKind.Relative)
    //                };
    //            await AdminService.SendAsync(deleteRequest);
    //        }
    //        foreach (var create in toCreate)
    //        {
    //            HttpRequestMessage createRequest = new HttpRequestMessage
    //                {
    //                    Content = JsonContent.Create(create),
    //                    Method = HttpMethod.Post,
    //                    RequestUri = new Uri("similarfilm/", UriKind.Relative)
    //                };
    //            await AdminService.SendAsync(createRequest);
    //        }

    //        await OnChange.InvokeAsync("");

    //    }
    //    catch (Exception)
    //    {

    //        await OnChange.InvokeAsync("Couldn't create/edit/delete the similarfilm.");
    //    }
    //}

    private List<SimilarFilmsDTO> CreateSimilarFilmsDTOList()
    {
        List<SimilarFilmsDTO> fgDTOList = new();

        foreach (var filmId in SelectedFilms)
        {
            fgDTOList.Add(new SimilarFilmsDTO { FilmId = Model.Id, SimilarFilmId = int.Parse(filmId) });
        }
        return fgDTOList;
    }



}
Editor is loading...