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

@ -1,8 +1,12 @@
namespace Minecraft.Crafting.Api.Controllers namespace Minecraft.Crafting.Api.Controllers
{ {
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Razor.Infrastructure;
using Minecraft.Crafting.Api.Models; using Minecraft.Crafting.Api.Models;
using ProjetBlazor.Factories;
using ProjetBlazor.Modeles; using ProjetBlazor.Modeles;
using System.Collections;
using System.Data;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
@ -19,16 +23,55 @@ namespace Minecraft.Crafting.Api.Controllers
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault
}; };
[HttpPost] [HttpPost]
[Route("")] [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);
data.Add(item); 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;
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; return Task.CompletedTask;
} }
@ -157,6 +200,15 @@ namespace Minecraft.Crafting.Api.Controllers
return Task.FromResult(data.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList()); 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.auteur = musique.auteur;
itemOriginal.duree = musique.duree; itemOriginal.duree = musique.duree;
itemOriginal.genre = musique.genre; itemOriginal.genre = musique.genre;
itemOriginal.image = musique.image; itemOriginal.imageName = musique.imageName;
itemOriginal.songName= musique.songName;
itemOriginal.date = musique.date; 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, "id": 3,
"titre": "Brainquil", "titre": "Brainquil",
"auteur": "vanishable", "auteur": "vanishable",
"duree": 634, "duree": 634,
"genre": "jungle_planks", "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, "id": 4,
@ -32,8 +15,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 2123, "duree": 2123,
"genre": "warped_planks", "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, "id": 5,
@ -41,8 +25,9 @@
"auteur": "armor", "auteur": "armor",
"duree": 1653, "duree": 1653,
"genre": "acacia_planks", "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, "id": 6,
@ -50,8 +35,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 2325, "duree": 2325,
"genre": "warped_planks", "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, "id": 7,
@ -59,8 +45,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 1984, "duree": 1984,
"genre": "birch_planks", "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, "id": 8,
@ -68,8 +55,9 @@
"auteur": "vanishable", "auteur": "vanishable",
"duree": 104, "duree": 104,
"genre": "jungle_planks", "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, "id": 9,
@ -77,8 +65,9 @@
"auteur": "digger", "auteur": "digger",
"duree": 1390, "duree": 1390,
"genre": "warped_planks", "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, "id": 10,
@ -86,8 +75,9 @@
"auteur": "vanishable", "auteur": "vanishable",
"duree": 242, "duree": 242,
"genre": "oak_planks", "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, "id": 11,
@ -95,8 +85,9 @@
"auteur": "breakable", "auteur": "breakable",
"duree": 1601, "duree": 1601,
"genre": "warped_planks", "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, "id": 12,
@ -104,8 +95,9 @@
"auteur": "digger", "auteur": "digger",
"duree": 3443, "duree": 3443,
"genre": "warped_planks", "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, "id": 13,
@ -113,8 +105,9 @@
"auteur": "armor_head", "auteur": "armor_head",
"duree": 2904, "duree": 2904,
"genre": "dark_oak_planks", "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, "id": 14,
@ -122,8 +115,9 @@
"auteur": "digger", "auteur": "digger",
"duree": 502, "duree": 502,
"genre": "oak_planks", "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, "id": 15,
@ -131,8 +125,9 @@
"auteur": "armor_head", "auteur": "armor_head",
"duree": 2695, "duree": 2695,
"genre": "birch_planks", "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, "id": 16,
@ -140,8 +135,9 @@
"auteur": "vanishable", "auteur": "vanishable",
"duree": 1013, "duree": 1013,
"genre": "oak_planks", "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, "id": 17,
@ -149,8 +145,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 1886, "duree": 1886,
"genre": "birch_planks", "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, "id": 18,
@ -158,8 +155,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 3047, "duree": 3047,
"genre": "spruce_planks", "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, "id": 19,
@ -167,8 +165,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 1957, "duree": 1957,
"genre": "birch_planks", "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, "id": 20,
@ -176,8 +175,9 @@
"auteur": "weapon", "auteur": "weapon",
"duree": 287, "duree": 287,
"genre": "warped_planks", "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, "id": 21,
@ -185,8 +185,9 @@
"auteur": "digger", "auteur": "digger",
"duree": 2819, "duree": 2819,
"genre": "warped_planks", "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, "id": 22,
@ -194,8 +195,9 @@
"auteur": "breakable", "auteur": "breakable",
"duree": 114, "duree": 114,
"genre": "spruce_planks", "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, "id": 23,
@ -203,8 +205,9 @@
"auteur": "breakable", "auteur": "breakable",
"duree": 1322, "duree": 1322,
"genre": "spruce_planks", "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, "id": 24,
@ -212,8 +215,9 @@
"auteur": "weapon", "auteur": "weapon",
"duree": 3341, "duree": 3341,
"genre": "warped_planks", "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, "id": 25,
@ -221,8 +225,9 @@
"auteur": "weapon", "auteur": "weapon",
"duree": 2761, "duree": 2761,
"genre": "acacia_planks", "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, "id": 26,
@ -230,8 +235,9 @@
"auteur": "digger", "auteur": "digger",
"duree": 1522, "duree": 1522,
"genre": "spruce_planks", "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, "id": 27,
@ -239,8 +245,9 @@
"auteur": "armor", "auteur": "armor",
"duree": 1585, "duree": 1585,
"genre": "birch_planks", "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, "id": 28,
@ -248,8 +255,9 @@
"auteur": "armor", "auteur": "armor",
"duree": 241, "duree": 241,
"genre": "oak_planks", "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, "id": 29,
@ -257,8 +265,9 @@
"auteur": "armor", "auteur": "armor",
"duree": 225, "duree": 225,
"genre": "acacia_planks", "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, "id": 30,
@ -266,8 +275,9 @@
"auteur": "breakable", "auteur": "breakable",
"duree": 629, "duree": 629,
"genre": "birch_planks", "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, "id": 31,
@ -275,8 +285,9 @@
"auteur": "weapon", "auteur": "weapon",
"duree": 689, "duree": 689,
"genre": "birch_planks", "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, "id": 32,
@ -284,8 +295,9 @@
"auteur": "armor_chest", "auteur": "armor_chest",
"duree": 2062, "duree": 2062,
"genre": "crimson_planks", "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, "id": 33,
@ -293,8 +305,9 @@
"auteur": "vanishable", "auteur": "vanishable",
"duree": 2447, "duree": 2447,
"genre": "crimson_planks", "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, "id": 34,
@ -302,8 +315,9 @@
"auteur": "armor", "auteur": "armor",
"duree": 1580, "duree": 1580,
"genre": "jungle_planks", "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, "id": 35,
@ -311,8 +325,9 @@
"auteur": "armor", "auteur": "armor",
"duree": 3491, "duree": 3491,
"genre": "crimson_planks", "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, "id": 36,
@ -320,34 +335,8 @@
"auteur": "armor", "auteur": "armor",
"duree": 3295, "duree": 3295,
"genre": "jungle_planks", "genre": "jungle_planks",
"image": "default.png", "date": "1989-12-24T00:00:00",
"date": "1989-12-24T00:00:00" "imageName": "default.png",
}, "songName": "rick.mp3"
{
"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"
} }
] ]

