Add specialized objects to model

This commit is contained in:
MaxchilKH 2020-08-10 16:38:25 +02:00
parent 5d2e111d77
commit 357b7637ce
6 changed files with 50 additions and 7 deletions

View File

@ -4,6 +4,7 @@
<TargetFramework>netcoreapp3.1</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<LangVersion>latest</LangVersion>
<NoWarn>$(NoWarn);1591;1573</NoWarn>
</PropertyGroup>
<ItemGroup>
@ -16,10 +17,6 @@
<PackageReference Include="IdentityServer4" Version="3.1.4" />
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="../InternshipSystem.Core/InternshipSystem.Core.csproj" />
<ProjectReference Include="../InternshipSystem.Repository/InternshipSystem.Repository.csproj" />

View File

@ -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<BranchOffice> Branches { get; set; }

View File

@ -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; }
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -21,11 +21,21 @@ namespace InternshipSystem.Repository
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.Property(company => company.Nip)
.HasConversion<string>(
nip => nip,
s => (Nip)s);
modelBuilder.Entity<BranchOffice>()
.OwnsOne(bo => bo.Address);
modelBuilder.Entity<InternshipProgram>()
.OwnsOne(ip => ip.Mentor);
.OwnsOne(ip => ip.Mentor)
.Property(mentor => mentor.PhoneNumber)
.HasConversion<string>(
number => number,
s => (PhoneNumber)s);
modelBuilder.Entity<ProgramSubject>(builder =>
{