master
Jolys Enzo 3 years ago
parent 5b5e9cae67
commit 29f4368548

@ -1,8 +1,12 @@
namespace Minecraft.Crafting.Api.Controllers
{
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Razor.Infrastructure;
using Minecraft.Crafting.Api.Models;
using ProjetBlazor.Factories;
using ProjetBlazor.Modeles;
using System.Collections;
using System.Data;
using System.Text.Json;
using System.Text.Json.Serialization;
@ -19,16 +23,55 @@ namespace Minecraft.Crafting.Api.Controllers
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault
};
[HttpPost]
[Route("")]
public Task Add(Item item)
public Task Add(JsonElement json)
{
var data = JsonSerializer.Deserialize<List<Item>>(System.IO.File.ReadAllText("Data/items.json"), _jsonSerializerOptions);
MusiqueModel musiqueModel = JsonSerializer.Deserialize<MusiqueModel>(json);
Musique musique = MusiqueFactory.Create(musiqueModel);
var data = JsonSerializer.Deserialize<List<Musique>>(System.IO.File.ReadAllText("Data/musique.json"), _jsonSerializerOptions);
int tmp = data.LastOrDefault().id;
musique.id = tmp+1;
data.Add(musique);
System.IO.File.WriteAllText("Data/musique.json", JsonSerializer.Serialize(data, _jsonSerializerOptions));
//Sauvegarder image et song
//image
string fileName = @$"{Environment.CurrentDirectory}/wwwroot/images/" + musique.imageName;
using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
byte[] img = musiqueModel.image;
fs.Write(img, 0, img.Length);
}
/*
using (var memoryStream = new MemoryStream())
{
string fileName = @$"{Environment.CurrentDirectory}/../wwwroot/images/" + musique.imageName;
data.Add(item);
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None);
System.IO.File.WriteAllText("Data/items.json", JsonSerializer.Serialize(data, _jsonSerializerOptions));
byte[] img = musiqueModel.image;
fs.Write(img, 0, img.Length);
fs.Close();
}*/
//song
using (var memoryStream = new MemoryStream())
{
string fileName2 = @$"{Environment.CurrentDirectory}/wwwroot/musiques/" + musique.songName;
FileStream fs = new FileStream(fileName2, FileMode.Create, FileAccess.Write, FileShare.None);
byte[] song = musiqueModel.song;
fs.Write(song, 0, song.Length);
fs.Close();
}
return Task.CompletedTask;
}
@ -157,6 +200,15 @@ namespace Minecraft.Crafting.Api.Controllers
return Task.FromResult(data.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList());
}
[HttpGet]
[Route("listAll")]
public Task<List<Musique>> ListAll()
{
var data = JsonSerializer.Deserialize<List<Musique>>(System.IO.File.ReadAllText("Data/musique.json"), _jsonSerializerOptions);
return Task.FromResult(data);
}
@ -178,7 +230,8 @@ namespace Minecraft.Crafting.Api.Controllers
itemOriginal.auteur = musique.auteur;
itemOriginal.duree = musique.duree;
itemOriginal.genre = musique.genre;
itemOriginal.image = musique.image;
itemOriginal.imageName = musique.imageName;
itemOriginal.songName= musique.songName;
itemOriginal.date = musique.date;

