diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.Core/Domain/PromoCodeManagement/CustomerPromoCode.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.Core/Domain/PromoCodeManagement/CustomerPromoCode.cs"
index 17f2f2e2..cb6600f8 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.Core/Domain/PromoCodeManagement/CustomerPromoCode.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.Core/Domain/PromoCodeManagement/CustomerPromoCode.cs"	
@@ -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!;
 }
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/CustomerConfiguration.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/CustomerConfiguration.cs"
new file mode 100644
index 00000000..4461c2dd
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/CustomerConfiguration.cs"	
@@ -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);
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/EmployeeConfigurator.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/EmployeeConfigurator.cs"
new file mode 100644
index 00000000..24814fde
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/EmployeeConfigurator.cs"	
@@ -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);
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/PreferenceConfigurator.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/PreferenceConfigurator.cs"
new file mode 100644
index 00000000..9e3c2ae4
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/PreferenceConfigurator.cs"	
@@ -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();
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/PromoCodeConfigurator.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/PromoCodeConfigurator.cs"
new file mode 100644
index 00000000..e63975d3
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/PromoCodeConfigurator.cs"	
@@ -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);
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/RoleResponseConfigurator.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/RoleResponseConfigurator.cs"
new file mode 100644
index 00000000..adebd560
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Configures/RoleResponseConfigurator.cs"	
@@ -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);
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Customer.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Customer.cs"
new file mode 100644
index 00000000..bbad18d9
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Customer.cs"	
@@ -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; } = [];
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/CustomerPromoCode.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/CustomerPromoCode.cs"
new file mode 100644
index 00000000..b2a97301
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/CustomerPromoCode.cs"	
@@ -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!;
+}
\ No newline at end of file
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Employee.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Employee.cs"
new file mode 100644
index 00000000..b0716bb7
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Employee.cs"	
@@ -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; }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Preference.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Preference.cs"
new file mode 100644
index 00000000..5c1f2f63
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Preference.cs"	
@@ -0,0 +1,8 @@
+using PromoCodeFactory.Core.Domain;
+
+namespace PromoCodeFactory.DataAccess.Entities;
+
+public class Preference: BaseEntity
+{
+    public required string Name { get; set; }
+}
\ No newline at end of file
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/PromoCode.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/PromoCode.cs"
new file mode 100644
index 00000000..43990f16
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/PromoCode.cs"	
@@ -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; }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Role.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Role.cs"
new file mode 100644
index 00000000..cefaf58c
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Entities/Role.cs"	
@@ -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; }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/20260415190955_Migr_15_04_2026_22_02_00.Designer.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/20260415190955_Migr_15_04_2026_22_02_00.Designer.cs"
new file mode 100644
index 00000000..723022c2
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/20260415190955_Migr_15_04_2026_22_02_00.Designer.cs"	
@@ -0,0 +1,505 @@
+// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using PromoCodeFactory.DataAccess;
+
+#nullable disable
+
+namespace PromoCodeFactory.DataAccess.Migrations
+{
+    [DbContext(typeof(PromoCodeFactoryDbContext))]
+    [Migration("20260415190955_Migr_15_04_2026_22_02_00")]
+    partial class Migr_15_04_2026_22_02_00
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder.HasAnnotation("ProductVersion", "10.0.3");
+
+            modelBuilder.Entity("CustomerPreference", b =>
+                {
+                    b.Property<Guid>("CustomersId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferencesId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("CustomersId", "PreferencesId");
+
+                    b.HasIndex("PreferencesId");
+
+                    b.ToTable("CustomerPreference");
+                });
+
+            modelBuilder.Entity("CustomerPreferences", b =>
+                {
+                    b.Property<Guid>("CustomerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferencesId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("CustomerId", "PreferencesId");
+
+                    b.HasIndex("PreferencesId");
+
+                    b.ToTable("CustomerPreferences");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.Administration.Employee", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("Employee");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.Administration.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Role");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Customer");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.CustomerPromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset?>("AppliedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("CreatedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("CustomerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PromoCodeId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CustomerId");
+
+                    b.HasIndex("PromoCodeId");
+
+                    b.ToTable("CustomerPromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Preferences", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("BeginDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("EndDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PartnerManagerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("PartnerName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferenceId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ServiceInfo")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PartnerManagerId");
+
+                    b.HasIndex("PreferenceId");
+
+                    b.ToTable("PromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Customer", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Customers", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.CustomerPromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset?>("AppliedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("CreatedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("CustomerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PromoCodeId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CustomerId");
+
+                    b.HasIndex("PromoCodeId");
+
+                    b.ToTable("CustomerPromoCodes");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Employee", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("Employees", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Preference", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Preference");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.PromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("BeginDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("EndDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PartnerManagerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("PartnerName")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferenceId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ServiceInfo")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PartnerManagerId");
+
+                    b.HasIndex("PreferenceId");
+
+                    b.ToTable("PromoCodes", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Roles", (string)null);
+                });
+
+            modelBuilder.Entity("CustomerPreference", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", null)
+                        .WithMany()
+                        .HasForeignKey("CustomersId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference", null)
+                        .WithMany()
+                        .HasForeignKey("PreferencesId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("CustomerPreferences", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Customer", null)
+                        .WithMany()
+                        .HasForeignKey("CustomerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Preference", null)
+                        .WithMany()
+                        .HasForeignKey("PreferencesId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.Administration.Employee", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.Administration.Role", "Role")
+                        .WithMany()
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.CustomerPromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", null)
+                        .WithMany("CustomerPromoCodes")
+                        .HasForeignKey("CustomerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", "PromoCode")
+                        .WithMany("CustomerPromoCodes")
+                        .HasForeignKey("PromoCodeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.Administration.Employee", "PartnerManager")
+                        .WithMany()
+                        .HasForeignKey("PartnerManagerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference", "Preference")
+                        .WithMany()
+                        .HasForeignKey("PreferenceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PartnerManager");
+
+                    b.Navigation("Preference");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.CustomerPromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Customer", null)
+                        .WithMany("CustomerPromoCodes")
+                        .HasForeignKey("CustomerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.PromoCode", "PromoCode")
+                        .WithMany()
+                        .HasForeignKey("PromoCodeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Employee", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Role", "Role")
+                        .WithMany()
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.PromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Employee", "PartnerManager")
+                        .WithMany()
+                        .HasForeignKey("PartnerManagerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Preference", "Preference")
+                        .WithMany()
+                        .HasForeignKey("PreferenceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PartnerManager");
+
+                    b.Navigation("Preference");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", b =>
+                {
+                    b.Navigation("CustomerPromoCodes");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", b =>
+                {
+                    b.Navigation("CustomerPromoCodes");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Customer", b =>
+                {
+                    b.Navigation("CustomerPromoCodes");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/20260415190955_Migr_15_04_2026_22_02_00.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/20260415190955_Migr_15_04_2026_22_02_00.cs"
new file mode 100644
index 00000000..9f0f2fbd
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/20260415190955_Migr_15_04_2026_22_02_00.cs"	
@@ -0,0 +1,212 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace PromoCodeFactory.DataAccess.Migrations
+{
+    /// <inheritdoc />
+    public partial class Migr_15_04_2026_22_02_00 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "Customers",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    FirstName = table.Column<string>(type: "TEXT", nullable: false),
+                    LastName = table.Column<string>(type: "TEXT", nullable: false),
+                    Email = table.Column<string>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Customer", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Preferences",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    Name = table.Column<string>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Preferences", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Roles",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    Name = table.Column<string>(type: "TEXT", maxLength: 50, nullable: false),
+                    Description = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_RoleResponses", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "CustomerPreferences",
+                columns: table => new
+                {
+                    CustomerId = table.Column<Guid>(type: "TEXT", nullable: false),
+                    PreferencesId = table.Column<Guid>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomerPreferences", x => new { x.CustomerId, x.PreferencesId });
+                    table.ForeignKey(
+                        name: "FK_CustomerPreferences_Customers_CustomerId",
+                        column: x => x.CustomerId,
+                        principalTable: "Customers",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomerPreferences_Preference_PreferencesId",
+                        column: x => x.PreferencesId,
+                        principalTable: "Preference",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Employees",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    FirstName = table.Column<string>(type: "TEXT", maxLength: 50, nullable: false),
+                    LastName = table.Column<string>(type: "TEXT", maxLength: 50, nullable: false),
+                    Email = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
+                    RoleId = table.Column<Guid>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Employees", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_Employees_Roles_RoleId",
+                        column: x => x.RoleId,
+                        principalTable: "Roles",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "PromoCodes",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    Code = table.Column<string>(type: "TEXT", maxLength: 50, nullable: false),
+                    ServiceInfo = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
+                    PartnerName = table.Column<string>(type: "TEXT", maxLength: 100, nullable: false),
+                    BeginDate = table.Column<DateTimeOffset>(type: "TEXT", nullable: false),
+                    EndDate = table.Column<DateTimeOffset>(type: "TEXT", nullable: false),
+                    PartnerManagerId = table.Column<Guid>(type: "TEXT", nullable: false),
+                    PreferenceId = table.Column<Guid>(type: "TEXT", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_PromoCodes", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_PromoCodes_Employees_PartnerManagerId",
+                        column: x => x.PartnerManagerId,
+                        principalTable: "Employees",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_PromoCodes_Preference_PreferenceId",
+                        column: x => x.PreferenceId,
+                        principalTable: "Preference",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "CustomerPromoCodes",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "TEXT", nullable: false),
+                    CustomerId = table.Column<Guid>(type: "TEXT", nullable: false),
+                    PromoCodeId = table.Column<Guid>(type: "TEXT", nullable: false),
+                    CreatedAt = table.Column<DateTimeOffset>(type: "TEXT", nullable: false),
+                    AppliedAt = table.Column<DateTimeOffset>(type: "TEXT", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_CustomerPromoCodes", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_CustomerPromoCodes_Customers_CustomerId",
+                        column: x => x.CustomerId,
+                        principalTable: "Customers",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_CustomerPromoCodes_PromoCodes_PromoCodeId",
+                        column: x => x.PromoCodeId,
+                        principalTable: "PromoCodes",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomerPreferences_PreferencesId",
+                table: "CustomerPreferences",
+                column: "PreferencesId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomerPromoCodes_CustomerId",
+                table: "CustomerPromoCodes",
+                column: "CustomerId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_CustomerPromoCodes_PromoCodeId",
+                table: "CustomerPromoCodes",
+                column: "PromoCodeId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_Employees_RoleId",
+                table: "Employees",
+                column: "RoleId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_PromoCodes_PartnerManagerId",
+                table: "PromoCodes",
+                column: "PartnerManagerId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_PromoCodes_PreferenceId",
+                table: "PromoCodes",
+                column: "PreferenceId");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+
+            migrationBuilder.DropTable(
+                name: "CustomerPreferences");
+
+            migrationBuilder.DropTable(
+                name: "CustomerPromoCodes");
+
+            migrationBuilder.DropTable(
+                name: "Customers");
+
+            migrationBuilder.DropTable(
+                name: "PromoCodes");
+
+            migrationBuilder.DropTable(
+                name: "Preferences");
+
+            migrationBuilder.DropTable(
+                name: "Employees");
+
+            migrationBuilder.DropTable(
+                name: "Roles");
+        }
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/PromoCodeFactoryDbContextModelSnapshot.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/PromoCodeFactoryDbContextModelSnapshot.cs"
new file mode 100644
index 00000000..1c9f600a
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Migrations/PromoCodeFactoryDbContextModelSnapshot.cs"	
@@ -0,0 +1,502 @@
+// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using PromoCodeFactory.DataAccess;
+
+#nullable disable
+
+namespace PromoCodeFactory.DataAccess.Migrations
+{
+    [DbContext(typeof(PromoCodeFactoryDbContext))]
+    partial class PromoCodeFactoryDbContextModelSnapshot : ModelSnapshot
+    {
+        protected override void BuildModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder.HasAnnotation("ProductVersion", "10.0.3");
+
+            modelBuilder.Entity("CustomerPreference", b =>
+                {
+                    b.Property<Guid>("CustomersId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferencesId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("CustomersId", "PreferencesId");
+
+                    b.HasIndex("PreferencesId");
+
+                    b.ToTable("CustomerPreference");
+                });
+
+            modelBuilder.Entity("CustomerPreferences", b =>
+                {
+                    b.Property<Guid>("CustomerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferencesId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("CustomerId", "PreferencesId");
+
+                    b.HasIndex("PreferencesId");
+
+                    b.ToTable("CustomerPreferences");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.Administration.Employee", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("Employee");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.Administration.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Role");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Customer");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.CustomerPromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset?>("AppliedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("CreatedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("CustomerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PromoCodeId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CustomerId");
+
+                    b.HasIndex("PromoCodeId");
+
+                    b.ToTable("CustomerPromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Preferences", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("BeginDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("EndDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PartnerManagerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("PartnerName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferenceId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ServiceInfo")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PartnerManagerId");
+
+                    b.HasIndex("PreferenceId");
+
+                    b.ToTable("PromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Customer", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Customers", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.CustomerPromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset?>("AppliedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("CreatedAt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("CustomerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PromoCodeId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CustomerId");
+
+                    b.HasIndex("PromoCodeId");
+
+                    b.ToTable("CustomerPromoCodes");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Employee", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("FirstName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("LastName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("Employees", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Preference", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Preference");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.PromoCode", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("BeginDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.Property<DateTimeOffset>("EndDate")
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PartnerManagerId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("PartnerName")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("TEXT");
+
+                    b.Property<Guid>("PreferenceId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ServiceInfo")
+                        .IsRequired()
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PartnerManagerId");
+
+                    b.HasIndex("PreferenceId");
+
+                    b.ToTable("PromoCodes", (string)null);
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(256)
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("RoleResponses", (string)null);
+                });
+
+            modelBuilder.Entity("CustomerPreference", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", null)
+                        .WithMany()
+                        .HasForeignKey("CustomersId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference", null)
+                        .WithMany()
+                        .HasForeignKey("PreferencesId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("CustomerPreferences", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Customer", null)
+                        .WithMany()
+                        .HasForeignKey("CustomerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Preference", null)
+                        .WithMany()
+                        .HasForeignKey("PreferencesId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.Administration.Employee", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.Administration.Role", "Role")
+                        .WithMany()
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.CustomerPromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", null)
+                        .WithMany("CustomerPromoCodes")
+                        .HasForeignKey("CustomerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", "PromoCode")
+                        .WithMany("CustomerPromoCodes")
+                        .HasForeignKey("PromoCodeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.Core.Domain.Administration.Employee", "PartnerManager")
+                        .WithMany()
+                        .HasForeignKey("PartnerManagerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference", "Preference")
+                        .WithMany()
+                        .HasForeignKey("PreferenceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PartnerManager");
+
+                    b.Navigation("Preference");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.CustomerPromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Customer", null)
+                        .WithMany("CustomerPromoCodes")
+                        .HasForeignKey("CustomerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.PromoCode", "PromoCode")
+                        .WithMany()
+                        .HasForeignKey("PromoCodeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PromoCode");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Employee", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Role", "Role")
+                        .WithMany()
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.PromoCode", b =>
+                {
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Employee", "PartnerManager")
+                        .WithMany()
+                        .HasForeignKey("PartnerManagerId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("PromoCodeFactory.DataAccess.Entities.Preference", "Preference")
+                        .WithMany()
+                        .HasForeignKey("PreferenceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PartnerManager");
+
+                    b.Navigation("Preference");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.Customer", b =>
+                {
+                    b.Navigation("CustomerPromoCodes");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.Core.Domain.PromoCodeManagement.PromoCode", b =>
+                {
+                    b.Navigation("CustomerPromoCodes");
+                });
+
+            modelBuilder.Entity("PromoCodeFactory.DataAccess.Entities.Customer", b =>
+                {
+                    b.Navigation("CustomerPromoCodes");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/PromoCodeFactoryDbContext.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/PromoCodeFactoryDbContext.cs"
index 6b123ea6..ce882bbd 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/PromoCodeFactoryDbContext.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/PromoCodeFactoryDbContext.cs"	
@@ -1,4 +1,7 @@
 using Microsoft.EntityFrameworkCore;
+using PromoCodeFactory.DataAccess.Configures;
+using PromoCodeFactory.DataAccess.Entities;
+using Preference = PromoCodeFactory.Core.Domain.PromoCodeManagement.Preference;
 
 namespace PromoCodeFactory.DataAccess;
 
@@ -9,11 +12,31 @@ public PromoCodeFactoryDbContext(DbContextOptions<PromoCodeFactoryDbContext> opt
     {
     }
 
-    //TODO: Добавить DbSet сущности
+    #region Блок DbSet's
+    public required DbSet<Customer> Customers { get; set; }
+
+    public required DbSet<Employee> Employees { get; set; }
+
+    public required DbSet<Preference> Preferences { get; set; }
+
+    public required DbSet<PromoCode> PromoCodes { get; set; }
+
+    public required DbSet<CustomerPromoCode> CustomerPromoCodes { get; set; }
+
+    public required DbSet<Role> Roles { get; set; }
+    #endregion
 
     protected override void OnModelCreating(ModelBuilder modelBuilder)
     {
-        //TODO: Добавить маппинг моделей
+        modelBuilder.ApplyConfiguration(new CustomerConfiguration());
+
+        modelBuilder.ApplyConfiguration(new EmployeeConfigurator());
+
+        modelBuilder.ApplyConfiguration(new PromoCodeConfigurator());
+
+        modelBuilder.ApplyConfiguration(new RoleResponseConfigurator());
+
+        modelBuilder.ApplyConfiguration(new PreferenceConfigurator());         
 
         base.OnModelCreating(modelBuilder);
     }
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/CustomerEfRepository.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/CustomerEfRepository.cs"
index 01e62105..2eb09935 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/CustomerEfRepository.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/CustomerEfRepository.cs"	
@@ -9,6 +9,11 @@ protected override IQueryable<Customer> ApplyIncludes(IQueryable<Customer> query
     {
         return query
             .Include(c => c.Preferences)
-            .Include(c => c.CustomerPromoCodes);
+            .Include(c => c.CustomerPromoCodes)
+                .ThenInclude(cp => cp.PromoCode)
+                    .ThenInclude(pc => pc.PartnerManager)
+            .Include(c => c.CustomerPromoCodes)
+                .ThenInclude(cp => cp.PromoCode)
+                    .ThenInclude(pc => pc.Preference);
     }
 }
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/EfRepository.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/EfRepository.cs"
index 748b927b..28b010b7 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/EfRepository.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.DataAccess/Repositories/EfRepository.cs"	
@@ -1,46 +1,55 @@
 using System.Linq.Expressions;
+using Microsoft.EntityFrameworkCore;
 using PromoCodeFactory.Core.Abstractions.Repositories;
 using PromoCodeFactory.Core.Domain;
 
 namespace PromoCodeFactory.DataAccess.Repositories;
 
-internal class EfRepository<T>(PromoCodeFactoryDbContext context) : IRepository<T> where T : BaseEntity
+internal class EfRepository<T>(PromoCodeFactoryDbContext _context) : IRepository<T> where T : BaseEntity
 {
     protected virtual IQueryable<T> ApplyIncludes(IQueryable<T> query) => query;
 
-    public Task Add(T entity, CancellationToken ct)
+    public async Task Add(T entity, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        await _context.Set<T>().AddAsync(entity);
+        await _context.SaveChangesAsync();
     }
 
-    public Task Delete(Guid id, CancellationToken ct)
+    public async Task Delete(Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var entity = await _context.Set<T>().FirstOrDefaultAsync(x => x.Id == id);
+        if (entity != null)
+        {
+            _context.Set<T>().Remove(entity);
+            await _context.SaveChangesAsync();
+        }
     }
 
-    public Task<IReadOnlyCollection<T>> GetAll(bool withIncludes = false, CancellationToken ct = default)
+    public async Task<IReadOnlyCollection<T>> GetAll(bool withIncludes = false, CancellationToken ct = default)
     {
-        throw new NotImplementedException();
+        return await _context.Set<T>().ToListAsync();
     }
 
-    public Task<T?> GetById(Guid id, bool withIncludes = false, CancellationToken ct = default)
+    public async Task<T?> GetById(Guid id, bool withIncludes = false, CancellationToken ct = default)
     {
-        throw new NotImplementedException();
+        return await _context.Set<T>().FirstOrDefaultAsync(x => x.Id == id);
     }
 
-    public Task<IReadOnlyCollection<T>> GetByRangeId(IEnumerable<Guid> ids, bool withIncludes = false, CancellationToken ct = default)
+    public async Task<IReadOnlyCollection<T>> GetByRangeId(IEnumerable<Guid> ids, bool withIncludes = false, CancellationToken ct = default)
     {
-        throw new NotImplementedException();
+        var idList = ids.ToList();
+        return await _context.Set<T>().Where(x => idList.Contains(x.Id)).ToListAsync(ct);
     }
 
-    public Task<IReadOnlyCollection<T>> GetWhere(Expression<Func<T, bool>> predicate, bool withIncludes = false, CancellationToken ct = default)
+    public async Task<IReadOnlyCollection<T>> GetWhere(Expression<Func<T, bool>> predicate, bool withIncludes = false, CancellationToken ct = default)
     {
-        throw new NotImplementedException();
+        return await _context.Set<T>().Where(predicate).ToListAsync(ct);
     }
 
-    public Task Update(T entity, CancellationToken ct)
+    public async Task Update(T entity, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        _context.Set<T>().Update(entity);
+        await _context.SaveChangesAsync(ct);
     }
 
 }
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/CustomersController.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/CustomersController.cs"
index 1fbcd4f8..b6b9420d 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/CustomersController.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/CustomersController.cs"	
@@ -1,4 +1,8 @@
 using Microsoft.AspNetCore.Mvc;
+using PromoCodeFactory.Core.Abstractions.Repositories;
+using PromoCodeFactory.Core.Domain.PromoCodeManagement;
+using PromoCodeFactory.Core.Exceptions;
+using PromoCodeFactory.WebHost.Mapping;
 using PromoCodeFactory.WebHost.Models.Customers;
 
 namespace PromoCodeFactory.WebHost.Controllers;
@@ -6,7 +10,10 @@ namespace PromoCodeFactory.WebHost.Controllers;
 /// <summary>
 /// Клиенты
 /// </summary>
-public class CustomersController : BaseController
+public class CustomersController(
+    IRepository<Customer> customerRepository,
+    IRepository<Preference> preferenceRepository
+    ) : BaseController
 {
     /// <summary>
     /// Получить данные всех клиентов
@@ -15,7 +22,11 @@ public class CustomersController : BaseController
     [ProducesResponseType(typeof(IEnumerable<CustomerShortResponse>), StatusCodes.Status200OK)]
     public async Task<ActionResult<IEnumerable<CustomerShortResponse>>> Get(CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var customers = await customerRepository.GetAll(ct: ct);
+
+        var customersModels = customers.Select(CustomersMapper.ToCustomerShortResponse).ToList();
+
+        return Ok(customersModels);
     }
 
     /// <summary>
@@ -26,7 +37,12 @@ public async Task<ActionResult<IEnumerable<CustomerShortResponse>>> Get(Cancella
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
     public async Task<ActionResult<CustomerResponse>> GetById(Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var customer = await customerRepository.GetById(id, true, ct);
+
+        if (customer is null)
+            return NotFound();
+
+        return Ok(CustomersMapper.ToCustomerResponse(customer));
     }
 
     /// <summary>
@@ -37,7 +53,14 @@ public async Task<ActionResult<CustomerResponse>> GetById(Guid id, CancellationT
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)]
     public async Task<ActionResult<CustomerShortResponse>> Create([FromBody] CustomerCreateRequest request, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var preferences = await preferenceRepository.GetByRangeId(request.PreferenceIds, ct: ct);
+        if (preferences.Count != request.PreferenceIds.Length)
+            return BadRequest(new ProblemDetails { Title = "Invalid preferences", Detail = "Some preference IDs were not found." });
+
+        var customer = CustomersMapper.ToCustomer(request, preferences.ToList());
+        await customerRepository.Add(customer, ct);
+
+        return CreatedAtAction(nameof(GetById), new { id = customer.Id }, CustomersMapper.ToCustomerShortResponse(customer));
     }
 
     /// <summary>
@@ -52,7 +75,29 @@ public async Task<ActionResult<CustomerShortResponse>> Update(
         [FromBody] CustomerUpdateRequest request,
         CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var customer = await customerRepository.GetById(id, ct: ct);
+        if (customer is null)
+            return NotFound();
+
+        var preferences = await preferenceRepository.GetByRangeId(request.PreferenceIds, ct: ct);
+        if (preferences.Count != request.PreferenceIds.Length)
+            return BadRequest(new ProblemDetails { Title = "Invalid preferences", Detail = "Some preference IDs were not found." });
+
+        customer.FirstName = request.FirstName;
+        customer.LastName = request.LastName;
+        customer.Email = request.Email;
+        customer.Preferences = preferences.ToList();
+
+        try
+        {
+            await customerRepository.Update(customer, ct);
+        }
+        catch (EntityNotFoundException)
+        {
+            return NotFound();
+        }
+
+        return Ok(CustomersMapper.ToCustomerShortResponse(customer));
     }
 
     /// <summary>
@@ -63,6 +108,15 @@ public async Task<ActionResult<CustomerShortResponse>> Update(
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
     public async Task<IActionResult> Delete(Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        try
+        {
+            await customerRepository.Delete(id, ct);
+        }
+        catch (EntityNotFoundException)
+        {
+            return NotFound();
+        }
+
+        return NoContent();
     }
-}
+}
\ No newline at end of file
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PreferencesController.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PreferencesController.cs"
index 17f8880a..f66a2043 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PreferencesController.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PreferencesController.cs"	
@@ -1,4 +1,7 @@
 using Microsoft.AspNetCore.Mvc;
+using PromoCodeFactory.Core.Abstractions.Repositories;
+using PromoCodeFactory.Core.Domain.PromoCodeManagement;
+using PromoCodeFactory.WebHost.Mapping;
 using PromoCodeFactory.WebHost.Models.Preferences;
 
 namespace PromoCodeFactory.WebHost.Controllers;
@@ -6,7 +9,7 @@ namespace PromoCodeFactory.WebHost.Controllers;
 /// <summary>
 /// Предпочтения
 /// </summary>
-public class PreferencesController : BaseController
+public class PreferencesController(IRepository<Preference> preferenceRepository) : BaseController
 {
     /// <summary>
     /// Получить все доступные предпочтения
@@ -15,6 +18,10 @@ public class PreferencesController : BaseController
     [ProducesResponseType(typeof(IEnumerable<PreferenceShortResponse>), StatusCodes.Status200OK)]
     public async Task<ActionResult<IEnumerable<PreferenceShortResponse>>> Get(CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var preferences = await preferenceRepository.GetAll(ct: ct);
+
+        var preferencesModel = preferences.Select(PreferencesMapper.ToPreferenceShortResponse).ToList();
+
+        return Ok(preferencesModel);
     }
 }
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PromoCodesController.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PromoCodesController.cs"
index e55d5b0e..d02bbde6 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PromoCodesController.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Controllers/PromoCodesController.cs"	
@@ -1,4 +1,8 @@
 using Microsoft.AspNetCore.Mvc;
+using PromoCodeFactory.Core.Abstractions.Repositories;
+using PromoCodeFactory.Core.Domain.PromoCodeManagement;
+using PromoCodeFactory.Core.Exceptions;
+using PromoCodeFactory.WebHost.Mapping;
 using PromoCodeFactory.WebHost.Models.PromoCodes;
 
 namespace PromoCodeFactory.WebHost.Controllers;
@@ -6,7 +10,12 @@ namespace PromoCodeFactory.WebHost.Controllers;
 /// <summary>
 /// Промокоды
 /// </summary>
-public class PromoCodesController : BaseController
+public class PromoCodesController(
+    IRepository<PromoCode> promoCodeRepository,
+    IRepository<Preference> preferenceRepository,
+    IRepository<Employee> employeeRepository,
+    IRepository<Customer> customerRepository
+    ) : BaseController
 {
     /// <summary>
     /// Получить все промокоды
@@ -15,7 +24,11 @@ public class PromoCodesController : BaseController
     [ProducesResponseType(typeof(IEnumerable<PromoCodeShortResponse>), StatusCodes.Status200OK)]
     public async Task<ActionResult<IEnumerable<PromoCodeShortResponse>>> Get(CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var promoCodes = await promoCodeRepository.GetAll(ct: ct);
+
+        var promoCodesModel = promoCodes.Select(PromoCodesMapper.ToPromoCodeShortResponse).ToList();
+
+        return Ok(promoCodesModel);
     }
 
     /// <summary>
@@ -26,7 +39,12 @@ public async Task<ActionResult<IEnumerable<PromoCodeShortResponse>>> Get(Cancell
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
     public async Task<ActionResult<PromoCodeShortResponse>> GetById(Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var promoCode = await promoCodeRepository.GetById(id, true, ct);
+
+        if (promoCode is null)
+            return NotFound();
+
+        return Ok(PromoCodesMapper.ToPromoCodeShortResponse(promoCode));
     }
 
     /// <summary>
@@ -38,7 +56,33 @@ public async Task<ActionResult<PromoCodeShortResponse>> GetById(Guid id, Cancell
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
     public async Task<ActionResult<PromoCodeShortResponse>> Create(PromoCodeCreateRequest request, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var preference = await preferenceRepository.GetById(request.PreferenceId, ct: ct);
+        if (preference is null)
+            return BadRequest(new ProblemDetails { Title = "Invalid preference", Detail = $"Preference with Id {request.PreferenceId} not found." });
+
+        var partnerManager = await employeeRepository.GetById(request.PartnerManagerId, ct: ct);
+        if (partnerManager is null)
+            return BadRequest(new ProblemDetails { Title = "Invalid partner manager", Detail = $"Employee with Id {request.PartnerManagerId} not found." });
+
+        var promoCode = PromoCodesMapper.ToPromoCode(request, preference, partnerManager);
+        await promoCodeRepository.Add(promoCode, ct);
+
+        var customersWithPreference = await customerRepository.GetWhere(c => c.Preferences.Any(p => p.Id == request.PreferenceId), true, ct);
+
+        foreach (var customer in customersWithPreference)
+        {
+            var customerPromoCode = new CustomerPromoCode
+            {
+                Id = Guid.NewGuid(),
+                CustomerId = customer.Id,
+                PromoCodeId = promoCode.Id,
+                CreatedAt = DateTimeOffset.UtcNow
+            };
+            customer.CustomerPromoCodes.Add(customerPromoCode);
+            await customerRepository.Update(customer, ct);
+        }
+
+        return CreatedAtAction(nameof(GetById), new { id = promoCode.Id }, PromoCodesMapper.ToPromoCodeShortResponse(promoCode));
     }
 
     /// <summary>
@@ -53,6 +97,32 @@ public async Task<IActionResult> Apply(
         [FromBody] PromoCodeApplyRequest request,
         CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var promoCode = await promoCodeRepository.GetById(id, true, ct);
+        if (promoCode is null)
+            return NotFound(new ProblemDetails { Title = "PromoCode not found", Detail = $"PromoCode with Id {id} not found." });
+
+        var customer = await customerRepository.GetById(request.CustomerId, true, ct);
+        if (customer is null)
+            return BadRequest(new ProblemDetails { Title = "Invalid customer", Detail = $"Customer with Id {request.CustomerId} not found." });
+
+        var customerPromoCode = customer.CustomerPromoCodes.FirstOrDefault(cp => cp.PromoCodeId == id);
+        if (customerPromoCode is null)
+            return BadRequest(new ProblemDetails { Title = "PromoCode not assigned", Detail = "This promo code was not assigned to the customer." });
+
+        if (customerPromoCode.AppliedAt is not null)
+            return BadRequest(new ProblemDetails { Title = "Already applied", Detail = "This promo code has already been used." });
+
+        customerPromoCode.AppliedAt = DateTimeOffset.UtcNow;
+
+        try
+        {
+            await customerRepository.Update(customer, ct);
+        }
+        catch (EntityNotFoundException)
+        {
+            return NotFound();
+        }
+
+        return NoContent();
     }
-}
+}
\ No newline at end of file
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/CustomersMapper.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/CustomersMapper.cs"
new file mode 100644
index 00000000..928eb424
--- /dev/null
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/CustomersMapper.cs"	
@@ -0,0 +1,40 @@
+using PromoCodeFactory.Core.Domain.PromoCodeManagement;
+using PromoCodeFactory.WebHost.Models.Customers;
+
+namespace PromoCodeFactory.WebHost.Mapping;
+
+public static class CustomersMapper
+{
+    public static CustomerShortResponse ToCustomerShortResponse(Customer customer)
+    {
+        return new CustomerShortResponse(
+            customer.Id,
+            customer.FirstName,
+            customer.LastName,
+            customer.Email,
+            customer.Preferences.Select(PreferencesMapper.ToPreferenceShortResponse).ToList());
+    }
+
+    public static CustomerResponse ToCustomerResponse(Customer customer)
+    {
+        return new CustomerResponse(
+            customer.Id,
+            customer.FirstName,
+            customer.LastName,
+            customer.Email,
+            customer.Preferences.Select(PreferencesMapper.ToPreferenceShortResponse).ToList(),
+            customer.CustomerPromoCodes.Select(PromoCodesMapper.ToCustomerPromoCodeResponse).ToList());
+    }
+
+    public static Customer ToCustomer(CustomerCreateRequest request, List<Preference> preferences)
+    {
+        return new Customer
+        {
+            Id = Guid.NewGuid(),
+            FirstName = request.FirstName,
+            LastName = request.LastName,
+            Email = request.Email,
+            Preferences = preferences
+        };
+    }
+}
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/PromoCodesMapper.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/PromoCodesMapper.cs"
index 44f8ce5d..740b7030 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/PromoCodesMapper.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Mapping/PromoCodesMapper.cs"	
@@ -1,3 +1,4 @@
+using PromoCodeFactory.Core.Domain.Administration;
 using PromoCodeFactory.Core.Domain.PromoCodeManagement;
 using PromoCodeFactory.WebHost.Models.PromoCodes;
 
@@ -17,4 +18,34 @@ public static PromoCodeShortResponse ToPromoCodeShortResponse(PromoCode promoCod
             promoCode.PartnerManager.Id,
             promoCode.Preference.Id);
     }
+
+    public static PromoCode ToPromoCode(PromoCodeCreateRequest request, Preference preference, Employee partnerManager)
+    {
+        return new PromoCode
+        {
+            Id = Guid.NewGuid(),
+            Code = request.Code,
+            ServiceInfo = request.ServiceInfo,
+            PartnerName = request.PartnerName,
+            BeginDate = request.BeginDate,
+            EndDate = request.EndDate,
+            Preference = preference,
+            PartnerManager = partnerManager
+        };
+    }
+
+    public static CustomerPromoCodeResponse ToCustomerPromoCodeResponse(CustomerPromoCode customerPromoCode)
+    {
+        return new CustomerPromoCodeResponse(
+            customerPromoCode.Id,
+            customerPromoCode.PromoCode.Code,
+            customerPromoCode.PromoCode.ServiceInfo,
+            customerPromoCode.PromoCode.PartnerName,
+            customerPromoCode.PromoCode.BeginDate,
+            customerPromoCode.PromoCode.EndDate,
+            customerPromoCode.PromoCode.PartnerManager.Id,
+            customerPromoCode.PromoCode.Preference.Id,
+            customerPromoCode.CreatedAt,
+            customerPromoCode.AppliedAt);
+    }
 }
diff --git "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Program.cs" "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Program.cs"
index 7e082cd6..f058b4dd 100644
--- "a/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Program.cs"	
+++ "b/Homeworks/03 \320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265 \320\261\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205 \321\207\320\265\321\200\320\265\320\267 Entity Framework/src/PromoCodeFactory.WebHost/Program.cs"	
@@ -26,7 +26,7 @@
 
 app.MigrateDatabase();
 
-if (app.Environment.IsDevelopment())
-    await app.SeedDatabase();
+//if (app.Environment.IsDevelopment())
+//    await app.SeedDatabase();
 
 app.Run();
