From 48c130faf57acebc92c1b15984deedb26b0b3988 Mon Sep 17 00:00:00 2001 From: Ismail TAHA JANAN Date: Sat, 15 Oct 2022 11:40:28 +0200 Subject: [PATCH] :sparkles: add entities and extentions to dice and faces --- Sources/Data/EF/Dice/ColorDieEntity.cs | 6 ++- Sources/Data/EF/Dice/ColorDieExtensions.cs | 42 ++++++++++++++++--- Sources/Data/EF/Dice/Faces/ColorFaceEntity.cs | 16 +++++-- .../Data/EF/Dice/Faces/ColorFaceExtensions.cs | 24 +++++++++-- Sources/Data/EF/Dice/Faces/ImageFaceEntity.cs | 6 ++- .../Data/EF/Dice/Faces/ImageFaceExtensions.cs | 24 ++++++++++- .../Data/EF/Dice/Faces/NumberFaceEntity.cs | 6 ++- .../EF/Dice/Faces/NumberFaceExtensions.cs | 22 +++++++++- Sources/Data/EF/Dice/ImageDieEntity.cs | 6 ++- Sources/Data/EF/Dice/ImageDieExtensions.cs | 42 ++++++++++++++++--- Sources/Data/EF/Dice/NumberDieEntity.cs | 6 ++- Sources/Data/EF/Dice/NumberDieExtensions.cs | 38 ++++++++++++++++- 12 files changed, 214 insertions(+), 24 deletions(-) diff --git a/Sources/Data/EF/Dice/ColorDieEntity.cs b/Sources/Data/EF/Dice/ColorDieEntity.cs index 1e24696..877914a 100644 --- a/Sources/Data/EF/Dice/ColorDieEntity.cs +++ b/Sources/Data/EF/Dice/ColorDieEntity.cs @@ -1,4 +1,6 @@ -using System; +using Data.EF.Dice.Faces; +using Model.Dice.Faces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +10,7 @@ namespace Data.EF.Dice { public class ColorDieEntity { + public Guid Id { get; set; } + public ICollection Faces { get; set; } } } diff --git a/Sources/Data/EF/Dice/ColorDieExtensions.cs b/Sources/Data/EF/Dice/ColorDieExtensions.cs index a1ce9b9..ba44224 100644 --- a/Sources/Data/EF/Dice/ColorDieExtensions.cs +++ b/Sources/Data/EF/Dice/ColorDieExtensions.cs @@ -1,12 +1,44 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Data.EF.Dice.Faces; +using Model.Dice; +using Model.Dice.Faces; namespace Data.EF.Dice { public static class ColorDieExtensions { + public static ColorDie ToModel(this ColorDieEntity clrDieEntity) + { + /* + * creating an array of faces model + */ + ColorFace[] faces= new ColorFace[clrDieEntity.Faces.Count-1]; + List clrFacesList = (List)ColorFaceExtensions.ToModels(clrDieEntity.Faces); + clrFacesList.CopyTo(faces, 1); + + /* + * creating the die + */ + ColorDie die = new (ColorFaceExtensions.ToModel(clrDieEntity.Faces.ElementAt(0)), faces); + + return die; + } + + public static IEnumerable ToModels(this IEnumerable entities) + { + return entities.Select(entity => ToModel(entity)); + } + + public static ColorDieEntity ToEntity(this ColorDie model) + { + var entity = new ColorDieEntity(); + foreach (var face in model.Faces) { entity.Faces.Add(ColorFaceExtensions.ToEntity((ColorFace)face)); } + return entity; + } + + public static IEnumerable ToEntities(this IEnumerable models) + { + return models.Select(model => model.ToEntity()); + } + } } diff --git a/Sources/Data/EF/Dice/Faces/ColorFaceEntity.cs b/Sources/Data/EF/Dice/Faces/ColorFaceEntity.cs index 200197e..dac1252 100644 --- a/Sources/Data/EF/Dice/Faces/ColorFaceEntity.cs +++ b/Sources/Data/EF/Dice/Faces/ColorFaceEntity.cs @@ -1,4 +1,6 @@ -using System; +using Model.Dice; +using System; +using System.ComponentModel.DataAnnotations.Schema; using System.Drawing; namespace Data.EF.Dice.Faces @@ -7,11 +9,19 @@ namespace Data.EF.Dice.Faces { public Guid ID { get; set; } - public string Value { get; set; } + public byte A { get; set; } + public byte R { get; set; } + public byte G { get; set; } + public byte B { get; set; } + [ForeignKey("ColorDieFK")] + public ColorDie ColorDie { get; set; } public void SetValue(Color c) { - Value = c.ToString(); + A= c.A; + R= c.R; + G= c.G; + B= c.B; } } } diff --git a/Sources/Data/EF/Dice/Faces/ColorFaceExtensions.cs b/Sources/Data/EF/Dice/Faces/ColorFaceExtensions.cs index b03c360..465aa70 100644 --- a/Sources/Data/EF/Dice/Faces/ColorFaceExtensions.cs +++ b/Sources/Data/EF/Dice/Faces/ColorFaceExtensions.cs @@ -10,9 +10,27 @@ namespace Data.EF.Dice.Faces { public static class ColorFaceExtensions { - /*public static ColorFace ToModel(ColorFaceEntity colorFaceEntity) + public static ColorFace ToModel(this ColorFaceEntity clrFaceEntity) { - ColorFace colorFace = new((Color)colorFaceEntity.Value) - }*/ + ColorFace colorFace = new (Color.FromArgb(clrFaceEntity.A, clrFaceEntity.R, clrFaceEntity.G, clrFaceEntity.B)); + return colorFace; + } + + public static IEnumerable ToModels(this IEnumerable entities) + { + return entities.Select(entity => entity.ToModel()); + } + + public static ColorFaceEntity ToEntity(this ColorFace model) + { + return new ColorFaceEntity() { A=model.Value.A,R=model.Value.R,G=model.Value.G,B=model.Value.B }; + } + + public static IEnumerable ToEntities(this IEnumerable models) + { + return models.Select(model => model.ToEntity()); + } + + } } diff --git a/Sources/Data/EF/Dice/Faces/ImageFaceEntity.cs b/Sources/Data/EF/Dice/Faces/ImageFaceEntity.cs index 3142230..a539bf2 100644 --- a/Sources/Data/EF/Dice/Faces/ImageFaceEntity.cs +++ b/Sources/Data/EF/Dice/Faces/ImageFaceEntity.cs @@ -1,5 +1,7 @@ -using System; +using Model.Dice; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,5 +12,7 @@ namespace Data.EF.Dice.Faces { public Guid ID { get; set; } public string Value { get; set; } + [ForeignKey("ImgDieFK")] + public ImageDie ImageDie { get; set; } } } diff --git a/Sources/Data/EF/Dice/Faces/ImageFaceExtensions.cs b/Sources/Data/EF/Dice/Faces/ImageFaceExtensions.cs index 4a0b0d7..c8aeb66 100644 --- a/Sources/Data/EF/Dice/Faces/ImageFaceExtensions.cs +++ b/Sources/Data/EF/Dice/Faces/ImageFaceExtensions.cs @@ -1,4 +1,7 @@ -using System; +using Data.EF.Players; +using Model.Dice.Faces; +using Model.Players; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +11,24 @@ namespace Data.EF.Dice.Faces { public static class ImageFaceExtensions { + public static ImageFace ToModel(this ImageFaceEntity entity) + { + return new ImageFace(new Uri(entity.Value)); + } + + public static IEnumerable ToModels(this IEnumerable entities) + { + return entities.Select(entity => entity.ToModel()); + } + + public static ImageFaceEntity ToEntity(this ImageFace model) + { + return new ImageFaceEntity() { Value = model.Value.ToString() }; + } + + public static IEnumerable ToEntities(this IEnumerable models) + { + return models.Select(model => model.ToEntity()); + } } } diff --git a/Sources/Data/EF/Dice/Faces/NumberFaceEntity.cs b/Sources/Data/EF/Dice/Faces/NumberFaceEntity.cs index ef81113..ac3d7a2 100644 --- a/Sources/Data/EF/Dice/Faces/NumberFaceEntity.cs +++ b/Sources/Data/EF/Dice/Faces/NumberFaceEntity.cs @@ -1,5 +1,7 @@ -using System; +using Model.Dice; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,5 +12,7 @@ namespace Data.EF.Dice.Faces { public Guid Id { get; set; } public int Value { get; set; } + [ForeignKey("NumDieFK")] + public NumberDie NumberDie { get; set; } } } diff --git a/Sources/Data/EF/Dice/Faces/NumberFaceExtensions.cs b/Sources/Data/EF/Dice/Faces/NumberFaceExtensions.cs index 9b31277..f6c3d9e 100644 --- a/Sources/Data/EF/Dice/Faces/NumberFaceExtensions.cs +++ b/Sources/Data/EF/Dice/Faces/NumberFaceExtensions.cs @@ -1,4 +1,5 @@ -using System; +using Model.Dice.Faces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +9,24 @@ namespace Data.EF.Dice.Faces { public static class NumberFaceExtensions { + public static NumberFace ToModel(this NumberFaceEntity entity) + { + return new NumberFace(entity.Value); + } + + public static IEnumerable ToModels(this IEnumerable entities) + { + return entities.Select(entity => entity.ToModel()); + } + + public static NumberFaceEntity ToEntity(this NumberFace model) + { + return new NumberFaceEntity() { Value = model.Value }; + } + + public static IEnumerable ToEntities(this IEnumerable models) + { + return models.Select(model => model.ToEntity()); + } } } diff --git a/Sources/Data/EF/Dice/ImageDieEntity.cs b/Sources/Data/EF/Dice/ImageDieEntity.cs index eec9d11..2b379ef 100644 --- a/Sources/Data/EF/Dice/ImageDieEntity.cs +++ b/Sources/Data/EF/Dice/ImageDieEntity.cs @@ -1,4 +1,6 @@ -using System; +using Data.EF.Dice.Faces; +using Model.Dice.Faces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +10,7 @@ namespace Data.EF.Dice { public class ImageDieEntity { + public Guid Id { get; set; } + public ICollection Faces { get; set; } } } diff --git a/Sources/Data/EF/Dice/ImageDieExtensions.cs b/Sources/Data/EF/Dice/ImageDieExtensions.cs index 797d4aa..a83d2ff 100644 --- a/Sources/Data/EF/Dice/ImageDieExtensions.cs +++ b/Sources/Data/EF/Dice/ImageDieExtensions.cs @@ -1,12 +1,44 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Data.EF.Dice.Faces; +using Model.Dice.Faces; +using Model.Dice; namespace Data.EF.Dice { public static class ImageDieExtensions { + public static ImageDie ToModel(this ImageDieEntity clrDieEntity) + { + /* + * creating an array of faces model + */ + ImageFace[] faces = new ImageFace[clrDieEntity.Faces.Count - 1]; + List clrFacesList = (List)ImageFaceExtensions.ToModels(clrDieEntity.Faces); + clrFacesList.CopyTo(faces, 1); + + + /* + * creating the die + */ + ImageDie die = new( ImageFaceExtensions.ToModel(clrDieEntity.Faces.ElementAt(0)), faces); + + return die; + } + + public static IEnumerable ToModels(this IEnumerable entities) + { + return entities.Select(entity => entity.ToModel()); + } + + public static ImageDieEntity ToEntity(this ImageDie model) + { + var entity = new ImageDieEntity(); + foreach (var face in model.Faces) { entity.Faces.Add(ImageFaceExtensions.ToEntity((ImageFace)face)); } + return entity; + } + + public static IEnumerable ToEntities(this IEnumerable models) + { + return models.Select(model => model.ToEntity()); + } } } diff --git a/Sources/Data/EF/Dice/NumberDieEntity.cs b/Sources/Data/EF/Dice/NumberDieEntity.cs index 8cb1b36..27b1d21 100644 --- a/Sources/Data/EF/Dice/NumberDieEntity.cs +++ b/Sources/Data/EF/Dice/NumberDieEntity.cs @@ -1,4 +1,6 @@ -using System; +using Data.EF.Dice.Faces; +using Model.Dice.Faces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +10,7 @@ namespace Data.EF.Dice { public class NumberDieEntity { + public Guid Id { get; set; } + public ICollection Faces { get; set; } } } diff --git a/Sources/Data/EF/Dice/NumberDieExtensions.cs b/Sources/Data/EF/Dice/NumberDieExtensions.cs index b9a6116..ce49b2c 100644 --- a/Sources/Data/EF/Dice/NumberDieExtensions.cs +++ b/Sources/Data/EF/Dice/NumberDieExtensions.cs @@ -1,4 +1,7 @@ -using System; +using Data.EF.Dice.Faces; +using Model.Dice.Faces; +using Model.Dice; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +11,38 @@ namespace Data.EF.Dice { public static class NumberDieExtensions { + public static NumberDie ToModel(this NumberDieEntity clrDieEntity) + { + /* + * creating an array of faces model + */ + NumberFace[] faces = new NumberFace[clrDieEntity.Faces.Count - 1]; + List clrFacesList = (List)NumberFaceExtensions.ToModels(clrDieEntity.Faces); + clrFacesList.CopyTo(faces, 1); + + /* + * creating the die + */ + NumberDie die = new(NumberFaceExtensions.ToModel(clrDieEntity.Faces.ElementAt(0)), faces); + + return die; + } + + public static IEnumerable ToModels(this IEnumerable entities) + { + return entities.Select(entity => ToModel(entity)); + } + + public static ColorDieEntity ToEntity(this ColorDie model) + { + var entity = new ColorDieEntity(); + foreach (var face in model.Faces) { entity.Faces.Add(ColorFaceExtensions.ToEntity((ColorFace)face)); } + return entity; + } + + public static IEnumerable ToEntities(this IEnumerable models) + { + return models.Select(model => model.ToEntity()); + } } }