diff --git a/Project/adminBlazor/adminBlazor/Factories/TranslationFactory.cs b/Project/adminBlazor/adminBlazor/Factories/TranslationFactory.cs new file mode 100644 index 0000000..6920e13 --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Factories/TranslationFactory.cs @@ -0,0 +1,35 @@ +using adminBlazor.Models; + +namespace adminBlazor.Factories; + +public class TranslationFactory +{ + public static Translation Create(TranslationModel model) + { + return new Translation + { + Id = model.Id, + FirstWord = model.FirstWord, + SecondWord = model.SecondWord + }; + } + + public static TranslationModel ToModel(Translation translation) + { + return new TranslationModel + { + Id = translation.Id, + FirstWord = translation.FirstWord, + SecondWord = translation.SecondWord + }; + } + + public static void Update(Translation item, TranslationModel model) + { + if (!string.IsNullOrEmpty(model.FirstWord)) + item.FirstWord = model.FirstWord; + + if (!string.IsNullOrEmpty(model.SecondWord)) + item.SecondWord = model.SecondWord; + } +} \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs b/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs index 2e99be6..89d9ecc 100644 --- a/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs +++ b/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs @@ -11,7 +11,7 @@ namespace adminBlazor.Factories { public static VocabularyListModel ToModel(VocabularyList voc, byte[] imageContent) { - return new VocabularyListModel + VocabularyListModel model = new VocabularyListModel { Id = voc.Id, Name = voc.Name, @@ -19,11 +19,22 @@ namespace adminBlazor.Factories Aut = voc.Aut, ImageBase64 = string.IsNullOrWhiteSpace(voc.ImageBase64) ? Convert.ToBase64String(imageContent) : voc.ImageBase64 }; + model.Translations = new List(); + foreach (var item in voc.Translations) + { + model.Translations.Add(new TranslationModel + { + Id = item.Id, + FirstWord = item.FirstWord, + SecondWord = item.SecondWord + }); + } + return model; } public static VocabularyList Create(VocabularyListModel voc) { - return new VocabularyList + VocabularyList model = new VocabularyList { Id = voc.Id, Name = voc.Name, @@ -31,6 +42,17 @@ namespace adminBlazor.Factories Aut = voc.Aut, ImageBase64 = voc.Image != null ? Convert.ToBase64String(voc.Image) : null }; + model.Translations = new List(); + foreach (var item in voc.Translations) + { + model.Translations.Add(new Translation + { + Id = item.Id, + FirstWord = item.FirstWord, + SecondWord = item.SecondWord + }); + } + return model; } public static void Update(VocabularyList item, VocabularyListModel voc) { @@ -42,6 +64,18 @@ namespace adminBlazor.Factories if (voc.Aut != null) item.Aut = voc.Aut; + + if (voc.Translations == null) return; + item.Translations = new List(); + foreach (var translation in voc.Translations) + { + item.Translations.Add(new Translation + { + Id = translation.Id, + FirstWord = translation.FirstWord, + SecondWord = translation.SecondWord + }); + } } } diff --git a/Project/adminBlazor/adminBlazor/Models/Translation.cs b/Project/adminBlazor/adminBlazor/Models/Translation.cs index 10bcbfb..c78bb55 100644 --- a/Project/adminBlazor/adminBlazor/Models/Translation.cs +++ b/Project/adminBlazor/adminBlazor/Models/Translation.cs @@ -3,9 +3,9 @@ namespace adminBlazor.Models { public class Translation { - private int Id { get; set; } - private string FirstWord { get; set; } - private string SecondWord { get; set; } + public int Id { get; set; } + public string FirstWord { get; set; } + public string SecondWord { get; set; } } } diff --git a/Project/adminBlazor/adminBlazor/Models/TranslationModel.cs b/Project/adminBlazor/adminBlazor/Models/TranslationModel.cs new file mode 100644 index 0000000..9bd4176 --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Models/TranslationModel.cs @@ -0,0 +1,11 @@ +using System; +namespace adminBlazor.Models +{ + public class TranslationModel + { + public int Id { get; set; } + public string FirstWord { get; set; } + public string SecondWord { get; set; } + } +} + diff --git a/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs b/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs index 1146ef1..6a238df 100644 --- a/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs +++ b/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs @@ -9,6 +9,7 @@ namespace adminBlazor.Models public int? Aut { get; set; } public string? ImageBase64 { get; set; } - } + public List? Translations { get; set; } + } } diff --git a/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs b/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs index 82ed127..ea6e894 100644 --- a/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs +++ b/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs @@ -15,6 +15,7 @@ namespace adminBlazor.Models public int? Aut { get; set; } public string ImageBase64 { get; set; } + public List? Translations { get; set; } } } diff --git a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor index 1f7773f..0b5e049 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor +++ b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor @@ -1,6 +1,7 @@ @page "/editVoc/{Id:int}" @attribute [Authorize(Roles = "teacher")] @using adminBlazor.Models +@using Blazorise.Extensions

