diff --git a/MCTG/Views/App.xaml.cs b/MCTG/Views/App.xaml.cs
index d5c1bbf..a36e2a5 100644
--- a/MCTG/Views/App.xaml.cs
+++ b/MCTG/Views/App.xaml.cs
@@ -5,6 +5,7 @@ using Managers;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Diagnostics.CodeAnalysis;
+using System.Runtime.Serialization.Json;
namespace Views
{
@@ -20,7 +21,7 @@ namespace Views
Debug.WriteLine("Hello, World!\n\n");
string path = FileSystem.Current.AppDataDirectory; // - path to the save file
- string strategy = "xml"; // - strategy is 'xml' or 'json' (/!\ this is case sensitive)
+ string strategy = "json"; // - strategy is 'xml' or 'json' (/!\ this is case sensitive)
// Initialize the data serializer
IDataSerializer dataSerializer = (strategy == "xml") ?
@@ -31,7 +32,7 @@ namespace Views
IDataManager dataManager;
if (!File.Exists(Path.Combine(path, $"data.{strategy}")))
{
- var data = LoadXMLBundledFilesAsync("data.xml");
+ var data = LoadJSONBundledFilesAsync("data.json");
dataManager = new DataDefaultManager(dataSerializer, data);
}
else
@@ -72,6 +73,8 @@ namespace Views
base.OnSleep();
}
+
+
///
/// Load XML raw assets from data.
///
@@ -79,9 +82,8 @@ namespace Views
/// A dictionary containing the data loaded.
private static IDictionary> LoadXMLBundledFilesAsync(string path)
{
- //using Stream stream = await FileSystem.Current.OpenAppPackageFileAsync(path);
- DataContractSerializerSettings _dataContractSerializerSettings
- = new DataContractSerializerSettings()
+ DataContractSerializerSettings _dataContractSerializerSettings =
+ new DataContractSerializerSettings()
{
KnownTypes = new Type[]
{
@@ -97,5 +99,29 @@ namespace Views
return data;
}
+
+ ///
+ /// Load JSON raw assets from data.
+ ///
+ /// The path in the raw assets directory.
+ /// A dictionary containing the data loaded.
+ private static IDictionary> LoadJSONBundledFilesAsync(string path)
+ {
+ DataContractJsonSerializerSettings _dataContractJsonSerializerSettings =
+ new DataContractJsonSerializerSettings()
+ {
+ KnownTypes = new Type[]
+ {
+ typeof(Recipe), typeof(RecipeType), typeof(Priority), typeof(Review), typeof(User), typeof(Ingredient), typeof(Quantity)
+ }
+ };
+ var jsonSerializer = new DataContractJsonSerializer(typeof(Dictionary>), _dataContractJsonSerializerSettings);
+ IDictionary> data;
+
+ using Stream stream = FileSystem.Current.OpenAppPackageFileAsync(path).Result;
+ data = jsonSerializer.ReadObject(stream) as IDictionary>;
+
+ return data;
+ }
}
}
diff --git a/MCTG/Views/ContentPages/AddRecipe.xaml.cs b/MCTG/Views/ContentPages/AddRecipe.xaml.cs
index 471a4a1..fa62bdb 100644
--- a/MCTG/Views/ContentPages/AddRecipe.xaml.cs
+++ b/MCTG/Views/ContentPages/AddRecipe.xaml.cs
@@ -57,7 +57,7 @@ namespace Views
if (ImageSource != null)
{
// save the file into local storage
- ImageSourcePath = Path.Combine(FileSystem.Current.AppDataDirectory, $"{TitleRecipe}.{ImageSource.FileName}");
+ ImageSourcePath = Path.Combine(FileSystem.Current.AppDataDirectory, $"{TitleRecipe.Replace(" ", "")}.{ImageSource.FileName}");
using Stream sourceStream = await ImageSource.OpenReadAsync();
using FileStream localFileStream = File.OpenWrite(ImageSourcePath);
@@ -95,7 +95,7 @@ namespace Views
PreparationStepList.Clear();
IngredientList.Clear();
- await Navigation.PopAsync();
+ await Navigation.PopModalAsync();
}
private void AddStepRecipe(object sender, EventArgs e)
diff --git a/MCTG/Views/Resources/Raw/cookies1.jpg b/MCTG/Views/Resources/Raw/cookies1.jpg
new file mode 100644
index 0000000..faa1b31
Binary files /dev/null and b/MCTG/Views/Resources/Raw/cookies1.jpg differ
diff --git a/MCTG/Views/Resources/Raw/cookies2.jpg b/MCTG/Views/Resources/Raw/cookies2.jpg
new file mode 100644
index 0000000..9dd6ca9
Binary files /dev/null and b/MCTG/Views/Resources/Raw/cookies2.jpg differ
diff --git a/MCTG/Views/Resources/Raw/data.json b/MCTG/Views/Resources/Raw/data.json
new file mode 100644
index 0000000..2022b5a
--- /dev/null
+++ b/MCTG/Views/Resources/Raw/data.json
@@ -0,0 +1,376 @@
+[
+ {
+ "Key": "Recipe",
+ "Value": [
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "admin@mctg.fr",
+ "id": 9806,
+ "image": "cookies1.jpg",
+ "ingredient": [
+ {
+ "id": "Patates",
+ "quantity": {
+ "digit": 23,
+ "unit": 0
+ }
+ },
+ {
+ "id": "Farine",
+ "quantity": {
+ "digit": 23,
+ "unit": 3
+ }
+ }
+ ],
+ "preparation-steps": [
+ {
+ "description": "Faire cuire.",
+ "order": 1
+ },
+ {
+ "description": "Manger.",
+ "order": 2
+ }
+ ],
+ "priority": 2,
+ "reviews": [
+ {
+ "authorMail": "admin@mctg.fr",
+ "content": "Bonne recette, je recommande !",
+ "id": 30967,
+ "stars": 4
+ },
+ {
+ "authorMail": "admin@mctg.fr",
+ "content": "Bof bof, mais mangeable...",
+ "id": 27370,
+ "stars": 3
+ }
+ ],
+ "title": "Cookies classiques",
+ "type": 3
+ },
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "admin@mctg.fr",
+ "id": 4678,
+ "image": "cookies2.jpg",
+ "ingredient": [
+ {
+ "id": "Farine",
+ "quantity": {
+ "digit": 200,
+ "unit": 3
+ }
+ }
+ ],
+ "preparation-steps": [
+ {
+ "description": "Moulinez la pâte.",
+ "order": 1
+ },
+ {
+ "description": "Faire cuire pendant une bonne heure.",
+ "order": 2
+ },
+ {
+ "description": "Sortir du four et mettre dans un plat.",
+ "order": 3
+ }
+ ],
+ "priority": 1,
+ "reviews": [],
+ "title": "Cookies au chocolat",
+ "type": 3
+ },
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "admin@mctg.fr",
+ "id": 28213,
+ "image": "room_service_icon.png",
+ "ingredient": [
+ {
+ "id": "Farine",
+ "quantity": {
+ "digit": 200,
+ "unit": 3
+ }
+ },
+ {
+ "id": "Lait",
+ "quantity": {
+ "digit": 2,
+ "unit": 4
+ }
+ }
+ ],
+ "preparation-steps": [
+ {
+ "description": "Achetez les ingrédients.",
+ "order": 1
+ },
+ {
+ "description": "Préparez le matériel. Ustensiles et tout.",
+ "order": 2
+ },
+ {
+ "description": "Pleurez.",
+ "order": 3
+ }
+ ],
+ "priority": 4,
+ "reviews": [
+ {
+ "authorMail": "pedrosamigos@hotmail.com",
+ "content": "C'était vraiment IN-CROY-ABLE !!!",
+ "id": 5127,
+ "stars": 5
+ }
+ ],
+ "title": "Gateau nature",
+ "type": 3
+ },
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "admin@mctg.fr",
+ "id": 27448,
+ "image": "room_service_icon.png",
+ "ingredient": [ ],
+ "preparation-steps": [
+ {
+ "description": "Achetez les légumes.",
+ "order": 1
+ },
+ {
+ "description": "Préparez le plat. Ustensiles et préchauffez le four.",
+ "order": 2
+ },
+ {
+ "description": "Coupez les pommes en morceaux et disposez-les sur le plat.",
+ "order": 3
+ },
+ {
+ "description": "Mettez enfin le plat au four, puis une fois cuit, dégustez !",
+ "order": 4
+ }
+ ],
+ "priority": 3,
+ "reviews": [ ],
+ "title": "Gateau au pommes",
+ "type": 3
+ },
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "pedrosamigos@hotmail.com",
+ "id": 14217,
+ "image": "room_service_icon.png",
+ "ingredient": [
+ {
+ "id": "Mais",
+ "quantity": {
+ "digit": 2,
+ "unit": 1
+ }
+ },
+ {
+ "id": "Sachet pépites de chocolat",
+ "quantity": {
+ "digit": 1,
+ "unit": 0
+ }
+ },
+ {
+ "id": "Dinde",
+ "quantity": {
+ "digit": 2,
+ "unit": 3
+ }
+ }
+ ],
+ "preparation-steps": [
+ {
+ "description": "Ajouter les oeufs.",
+ "order": 1
+ },
+ {
+ "description": "Ajouter la farine.",
+ "order": 2
+ },
+ {
+ "description": "Ajouter 100g de chocolat fondu.",
+ "order": 3
+ },
+ {
+ "description": "Mélanger le tout.",
+ "order": 4
+ },
+ {
+ "description": "Faire cuire 45h au four traditionnel.",
+ "order": 5
+ }
+ ],
+ "priority": 0,
+ "reviews": [ ],
+ "title": "Gateau au chocolat",
+ "type": 3
+ },
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "pedrosamigos@hotmail.com",
+ "id": 3856,
+ "image": "room_service_icon.png",
+ "ingredient": [
+ {
+ "id": "Morceaux de bois",
+ "quantity": {
+ "digit": 2,
+ "unit": 0
+ }
+ },
+ {
+ "id": "Sachet gélatine",
+ "quantity": {
+ "digit": 1,
+ "unit": 0
+ }
+ },
+ {
+ "id": "Jambon",
+ "quantity": {
+ "digit": 2,
+ "unit": 1
+ }
+ }
+ ],
+ "preparation-steps": [
+ {
+ "description": "Faire une cuisson bien sec de la dinde à la poêle",
+ "order": 1
+ },
+ {
+ "description": "Mettre la dinde au frigo.",
+ "order": 2
+ },
+ {
+ "description": "Mettre le jambon dans le micro-onde.",
+ "order": 3
+ },
+ {
+ "description": "Faire chauffer 3min.",
+ "order": 4
+ },
+ {
+ "description": "Présentez sur un plat la dinde et le jambon : Miam !",
+ "order": 5
+ }
+ ],
+ "priority": 2,
+ "reviews": [ ],
+ "title": "Dinde au jambon",
+ "type": 2
+ },
+ {
+ "__type": "recipe:#Model",
+ "authorMail": "pedrosamigos@hotmail.com",
+ "id": 29272,
+ "image": "room_service_icon.png",
+ "ingredient": [
+ {
+ "id": "Pissenlis",
+ "quantity": {
+ "digit": 200,
+ "unit": 0
+ }
+ },
+ {
+ "id": "Boule de pétanque",
+ "quantity": {
+ "digit": 10,
+ "unit": 0
+ }
+ },
+ {
+ "id": "Poivre",
+ "quantity": {
+ "digit": 4,
+ "unit": 2
+ }
+ }
+ ],
+ "preparation-steps": [
+ {
+ "description": "Trouvez des épices de curry.",
+ "order": 1
+ },
+ {
+ "description": "Trouvez maintenant du poulet.",
+ "order": 2
+ },
+ {
+ "description": "Coupez la tête du poulet et posez-la dans un plat.",
+ "order": 3
+ },
+ {
+ "description": "Parsemez d'épices curry la tête de la poule.",
+ "order": 4
+ },
+ {
+ "description": "Mettre le tout au four traditionnel 30min.",
+ "order": 5
+ },
+ {
+ "description": "Dégustez en famille !",
+ "order": 6
+ }
+ ],
+ "priority": 4,
+ "reviews": [
+ {
+ "authorMail": "admin@mctg.fr",
+ "content": "Meilleure recette que j'ai avalé de tout les temps !!!!!!!",
+ "id": 7846,
+ "stars": 5
+ }
+ ],
+ "title": "Poulet au curry",
+ "type": 2
+ }
+ ]
+ },
+ {
+ "Key": "User",
+ "Value": [
+ {
+ "__type": "user:#Model",
+ "hashedpass": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
+ "mail": "admin@mctg.fr",
+ "name": "Admin",
+ "priorities": [
+ 4,
+ 0,
+ 1,
+ 3,
+ 2
+ ],
+ "profilepic": "default_picture.png",
+ "surname": "Admin"
+ },
+ {
+ "__type": "user:#Model",
+ "hashedpass": "df7415f099b2e105822cb6052a0de0a4eb6a4c4060b5ea191bff1271e1c377fa",
+ "mail": "pedrosamigos@hotmail.com",
+ "name": "Pedros",
+ "priorities": [
+ 4,
+ 0,
+ 1,
+ 3,
+ 2
+ ],
+ "profilepic": "default_picture.png",
+ "surname": "Amigos"
+ }
+ ]
+ }
+]
\ No newline at end of file