// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using wispro.sp.api;

namespace wispro.sp.api.Migrations
{
    [DbContext(typeof(spDbContext))]
    [Migration("20211021045210_CalMonth")]
    partial class CalMonth
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("Relational:MaxIdentifierLength", 128)
                .HasAnnotation("ProductVersion", "5.0.9")
                .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

            modelBuilder.Entity("wispro.sp.entity.AttachFile", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

                    b.Property<string>("Name")
                        .HasMaxLength(200)
                        .HasColumnType("nvarchar(200)");

                    b.Property<string>("SavePath")
                        .HasMaxLength(200)
                        .HasColumnType("nvarchar(200)");

                    b.Property<int>("UploadUserId")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("UploadUserId");

                    b.ToTable("AttachFile");
                });

            modelBuilder.Entity("wispro.sp.entity.BasePointRule", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                    b.Property<double>("Point")
                        .HasColumnType("float");

                    b.Property<string>("Rule")
                        .HasColumnType("nvarchar(max)");

                    b.HasKey("Id");

                    b.ToTable("BasePointRules");
                });

            modelBuilder.Entity("wispro.sp.entity.CalMonth", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                    b.Property<int>("Month")
                        .HasColumnType("int")
                        .HasColumnName("month");

                    b.Property<int>("Status")
                        .HasColumnType("int")
                        .HasColumnName("status");

                    b.Property<int>("Year")
                        .HasColumnType("int")
                        .HasColumnName("year");

                    b.HasKey("Id");

                    b.ToTable("CalMonth");
                });

            modelBuilder.Entity("wispro.sp.entity.Customer", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                    b.Property<string>("Address")
                        .HasMaxLength(500)
                        .HasColumnType("nvarchar(500)");

                    b.Property<string>("ContactMan")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(200)
                        .HasColumnType("nvarchar(200)");

                    b.Property<string>("Phone")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<int?>("ResponseManId")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("ResponseManId");

                    b.ToTable("Customer");
                });

            modelBuilder.Entity("wispro.sp.entity.ItemStaff", b =>
                {
                    b.Property<int>("ItemId")
                        .HasColumnType("int");

                    b.Property<int>("DoPersonId")
                        .HasColumnType("int");

                    b.Property<double>("PerformancePoint")
                        .HasColumnType("float");

                    b.HasKey("ItemId", "DoPersonId");

                    b.HasIndex("DoPersonId");

                    b.ToTable("ItemStaff");
                });

            modelBuilder.Entity("wispro.sp.entity.Message", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

                    b.Property<int>("FromId")
                        .HasColumnType("int");

                    b.Property<string>("MessageInfo")
                        .HasMaxLength(500)
                        .HasColumnType("nvarchar(500)");

                    b.Property<int>("Type")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("FromId");

                    b.ToTable("Message");
                });

            modelBuilder.Entity("wispro.sp.entity.MessagePerformanceItem", b =>
                {
                    b.Property<int>("ItemId")
                        .HasColumnType("int");

                    b.Property<Guid>("MessageId")
                        .HasColumnType("uniqueidentifier");

                    b.HasKey("ItemId", "MessageId");

                    b.HasIndex("MessageId");

                    b.ToTable("MessagePerformanceItems");
                });

            modelBuilder.Entity("wispro.sp.entity.MessageReadRecord", b =>
                {
                    b.Property<Guid>("MessageId")
                        .HasColumnType("uniqueidentifier");

                    b.Property<int>("StaffId")
                        .HasColumnType("int");

                    b.Property<Guid?>("MessageId1")
                        .HasColumnType("uniqueidentifier");

                    b.Property<bool>("isReaded")
                        .HasColumnType("bit");

                    b.HasKey("MessageId", "StaffId");

                    b.HasIndex("MessageId1");

                    b.HasIndex("StaffId");

                    b.ToTable("MessageReadRecord");
                });

            modelBuilder.Entity("wispro.sp.entity.PerformanceItem", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                    b.Property<string>("AgentFeedbackMemo")
                        .HasColumnType("nvarchar(max)");

                    b.Property<string>("ApplicationName")
                        .HasMaxLength(200)
                        .HasColumnType("nvarchar(200)");

                    b.Property<string>("ApplicationType")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<decimal?>("BasePoint")
                        .HasColumnType("numeric(18,2)");

                    b.Property<string>("BusinessType")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<int>("CalMonthId")
                        .HasColumnType("int");

                    b.Property<string>("CaseCoefficient")
                        .HasMaxLength(10)
                        .HasColumnType("nvarchar(10)");

                    b.Property<string>("CaseMemo")
                        .HasColumnType("nvarchar(max)");

                    b.Property<string>("CaseName")
                        .HasMaxLength(500)
                        .HasColumnType("nvarchar(500)");

                    b.Property<string>("CaseNo")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("CaseStage")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("CaseState")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("CaseType")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<int?>("CustomerId")
                        .HasColumnType("int");

                    b.Property<DateTime?>("CustomerLimitDate")
                        .HasColumnType("date");

                    b.Property<string>("DoItem")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("DoItemCoefficient")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("DoItemMemo")
                        .HasMaxLength(500)
                        .HasColumnType("nvarchar(500)");

                    b.Property<string>("DoItemState")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<DateTime?>("EntrustingDate")
                        .HasColumnType("date");

                    b.Property<DateTime?>("FinalizationDate")
                        .HasColumnType("date");

                    b.Property<DateTime?>("FinishedDate")
                        .HasColumnType("date");

                    b.Property<DateTime?>("FirstDraftDate")
                        .HasColumnType("date");

                    b.Property<DateTime?>("InternalDate")
                        .HasColumnType("date");

                    b.Property<string>("OverDueMemo")
                        .HasMaxLength(100)
                        .HasColumnType("nvarchar(100)");

                    b.Property<int?>("PreOastaffId")
                        .HasColumnType("int")
                        .HasColumnName("PreOAStaffId");

                    b.Property<DateTime?>("ReturnDate")
                        .HasColumnType("date");

                    b.Property<int?>("ReviewerId")
                        .HasColumnType("int");

                    b.Property<int?>("Status")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("CalMonthId");

                    b.HasIndex("CustomerId");

                    b.HasIndex("PreOastaffId");

                    b.HasIndex("ReviewerId");

                    b.ToTable("PerformanceItem");
                });

            modelBuilder.Entity("wispro.sp.entity.Staff", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                    b.Property<string>("Account")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("Department")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<DateTime?>("EntyDate")
                        .HasColumnType("date");

                    b.Property<bool>("IsCalPerformsnce")
                        .HasColumnType("bit")
                        .HasColumnName("isCalPerformsnce");

                    b.Property<string>("Mail")
                        .HasColumnType("nvarchar(max)");

                    b.Property<string>("Memo")
                        .HasColumnType("nvarchar(max)");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.Property<string>("Password")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)");

                    b.Property<int>("StaffGradeId")
                        .HasColumnType("int");

                    b.Property<string>("Status")
                        .IsRequired()
                        .HasMaxLength(25)
                        .HasColumnType("nvarchar(25)");

                    b.Property<string>("WorkPlace")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)");

                    b.HasKey("Id");

                    b.HasIndex("StaffGradeId");

                    b.ToTable("Staff");
                });

            modelBuilder.Entity("wispro.sp.entity.StaffGrade", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

                    b.Property<double>("Coefficient")
                        .HasColumnType("float");

                    b.Property<string>("Grade")
                        .IsRequired()
                        .HasMaxLength(5)
                        .HasColumnType("nchar(5)")
                        .IsFixedLength(true);

                    b.HasKey("Id");

                    b.ToTable("StaffGrade");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Coefficient = 1.2,
                            Grade = "S级"
                        },
                        new
                        {
                            Id = 2,
                            Coefficient = 1.1000000000000001,
                            Grade = "A3级"
                        },
                        new
                        {
                            Id = 3,
                            Coefficient = 1.1000000000000001,
                            Grade = "A2级"
                        },
                        new
                        {
                            Id = 4,
                            Coefficient = 1.1000000000000001,
                            Grade = "A1级"
                        },
                        new
                        {
                            Id = 5,
                            Coefficient = 1.0,
                            Grade = "B3级"
                        },
                        new
                        {
                            Id = 6,
                            Coefficient = 1.0,
                            Grade = "B2级"
                        },
                        new
                        {
                            Id = 7,
                            Coefficient = 0.90000000000000002,
                            Grade = "B1级"
                        },
                        new
                        {
                            Id = 8,
                            Coefficient = 0.90000000000000002,
                            Grade = "C3级"
                        },
                        new
                        {
                            Id = 9,
                            Coefficient = 0.69999999999999996,
                            Grade = "C2级"
                        },
                        new
                        {
                            Id = 10,
                            Coefficient = 0.69999999999999996,
                            Grade = "C1级"
                        },
                        new
                        {
                            Id = 11,
                            Coefficient = 0.59999999999999998,
                            Grade = "D3级"
                        },
                        new
                        {
                            Id = 12,
                            Coefficient = 0.59999999999999998,
                            Grade = "D2级"
                        },
                        new
                        {
                            Id = 13,
                            Coefficient = 0.5,
                            Grade = "D1级"
                        });
                });

            modelBuilder.Entity("wispro.sp.entity.VerifyCoefficient", b =>
                {
                    b.Property<int>("CheckerId")
                        .HasColumnType("int");

                    b.Property<int>("DoPersonId")
                        .HasColumnType("int");

                    b.Property<double>("Coefficient")
                        .HasColumnType("float");

                    b.HasKey("CheckerId", "DoPersonId");

                    b.HasIndex("DoPersonId");

                    b.ToTable("VerifyCoefficient");

                    b.HasData(
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 5,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 6,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 7,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 8,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 9,
                            Coefficient = 0.29999999999999999
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 10,
                            Coefficient = 0.29999999999999999
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 11,
                            Coefficient = 0.40000000000000002
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 12,
                            Coefficient = 0.40000000000000002
                        },
                        new
                        {
                            CheckerId = 2,
                            DoPersonId = 13,
                            Coefficient = 0.5
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 5,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 6,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 7,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 8,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 9,
                            Coefficient = 0.29999999999999999
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 10,
                            Coefficient = 0.29999999999999999
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 11,
                            Coefficient = 0.40000000000000002
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 12,
                            Coefficient = 0.40000000000000002
                        },
                        new
                        {
                            CheckerId = 3,
                            DoPersonId = 13,
                            Coefficient = 0.5
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 5,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 6,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 7,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 8,
                            Coefficient = 0.20000000000000001
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 9,
                            Coefficient = 0.29999999999999999
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 10,
                            Coefficient = 0.29999999999999999
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 11,
                            Coefficient = 0.40000000000000002
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 12,
                            Coefficient = 0.40000000000000002
                        },
                        new
                        {
                            CheckerId = 4,
                            DoPersonId = 13,
                            Coefficient = 0.5
                        });
                });

            modelBuilder.Entity("wispro.sp.entity.AttachFile", b =>
                {
                    b.HasOne("wispro.sp.entity.Staff", "UploadUser")
                        .WithMany()
                        .HasForeignKey("UploadUserId")
                        .HasConstraintName("FK_AttachFile_UpdateUser")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("UploadUser");
                });

            modelBuilder.Entity("wispro.sp.entity.Customer", b =>
                {
                    b.HasOne("wispro.sp.entity.Staff", "ResponseMan")
                        .WithMany("Customers")
                        .HasForeignKey("ResponseManId")
                        .HasConstraintName("FK_Customer_Staff");

                    b.Navigation("ResponseMan");
                });

            modelBuilder.Entity("wispro.sp.entity.ItemStaff", b =>
                {
                    b.HasOne("wispro.sp.entity.Staff", "DoPerson")
                        .WithMany("ItemStaffs")
                        .HasForeignKey("DoPersonId")
                        .HasConstraintName("FK_ItemStaff_Staff")
                        .IsRequired();

                    b.HasOne("wispro.sp.entity.PerformanceItem", "Item")
                        .WithMany("ItemStaffs")
                        .HasForeignKey("ItemId")
                        .HasConstraintName("FK_ItemStaff_PerformanceItem")
                        .IsRequired();

                    b.Navigation("DoPerson");

                    b.Navigation("Item");
                });

            modelBuilder.Entity("wispro.sp.entity.Message", b =>
                {
                    b.HasOne("wispro.sp.entity.Staff", "From")
                        .WithMany()
                        .HasForeignKey("FromId")
                        .HasConstraintName("FK_From_Staff")
                        .IsRequired();

                    b.Navigation("From");
                });

            modelBuilder.Entity("wispro.sp.entity.MessagePerformanceItem", b =>
                {
                    b.HasOne("wispro.sp.entity.PerformanceItem", "Item")
                        .WithMany()
                        .HasForeignKey("ItemId")
                        .HasConstraintName("FK_MessagePerformanceItem_Item")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("wispro.sp.entity.Message", "Message")
                        .WithMany("RelatedItem")
                        .HasForeignKey("MessageId")
                        .HasConstraintName("FK_MessagePerformanceItem_Message")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Item");

                    b.Navigation("Message");
                });

            modelBuilder.Entity("wispro.sp.entity.MessageReadRecord", b =>
                {
                    b.HasOne("wispro.sp.entity.Message", "Message")
                        .WithMany()
                        .HasForeignKey("MessageId")
                        .HasConstraintName("FK_MessageReadRecord_Message")
                        .IsRequired();

                    b.HasOne("wispro.sp.entity.Message", null)
                        .WithMany("To")
                        .HasForeignKey("MessageId1");

                    b.HasOne("wispro.sp.entity.Staff", "Staff")
                        .WithMany()
                        .HasForeignKey("StaffId")
                        .HasConstraintName("FK_MessageReadRecord_Staff")
                        .IsRequired();

                    b.Navigation("Message");

                    b.Navigation("Staff");
                });

            modelBuilder.Entity("wispro.sp.entity.PerformanceItem", b =>
                {
                    b.HasOne("wispro.sp.entity.CalMonth", "CalMonth")
                        .WithMany("PerformanceItems")
                        .HasForeignKey("CalMonthId")
                        .HasConstraintName("FK_PerformanceItem_CalMonth")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("wispro.sp.entity.Customer", "Customer")
                        .WithMany("PerformanceItems")
                        .HasForeignKey("CustomerId")
                        .HasConstraintName("FK_PerformanceItem_Customer");

                    b.HasOne("wispro.sp.entity.Staff", "PreOastaff")
                        .WithMany()
                        .HasForeignKey("PreOastaffId")
                        .HasConstraintName("FK_PerformanceItem_Staff");

                    b.HasOne("wispro.sp.entity.Staff", "Reviewer")
                        .WithMany("ReviewerItems")
                        .HasForeignKey("ReviewerId")
                        .HasConstraintName("FK_PerformanceItem_Reviewer");

                    b.Navigation("CalMonth");

                    b.Navigation("Customer");

                    b.Navigation("PreOastaff");

                    b.Navigation("Reviewer");
                });

            modelBuilder.Entity("wispro.sp.entity.Staff", b =>
                {
                    b.HasOne("wispro.sp.entity.StaffGrade", "StaffGrade")
                        .WithMany("Staff")
                        .HasForeignKey("StaffGradeId")
                        .HasConstraintName("FK_Staff_StaffGrade")
                        .IsRequired();

                    b.Navigation("StaffGrade");
                });

            modelBuilder.Entity("wispro.sp.entity.VerifyCoefficient", b =>
                {
                    b.HasOne("wispro.sp.entity.StaffGrade", "Checker")
                        .WithMany("VerifyCoefficientCheckers")
                        .HasForeignKey("CheckerId")
                        .HasConstraintName("FK_VerifyCoefficient_StaffGrade")
                        .IsRequired();

                    b.HasOne("wispro.sp.entity.StaffGrade", "DoPerson")
                        .WithMany("VerifyCoefficientDoPeople")
                        .HasForeignKey("DoPersonId")
                        .HasConstraintName("FK_VerifyCoefficient_StaffGrade1")
                        .IsRequired();

                    b.Navigation("Checker");

                    b.Navigation("DoPerson");
                });

            modelBuilder.Entity("wispro.sp.entity.CalMonth", b =>
                {
                    b.Navigation("PerformanceItems");
                });

            modelBuilder.Entity("wispro.sp.entity.Customer", b =>
                {
                    b.Navigation("PerformanceItems");
                });

            modelBuilder.Entity("wispro.sp.entity.Message", b =>
                {
                    b.Navigation("RelatedItem");

                    b.Navigation("To");
                });

            modelBuilder.Entity("wispro.sp.entity.PerformanceItem", b =>
                {
                    b.Navigation("ItemStaffs");
                });

            modelBuilder.Entity("wispro.sp.entity.Staff", b =>
                {
                    b.Navigation("Customers");

                    b.Navigation("ItemStaffs");

                    b.Navigation("ReviewerItems");
                });

            modelBuilder.Entity("wispro.sp.entity.StaffGrade", b =>
                {
                    b.Navigation("Staff");

                    b.Navigation("VerifyCoefficientCheckers");

                    b.Navigation("VerifyCoefficientDoPeople");
                });
#pragma warning restore 612, 618
        }
    }
}