Edit

@@ -10,32 +11,41 @@ - -<<<<<<< HEAD +

-

-======= -

- - -

-

- -

->>>>>>> e13ce594471ea79c152b246fc51c65544632624d +

+ +

Words:

+ @if (voc.Translations.IsNullOrEmpty() == false) + { + foreach (var word in voc.Translations) + { + { +
+ + +
+ + } + } + } + else + { +

No words

+ } +
} diff --git a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs index b619aa5..b75b188 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs @@ -5,6 +5,9 @@ using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Hosting; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; namespace adminBlazor.Pages @@ -23,8 +26,6 @@ namespace adminBlazor.Pages [Inject] public IWebHostEnvironment WebHostEnvironment { get; set; } - public VocabularyList currVoc; - private VocabularyListModel voc = new VocabularyListModel(); private async void HandleValidSubmit() @@ -44,8 +45,21 @@ namespace adminBlazor.Pages } } + private void AddWord() + { + if (voc.Translations == null) + { + voc.Translations = new List(); + } + voc.Translations.Add(new TranslationModel()); + } + + private void RemoveWord(TranslationModel word) + { + voc.Translations.Remove(word); + } - protected async Task OnInitializedAsync() + protected override async Task OnInitializedAsync() { var item = await VocListService.GetById(Id); @@ -54,4 +68,4 @@ namespace adminBlazor.Pages voc = VocListFactory.ToModel(item,fileContent); } } -} +} \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor b/Project/adminBlazor/adminBlazor/Pages/Voc.razor index c4025b8..be569a1 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Voc.razor +++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor @@ -26,7 +26,7 @@ } else { - + } diff --git a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs index b441006..bd5474d 100644 --- a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs @@ -49,7 +49,7 @@ namespace adminBlazor.Services var originalList = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}voc.json"); await _localStorage.SetItemAsync("voc", originalList); } - + return (await _localStorage.GetItemAsync("voc")).Length; } @@ -62,6 +62,7 @@ namespace adminBlazor.Services { // this code add in the local storage the fake data var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}voc.json"); + await _localStorage.SetItemAsync("voc", originalData); } diff --git a/Project/adminBlazor/adminBlazor/wwwroot/images/words.jpg b/Project/adminBlazor/adminBlazor/wwwroot/images/words.jpg new file mode 100644 index 0000000..2cb2170 Binary files /dev/null and b/Project/adminBlazor/adminBlazor/wwwroot/images/words.jpg differ diff --git a/Project/adminBlazor/adminBlazor/wwwroot/voc.json b/Project/adminBlazor/adminBlazor/wwwroot/voc.json index 22145e7..57e3328 100644 --- a/Project/adminBlazor/adminBlazor/wwwroot/voc.json +++ b/Project/adminBlazor/adminBlazor/wwwroot/voc.json @@ -2,20 +2,24 @@ { "id": 1, "name": "Entreprise", - "image": "link", + "image": null, "aut": null, - "words" : [{ + "translations" : [{ "id": 1, - "firstWord" : "baguette", - "secondWord" : "pain" - }] + "firstWord" : "pain", + "secondWord" : "bread" + }, + {"id": 1, + "firstWord" : "vin", + "secondWord" : "wine" + }] }, { "id": 2, "name": "Animaux", - "image": "link", + "image": null, "aut" : 1, - "words": [{ + "translations": [{ "id": 1, "firstWord" : "baguette", "secondWord" : "pain"