@ -1,30 +1,13 @@
[
{
"id": 1,
"titre": "Norali",
"auteur": "breakable",
"duree": 277,
"genre": "birch_planks",
"image": "default.png",
"date": "1963-07-08T00:00:00"
},
{
"id": 2,
"titre": "Oulu",
"auteur": "digger",
"duree": 55,
"genre": "oak_planks",
"image": "default.png",
"date": "2008-07-07T00:00:00"
},
{
"id": 3,
"titre": "Brainquil",
"auteur": "vanishable",
"duree": 634,
"genre": "jungle_planks",
"image": "default.png",
"date": "2009-07-19T00:00:00"
"date": "2009-07-19T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 4,
@ -32,8 +15,9 @@
"auteur": "armor_chest",
"duree": 2123,
"genre": "warped_planks",
"image": "default.png",
"date": "1965-09-07T00:00:00"
"date": "1965-09-07T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 5,
@ -41,8 +25,9 @@
"auteur": "armor",
"duree": 1653,
"genre": "acacia_planks",
"image": "default.png",
"date": "1989-01-11T00:00:00"
"date": "1989-01-11T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 6,
@ -50,8 +35,9 @@
"auteur": "armor_chest",
"duree": 2325,
"genre": "warped_planks",
"image": "default.png",
"date": "1964-04-10T00:00:00"
"date": "1964-04-10T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 7,
@ -59,8 +45,9 @@
"auteur": "armor_chest",
"duree": 1984,
"genre": "birch_planks",
"image": "default.png",
"date": "1971-06-12T00:00:00"
"date": "1971-06-12T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 8,
@ -68,8 +55,9 @@
"auteur": "vanishable",
"duree": 104,
"genre": "jungle_planks",
"image": "default.png",
"date": "2015-05-23T00:00:00"
"date": "2015-05-23T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 9,
@ -77,8 +65,9 @@
"auteur": "digger",
"duree": 1390,
"genre": "warped_planks",
"image": "default.png",
"date": "2010-05-21T00:00:00"
"date": "2010-05-21T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 10,
@ -86,8 +75,9 @@
"auteur": "vanishable",
"duree": 242,
"genre": "oak_planks",
"image": "default.png",
"date": "1950-08-23T00:00:00"
"date": "1950-08-23T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 11,
@ -95,8 +85,9 @@
"auteur": "breakable",
"duree": 1601,
"genre": "warped_planks",
"image": "default.png",
"date": "2020-11-19T00:00:00"
"date": "2020-11-19T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 12,
@ -104,8 +95,9 @@
"auteur": "digger",
"duree": 3443,
"genre": "warped_planks",
"image": "default.png",
"date": "2003-09-03T00:00:00"
"date": "2003-09-03T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 13,
@ -113,8 +105,9 @@
"auteur": "armor_head",
"duree": 2904,
"genre": "dark_oak_planks",
"image": "default.png",
"date": "1965-10-25T00:00:00"
"date": "1965-10-25T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 14,
@ -122,8 +115,9 @@
"auteur": "digger",
"duree": 502,
"genre": "oak_planks",
"image": "default.png",
"date": "1971-08-26T00:00:00"
"date": "1971-08-26T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 15,
@ -131,8 +125,9 @@
"auteur": "armor_head",
"duree": 2695,
"genre": "birch_planks",
"image": "default.png",
"date": "2000-06-22T00:00:00"
"date": "2000-06-22T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 16,
@ -140,8 +135,9 @@
"auteur": "vanishable",
"duree": 1013,
"genre": "oak_planks",
"image": "default.png",
"date": "1963-12-15T00:00:00"
"date": "1963-12-15T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 17,
@ -149,8 +145,9 @@
"auteur": "armor_chest",
"duree": 1886,
"genre": "birch_planks",
"image": "default.png",
"date": "1952-09-27T00:00:00"
"date": "1952-09-27T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 18,
@ -158,8 +155,9 @@
"auteur": "armor_chest",
"duree": 3047,
"genre": "spruce_planks",
"image": "default.png",
"date": "1990-02-03T00:00:00"
"date": "1990-02-03T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 19,
@ -167,8 +165,9 @@
"auteur": "armor_chest",
"duree": 1957,
"genre": "birch_planks",
"image": "default.png",
"date": "2005-03-19T00:00:00"
"date": "2005-03-19T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 20,
@ -176,8 +175,9 @@
"auteur": "weapon",
"duree": 287,
"genre": "warped_planks",
"image": "default.png",
"date": "1977-03-11T00:00:00"
"date": "1977-03-11T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 21,
@ -185,8 +185,9 @@
"auteur": "digger",
"duree": 2819,
"genre": "warped_planks",
"image": "default.png",
"date": "2003-02-22T00:00:00"
"date": "2003-02-22T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 22,
@ -194,8 +195,9 @@
"auteur": "breakable",
"duree": 114,
"genre": "spruce_planks",
"image": "default.png",
"date": "1999-02-26T00:00:00"
"date": "1999-02-26T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 23,
@ -203,8 +205,9 @@
"auteur": "breakable",
"duree": 1322,
"genre": "spruce_planks",
"image": "default.png",
"date": "1956-07-19T00:00:00"
"date": "1956-07-19T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 24,
@ -212,8 +215,9 @@
"auteur": "weapon",
"duree": 3341,
"genre": "warped_planks",
"image": "default.png",
"date": "1994-11-28T00:00:00"
"date": "1994-11-28T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 25,
@ -221,8 +225,9 @@
"auteur": "weapon",
"duree": 2761,
"genre": "acacia_planks",
"image": "default.png",
"date": "1981-07-20T00:00:00"
"date": "1981-07-20T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 26,
@ -230,8 +235,9 @@
"auteur": "digger",
"duree": 1522,
"genre": "spruce_planks",
"image": "default.png",
"date": "1998-01-29T00:00:00"
"date": "1998-01-29T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 27,
@ -239,8 +245,9 @@
"auteur": "armor",
"duree": 1585,
"genre": "birch_planks",
"image": "default.png",
"date": "2002-12-04T00:00:00"
"date": "2002-12-04T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 28,
@ -248,8 +255,9 @@
"auteur": "armor",
"duree": 241,
"genre": "oak_planks",
"image": "default.png",
"date": "1957-01-09T00:00:00"
"date": "1957-01-09T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 29,
@ -257,8 +265,9 @@
"auteur": "armor",
"duree": 225,
"genre": "acacia_planks",
"image": "default.png",
"date": "1959-07-06T00:00:00"
"date": "1959-07-06T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 30,
@ -266,8 +275,9 @@
"auteur": "breakable",
"duree": 629,
"genre": "birch_planks",
"image": "default.png",
"date": "1965-04-15T00:00:00"
"date": "1965-04-15T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 31,
@ -275,8 +285,9 @@
"auteur": "weapon",
"duree": 689,
"genre": "birch_planks",
"image": "default.png",
"date": "1996-11-16T00:00:00"
"date": "1996-11-16T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 32,
@ -284,8 +295,9 @@
"auteur": "armor_chest",
"duree": 2062,
"genre": "crimson_planks",
"image": "default.png",
"date": "1979-04-30T00:00:00"
"date": "1979-04-30T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 33,
@ -293,8 +305,9 @@
"auteur": "vanishable",
"duree": 2447,
"genre": "crimson_planks",
"image": "default.png",
"date": "2018-09-20T00:00:00"
"date": "2018-09-20T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 34,
@ -302,8 +315,9 @@
"auteur": "armor",
"duree": 1580,
"genre": "jungle_planks",
"image": "default.png",
"date": "2021-04-27T00:00:00"
"date": "2021-04-27T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 35,
@ -311,8 +325,9 @@
"auteur": "armor",
"duree": 3491,
"genre": "crimson_planks",
"image": "default.png",
"date": "1987-11-24T00:00:00"
"date": "1987-11-24T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
},
{
"id": 36,
@ -320,34 +335,8 @@
"auteur": "armor",
"duree": 3295,
"genre": "jungle_planks",
"image": "default.png",
"date": "1989-12-24T00:00:00"
},
{
"id": 37,
"titre": "Tribalog",
"auteur": "vanishable",
"duree": 1531,
"genre": "warped_planks",
"image": "default.png",
"date": "1995-06-17T00:00:00"
},
{
"id": 38,
"titre": "Exozent",
"auteur": "armor_chest",
"duree": 7,
"genre": "crimson_planks",
"image": "default.png",
"date": "1972-06-30T00:00:00"
},
{
"id": 39,
"titre": "Asimiline",
"auteur": "armor_chest",
"duree": 2048,
"genre": "dark_oak_planks",
"image": "default.png",
"date": "2006-11-22T00:00:00"
"date": "1989-12-24T00:00:00",
"imageName": "default.png",
"songName": "rick.mp3"
}
]

