namespace Sevomin.Models.Migrations
{
    using System;
    using System.Data.Entity.Migrations;
    
    public partial class basepoint : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                "dbo.DovominJobs",
                c => new
                    {
                        Id = c.Long(nullable: false, identity: true),
                        DovominId = c.String(nullable: false, maxLength: 128),
                        JobId = c.Long(nullable: false),
                        ApplyDate = c.DateTime(nullable: false),
                        CoverLetter = c.String(),
                        Affinity = c.Decimal(nullable: false, precision: 18, scale: 2),
                        MinimumRequirement = c.Boolean(nullable: false),
                        AvalinSeen = c.DateTime(),
                        AvalinComment = c.String(),
                        AvalinDelete = c.Boolean(nullable: false),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.Dovomin", t => t.DovominId)
                .ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true)
                .Index(t => new { t.DovominId, t.JobId }, unique: true, name: "IX_DovominJobUniqueIndex")
                .Index(t => t.JobId);
            
            CreateTable(
                "dbo.AspNetUsers",
                c => new
                    {
                        Id = c.String(nullable: false, maxLength: 128),
                        DisplayName = c.String(),
                        SignUpDate = c.DateTime(nullable: false),
                        ConfirmationCode = c.String(),
                        Email = c.String(maxLength: 256),
                        EmailConfirmed = c.Boolean(nullable: false),
                        PasswordHash = c.String(),
                        SecurityStamp = c.String(),
                        PhoneNumber = c.String(),
                        PhoneNumberConfirmed = c.Boolean(nullable: false),
                        TwoFactorEnabled = c.Boolean(nullable: false),
                        LockoutEndDateUtc = c.DateTime(),
                        LockoutEnabled = c.Boolean(nullable: false),
                        AccessFailedCount = c.Int(nullable: false),
                        UserName = c.String(nullable: false, maxLength: 256),
                    })
                .PrimaryKey(t => t.Id)
                .Index(t => t.UserName, unique: true, name: "UserNameIndex");
            
