From 357b7637ceab1d3f60fceb232c620d67e5b36257 Mon Sep 17 00:00:00 2001 From: MaxchilKH Date: Mon, 10 Aug 2020 16:38:25 +0200 Subject: [PATCH] Add specialized objects to model --- .../InternshipSystem.Api.csproj | 5 +---- src/InternshipSystem.Core/Entity/Company.cs | 2 +- .../ValueObject/Mentor.cs | 2 +- src/InternshipSystem.Core/ValueObject/Nip.cs | 18 ++++++++++++++++++ .../ValueObject/PhoneNumber.cs | 18 ++++++++++++++++++ .../InternshipDbContext.cs | 12 +++++++++++- 6 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 src/InternshipSystem.Core/ValueObject/Nip.cs create mode 100644 src/InternshipSystem.Core/ValueObject/PhoneNumber.cs diff --git a/src/InternshipSystem.Api/InternshipSystem.Api.csproj b/src/InternshipSystem.Api/InternshipSystem.Api.csproj index e084254..1252f96 100644 --- a/src/InternshipSystem.Api/InternshipSystem.Api.csproj +++ b/src/InternshipSystem.Api/InternshipSystem.Api.csproj @@ -4,6 +4,7 @@ netcoreapp3.1 true latest + $(NoWarn);1591;1573 @@ -16,10 +17,6 @@ - - - - diff --git a/src/InternshipSystem.Core/Entity/Company.cs b/src/InternshipSystem.Core/Entity/Company.cs index 6b98e0f..ddbeeb4 100644 --- a/src/InternshipSystem.Core/Entity/Company.cs +++ b/src/InternshipSystem.Core/Entity/Company.cs @@ -6,7 +6,7 @@ namespace InternshipSystem.Core public class Company { public long Id { get; set; } - public string Nip { get; set; } + public Nip Nip { get; set; } public string Name { get; set; } public RangeOfActivity Range { get; set; } public List Branches { get; set; } diff --git a/src/InternshipSystem.Core/ValueObject/Mentor.cs b/src/InternshipSystem.Core/ValueObject/Mentor.cs index d7be213..4af5c24 100644 --- a/src/InternshipSystem.Core/ValueObject/Mentor.cs +++ b/src/InternshipSystem.Core/ValueObject/Mentor.cs @@ -5,6 +5,6 @@ public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } - public string PhoneNumber { get; set; } + public PhoneNumber PhoneNumber { get; set; } } } \ No newline at end of file diff --git a/src/InternshipSystem.Core/ValueObject/Nip.cs b/src/InternshipSystem.Core/ValueObject/Nip.cs new file mode 100644 index 0000000..903b59e --- /dev/null +++ b/src/InternshipSystem.Core/ValueObject/Nip.cs @@ -0,0 +1,18 @@ +namespace InternshipSystem.Core +{ + public struct Nip + { + private readonly string _nip; + + public Nip(string nip) + { + _nip = nip; + } + + public static implicit operator string(Nip nip) => + nip._nip; + + public static implicit operator Nip(string maybeNip) => + new Nip(maybeNip); + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Core/ValueObject/PhoneNumber.cs b/src/InternshipSystem.Core/ValueObject/PhoneNumber.cs new file mode 100644 index 0000000..e72d355 --- /dev/null +++ b/src/InternshipSystem.Core/ValueObject/PhoneNumber.cs @@ -0,0 +1,18 @@ +namespace InternshipSystem.Core +{ + public struct PhoneNumber + { + private readonly string _phoneNumber; + + public PhoneNumber(string phoneNumber) + { + _phoneNumber = phoneNumber; + } + + public static implicit operator string(PhoneNumber number) => + number._phoneNumber; + + public static implicit operator PhoneNumber(string maybeNumber) => + new PhoneNumber(maybeNumber); + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index 83ed627..716aef9 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -21,11 +21,21 @@ namespace InternshipSystem.Repository protected override void OnModelCreating(ModelBuilder modelBuilder) { + modelBuilder.Entity() + .Property(company => company.Nip) + .HasConversion( + nip => nip, + s => (Nip)s); + modelBuilder.Entity() .OwnsOne(bo => bo.Address); modelBuilder.Entity() - .OwnsOne(ip => ip.Mentor); + .OwnsOne(ip => ip.Mentor) + .Property(mentor => mentor.PhoneNumber) + .HasConversion( + number => number, + s => (PhoneNumber)s); modelBuilder.Entity(builder => {