using DTOs; using Entities; using Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ExtensionsClassLibrairie { /// /// define some methods to manipulate entity, model and dto adminstrators : /// convert model to DTO, model to Entity, ... /// and equality protocols /// public static class AdministratorExtensionMethods { // conversion methods public static Administrator ToModel(this AdministratorEntity a) => new Administrator(a.Username, a.HashedPassword, a.Id); public static Administrator ToModel(this AdministratorDto a) => new Administrator(a.Username, a.HashedPassword, a.Id); public static AdministratorDto ToDto(this Administrator a) => new AdministratorDto { Id = a.Id, HashedPassword = a.HashedPassword, Username = a.Username }; public static AdministratorEntity ToEntity(this Administrator a) => new AdministratorEntity { Id = a.Id, HashedPassword = a.HashedPassword, Username = a.Username }; // reuse other methods public static AdministratorDto ToDto(this AdministratorEntity a) => a.ToModel().ToDto(); public static AdministratorEntity ToEntity(this AdministratorDto a) => a.ToModel().ToEntity(); // equality protocols public static bool Equals(Administrator a1, Administrator a2) => a1.Username == a2.Username; // reuse other methods public static bool Equals(Administrator a1, AdministratorDto a2) => Equals(a1, a2.ToModel()); public static bool Equals(Administrator a1, AdministratorEntity a2) => Equals(a1, a2.ToModel()); public static bool Equals(AdministratorDto a1, Administrator a2) => Equals(a1.ToModel(), a2); public static bool Equals(AdministratorDto a1, AdministratorDto a2) => Equals(a1.ToModel(), a2.ToModel()); public static bool Equals(AdministratorDto a1, AdministratorEntity a2) => Equals(a1.ToModel(), a2.ToModel()); public static bool Equals(AdministratorEntity a1, Administrator a2) => Equals(a1.ToModel(), a2); public static bool Equals(AdministratorEntity a1, AdministratorDto a2) => Equals(a1.ToModel(), a2.ToModel()); public static bool Equals(AdministratorEntity a1, AdministratorEntity a2) => Equals(a1.ToModel(), a2.ToModel()); /// /// equality protocol for an administrator /// /// the administrator /// an object /// true if the administrator and the object are sames, false otherwise public static bool Equals(this Administrator a, object? o) { if (o == null) return false; if (o.GetType() == typeof(Administrator)) return Equals(a, (Administrator)o); else if (o.GetType() == typeof(AdministratorEntity)) return Equals(a, ((AdministratorEntity)o)); else if (o.GetType() == typeof(AdministratorDto)) return Equals(a, (AdministratorDto)o); return false; } /// /// equality protocol for an administrator entity /// /// the administrator entity /// an object /// true if the administrator entity and the object are sames, false otherwise public static bool Equals(this AdministratorEntity a, object? o) { if (o == null) return false; if (o.GetType() == typeof(Administrator)) return Equals(a, (Administrator)o); else if (o.GetType() == typeof(AdministratorEntity)) return Equals(a, ((AdministratorEntity)o)); else if (o.GetType() == typeof(AdministratorDto)) return Equals(a, (AdministratorDto)o); return false; } /// /// equality protocol for an administrator dto /// /// the administrator dto /// an object /// true if the administrator dto and the object are sames, false otherwise public static bool Equals(this AdministratorDto a, object? o) { if (o == null) return false; if (o.GetType() == typeof(Administrator)) return Equals(a, (Administrator)o); else if (o.GetType() == typeof(AdministratorEntity)) return Equals(a, ((AdministratorEntity)o)); else if (o.GetType() == typeof(AdministratorDto)) return Equals(a, (AdministratorDto)o); return false; } } }