// using System; using JobsMedical.Web.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace JobsMedical.Web.Migrations { [DbContext(typeof(AppDbContext))] [Migration("20260604175649_ApplicationStatus")] partial class ApplicationStatus { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("JobsMedical.Web.Models.AppSetting", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AiApiKey") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("AiAutoApprove") .HasColumnType("boolean"); b.Property("AiEnabled") .HasColumnType("boolean"); b.Property("AiEndpoint") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("AiModel") .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("AiSystemPrompt") .IsRequired() .HasMaxLength(4000) .HasColumnType("character varying(4000)"); b.Property("AutoIngestEnabled") .HasColumnType("boolean"); b.Property("AutoPublishMinConfidence") .HasColumnType("integer"); b.Property("BaleBotToken") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("BaleEnabled") .HasColumnType("boolean"); b.Property("BaleUseProxy") .HasColumnType("boolean"); b.Property("DemoMode") .HasColumnType("boolean"); b.Property("DivarCity") .HasMaxLength(60) .HasColumnType("character varying(60)"); b.Property("DivarEnabled") .HasColumnType("boolean"); b.Property("DivarQueries") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("DivarUseProxy") .HasColumnType("boolean"); b.Property("IngestIntervalMinutes") .HasColumnType("integer"); b.Property("IngestProxyEnabled") .HasColumnType("boolean"); b.Property("IngestProxyUrl") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("MedjobsEnabled") .HasColumnType("boolean"); b.Property("MedjobsMaxAds") .HasColumnType("integer"); b.Property("MedjobsUseProxy") .HasColumnType("boolean"); b.Property("Mode") .HasColumnType("integer"); b.Property("NeshanMapKey") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("PushEnabled") .HasColumnType("boolean"); b.Property("SmsApiKey") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("SmsEnabled") .HasColumnType("boolean"); b.Property("SmsSender") .HasMaxLength(30) .HasColumnType("character varying(30)"); b.Property("SmsTemplate") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("TelegramChannels") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("TelegramEnabled") .HasColumnType("boolean"); b.Property("TelegramUseProxy") .HasColumnType("boolean"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("VapidPrivateKey") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("VapidPublicKey") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("VapidSubject") .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("WebNotificationsEnabled") .HasColumnType("boolean"); b.Property("WebsiteUrls") .HasMaxLength(4000) .HasColumnType("character varying(4000)"); b.Property("WebsitesEnabled") .HasColumnType("boolean"); b.Property("WebsitesUseProxy") .HasColumnType("boolean"); b.HasKey("Id"); b.ToTable("AppSettings"); }); modelBuilder.Entity("JobsMedical.Web.Models.Application", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DoctorId") .HasColumnType("integer"); b.Property("Message") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("ShiftId") .HasColumnType("integer"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("DoctorId"); b.HasIndex("ShiftId", "DoctorId") .IsUnique(); b.ToTable("Applications"); }); modelBuilder.Entity("JobsMedical.Web.Models.City", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("Province") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.HasKey("Id"); b.ToTable("Cities"); }); modelBuilder.Entity("JobsMedical.Web.Models.District", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CityId") .HasColumnType("integer"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Name") .IsRequired() .HasMaxLength(120) .HasColumnType("character varying(120)"); b.HasKey("Id"); b.HasIndex("CityId"); b.ToTable("Districts"); }); modelBuilder.Entity("JobsMedical.Web.Models.DoctorProfile", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Bio") .HasMaxLength(1000) .HasColumnType("character varying(1000)"); b.Property("CityId") .HasColumnType("integer"); b.Property("IsVerified") .HasColumnType("boolean"); b.Property("LicenseNo") .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("RoleId") .HasColumnType("integer"); b.Property("Specialty") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("UserId") .HasColumnType("integer"); b.Property("YearsExperience") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("CityId"); b.HasIndex("RoleId"); b.HasIndex("UserId") .IsUnique(); b.ToTable("DoctorProfiles"); }); modelBuilder.Entity("JobsMedical.Web.Models.Facility", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Address") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("BaleId") .HasMaxLength(50) .HasColumnType("character varying(50)"); b.Property("CityId") .HasColumnType("integer"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DistrictId") .HasColumnType("integer"); b.Property("IsDemo") .HasColumnType("boolean"); b.Property("IsVerified") .HasColumnType("boolean"); b.Property("Lat") .HasColumnType("double precision"); b.Property("Lng") .HasColumnType("double precision"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("OwnerUserId") .HasColumnType("integer"); b.Property("Phone") .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("Type") .HasColumnType("integer"); b.Property("Verification") .HasColumnType("integer"); b.Property("VerificationNote") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("VerificationRequestedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("CityId"); b.HasIndex("DistrictId"); b.HasIndex("OwnerUserId"); b.ToTable("Facilities"); }); modelBuilder.Entity("JobsMedical.Web.Models.FacilityDocument", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ContentType") .IsRequired() .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("Data") .IsRequired() .HasColumnType("bytea"); b.Property("FacilityId") .HasColumnType("integer"); b.Property("FileName") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("Size") .HasColumnType("bigint"); b.Property("UploadedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("FacilityId"); b.ToTable("FacilityDocuments"); }); modelBuilder.Entity("JobsMedical.Web.Models.InterestEvent", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("EventType") .HasColumnType("integer"); b.Property("JobOpeningId") .HasColumnType("integer"); b.Property("ShiftId") .HasColumnType("integer"); b.Property("Status") .HasColumnType("integer"); b.Property("VisitorId") .IsRequired() .HasColumnType("character varying(36)"); b.HasKey("Id"); b.HasIndex("JobOpeningId"); b.HasIndex("ShiftId"); b.HasIndex("VisitorId", "CreatedAt"); b.ToTable("InterestEvents"); }); modelBuilder.Entity("JobsMedical.Web.Models.JobAlert", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CityId") .HasColumnType("integer"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DistrictId") .HasColumnType("integer"); b.Property("EmploymentType") .HasColumnType("integer"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Label") .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("MinPay") .HasColumnType("bigint"); b.Property("RoleId") .HasColumnType("integer"); b.Property("Scope") .HasColumnType("integer"); b.Property("ShiftType") .HasColumnType("integer"); b.Property("UserId") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("CityId"); b.HasIndex("IsActive"); b.HasIndex("RoleId"); b.HasIndex("UserId"); b.ToTable("JobAlerts"); }); modelBuilder.Entity("JobsMedical.Web.Models.JobOpening", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Description") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("EmploymentType") .HasColumnType("integer"); b.Property("FacilityId") .HasColumnType("integer"); b.Property("GenderRequirement") .HasColumnType("integer"); b.Property("Requirements") .HasMaxLength(1000) .HasColumnType("character varying(1000)"); b.Property("RoleId") .HasColumnType("integer"); b.Property("SalaryMax") .HasColumnType("bigint"); b.Property("SalaryMin") .HasColumnType("bigint"); b.Property("Source") .HasColumnType("integer"); b.Property("SourceUrl") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("Status") .HasColumnType("integer"); b.Property("Title") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.HasKey("Id"); b.HasIndex("FacilityId"); b.HasIndex("RoleId"); b.HasIndex("Status"); b.ToTable("JobOpenings"); }); modelBuilder.Entity("JobsMedical.Web.Models.Notification", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Body") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("IsRead") .HasColumnType("boolean"); b.Property("Title") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("Url") .HasMaxLength(300) .HasColumnType("character varying(300)"); b.Property("UserId") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("UserId", "IsRead", "CreatedAt"); b.ToTable("Notifications"); }); modelBuilder.Entity("JobsMedical.Web.Models.RawListing", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Confidence") .HasColumnType("integer"); b.Property("ContentHash") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("FetchedAt") .HasColumnType("timestamp with time zone"); b.Property("LinkedShiftId") .HasColumnType("integer"); b.Property("ParsedJson") .HasColumnType("text"); b.Property("RawText") .IsRequired() .HasColumnType("text"); b.Property("SourceChannel") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("SourceUrl") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("Status") .HasColumnType("integer"); b.Property("ValidationNotes") .HasMaxLength(1000) .HasColumnType("character varying(1000)"); b.HasKey("Id"); b.HasIndex("ContentHash"); b.HasIndex("LinkedShiftId"); b.HasIndex("Status"); b.ToTable("RawListings"); }); modelBuilder.Entity("JobsMedical.Web.Models.Report", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Reason") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("ReporterUserId") .HasColumnType("integer"); b.Property("ReporterVisitorId") .HasMaxLength(36) .HasColumnType("character varying(36)"); b.Property("Status") .HasColumnType("integer"); b.Property("TargetId") .HasColumnType("integer"); b.Property("TargetLabel") .HasMaxLength(160) .HasColumnType("character varying(160)"); b.Property("TargetType") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Status"); b.ToTable("Reports"); }); modelBuilder.Entity("JobsMedical.Web.Models.Role", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Category") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("SortOrder") .HasColumnType("integer"); b.HasKey("Id"); b.ToTable("Roles"); }); modelBuilder.Entity("JobsMedical.Web.Models.Shift", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Date") .HasColumnType("date"); b.Property("Description") .HasMaxLength(1500) .HasColumnType("character varying(1500)"); b.Property("EndTime") .HasColumnType("time without time zone"); b.Property("FacilityId") .HasColumnType("integer"); b.Property("GenderRequirement") .HasColumnType("integer"); b.Property("PayAmount") .HasColumnType("bigint"); b.Property("PayType") .HasColumnType("integer"); b.Property("RoleId") .HasColumnType("integer"); b.Property("SharePercent") .HasColumnType("integer"); b.Property("ShiftType") .HasColumnType("integer"); b.Property("Source") .HasColumnType("integer"); b.Property("SourceUrl") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("SpecialtyRequired") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("StartTime") .HasColumnType("time without time zone"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("FacilityId"); b.HasIndex("RoleId"); b.HasIndex("Date", "Status"); b.ToTable("Shifts"); }); modelBuilder.Entity("JobsMedical.Web.Models.User", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BanReason") .HasMaxLength(300) .HasColumnType("character varying(300)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("FullName") .HasMaxLength(150) .HasColumnType("character varying(150)"); b.Property("IsBanned") .HasColumnType("boolean"); b.Property("IsPhoneVerified") .HasColumnType("boolean"); b.Property("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("Role") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Phone") .IsUnique(); b.ToTable("Users"); }); modelBuilder.Entity("JobsMedical.Web.Models.UserPreferences", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CityId") .HasColumnType("integer"); b.Property("Gender") .HasColumnType("integer"); b.Property("MinPay") .HasColumnType("bigint"); b.Property("PreferredShiftType") .HasColumnType("integer"); b.Property("RoleId") .HasColumnType("integer"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("VisitorId") .IsRequired() .HasColumnType("character varying(36)"); b.HasKey("Id"); b.HasIndex("CityId"); b.HasIndex("RoleId"); b.HasIndex("VisitorId") .IsUnique(); b.ToTable("UserPreferences"); }); modelBuilder.Entity("JobsMedical.Web.Models.Visitor", b => { b.Property("Id") .HasMaxLength(36) .HasColumnType("character varying(36)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("LastSeenAt") .HasColumnType("timestamp with time zone"); b.Property("UserId") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("Visitors"); }); modelBuilder.Entity("JobsMedical.Web.Models.WebPushSubscription", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Auth") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Endpoint") .IsRequired() .HasMaxLength(600) .HasColumnType("character varying(600)"); b.Property("P256dh") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("VisitorId") .HasMaxLength(36) .HasColumnType("character varying(36)"); b.HasKey("Id"); b.HasIndex("Endpoint") .IsUnique(); b.ToTable("WebPushSubscriptions"); }); modelBuilder.Entity("JobsMedical.Web.Models.Application", b => { b.HasOne("JobsMedical.Web.Models.User", "Doctor") .WithMany("Applications") .HasForeignKey("DoctorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("JobsMedical.Web.Models.Shift", "Shift") .WithMany("Applications") .HasForeignKey("ShiftId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Doctor"); b.Navigation("Shift"); }); modelBuilder.Entity("JobsMedical.Web.Models.District", b => { b.HasOne("JobsMedical.Web.Models.City", "City") .WithMany() .HasForeignKey("CityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("City"); }); modelBuilder.Entity("JobsMedical.Web.Models.DoctorProfile", b => { b.HasOne("JobsMedical.Web.Models.City", "City") .WithMany() .HasForeignKey("CityId"); b.HasOne("JobsMedical.Web.Models.Role", "Role") .WithMany() .HasForeignKey("RoleId"); b.HasOne("JobsMedical.Web.Models.User", "User") .WithOne("DoctorProfile") .HasForeignKey("JobsMedical.Web.Models.DoctorProfile", "UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("City"); b.Navigation("Role"); b.Navigation("User"); }); modelBuilder.Entity("JobsMedical.Web.Models.Facility", b => { b.HasOne("JobsMedical.Web.Models.City", "City") .WithMany("Facilities") .HasForeignKey("CityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("JobsMedical.Web.Models.District", "District") .WithMany("Facilities") .HasForeignKey("DistrictId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("JobsMedical.Web.Models.User", "OwnerUser") .WithMany() .HasForeignKey("OwnerUserId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("City"); b.Navigation("District"); b.Navigation("OwnerUser"); }); modelBuilder.Entity("JobsMedical.Web.Models.FacilityDocument", b => { b.HasOne("JobsMedical.Web.Models.Facility", "Facility") .WithMany("Documents") .HasForeignKey("FacilityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Facility"); }); modelBuilder.Entity("JobsMedical.Web.Models.InterestEvent", b => { b.HasOne("JobsMedical.Web.Models.JobOpening", "JobOpening") .WithMany() .HasForeignKey("JobOpeningId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("JobsMedical.Web.Models.Shift", "Shift") .WithMany() .HasForeignKey("ShiftId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("JobsMedical.Web.Models.Visitor", "Visitor") .WithMany("Events") .HasForeignKey("VisitorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("JobOpening"); b.Navigation("Shift"); b.Navigation("Visitor"); }); modelBuilder.Entity("JobsMedical.Web.Models.JobAlert", b => { b.HasOne("JobsMedical.Web.Models.City", "City") .WithMany() .HasForeignKey("CityId"); b.HasOne("JobsMedical.Web.Models.Role", "Role") .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("JobsMedical.Web.Models.User", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("City"); b.Navigation("Role"); b.Navigation("User"); }); modelBuilder.Entity("JobsMedical.Web.Models.JobOpening", b => { b.HasOne("JobsMedical.Web.Models.Facility", "Facility") .WithMany() .HasForeignKey("FacilityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("JobsMedical.Web.Models.Role", "Role") .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Facility"); b.Navigation("Role"); }); modelBuilder.Entity("JobsMedical.Web.Models.Notification", b => { b.HasOne("JobsMedical.Web.Models.User", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("JobsMedical.Web.Models.RawListing", b => { b.HasOne("JobsMedical.Web.Models.Shift", "LinkedShift") .WithMany() .HasForeignKey("LinkedShiftId"); b.Navigation("LinkedShift"); }); modelBuilder.Entity("JobsMedical.Web.Models.Shift", b => { b.HasOne("JobsMedical.Web.Models.Facility", "Facility") .WithMany("Shifts") .HasForeignKey("FacilityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("JobsMedical.Web.Models.Role", "Role") .WithMany("Shifts") .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Facility"); b.Navigation("Role"); }); modelBuilder.Entity("JobsMedical.Web.Models.UserPreferences", b => { b.HasOne("JobsMedical.Web.Models.City", "City") .WithMany() .HasForeignKey("CityId"); b.HasOne("JobsMedical.Web.Models.Role", "Role") .WithMany() .HasForeignKey("RoleId"); b.HasOne("JobsMedical.Web.Models.Visitor", "Visitor") .WithOne("Preferences") .HasForeignKey("JobsMedical.Web.Models.UserPreferences", "VisitorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("City"); b.Navigation("Role"); b.Navigation("Visitor"); }); modelBuilder.Entity("JobsMedical.Web.Models.Visitor", b => { b.HasOne("JobsMedical.Web.Models.User", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("User"); }); modelBuilder.Entity("JobsMedical.Web.Models.City", b => { b.Navigation("Facilities"); }); modelBuilder.Entity("JobsMedical.Web.Models.District", b => { b.Navigation("Facilities"); }); modelBuilder.Entity("JobsMedical.Web.Models.Facility", b => { b.Navigation("Documents"); b.Navigation("Shifts"); }); modelBuilder.Entity("JobsMedical.Web.Models.Role", b => { b.Navigation("Shifts"); }); modelBuilder.Entity("JobsMedical.Web.Models.Shift", b => { b.Navigation("Applications"); }); modelBuilder.Entity("JobsMedical.Web.Models.User", b => { b.Navigation("Applications"); b.Navigation("DoctorProfile"); }); modelBuilder.Entity("JobsMedical.Web.Models.Visitor", b => { b.Navigation("Events"); b.Navigation("Preferences"); }); #pragma warning restore 612, 618 } } }