Merge pull request 'Chargement de données par défaut si aucune données existe déjà' (#58) from feature/57-raw-assets into dev
continuous-integration/drone/push Build is passing Details

Reviewed-on: #58
pull/60/head
Alexandre AGOSTINHO 2 years ago
commit 842c6af17c

@ -10,19 +10,19 @@ namespace Managers
#region Attributes & Properties
public IDataSerializer Serializer { get; set; }
public Dictionary<string, List<object>> Data { get; private set; }
public IDictionary<string, List<object>> Data { get; private set; }
#endregion
#region Constructors
/// <summary>
/// Constructor of the DataDefaultManager class. Take a IDataManager that will provide methods for the serialisation of the data.
/// </summary>
/// <param name="dataManager">The data manager that know how to serialize a file.</param>
/// <param name="dataSerializer">The data manager that know how to serialize a file.</param>
/// <param name="data">The data set of the application.</param>
public DataDefaultManager(IDataSerializer dataManager,
Dictionary<string, List<object>>? data = null)
public DataDefaultManager(IDataSerializer dataSerializer,
IDictionary<string, List<object>>? data = null)
{
Serializer = dataManager;
Serializer = dataSerializer;
if (data is null)
Data = new Dictionary<string, List<object>>();

@ -22,7 +22,7 @@ namespace Model
/// <summary>
/// The collection of all data. Each line of this dictionary has the type of the data as it key and the data for values.
/// </summary>
Dictionary<string, List<object>> Data { get; }
IDictionary<string, List<object>> Data { get; }
/// <summary>

@ -15,13 +15,13 @@ namespace Model
/// Save all the data in a file.
/// </summary>
/// <param name="elements">The data to save.</param>
void Save(Dictionary<string, List<object>> elements);
void Save(IDictionary<string, List<object>> elements);
/// <summary>
/// Load all the data from a file.
/// </summary>
/// <returns>The data loaded.</returns>
Dictionary<string, List<object>> Load();
IDictionary<string, List<object>> Load();
/// <summary>
/// Import an element to the collection of data.

@ -77,7 +77,7 @@ namespace DataPersistence
return new KeyValuePair<string, T>(typeName, obj);
}
public Dictionary<string, List<object>> Load()
public IDictionary<string, List<object>> Load()
{
Dictionary<string, List<object>>? elements = new Dictionary<string, List<object>>();
var jsonSerializer = new DataContractJsonSerializer(typeof(Dictionary<string, List<object>>), _dataContractJsonSerializerSettings);
@ -92,7 +92,7 @@ namespace DataPersistence
return elements;
}
public void Save(Dictionary<string, List<object>> elements)
public void Save(IDictionary<string, List<object>> elements)
{
var jsonSerializer = new DataContractJsonSerializer(typeof(Dictionary<string, List<object>>), _dataContractJsonSerializerSettings);
using (FileStream stream = File.Create(Path.Combine(_jsonFolderPath, "data.json")))

@ -87,7 +87,7 @@ namespace DataPersistence
return new KeyValuePair<string, T>(typeName, obj);
}
public Dictionary<string, List<object>> Load()
public IDictionary<string, List<object>> Load()
{
Dictionary<string, List<object>>? elements;
var serializer = new DataContractSerializer(typeof(Dictionary<string, List<object>>), _dataContractSerializerSettings);
@ -102,7 +102,7 @@ namespace DataPersistence
return elements;
}
public void Save(Dictionary<string, List<object>> elements)
public void Save(IDictionary<string, List<object>> elements)
{
var serializer = new DataContractSerializer(typeof(Dictionary<string, List<object>>), _dataContractSerializerSettings);
using (TextWriter textWriter = File.CreateText(Path.Combine(_xmlFolderPath, "data.xml")))

@ -13,7 +13,7 @@ namespace FakePersistance
{
private IPasswordManager psswdMgr = new PasswordSHA256Manager();
public Dictionary<string, List<object>> Load()
public IDictionary<string, List<object>> Load()
{
Dictionary<string, List<object>> data = new Dictionary<string, List<object>>
{
@ -186,7 +186,7 @@ namespace FakePersistance
}
#region Not supported methods
public void Save(Dictionary<string, List<object>> elements)
public void Save(IDictionary<string, List<object>> elements)
{
throw new NotSupportedException();
}

@ -3,6 +3,8 @@ using FakePersistance;
using DataPersistence;
using Managers;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Diagnostics.CodeAnalysis;
namespace Views
{
@ -26,9 +28,17 @@ namespace Views
: new DataContractJSON(path);
// Initialize the data manager
IDataManager dataManager = (!File.Exists(Path.Combine(path, $"data.{strategy}"))) ?
new DataDefaultManager(new Stubs())
: new DataDefaultManager(dataSerializer);
IDataManager dataManager;
if (!File.Exists(Path.Combine(path, $"data.{strategy}")))
{
var data = LoadXMLBundledFilesAsync("data.xml");
dataManager = new DataDefaultManager(dataSerializer, data);
}
else
{
dataManager = new DataDefaultManager(dataSerializer);
dataManager.LoadData();
}
// Initialize the other managers
IRecipeManager recipeManager = new RecipeDefaultManager(dataManager);
@ -37,16 +47,9 @@ namespace Views
// Initialize the master manager
Master = new MasterManager(dataManager, recipeManager, userManager);
Master.Setup();
// Change the data serializer if the one in place is 'Stubs'
if (Master.Data.Serializer.GetType() == typeof(Stubs))
{
Master.Data.Serializer = dataSerializer;
}
// Save data.
Debug.Write("[ --SAVE-- ]:\t");
Debug.Write($"[ {DateTime.Now:H:mm:ss} ] Saving...\t");
Master.Data.SaveData();
Debug.WriteLine("Done.");
@ -59,7 +62,7 @@ namespace Views
protected override void OnSleep()
{
// Save data.
Debug.Write("[ --SAVE-- ]:\t");
Debug.Write($"[ {DateTime.Now:H:mm:ss} ] Saving...\t");
Master.Data.SaveData();
Debug.WriteLine("Done.");
@ -67,5 +70,31 @@ namespace Views
base.OnSleep();
}
/// <summary>
/// Load XML raw assets from data.
/// </summary>
/// <param name="path">The path in the raw assets directory.</param>
/// <returns>A dictionary containing the data loaded.</returns>
private static IDictionary<string, List<object>> LoadXMLBundledFilesAsync(string path)
{
//using Stream stream = await FileSystem.Current.OpenAppPackageFileAsync(path);
DataContractSerializerSettings _dataContractSerializerSettings
= new DataContractSerializerSettings()
{
KnownTypes = new Type[]
{
typeof(Recipe), typeof(RecipeType), typeof(Priority), typeof(Review), typeof(User), typeof(Ingredient), typeof(Quantity)
},
PreserveObjectReferences = true
};
var serializer = new DataContractSerializer(typeof(Dictionary<string, List<object>>), _dataContractSerializerSettings);
IDictionary<string, List<Object>> data;
using Stream stream = FileSystem.Current.OpenAppPackageFileAsync(path).Result;
data = serializer.ReadObject(stream) as IDictionary<string, List<Object>>;
return data;
}
}
}

@ -0,0 +1,368 @@
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfKeyValueOfstringArrayOfanyTypety7Ep6D1 xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" z:Size="2" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<KeyValueOfstringArrayOfanyTypety7Ep6D1>
<Key z:Id="2">Recipe</Key>
<Value z:Id="3" z:Size="7">
<anyType z:Id="4" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Id="5">admin@mctg.fr</d4p1:authorMail>
<d4p1:id>9806</d4p1:id>
<d4p1:image z:Id="6">room_service_icon.png</d4p1:image>
<d4p1:ingredient z:Id="7" z:Size="2">
<d4p1:ingredient z:Id="8">
<d4p1:id z:Id="9">Patates</d4p1:id>
<d4p1:quantity z:Id="10">
<d4p1:digit>23</d4p1:digit>
<d4p1:unit>unit</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="11">
<d4p1:id z:Id="12">Farine</d4p1:id>
<d4p1:quantity z:Id="13">
<d4p1:digit>23</d4p1:digit>
<d4p1:unit>G</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
</d4p1:ingredient>
<d4p1:preparation-steps z:Id="14" z:Size="2">
<d4p1:preparation-step z:Id="15">
<d4p1:description z:Id="16">Faire cuire.</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="17">
<d4p1:description z:Id="18">Manger.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Easy</d4p1:priority>
<d4p1:reviews z:Id="19" z:Size="2">
<d4p1:review z:Id="20">
<d4p1:authorMail z:Ref="5" i:nil="true" />
<d4p1:content z:Id="21">Bonne recette, je recommande !</d4p1:content>
<d4p1:id>30967</d4p1:id>
<d4p1:stars>4</d4p1:stars>
</d4p1:review>
<d4p1:review z:Id="22">
<d4p1:authorMail z:Ref="5" i:nil="true" />
<d4p1:content z:Id="23">Bof bof, mais mangeable...</d4p1:content>
<d4p1:id>27370</d4p1:id>
<d4p1:stars>3</d4p1:stars>
</d4p1:review>
</d4p1:reviews>
<d4p1:title z:Id="24">Cookies classiques</d4p1:title>
<d4p1:type>Dessert</d4p1:type>
</anyType>
<anyType z:Id="25" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Ref="5" i:nil="true" />
<d4p1:id>4678</d4p1:id>
<d4p1:image z:Ref="6" i:nil="true" />
<d4p1:ingredient z:Id="26" z:Size="1">
<d4p1:ingredient z:Id="27">
<d4p1:id z:Ref="12" i:nil="true" />
<d4p1:quantity z:Id="28">
<d4p1:digit>200</d4p1:digit>
<d4p1:unit>G</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
</d4p1:ingredient>
<d4p1:preparation-steps z:Id="29" z:Size="3">
<d4p1:preparation-step z:Id="30">
<d4p1:description z:Id="31">Moulinez la pâte.</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="32">
<d4p1:description z:Id="33">Faire cuire pendant une bonne heure.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="34">
<d4p1:description z:Id="35">Sortir du four et mettre dans un plat.</d4p1:description>
<d4p1:order>3</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Fast</d4p1:priority>
<d4p1:reviews z:Id="36" z:Size="0" />
<d4p1:title z:Id="37">Cookies au chocolat</d4p1:title>
<d4p1:type>Dessert</d4p1:type>
</anyType>
<anyType z:Id="38" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Ref="5" i:nil="true" />
<d4p1:id>28213</d4p1:id>
<d4p1:image z:Ref="6" i:nil="true" />
<d4p1:ingredient z:Id="39" z:Size="2">
<d4p1:ingredient z:Id="40">
<d4p1:id z:Ref="12" i:nil="true" />
<d4p1:quantity z:Id="41">
<d4p1:digit>200</d4p1:digit>
<d4p1:unit>G</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="42">
<d4p1:id z:Id="43">Lait</d4p1:id>
<d4p1:quantity z:Id="44">
<d4p1:digit>2</d4p1:digit>
<d4p1:unit>L</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
</d4p1:ingredient>
<d4p1:preparation-steps z:Id="45" z:Size="3">
<d4p1:preparation-step z:Id="46">
<d4p1:description z:Id="47">Achetez les ingrédients.</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="48">
<d4p1:description z:Id="49">Préparez le matériel. Ustensiles et tout.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="50">
<d4p1:description z:Id="51">Pleurez.</d4p1:description>
<d4p1:order>3</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Gourmet</d4p1:priority>
<d4p1:reviews z:Id="52" z:Size="1">
<d4p1:review z:Id="53">
<d4p1:authorMail z:Id="54">pedrosamigos@hotmail.com</d4p1:authorMail>
<d4p1:content z:Id="55">C'était vraiment IN-CROY-ABLE !!!</d4p1:content>
<d4p1:id>5127</d4p1:id>
<d4p1:stars>5</d4p1:stars>
</d4p1:review>
</d4p1:reviews>
<d4p1:title z:Id="56">Gateau nature</d4p1:title>
<d4p1:type>Dessert</d4p1:type>
</anyType>
<anyType z:Id="57" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Ref="5" i:nil="true" />
<d4p1:id>27448</d4p1:id>
<d4p1:image z:Ref="6" i:nil="true" />
<d4p1:ingredient z:Id="58" z:Size="0" />
<d4p1:preparation-steps z:Id="59" z:Size="4">
<d4p1:preparation-step z:Id="60">
<d4p1:description z:Id="61">Achetez les légumes.</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="62">
<d4p1:description z:Id="63">Préparez le plat. Ustensiles et préchauffez le four.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="64">
<d4p1:description z:Id="65">Coupez les pommes en morceaux et disposez-les sur le plat.</d4p1:description>
<d4p1:order>3</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="66">
<d4p1:description z:Id="67">Mettez enfin le plat au four, puis une fois cuit, dégustez !</d4p1:description>
<d4p1:order>4</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Light</d4p1:priority>
<d4p1:reviews z:Id="68" z:Size="0" />
<d4p1:title z:Id="69">Gateau au pommes</d4p1:title>
<d4p1:type>Dessert</d4p1:type>
</anyType>
<anyType z:Id="70" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Ref="54" i:nil="true" />
<d4p1:id>14217</d4p1:id>
<d4p1:image z:Ref="6" i:nil="true" />
<d4p1:ingredient z:Id="71" z:Size="3">
<d4p1:ingredient z:Id="72">
<d4p1:id z:Id="73">Mais</d4p1:id>
<d4p1:quantity z:Id="74">
<d4p1:digit>2</d4p1:digit>
<d4p1:unit>kG</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="75">
<d4p1:id z:Id="76">Sachet pépites de chocolat</d4p1:id>
<d4p1:quantity z:Id="77">
<d4p1:digit>1</d4p1:digit>
<d4p1:unit>unit</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="78">
<d4p1:id z:Id="79">Dinde</d4p1:id>
<d4p1:quantity z:Id="80">
<d4p1:digit>2</d4p1:digit>
<d4p1:unit>G</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
</d4p1:ingredient>
<d4p1:preparation-steps z:Id="81" z:Size="5">
<d4p1:preparation-step z:Id="82">
<d4p1:description z:Id="83">Ajouter les oeufs.</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="84">
<d4p1:description z:Id="85">Ajouter la farine.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="86">
<d4p1:description z:Id="87">Ajouter 100g de chocolat fondu.</d4p1:description>
<d4p1:order>3</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="88">
<d4p1:description z:Id="89">Mélanger le tout.</d4p1:description>
<d4p1:order>4</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="90">
<d4p1:description z:Id="91">Faire cuire 45h au four traditionnel.</d4p1:description>
<d4p1:order>5</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Economic</d4p1:priority>
<d4p1:reviews z:Id="92" z:Size="0" />
<d4p1:title z:Id="93">Gateau au chocolat</d4p1:title>
<d4p1:type>Dessert</d4p1:type>
</anyType>
<anyType z:Id="94" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Ref="54" i:nil="true" />
<d4p1:id>3856</d4p1:id>
<d4p1:image z:Ref="6" i:nil="true" />
<d4p1:ingredient z:Id="95" z:Size="3">
<d4p1:ingredient z:Id="96">
<d4p1:id z:Id="97">Morceaux de bois</d4p1:id>
<d4p1:quantity z:Id="98">
<d4p1:digit>2</d4p1:digit>
<d4p1:unit>unit</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="99">
<d4p1:id z:Id="100">Sachet gélatine</d4p1:id>
<d4p1:quantity z:Id="101">
<d4p1:digit>1</d4p1:digit>
<d4p1:unit>unit</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="102">
<d4p1:id z:Id="103">Jambon</d4p1:id>
<d4p1:quantity z:Id="104">
<d4p1:digit>2</d4p1:digit>
<d4p1:unit>kG</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
</d4p1:ingredient>
<d4p1:preparation-steps z:Id="105" z:Size="5">
<d4p1:preparation-step z:Id="106">
<d4p1:description z:Id="107">Faire une cuisson bien sec de la dinde à la poêle</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="108">
<d4p1:description z:Id="109">Mettre la dinde au frigo.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="110">
<d4p1:description z:Id="111">Mettre le jambon dans le micro-onde.</d4p1:description>
<d4p1:order>3</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="112">
<d4p1:description z:Id="113">Faire chauffer 3min.</d4p1:description>
<d4p1:order>4</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="114">
<d4p1:description z:Id="115">Présentez sur un plat la dinde et le jambon : Miam !</d4p1:description>
<d4p1:order>5</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Easy</d4p1:priority>
<d4p1:reviews z:Id="116" z:Size="0" />
<d4p1:title z:Id="117">Dinde au jambon</d4p1:title>
<d4p1:type>Dish</d4p1:type>
</anyType>
<anyType z:Id="118" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:recipe">
<d4p1:authorMail z:Ref="54" i:nil="true" />
<d4p1:id>29272</d4p1:id>
<d4p1:image z:Ref="6" i:nil="true" />
<d4p1:ingredient z:Id="119" z:Size="3">
<d4p1:ingredient z:Id="120">
<d4p1:id z:Id="121">Pissenlis</d4p1:id>
<d4p1:quantity z:Id="122">
<d4p1:digit>200</d4p1:digit>
<d4p1:unit>unit</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="123">
<d4p1:id z:Id="124">Boule de pétanque</d4p1:id>
<d4p1:quantity z:Id="125">
<d4p1:digit>10</d4p1:digit>
<d4p1:unit>unit</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
<d4p1:ingredient z:Id="126">
<d4p1:id z:Id="127">Poivre</d4p1:id>
<d4p1:quantity z:Id="128">
<d4p1:digit>4</d4p1:digit>
<d4p1:unit>mG</d4p1:unit>
</d4p1:quantity>
</d4p1:ingredient>
</d4p1:ingredient>
<d4p1:preparation-steps z:Id="129" z:Size="6">
<d4p1:preparation-step z:Id="130">
<d4p1:description z:Id="131">Trouvez des épices de curry.</d4p1:description>
<d4p1:order>1</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="132">
<d4p1:description z:Id="133">Trouvez maintenant du poulet.</d4p1:description>
<d4p1:order>2</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="134">
<d4p1:description z:Id="135">Coupez la tête du poulet et posez-la dans un plat.</d4p1:description>
<d4p1:order>3</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="136">
<d4p1:description z:Id="137">Parsemez d'épices curry la tête de la poule.</d4p1:description>
<d4p1:order>4</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="138">
<d4p1:description z:Id="139">Mettre le tout au four traditionnel 30min.</d4p1:description>
<d4p1:order>5</d4p1:order>
</d4p1:preparation-step>
<d4p1:preparation-step z:Id="140">
<d4p1:description z:Id="141">Dégustez en famille !</d4p1:description>
<d4p1:order>6</d4p1:order>
</d4p1:preparation-step>
</d4p1:preparation-steps>
<d4p1:priority>Gourmet</d4p1:priority>
<d4p1:reviews z:Id="142" z:Size="1">
<d4p1:review z:Id="143">
<d4p1:authorMail z:Ref="5" i:nil="true" />
<d4p1:content z:Id="144">Meilleure recette que j'ai avalé de tout les temps !!!!!!!</d4p1:content>
<d4p1:id>7846</d4p1:id>
<d4p1:stars>5</d4p1:stars>
</d4p1:review>
</d4p1:reviews>
<d4p1:title z:Id="145">Poulet au curry</d4p1:title>
<d4p1:type>Dish</d4p1:type>
</anyType>
</Value>
</KeyValueOfstringArrayOfanyTypety7Ep6D1>
<KeyValueOfstringArrayOfanyTypety7Ep6D1>
<Key z:Id="146">User</Key>
<Value z:Id="147" z:Size="2">
<anyType z:Id="148" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:user">
<d4p1:hashedpass z:Id="149">8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918</d4p1:hashedpass>
<d4p1:mail z:Ref="5" i:nil="true" />
<d4p1:name z:Id="150">Admin</d4p1:name>
<d4p1:priorities z:Id="151" z:Size="5">
<d4p1:Priority>Gourmet</d4p1:Priority>
<d4p1:Priority>Economic</d4p1:Priority>
<d4p1:Priority>Fast</d4p1:Priority>
<d4p1:Priority>Light</d4p1:Priority>
<d4p1:Priority>Easy</d4p1:Priority>
</d4p1:priorities>
<d4p1:profilepic z:Id="152">default_picture.png</d4p1:profilepic>
<d4p1:surname z:Ref="150" i:nil="true" />
</anyType>
<anyType z:Id="153" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Model" i:type="d4p1:user">
<d4p1:hashedpass z:Id="154">df7415f099b2e105822cb6052a0de0a4eb6a4c4060b5ea191bff1271e1c377fa</d4p1:hashedpass>
<d4p1:mail z:Ref="54" i:nil="true" />
<d4p1:name z:Id="155">Pedros</d4p1:name>
<d4p1:priorities z:Id="156" z:Size="5">
<d4p1:Priority>Gourmet</d4p1:Priority>
<d4p1:Priority>Economic</d4p1:Priority>
<d4p1:Priority>Fast</d4p1:Priority>
<d4p1:Priority>Light</d4p1:Priority>
<d4p1:Priority>Easy</d4p1:Priority>
</d4p1:priorities>
<d4p1:profilepic z:Ref="152" i:nil="true" />
<d4p1:surname z:Id="157">Amigos</d4p1:surname>
</anyType>
</Value>
</KeyValueOfstringArrayOfanyTypety7Ep6D1>
</ArrayOfKeyValueOfstringArrayOfanyTypety7Ep6D1>
Loading…
Cancel
Save