// 
using System;
using Hushian.Persistence;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Hushian.Persistence.Migrations
{
    [DbContext(typeof(HushianDbContext))]
    partial class HushianDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.7")
                .HasAnnotation("Relational:MaxIdentifierLength", 128);
            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
            modelBuilder.Entity("Hushian.Domain.Entites.Company", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Available")
                        .HasColumnType("bit");
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("Email")
                        .HasColumnType("nvarchar(max)");
                    b.Property("FullName")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("FullNameManager")
                        .HasColumnType("nvarchar(max)");
                    b.Property("Mobile")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("Password")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("Verified")
                        .HasColumnType("bit");
                    b.Property("WebSite")
                        .HasColumnType("nvarchar(max)");
                    b.Property("allowBot")
                        .HasColumnType("bit");
                    b.Property("logo")
                        .HasColumnType("varbinary(max)");
                    b.HasKey("ID");
                    b.ToTable("Companies");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.CompanyContentInfo", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("CompanyID")
                        .HasColumnType("int");
                    b.Property("Content")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.HasKey("ID");
                    b.HasIndex("CompanyID");
                    b.ToTable("CompanyContentInfo");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Conversation", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("CompanyID")
                        .HasColumnType("int");
                    b.Property("FinishedDateTime")
                        .HasColumnType("datetime2");
                    b.Property("GroupID")
                        .HasColumnType("int");
                    b.Property("Status")
                        .HasColumnType("int");
                    b.Property("UserID")
                        .HasColumnType("int");
                    b.HasKey("ID");
                    b.HasIndex("CompanyID");
                    b.HasIndex("GroupID");
                    b.HasIndex("UserID");
                    b.ToTable("Conversations");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.ConversationResponse", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("ConversationID")
                        .HasColumnType("int");
                    b.Property("ExperID")
                        .HasColumnType("int");
                    b.Property("FileContent")
                        .HasColumnType("varbinary(max)");
                    b.Property("FileName")
                        .HasColumnType("nvarchar(max)");
                    b.Property("FileType")
                        .HasColumnType("nvarchar(max)");
                    b.Property("IsRead")
                        .HasColumnType("bit");
                    b.Property("ReadDateTime")
                        .HasColumnType("datetime2");
                    b.Property("Text")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("Type")
                        .HasColumnType("int");
                    b.HasKey("ID");
                    b.HasIndex("ConversationID");
                    b.HasIndex("ExperID");
                    b.ToTable("ConversationItems");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Exper", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Available")
                        .HasColumnType("bit");
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("CompanyID")
                        .HasColumnType("int");
                    b.Property("FullName")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("Password")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("UserName")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.HasKey("ID");
                    b.HasIndex("CompanyID");
                    b.ToTable("Expers");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.ExperGroup", b =>
                {
                    b.Property("ExperID")
                        .HasColumnType("int");
                    b.Property("GroupID")
                        .HasColumnType("int");
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.HasKey("ExperID", "GroupID");
                    b.HasIndex("GroupID");
                    b.ToTable("EG");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Group", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Available")
                        .HasColumnType("bit");
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("CompanyID")
                        .HasColumnType("int");
                    b.Property("Info")
                        .HasColumnType("nvarchar(max)");
                    b.Property("Name")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("img")
                        .HasColumnType("varbinary(max)");
                    b.HasKey("ID");
                    b.HasIndex("CompanyID");
                    b.ToTable("Groups");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.User", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("FullName")
                        .HasColumnType("nvarchar(max)");
                    b.Property("Mobile")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.HasKey("ID");
                    b.ToTable("Users");
                });
            modelBuilder.Entity("Identity.Models.VerificationCode", b =>
                {
                    b.Property("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");
                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
                    b.Property("Cdatetime")
                        .HasColumnType("datetime2");
                    b.Property("Code")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("Mobile")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");
                    b.Property("Type")
                        .HasColumnType("int");
                    b.HasKey("ID");
                    b.ToTable("verificationCodes");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.CompanyContentInfo", b =>
                {
                    b.HasOne("Hushian.Domain.Entites.Company", "company")
                        .WithMany("CompanyContentInfos")
                        .HasForeignKey("CompanyID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("company");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Conversation", b =>
                {
                    b.HasOne("Hushian.Domain.Entites.Company", "Company")
                        .WithMany("Conversations")
                        .HasForeignKey("CompanyID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("Hushian.Domain.Entites.Group", "Group")
                        .WithMany()
                        .HasForeignKey("GroupID");
                    b.HasOne("Hushian.Domain.Entites.User", "User")
                        .WithMany("Conversations")
                        .HasForeignKey("UserID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Company");
                    b.Navigation("Group");
                    b.Navigation("User");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.ConversationResponse", b =>
                {
                    b.HasOne("Hushian.Domain.Entites.Conversation", "conversation")
                        .WithMany("ConversationResponses")
                        .HasForeignKey("ConversationID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("Hushian.Domain.Entites.Exper", "Exper")
                        .WithMany()
                        .HasForeignKey("ExperID");
                    b.Navigation("Exper");
                    b.Navigation("conversation");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Exper", b =>
                {
                    b.HasOne("Hushian.Domain.Entites.Company", "Company")
                        .WithMany("Expers")
                        .HasForeignKey("CompanyID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Company");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.ExperGroup", b =>
                {
                    b.HasOne("Hushian.Domain.Entites.Exper", "Exper")
                        .WithMany("EG")
                        .HasForeignKey("ExperID")
                        .OnDelete(DeleteBehavior.ClientCascade)
                        .IsRequired();
                    b.HasOne("Hushian.Domain.Entites.Group", "Group")
                        .WithMany("EG")
                        .HasForeignKey("GroupID")
                        .OnDelete(DeleteBehavior.ClientCascade)
                        .IsRequired();
                    b.Navigation("Exper");
                    b.Navigation("Group");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Group", b =>
                {
                    b.HasOne("Hushian.Domain.Entites.Company", "Company")
                        .WithMany("Groups")
                        .HasForeignKey("CompanyID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Company");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Company", b =>
                {
                    b.Navigation("CompanyContentInfos");
                    b.Navigation("Conversations");
                    b.Navigation("Expers");
                    b.Navigation("Groups");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Conversation", b =>
                {
                    b.Navigation("ConversationResponses");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Exper", b =>
                {
                    b.Navigation("EG");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.Group", b =>
                {
                    b.Navigation("EG");
                });
            modelBuilder.Entity("Hushian.Domain.Entites.User", b =>
                {
                    b.Navigation("Conversations");
                });
#pragma warning restore 612, 618
        }
    }
}