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 =>
{