Untitled
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...