@ -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>
<ItemGroup> <ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -7,8 +7,10 @@
public string auteur { get; set; } public string auteur { get; set; }
public int duree { get; set; } public int duree { get; set; }
public string genre { get; set; } public string genre { get; set; }
public string image { get; set; }
public DateTime date { 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, duree = musique.duree,
genre = musique.genre, genre = musique.genre,
date = musique.date, date = musique.date,
image = musique.DisplayName imageName = musique.imageName
}; };
} }
} }

@ -7,8 +7,10 @@
public string auteur { get; set; } public string auteur { get; set; }
public int duree { get; set; } public int duree { get; set; }
public string genre { get; set; } public string genre { get; set; }
public string image { get; set; }
public DateTime date { 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 !!")] [Required(ErrorMessage = "La date de la musique est obligatoire !!")]
public DateTime date { get; set; } public DateTime date { get; set; }
[Required(ErrorMessage = "L'image de la musique est obligatoire !")]
public byte[] image { get; set; } public byte[] image { get; set; }
[Required] [Required]
[StringLength(50, ErrorMessage = "Le nom de la photo affiché ne doit pas dépasser 50 caractères.")] [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,7 +46,7 @@
<label for="display-name"> <label for="display-name">
Display Name Image : Display Name Image :
<InputText id="display-name" @bind-Value="musiqueModel.DisplayName" /> <InputText id="display-name" @bind-Value="musiqueModel.imageName" />
</label> </label>
<p> <p>
@ -56,6 +56,18 @@
</label> </label>
</p> </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> <button type="submit">Submit</button>
</EditForm> </EditForm>

@ -2,7 +2,7 @@
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using ProjetBlazor.Services; using ProjetBlazor.Services;
using ProjetBlazor.Modeles; using ProjetBlazor.Modeles;
using Microsoft.AspNetCore.Mvc.ViewFeatures; using System.IO;
namespace ProjetBlazor.Pages namespace ProjetBlazor.Pages
{ {
@ -17,14 +17,17 @@ namespace ProjetBlazor.Pages
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
private async void HandleValidSubmit() private async void HandleValidSubmit()
{ {
await DataService.Add(musiqueModel); await DataService.Add(musiqueModel);
NavigationManager.NavigateTo("MusiquesListe"); //NavigationManager.NavigateTo("MusiquesListe");
} }
private async Task LoadImage(InputFileChangeEventArgs e) private async Task LoadImage(InputFileChangeEventArgs e)
{ {
// Set the content of the image to the model // Set the content of the image to the model
using (var memoryStream = new MemoryStream()) 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> <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 public partial class Edit
{ {
[Parameter] [Parameter]
public int Id { get; set; } public int id { get; set; }
private MusiqueModel musiqueModele = new MusiqueModel(); private MusiqueModel musiqueModele = new MusiqueModel();
@ -22,7 +23,7 @@ namespace ProjetBlazor.Pages
[Inject] [Inject]
public IDataService DataService { get; set; } public IDataService DataService { get; set; }
/*
private async void HandleValidSubmit() private async void HandleValidSubmit()
{ {
await DataService.Update(Id,musiqueModele); await DataService.Update(Id,musiqueModele);
@ -43,21 +44,21 @@ namespace ProjetBlazor.Pages
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
var musique = await DataService.GetById(Id); var musique = await DataService.GetById(Id);
/*
var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png");
if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{musiqueModele.titre}.png")) if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{musiqueModele.titre}.png"))
{ {
fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.titre}.png"); fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.titre}.png");
}*/ }
var file = await File.ReadAllBytesAsync("https://localhost:7234/images/default.png"); var file = await File.ReadAllBytesAsync(https://localhost:7234/images/default.png);
if (!musique.image.Equals("default.png")){ if (!musique.imageName.Equals("default.png")){
file = await File.ReadAllBytesAsync("https://localhost:7234/images/{musique.image}"); file = await File.ReadAllBytesAsync(https://localhost:7234/images/{musique.image});
} }
// Set the model with the item // Set the model with the item
musiqueModele = MusiqueFactory.ToModel(musique, file); musiqueModele = MusiqueFactory.ToModel(musique, file);
} }*/
} }
} }

@ -20,7 +20,7 @@
<DataGridColumn TItem="Musique" Field="@nameof(Musique.id)" Caption="Image"> <DataGridColumn TItem="Musique" Field="@nameof(Musique.id)" Caption="Image">
<DisplayTemplate> <DisplayTemplate>
<img src="https://localhost:7234/images/@(context.image)"/> <img src="https://localhost:7234/images/@(context.imageName)"/>
</DisplayTemplate> </DisplayTemplate>
</DataGridColumn> </DataGridColumn>
<DataGridColumn TItem="Musique" Field="@nameof(Musique.titre)" Caption="@Localizer["Titre"]" /> <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.duree)" Caption="@Localizer["Time"]" />
<DataGridColumn TItem="Musique" Field="@nameof(Musique.genre)" Caption="@Localizer["Genre"]" /> <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.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> </DataGrid>

@ -21,6 +21,10 @@ namespace ProjetBlazor.Pages
[Inject] [Inject]
public IStringLocalizer<MusiquesListe> Localizer { get; set; } public IStringLocalizer<MusiquesListe> Localizer { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Musique> e) private async Task OnReadData(DataGridReadDataEventArgs<Musique> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
@ -33,5 +37,14 @@ namespace ProjetBlazor.Pages
totalItem = await DataService.Count(); 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" @page "/Play"
@using ProjetBlazor.Modeles;
<h3>Play</h3> <h3>Play</h3>
@ -13,3 +14,26 @@
</a> </a>
</audio> </audio>
</figure> </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 namespace ProjetBlazor.Pages
{ {
public partial class Play 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;
using Blazorise.Bootstrap; using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome; using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using ProjetBlazor.Services; using ProjetBlazor.Services;
using System.Globalization; using System.Globalization;
using Microsoft.Extensions.Logging;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);

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

@ -12,13 +12,10 @@ namespace ProjetBlazor.Services
_http = http; _http = http;
} }
public async Task Add(MusiqueModel musique) public async Task Add(MusiqueModel musiqueModel)
{ {
// Get the item
var item = MusiqueFactory.Create(musique);
// Save the data // 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() public async Task<int> Count()
@ -31,6 +28,7 @@ namespace ProjetBlazor.Services
await _http.DeleteAsync($"https://localhost:7234/api/Crafting/{id}"); await _http.DeleteAsync($"https://localhost:7234/api/Crafting/{id}");
} }
public async Task<Musique> GetById(int id) public async Task<Musique> GetById(int id)
{ {
return await _http.GetFromJsonAsync<Musique>($"https://localhost:7234/api/Crafting/{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}"); 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) public async Task Update(int id, MusiqueModel musique)
{ {
// Get the item // Get the item

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

@ -19,14 +19,9 @@
<span class="oi oi-plus" aria-hidden="true"></span> Musiques Liste <span class="oi oi-plus" aria-hidden="true"></span> Musiques Liste
</NavLink> </NavLink>
</div> </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"> <div class="nav-item px-3">
<NavLink class="nav-link" href="Play"> <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> </NavLink>
</div> </div>
</nav> </nav>

Loading…
Cancel
Save