@ -0,0 +1,36 @@
using ProjetBlazor.Modeles;
namespace ProjetBlazor.Factories
{
public static class MusiqueFactory
{
public static MusiqueModel ToModel(Musique musique, byte[] imageContent)
{
return new MusiqueModel
{
id = musique.id,
titre = musique.titre,
auteur = musique.auteur,
genre = musique.genre,
duree = musique.duree,
date = musique.date,
image = imageContent
};
}
public static Musique Create(MusiqueModel musique)
{
return new Musique
{
id = musique.id,
titre = musique.titre,
auteur = musique.auteur,
duree = musique.duree,
genre = musique.genre,
date = musique.date,
imageName = musique.imageName,
songName = musique.songName
};
}
}
}

@ -18,8 +18,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
<ItemGroup>

@ -7,8 +7,10 @@
public string auteur { get; set; }
public int duree { get; set; }
public string genre { get; set; }
public string image { get; set; }
public DateTime date { get; set; }
public string imageName { get; set; }
public string songName { get; set; }
}
}

@ -0,0 +1,46 @@
using System.ComponentModel.DataAnnotations;
namespace ProjetBlazor.Modeles
{
public class MusiqueModel
{
public int id { get; set; }
[Required]
[StringLength(100, ErrorMessage = "Le titre affiché ne doit pas dépasser 100 caractères.")]
public string titre { get; set; }
[Required]
[StringLength(50, ErrorMessage = "L'auteur affiché ne doit pas dépasser 50 caractères.")]
public string auteur { get; set; }
[Required]
[Range(1, 3600)]
public int duree { get; set; }
[Required]
[StringLength(100, ErrorMessage = "Le genre affiché ne doit pas dépasser 100 caractères.")]
public string genre { get; set; }
[Required(ErrorMessage = "La date de la musique est obligatoire !!")]
public DateTime date { get; set; }
public byte[] image { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Le nom de la photo affiché ne doit pas dépasser 50 caractères.")]
public string imageName { get; set; }
public byte[] song { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Le nom du fichier de la musique ne doit pas dépasser 50 caractères.")]
public string songName { get; set; }
}
}

@ -28,7 +28,8 @@ namespace ProjetBlazor.Factories
duree = musique.duree,
genre = musique.genre,
date = musique.date,
image = musique.DisplayName
imageName = musique.imageName
};
}
}

