// 
using System;
using Infrastructure.Database;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Infrastructure.Migrations
{
    [DbContext(typeof(DatabaseContext))]
    [Migration("20251005135608_PendingChanges")]
    partial class PendingChanges
    {
        /// 
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.2")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
            modelBuilder.Entity("Domains.ApplicantDomain.Applicant", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid");
                    b.Property("BirthDate")
                        .HasColumnType("timestamp without time zone");
                    b.Property("Citizenship")
                        .IsRequired()
                        .HasMaxLength(50)
                        .IsUnicode(false)
                        .HasColumnType("character varying(50)");
                    b.Property("CitizenshipByBirth")
                        .IsRequired()
                        .HasMaxLength(50)
                        .IsUnicode(false)
                        .HasColumnType("character varying(50)");
                    b.Property("CityOfBirth")
                        .IsRequired()
                        .HasMaxLength(70)
                        .IsUnicode(false)
                        .HasColumnType("character varying(70)");
                    b.Property("CountryOfBirth")
                        .IsRequired()
                        .HasMaxLength(70)
                        .IsUnicode(false)
                        .HasColumnType("character varying(70)");
                    b.Property("Gender")
                        .HasColumnType("integer");
                    b.Property("IsNonResident")
                        .HasColumnType("boolean");
                    b.Property("JobTitle")
                        .IsRequired()
                        .HasMaxLength(50)
                        .IsUnicode(false)
                        .HasColumnType("character varying(50)");
                    b.Property("MaritalStatus")
                        .HasColumnType("integer");
                    b.Property("PlaceOfWorkId")
                        .HasColumnType("uuid");
                    b.Property("UserId")
                        .HasColumnType("uuid");
                    b.HasKey("Id");
                    b.HasIndex("PlaceOfWorkId");
                    b.HasIndex("UserId")
                        .IsUnique();
                    b.ToTable("Applicant");
                });
            modelBuilder.Entity("Domains.ApplicantDomain.PlaceOfWork", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid");
                    b.Property("Name")
                        .IsRequired()
                        .HasMaxLength(200)
                        .IsUnicode(false)
                        .HasColumnType("character varying(200)");
                    b.Property("PhoneNum")
                        .IsRequired()
                        .HasMaxLength(13)
                        .IsUnicode(false)
                        .HasColumnType("character varying(13)");
                    b.HasKey("Id");
                    b.ToTable("PlaceOfWork");
                });
            modelBuilder.Entity("Domains.Users.User", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid");
                    b.Property("Email")
                        .IsRequired()
                        .HasMaxLength(254)
                        .IsUnicode(false)
                        .HasColumnType("character varying(254)");
                    b.Property("Password")
                        .IsRequired()
                        .HasMaxLength(50)
                        .IsUnicode(false)
                        .HasColumnType("character varying(50)");
                    b.Property("Role")
                        .HasColumnType("integer");
                    b.HasKey("Id");
                    b.HasIndex("Email")
                        .IsUnique();
                    b.ToTable("User");
                });
            modelBuilder.Entity("Domains.VisaApplicationDomain.VisaApplication", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uuid");
                    b.Property("ApplicantId")
                        .HasColumnType("uuid");
                    b.Property("DestinationCountry")
                        .IsRequired()
                        .HasMaxLength(70)
                        .IsUnicode(false)
                        .HasColumnType("character varying(70)");
                    b.Property("ForGroup")
                        .HasColumnType("boolean");
                    b.Property("RequestDate")
                        .HasColumnType("timestamp without time zone");
                    b.Property("RequestedNumberOfEntries")
                        .HasColumnType("integer");
                    b.Property("Status")
                        .HasColumnType("integer");
                    b.Property("ValidDaysRequested")
                        .HasColumnType("integer");
                    b.Property("VisaCategory")
                        .HasColumnType("integer");
                    b.HasKey("Id");
                    b.HasIndex("ApplicantId");
                    b.ToTable("VisaApplication");
                });
            modelBuilder.Entity("Domains.ApplicantDomain.Applicant", b =>
                {
                    b.HasOne("Domains.ApplicantDomain.PlaceOfWork", "PlaceOfWork")
                        .WithMany()
                        .HasForeignKey("PlaceOfWorkId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("Domains.Users.User", null)
                        .WithOne()
                        .HasForeignKey("Domains.ApplicantDomain.Applicant", "UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.OwnsOne("Domains.ApplicantDomain.Name", "FatherName", b1 =>
                        {
                            b1.Property("ApplicantId")
                                .HasColumnType("uuid");
                            b1.Property("FirstName")
                                .IsRequired()
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.Property("Patronymic")
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.Property("Surname")
                                .IsRequired()
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.HasKey("ApplicantId");
                            b1.ToTable("Applicant");
                            b1.WithOwner()
                                .HasForeignKey("ApplicantId");
                        });
                    b.OwnsOne("Domains.ApplicantDomain.Name", "MotherName", b1 =>
                        {
                            b1.Property("ApplicantId")
                                .HasColumnType("uuid");
                            b1.Property("FirstName")
                                .IsRequired()
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.Property("Patronymic")
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.Property("Surname")
                                .IsRequired()
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.HasKey("ApplicantId");
                            b1.ToTable("Applicant");
                            b1.WithOwner()
                                .HasForeignKey("ApplicantId");
                        });
                    b.OwnsOne("Domains.ApplicantDomain.Name", "Name", b1 =>
                        {
                            b1.Property("ApplicantId")
                                .HasColumnType("uuid");
                            b1.Property("FirstName")
                                .IsRequired()
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.Property("Patronymic")
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.Property("Surname")
                                .IsRequired()
                                .HasMaxLength(50)
                                .IsUnicode(false)
                                .HasColumnType("character varying(50)");
                            b1.HasKey("ApplicantId");
                            b1.ToTable("Applicant");
                            b1.WithOwner()
                                .HasForeignKey("ApplicantId");
                        });
                    b.OwnsOne("Domains.ApplicantDomain.Passport", "Passport", b1 =>
                        {
                            b1.Property("ApplicantId")
                                .HasColumnType("uuid");
                            b1.Property("ExpirationDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("IssueDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("Issuer")
                                .IsRequired()
                                .HasMaxLength(200)
                                .IsUnicode(false)
                                .HasColumnType("character varying(200)");
                            b1.Property("Number")
                                .IsRequired()
                                .HasMaxLength(20)
                                .IsUnicode(false)
                                .HasColumnType("character varying(20)");
                            b1.HasKey("ApplicantId");
                            b1.ToTable("Applicant");
                            b1.WithOwner()
                                .HasForeignKey("ApplicantId");
                        });
                    b.Navigation("FatherName")
                        .IsRequired();
                    b.Navigation("MotherName")
                        .IsRequired();
                    b.Navigation("Name")
                        .IsRequired();
                    b.Navigation("Passport")
                        .IsRequired();
                    b.Navigation("PlaceOfWork");
                });
            modelBuilder.Entity("Domains.ApplicantDomain.PlaceOfWork", b =>
                {
                    b.OwnsOne("Domains.ApplicantDomain.Address", "Address", b1 =>
                        {
                            b1.Property("PlaceOfWorkId")
                                .HasColumnType("uuid");
                            b1.Property("Building")
                                .IsRequired()
                                .HasMaxLength(10)
                                .IsUnicode(false)
                                .HasColumnType("character varying(10)");
                            b1.Property("City")
                                .IsRequired()
                                .HasMaxLength(70)
                                .IsUnicode(false)
                                .HasColumnType("character varying(70)");
                            b1.Property("Country")
                                .IsRequired()
                                .HasMaxLength(70)
                                .IsUnicode(false)
                                .HasColumnType("character varying(70)");
                            b1.Property("Street")
                                .IsRequired()
                                .HasMaxLength(100)
                                .IsUnicode(false)
                                .HasColumnType("character varying(100)");
                            b1.HasKey("PlaceOfWorkId");
                            b1.ToTable("PlaceOfWork");
                            b1.WithOwner()
                                .HasForeignKey("PlaceOfWorkId");
                        });
                    b.Navigation("Address")
                        .IsRequired();
                });
            modelBuilder.Entity("Domains.VisaApplicationDomain.VisaApplication", b =>
                {
                    b.HasOne("Domains.ApplicantDomain.Applicant", null)
                        .WithMany()
                        .HasForeignKey("ApplicantId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.OwnsMany("Domains.VisaApplicationDomain.PastVisa", "PastVisas", b1 =>
                        {
                            b1.Property("VisaApplicationId")
                                .HasColumnType("uuid");
                            b1.Property("Id")
                                .ValueGeneratedOnAdd()
                                .HasColumnType("integer");
                            NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b1.Property("Id"));
                            b1.Property("ExpirationDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("IssueDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("Name")
                                .IsRequired()
                                .HasMaxLength(70)
                                .IsUnicode(false)
                                .HasColumnType("character varying(70)");
                            b1.HasKey("VisaApplicationId", "Id");
                            b1.ToTable("PastVisa");
                            b1.WithOwner()
                                .HasForeignKey("VisaApplicationId");
                        });
                    b.OwnsMany("Domains.VisaApplicationDomain.PastVisit", "PastVisits", b1 =>
                        {
                            b1.Property("VisaApplicationId")
                                .HasColumnType("uuid");
                            b1.Property("Id")
                                .ValueGeneratedOnAdd()
                                .HasColumnType("integer");
                            NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b1.Property("Id"));
                            b1.Property("DestinationCountry")
                                .IsRequired()
                                .HasMaxLength(70)
                                .IsUnicode(false)
                                .HasColumnType("character varying(70)");
                            b1.Property("EndDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("StartDate")
                                .HasColumnType("timestamp without time zone");
                            b1.HasKey("VisaApplicationId", "Id");
                            b1.ToTable("PastVisit");
                            b1.WithOwner()
                                .HasForeignKey("VisaApplicationId");
                        });
                    b.OwnsOne("Domains.VisaApplicationDomain.PermissionToDestCountry", "PermissionToDestCountry", b1 =>
                        {
                            b1.Property("VisaApplicationId")
                                .HasColumnType("uuid");
                            b1.Property("ExpirationDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("Issuer")
                                .IsRequired()
                                .HasMaxLength(200)
                                .IsUnicode(false)
                                .HasColumnType("character varying(200)");
                            b1.HasKey("VisaApplicationId");
                            b1.ToTable("VisaApplication");
                            b1.WithOwner()
                                .HasForeignKey("VisaApplicationId");
                        });
                    b.OwnsOne("Domains.VisaApplicationDomain.ReentryPermit", "ReentryPermit", b1 =>
                        {
                            b1.Property("VisaApplicationId")
                                .HasColumnType("uuid");
                            b1.Property("ExpirationDate")
                                .HasColumnType("timestamp without time zone");
                            b1.Property("Number")
                                .IsRequired()
                                .HasMaxLength(25)
                                .IsUnicode(false)
                                .HasColumnType("character varying(25)");
                            b1.HasKey("VisaApplicationId");
                            b1.ToTable("VisaApplication");
                            b1.WithOwner()
                                .HasForeignKey("VisaApplicationId");
                        });
                    b.Navigation("PastVisas");
                    b.Navigation("PastVisits");
                    b.Navigation("PermissionToDestCountry");
                    b.Navigation("ReentryPermit");
                });
#pragma warning restore 612, 618
        }
    }
}