Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ public class CustomerPromoCode : BaseEntity
public Guid PromoCodeId { get; set; }
public DateTimeOffset CreatedAt { get; set; }
public DateTimeOffset? AppliedAt { get; set; }

public PromoCode PromoCode { get; set; } = null!;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using PromoCodeFactory.DataAccess.Entities;

namespace PromoCodeFactory.DataAccess.Configures;

internal class CustomerConfiguration : IEntityTypeConfiguration<Customer>
{
public void Configure(EntityTypeBuilder<Customer> builder)
{
builder.ToTable("Customers");

builder.Property(x => x.FirstName)
.IsRequired()
.HasMaxLength(50);

builder.Property(x => x.LastName)
.IsRequired()
.HasMaxLength(50);

builder.Property(x => x.Email)
.IsRequired()
.HasMaxLength(256);

builder.HasMany(e => e.Preferences)
.WithMany()
.UsingEntity("CustomerPreferences");

builder.HasMany(e => e.CustomerPromoCodes)
.WithOne()
.HasForeignKey(x => x.CustomerId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using PromoCodeFactory.DataAccess.Entities;

namespace PromoCodeFactory.DataAccess.Configures;

internal class EmployeeConfigurator : IEntityTypeConfiguration<Employee>
{
public void Configure(EntityTypeBuilder<Employee> builder)
{
builder.ToTable("Employees");

builder.Property(x => x.FirstName)
.IsRequired()
.HasMaxLength(50);

builder.Property(x => x.LastName)
.IsRequired()
.HasMaxLength(50);

builder.Property(x => x.Email)
.IsRequired()
.HasMaxLength(256);

builder.HasOne(e => e.Role)
.WithMany()
.HasForeignKey(e => e.RoleId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using PromoCodeFactory.Core.Domain.PromoCodeManagement;

namespace PromoCodeFactory.DataAccess.Configures;

internal class PreferenceConfigurator : IEntityTypeConfiguration<Preference>
{
public void Configure(EntityTypeBuilder<Preference> builder)
{
builder.ToTable("Preferences");

builder.Property(x => x.Name)
.IsRequired();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using PromoCodeFactory.DataAccess.Entities;

namespace PromoCodeFactory.DataAccess.Configures;

internal class PromoCodeConfigurator : IEntityTypeConfiguration<PromoCode>
{
public void Configure(EntityTypeBuilder<PromoCode> builder)
{
builder.ToTable("PromoCodes");

builder.Property(x => x.Code)
.IsRequired()
.HasMaxLength(50);

builder.Property(x => x.ServiceInfo)
.IsRequired()
.HasMaxLength(256);

builder.Property(x => x.PartnerName)
.IsRequired()
.HasMaxLength(100);

builder.HasOne(x => x.PartnerManager)
.WithMany()
.HasForeignKey(x => x.PartnerManagerId);

builder.HasOne(x => x.Preference)
.WithMany()
.HasForeignKey(x => x.PreferenceId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using PromoCodeFactory.DataAccess.Entities;

namespace PromoCodeFactory.DataAccess.Configures;

internal class RoleResponseConfigurator : IEntityTypeConfiguration<Role>
{
public void Configure(EntityTypeBuilder<Role> builder)
{
builder.ToTable("Roles");

builder.Property(x => x.Name)
.IsRequired()
.HasMaxLength(50);

builder.Property(x => x.Description)
.HasMaxLength(256);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using PromoCodeFactory.Core.Domain;
using PromoCodeFactory.Core.Domain.PromoCodeManagement;

namespace PromoCodeFactory.DataAccess.Entities;

public class Customer: BaseEntity
{
public required string FirstName { get; set; }

public required string LastName { get; set; }

public required string Email { get; set; }

public ICollection<Preference> Preferences { get; set; } = [];

public ICollection<CustomerPromoCode> CustomerPromoCodes { get; set; } = [];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using PromoCodeFactory.Core.Domain;

namespace PromoCodeFactory.DataAccess.Entities;

public class CustomerPromoCode: BaseEntity
{
public Guid CustomerId { get; set; }
public Guid PromoCodeId { get; set; }
public DateTimeOffset CreatedAt { get; set; }
public DateTimeOffset? AppliedAt { get; set; }

public PromoCode PromoCode { get; set; } = null!;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using PromoCodeFactory.Core.Domain;

namespace PromoCodeFactory.DataAccess.Entities;

public class Employee: BaseEntity
{
public required string FirstName { get; set; }

public required string LastName { get; set; }

public required string Email { get; set; }

public Guid RoleId { get; set; }

public Role? Role { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using PromoCodeFactory.Core.Domain;

namespace PromoCodeFactory.DataAccess.Entities;

public class Preference: BaseEntity
{
public required string Name { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System.ComponentModel.DataAnnotations.Schema;
using PromoCodeFactory.Core.Domain;
using PromoCodeFactory.Core.Domain.PromoCodeManagement;

namespace PromoCodeFactory.DataAccess.Entities;

public class PromoCode: BaseEntity
{
public required string Code { get; set; }
public required string ServiceInfo { get; set; }
public required string PartnerName { get; set; }
public DateTimeOffset BeginDate { get; set; }
public DateTimeOffset EndDate { get; set; }

public Guid PartnerManagerId { get; set; }
public Guid PreferenceId { get; set; }

public Employee? PartnerManager { get; set; }
public Preference? Preference { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.ComponentModel.DataAnnotations.Schema;
using PromoCodeFactory.Core.Domain;

namespace PromoCodeFactory.DataAccess.Entities;

public class Role : BaseEntity
{
public required string Name { get; set; }
public string? Description { get; set; }
}
Loading