@ -7,8 +7,10 @@
public string auteur { get; set; }
public int duree { get; set; }
public string genre { get; set; }
public string image { get; set; }
public DateTime date { get; set; }
public string imageName { get; set; }
public string songName { get; set; }
}
}

@ -27,11 +27,20 @@ namespace ProjetBlazor.Modeles
[Required(ErrorMessage = "La date de la musique est obligatoire !!")]
public DateTime date { get; set; }
[Required(ErrorMessage = "L'image de la musique est obligatoire !")]
public byte[] image { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Le nom de la photo affiché ne doit pas dépasser 50 caractères.")]
public string DisplayName { get; set; }
public string imageName { get; set; }
public byte[] song { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Le nom du fichier de la musique ne doit pas dépasser 50 caractères.")]
public string songName { get; set; }
}
}

@ -46,8 +46,8 @@
<label for="display-name">
Display Name Image :
<InputText id="display-name" @bind-Value="musiqueModel.DisplayName" />
</label>
<InputText id="display-name" @bind-Value="musiqueModel.imageName" />
</label>
<p>
<label for="date">
@ -55,6 +55,18 @@
<InputDate id="date" @bind-Value="musiqueModel.date" />
</label>
</p>
<p>
<label for="song">
Display song:
<InputFile id="song" OnChange="@LoadSong" accept=".mp3" />
</label>
</p>
<label for="display-nameSong">
Display Name SongFile :
<InputText id="display-nameSong" @bind-Value="musiqueModel.songName" />
</label>
<button type="submit">Submit</button>

@ -2,7 +2,7 @@
using Microsoft.AspNetCore.Components;
using ProjetBlazor.Services;
using ProjetBlazor.Modeles;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using System.IO;
namespace ProjetBlazor.Pages
{
@ -17,14 +17,17 @@ namespace ProjetBlazor.Pages
[Inject]
public NavigationManager NavigationManager { get; set; }
private async void HandleValidSubmit()
{
await DataService.Add(musiqueModel);
NavigationManager.NavigateTo("MusiquesListe");
//NavigationManager.NavigateTo("MusiquesListe");
}
private async Task LoadImage(InputFileChangeEventArgs e)
{
// Set the content of the image to the model
using (var memoryStream = new MemoryStream())
{
@ -33,5 +36,14 @@ namespace ProjetBlazor.Pages
}
}
}
private async Task LoadSong(InputFileChangeEventArgs e)
{
// Set the content of the image to the model
using (var memoryStream = new MemoryStream())
{
await e.File.OpenReadStream().CopyToAsync(memoryStream);
musiqueModel.image = memoryStream.ToArray();
}
}
}
}