            CreateTable(
                "dbo.AspNetUserClaims",
                c => new
                    {
                        Id = c.Int(nullable: false, identity: true),
                        UserId = c.String(nullable: false, maxLength: 128),
                        ClaimType = c.String(),
                        ClaimValue = c.String(),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
                .Index(t => t.UserId);
            
            CreateTable(
                "dbo.DovominParameters",
                c => new
                    {
                        Id = c.Long(nullable: false, identity: true),
                        ParameterId = c.Long(nullable: false),
                        DovominId = c.String(nullable: false, maxLength: 128),
                        StringValue = c.String(),
                        NumericValue = c.Decimal(precision: 18, scale: 2),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.Dovomin", t => t.DovominId)
                .ForeignKey("dbo.Parameters", t => t.ParameterId, cascadeDelete: true)
                .Index(t => new { t.ParameterId, t.DovominId }, unique: true, name: "IX_DovominParameterUniqueIndex")
                .Index(t => t.DovominId);
            
            CreateTable(
                "dbo.Parameters",
                c => new
                    {
                        Id = c.Long(nullable: false, identity: true),
                        Name = c.String(nullable: false),
                        Moscow = c.Boolean(nullable: false),
                        DisplayMethod = c.Byte(nullable: false),
                        DisplayFormat = c.String(maxLength: 50),
                        GroupName = c.String(nullable: false),
                        CommentAvalin = c.String(maxLength: 140),
                        CommentDovomin = c.String(maxLength: 140),
                        ParameterValueId = c.String(maxLength: 50),
                        BasePoint = c.Int(nullable: false),
                    })
                .PrimaryKey(t => t.Id);
            
            CreateTable(
                "dbo.JobParameters",
                c => new
                    {
                        Id = c.Long(nullable: false, identity: true),
                        ParameterId = c.Long(nullable: false),
                        JobId = c.Long(nullable: false),
                        StringValue = c.String(),
                        NumericValue = c.Decimal(precision: 18, scale: 2),
                        Moscow = c.Byte(nullable: false),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true)
                .ForeignKey("dbo.Parameters", t => t.ParameterId, cascadeDelete: true)
                .Index(t => new { t.ParameterId, t.JobId }, unique: true, name: "IX_JobParameterUniqueIndex")
                .Index(t => t.JobId);
            
            CreateTable(
                "dbo.Jobs",
                c => new
                    {
                        Id = c.Long(nullable: false, identity: true),
                        AvalinId = c.String(nullable: false, maxLength: 128),
                        CreateDate = c.DateTime(nullable: false),
                        ExpireDate = c.DateTime(nullable: false),
                        Description = c.String(),
                        ResumeType = c.Byte(nullable: false),
                        ContactPersonName = c.String(),
                        ContactPersonPhone = c.String(),
                        ContactPersonEMail = c.String(),
                        ShowCompanyName = c.Boolean(nullable: false),
                        ShowCompanyLogo = c.Boolean(nullable: false),
                        IsFullTime = c.Boolean(nullable: false),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.Avalin", t => t.AvalinId)
                .Index(t => t.AvalinId);
            
            CreateTable(
                "dbo.AspNetUserLogins",
                c => new
                    {
                        LoginProvider = c.String(nullable: false, maxLength: 128),
                        ProviderKey = c.String(nullable: false, maxLength: 128),
                        UserId = c.String(nullable: false, maxLength: 128),
                    })
                .PrimaryKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId })
                .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
                .Index(t => t.UserId);
            
            CreateTable(
                "dbo.AspNetUserRoles",
                c => new
                    {
                        UserId = c.String(nullable: false, maxLength: 128),
                        RoleId = c.String(nullable: false, maxLength: 128),
                    })
                .PrimaryKey(t => new { t.UserId, t.RoleId })
                .ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true)
                .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
                .Index(t => t.UserId)
                .Index(t => t.RoleId);
            
            CreateTable(
                "dbo.ParameterValues",
                c => new
                    {
                        GroupKey = c.String(nullable: false, maxLength: 50),
                        Value = c.String(nullable: false, maxLength: 50),
                        NumbericValue = c.Decimal(nullable: false, precision: 18, scale: 2),
                    })
                .PrimaryKey(t => new { t.GroupKey, t.Value })
                .Index(t => t.GroupKey);
            
            CreateTable(
                "dbo.AspNetRoles",
                c => new
                    {
                        Id = c.String(nullable: false, maxLength: 128),
                        Name = c.String(nullable: false, maxLength: 256),
                    })
                .PrimaryKey(t => t.Id)
                .Index(t => t.Name, unique: true, name: "RoleNameIndex");
            
            CreateTable(
                "dbo.Dovomin",
                c => new
                    {
                        Id = c.String(nullable: false, maxLength: 128),
                        FirstName = c.String(),
                        LastName = c.String(),
                        BirthDate = c.DateTime(),
                        IsFulltime = c.Boolean(nullable: false),
                        IsPartTime = c.Boolean(nullable: false),
                        Description = c.String(),
                        EnglishResume = c.String(),
                        PersianResume = c.String(),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.AspNetUsers", t => t.Id)
                .Index(t => t.Id);
            
            CreateTable(
                "dbo.Avalin",
                c => new
                    {
                        Id = c.String(nullable: false, maxLength: 128),
                        CompanyName = c.String(nullable: false),
                        NationalId = c.String(maxLength: 12),
                        RegisterId = c.String(maxLength: 10),
                        Address = c.String(),
                        CompanyPhoneNumber = c.String(),
                        EMail = c.String(),
                    })
                .PrimaryKey(t => t.Id)
                .ForeignKey("dbo.AspNetUsers", t => t.Id)
                .Index(t => t.Id);
            
        }
        
        public override void Down()
        {
            DropForeignKey("dbo.Avalin", "Id", "dbo.AspNetUsers");
            DropForeignKey("dbo.Dovomin", "Id", "dbo.AspNetUsers");
            DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers");
            DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers");
            DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers");
            DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles");
            DropForeignKey("dbo.JobParameters", "ParameterId", "dbo.Parameters");
            DropForeignKey("dbo.JobParameters", "JobId", "dbo.Jobs");
            DropForeignKey("dbo.Jobs", "AvalinId", "dbo.Avalin");
            DropForeignKey("dbo.DovominJobs", "JobId", "dbo.Jobs");
            DropForeignKey("dbo.DovominParameters", "ParameterId", "dbo.Parameters");
            DropForeignKey("dbo.DovominParameters", "DovominId", "dbo.Dovomin");
            DropForeignKey("dbo.DovominJobs", "DovominId", "dbo.Dovomin");
            DropIndex("dbo.Avalin", new[] { "Id" });
            DropIndex("dbo.Dovomin", new[] { "Id" });
            DropIndex("dbo.AspNetRoles", "RoleNameIndex");
            DropIndex("dbo.ParameterValues", new[] { "GroupKey" });
            DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" });
            DropIndex("dbo.AspNetUserRoles", new[] { "UserId" });
            DropIndex("dbo.AspNetUserLogins", new[] { "UserId" });
            DropIndex("dbo.Jobs", new[] { "AvalinId" });
            DropIndex("dbo.JobParameters", new[] { "JobId" });
            DropIndex("dbo.JobParameters", "IX_JobParameterUniqueIndex");
            DropIndex("dbo.DovominParameters", new[] { "DovominId" });
            DropIndex("dbo.DovominParameters", "IX_DovominParameterUniqueIndex");
            DropIndex("dbo.AspNetUserClaims", new[] { "UserId" });
            DropIndex("dbo.AspNetUsers", "UserNameIndex");
            DropIndex("dbo.DovominJobs", new[] { "JobId" });
            DropIndex("dbo.DovominJobs", "IX_DovominJobUniqueIndex");
            DropTable("dbo.Avalin");
            DropTable("dbo.Dovomin");
            DropTable("dbo.AspNetRoles");
            DropTable("dbo.ParameterValues");
            DropTable("dbo.AspNetUserRoles");
            DropTable("dbo.AspNetUserLogins");
            DropTable("dbo.Jobs");
            DropTable("dbo.JobParameters");
            DropTable("dbo.Parameters");
            DropTable("dbo.DovominParameters");
            DropTable("dbo.AspNetUserClaims");
            DropTable("dbo.AspNetUsers");
            DropTable("dbo.DovominJobs");
        }
    }
}