@ -1,58 +1,4 @@
@page "/edit/{Id:int}"
@page "/edit/{id:int}"
<h3>Modification</h3>
<EditForm Model=@musiqueModele OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<p>
<label for="titre">
Display Titre:
<InputText id="titre" @bind-Value="musiqueModele.titre" />
</label>
</p>
<p>
<label for="auteur">
Display Auteur:
<InputText id="auteur" @bind-Value="musiqueModele.auteur" />
</label>
</p>
<p>
<label for="duree">
Display Durée:
<InputNumber id="duree" @bind-Value="musiqueModele.duree" />
</label>
</p>
<p>
<label for="genre">
Display Genre:
<InputText id="genre" @bind-Value="musiqueModele.genre" />
</label>
</p>
<p>
<label for="image">
Display Image:
<InputFile id="image" OnChange="@LoadImage" accept=".png" />
</label>
</p>
<label for="display-name">
Display Name Image :
<InputText id="display-name" @bind-Value="musiqueModele.DisplayName" />
</label>
<p>
<label for="date">
Display Date:
<InputDate id="date" @bind-Value="musiqueModele.date" />
</label>
</p>
<button type="submit">Submit</button>
</EditForm>

@ -8,8 +8,9 @@ namespace ProjetBlazor.Pages
{
public partial class Edit
{
[Parameter]
public int Id { get; set; }
public int id { get; set; }
private MusiqueModel musiqueModele = new MusiqueModel();
@ -22,7 +23,7 @@ namespace ProjetBlazor.Pages
[Inject]
public IDataService DataService { get; set; }
/*
private async void HandleValidSubmit()
{
await DataService.Update(Id,musiqueModele);
@ -39,25 +40,25 @@ namespace ProjetBlazor.Pages
musiqueModele.image = memoryStream.ToArray();
}
}
protected override async Task OnInitializedAsync()
{
var musique = await DataService.GetById(Id);
/*
var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png");
if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{musiqueModele.titre}.png"))
{
fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.titre}.png");
}*/
}
var file = await File.ReadAllBytesAsync("https://localhost:7234/images/default.png");
if (!musique.image.Equals("default.png")){
file = await File.ReadAllBytesAsync("https://localhost:7234/images/{musique.image}");
var file = await File.ReadAllBytesAsync(https://localhost:7234/images/default.png);
if (!musique.imageName.Equals("default.png")){
file = await File.ReadAllBytesAsync(https://localhost:7234/images/{musique.image});
}
// Set the model with the item
musiqueModele = MusiqueFactory.ToModel(musique, file);
}
}*/
}
}

@ -20,7 +20,7 @@
<DataGridColumn TItem="Musique" Field="@nameof(Musique.id)" Caption="Image">
<DisplayTemplate>
<img src="https://localhost:7234/images/@(context.image)"/>
<img src="https://localhost:7234/images/@(context.imageName)"/>
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="Musique" Field="@nameof(Musique.titre)" Caption="@Localizer["Titre"]" />
@ -28,4 +28,11 @@
<DataGridColumn TItem="Musique" Field="@nameof(Musique.duree)" Caption="@Localizer["Time"]" />
<DataGridColumn TItem="Musique" Field="@nameof(Musique.genre)" Caption="@Localizer["Genre"]" />
<DataGridColumn TItem="Musique" Field="@nameof(Musique.date)" Caption="@Localizer["Date"]" />
<DataGridColumn TItem="Musique" Field="@nameof(Musique.id)">
<DisplayTemplate>
<a href="edit/@(context.id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>
<button type="button" class="btn btn-primary" @onclick="() => OnDelete(context.id)"><i class="fa fa-trash"></i> Supprimer</button>
</DisplayTemplate>
</DataGridColumn>
</DataGrid>

@ -21,6 +21,10 @@ namespace ProjetBlazor.Pages
[Inject]
public IStringLocalizer<MusiquesListe> Localizer { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Musique> e)
{
if (e.CancellationToken.IsCancellationRequested)
@ -33,5 +37,14 @@ namespace ProjetBlazor.Pages
totalItem = await DataService.Count();
}
}
private async Task OnDelete(int id)
{
await DataService.Delete(id);
// Reload the page
NavigationManager.NavigateTo("MusiquesListe",true);
}
}
}

@ -1,4 +1,5 @@
@page "/Play"
@using ProjetBlazor.Modeles;
<h3>Play</h3>
@ -13,3 +14,26 @@
</a>
</audio>
</figure>
<h1>Scoped CSS Example</h1>
<div class="galleryimages">
@foreach (Musique image in listeMusique)
{
<img src="https://localhost:7234/images/@(image.imageName)" />
}
</div>
<!--
<DataGrid Class="tab" TItem="Musique"
Data="@listeMusique"
ReadData="@OnReadData"
Responsive>
<DataGridColumn TItem="Musique" Field="@nameof(Musique.id)" Caption="Image">
<DisplayTemplate>
<img src="https://localhost:7234/images/@(context.imageName)"/>
</DisplayTemplate>
</DataGridColumn>
</DataGrid>
-->

@ -1,8 +1,39 @@

using Blazorise.DataGrid;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Localization;
using ProjetBlazor.Modeles;
using ProjetBlazor.Services;
namespace ProjetBlazor.Pages
{
public partial class Play
{
private List<Musique> listeMusique = new List<Musique>();
[Inject]
public IDataService DataService { get; set; }
[Inject]
public IStringLocalizer<MusiquesListe> Localizer { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Musique> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
if (!e.CancellationToken.IsCancellationRequested)
{
listeMusique = await DataService.ListAll();
}
}
protected override async Task OnInitializedAsync()
{
listeMusique = await DataService.ListAll();
}
}
}

@ -0,0 +1,10 @@
h1 {
color: brown;
font-family: Tahoma, Geneva, Verdana, sans-serif;
}
.galleryimages{
width: 20px;
height : 100px;
}

@ -1,13 +1,10 @@
using Blazorise;
using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Options;
using ProjetBlazor.Services;
using System.Globalization;
using Microsoft.Extensions.Logging;
var builder = WebApplication.CreateBuilder(args);

@ -7,9 +7,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap" Version="1.1.4.1" />
<PackageReference Include="Blazorise.DataGrid" Version="1.1.4.1" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.1.4.1" />
<PackageReference Include="Blazorise.Bootstrap" Version="1.1.5" />
<PackageReference Include="Blazorise.DataGrid" Version="1.1.5" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.1.5" />
</ItemGroup>
<ItemGroup>

@ -12,13 +12,10 @@ namespace ProjetBlazor.Services
_http = http;
}
public async Task Add(MusiqueModel musique)
{
// Get the item
var item = MusiqueFactory.Create(musique);
public async Task Add(MusiqueModel musiqueModel)
{
// Save the data
await _http.PostAsJsonAsync("https://localhost:7234/api/controleur/", musique);
await _http.PostAsJsonAsync("https://localhost:7234/api/Crafting",musiqueModel);
}
public async Task<int> Count()
@ -31,6 +28,7 @@ namespace ProjetBlazor.Services
await _http.DeleteAsync($"https://localhost:7234/api/Crafting/{id}");
}
public async Task<Musique> GetById(int id)
{
return await _http.GetFromJsonAsync<Musique>($"https://localhost:7234/api/Crafting/{id}");
@ -41,6 +39,11 @@ namespace ProjetBlazor.Services
return await _http.GetFromJsonAsync<List<Musique>>($"https://localhost:7234/api/Crafting/?currentPage={currentPage}&pageSize={pageSize}");
}
public async Task<List<Musique>> ListAll()
{
return await _http.GetFromJsonAsync<List<Musique>>($"https://localhost:7234/api/Crafting/listAll/");
}
public async Task Update(int id, MusiqueModel musique)
{
// Get the item

@ -16,5 +16,7 @@ namespace ProjetBlazor.Services
Task<int> Count();
Task<List<Musique>> ListAll();
}
}

@ -19,14 +19,9 @@
<span class="oi oi-plus" aria-hidden="true"></span> Musiques Liste
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="edit/5/">
<span class="oi oi-plus" aria-hidden="true"></span>@Localizer["Edit"]
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="Play">
<span class="oi oi-list-rich" aria-hidden="true"></span> Play
<span class="oi oi-list-rich" aria-hidden="true"></span> Lecteur
</NavLink>
</div>
</nav>

Loading…
Cancel
Save