// 
using System;
using Marco.Pms.DataAccess.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Marco.Pms.DataAccess.Migrations
{
    [DbContext(typeof(ApplicationDbContext))]
    [Migration("20250730063711_Change_ExpenseStatus_To_Be_System_Scope")]
    partial class Change_ExpenseStatus_To_Be_System_Scope
    {
        /// 
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "8.0.12")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            //MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
            modelBuilder.Entity("Marco.Pms.Model.Activities.TaskAllocation", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ApprovedById")
                        .HasColumnType("char(36)");
                    b.Property("ApprovedDate")
                        .HasColumnType("datetime(6)");
                    b.Property("AssignedBy")
                        .HasColumnType("char(36)");
                    b.Property("AssignmentDate")
                        .HasColumnType("datetime(6)");
                    b.Property("CompletedTask")
                        .HasColumnType("double");
                    b.Property("Description")
                        .HasColumnType("longtext");
                    b.Property("ParentTaskId")
                        .HasColumnType("char(36)");
                    b.Property("PlannedTask")
                        .HasColumnType("double");
                    b.Property("ReportedById")
                        .HasColumnType("char(36)");
                    b.Property("ReportedDate")
                        .HasColumnType("datetime(6)");
                    b.Property("ReportedTask")
                        .HasColumnType("double");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("WorkItemId")
                        .HasColumnType("char(36)");
                    b.Property("WorkStatusId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ApprovedById");
                    b.HasIndex("AssignedBy");
                    b.HasIndex("ReportedById");
                    b.HasIndex("TenantId");
                    b.HasIndex("WorkItemId");
                    b.HasIndex("WorkStatusId");
                    b.ToTable("TaskAllocations");
                });
            modelBuilder.Entity("Marco.Pms.Model.Activities.TaskAttachment", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("DocumentId")
                        .HasColumnType("char(36)");
                    b.Property("ReferenceId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.ToTable("TaskAttachments");
                });
            modelBuilder.Entity("Marco.Pms.Model.Activities.TaskComment", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Comment")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("CommentDate")
                        .HasColumnType("datetime(6)");
                    b.Property("CommentedBy")
                        .HasColumnType("char(36)");
                    b.Property("TaskAllocationId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("CommentedBy");
                    b.HasIndex("TaskAllocationId");
                    b.HasIndex("TenantId");
                    b.ToTable("TaskComments");
                });
            modelBuilder.Entity("Marco.Pms.Model.Activities.TaskMembers", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("EmployeeId")
                        .HasColumnType("char(36)");
                    b.Property("TaskAllocationId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("EmployeeId");
                    b.HasIndex("TaskAllocationId");
                    b.HasIndex("TenantId");
                    b.ToTable("TaskMembers");
                });
            modelBuilder.Entity("Marco.Pms.Model.AttendanceModule.Attendance", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Activity")
                        .HasColumnType("int");
                    b.Property("ApprovedBy")
                        .HasColumnType("char(36)");
                    b.Property("AttendanceDate")
                        .HasColumnType("datetime(6)");
                    b.Property("Comment")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("Date")
                        .HasColumnType("datetime(6)");
                    b.Property("EmployeeID")
                        .HasColumnType("char(36)");
                    b.Property("InTime")
                        .HasColumnType("datetime(6)");
                    b.Property("IsApproved")
                        .HasColumnType("tinyint(1)");
                    b.Property("OutTime")
                        .HasColumnType("datetime(6)");
                    b.Property("ProjectID")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("EmployeeID");
                    b.HasIndex("TenantId");
                    b.ToTable("Attendes");
                });
            modelBuilder.Entity("Marco.Pms.Model.AttendanceModule.AttendanceLog", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Activity")
                        .HasColumnType("int");
                    b.Property("ActivityTime")
                        .HasColumnType("datetime(6)");
                    b.Property("AttendanceId")
                        .HasColumnType("char(36)");
                    b.Property("Comment")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("DocumentId")
                        .HasColumnType("char(36)");
                    b.Property("EmployeeID")
                        .HasColumnType("char(36)");
                    b.Property("Latitude")
                        .HasColumnType("longtext");
                    b.Property("Longitude")
                        .HasColumnType("longtext");
                    b.Property("Photo")
                        .HasColumnType("longblob");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("UpdatedBy")
                        .HasColumnType("char(36)");
                    b.Property("UpdatedOn")
                        .HasColumnType("datetime(6)");
                    b.HasKey("Id");
                    b.HasIndex("AttendanceId");
                    b.HasIndex("DocumentId");
                    b.HasIndex("EmployeeID");
                    b.HasIndex("TenantId");
                    b.HasIndex("UpdatedBy");
                    b.ToTable("AttendanceLogs");
                });
            modelBuilder.Entity("Marco.Pms.Model.Authentication.MPINDetails", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("MPIN")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("MPINToken")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("TimeStamp")
                        .HasColumnType("datetime(6)");
                    b.Property("UserId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("TenantId");
                    b.ToTable("MPINDetails");
                });
            modelBuilder.Entity("Marco.Pms.Model.Authentication.OTPDetails", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ExpriesInSec")
                        .HasColumnType("int");
                    b.Property("IsUsed")
                        .HasColumnType("tinyint(1)");
                    b.Property("OTP")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("TimeStamp")
                        .HasColumnType("datetime(6)");
                    b.Property("UserId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("TenantId");
                    b.ToTable("OTPDetails");
                });
            modelBuilder.Entity("Marco.Pms.Model.Authentication.RefreshToken", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("CreatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("ExpiryDate")
                        .HasColumnType("datetime(6)");
                    b.Property("IsRevoked")
                        .HasColumnType("tinyint(1)");
                    b.Property("IsUsed")
                        .HasColumnType("tinyint(1)");
                    b.Property("RevokedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("Token")
                        .HasColumnType("longtext");
                    b.Property("UserId")
                        .HasColumnType("varchar(255)");
                    b.HasKey("Id");
                    b.HasIndex("UserId");
                    b.ToTable("RefreshTokens");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.Bucket", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("CreatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("CreatedByID")
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("Name")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("CreatedByID");
                    b.HasIndex("TenantId");
                    b.ToTable("Buckets");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.Contact", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Address")
                        .HasColumnType("longtext");
                    b.Property("ContactCategoryId")
                        .HasColumnType("char(36)");
                    b.Property("CreatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("CreatedById")
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("IsActive")
                        .HasColumnType("tinyint(1)");
                    b.Property("Name")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("Organization")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("UpdatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("UpdatedById")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ContactCategoryId");
                    b.HasIndex("CreatedById");
                    b.HasIndex("TenantId");
                    b.HasIndex("UpdatedById");
                    b.ToTable("Contacts");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactBucketMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("BucketId")
                        .HasColumnType("char(36)");
                    b.Property("ContactId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("BucketId");
                    b.HasIndex("ContactId");
                    b.ToTable("ContactBucketMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactCategoryMaster", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("Name")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("TenantId");
                    b.ToTable("ContactCategoryMasters");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactEmail", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ContactId")
                        .HasColumnType("char(36)");
                    b.Property("EmailAddress")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("IsPrimary")
                        .HasColumnType("tinyint(1)");
                    b.Property("Label")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ContactId");
                    b.ToTable("ContactsEmails");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactNote", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ContactId")
                        .HasColumnType("char(36)");
                    b.Property("CreatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("CreatedById")
                        .HasColumnType("char(36)");
                    b.Property("IsActive")
                        .HasColumnType("tinyint(1)");
                    b.Property("Note")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("UpdatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("UpdatedById")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ContactId");
                    b.HasIndex("CreatedById");
                    b.HasIndex("TenantId");
                    b.HasIndex("UpdatedById");
                    b.ToTable("ContactNotes");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactPhone", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ContactId")
                        .HasColumnType("char(36)");
                    b.Property("IsPrimary")
                        .HasColumnType("tinyint(1)");
                    b.Property("Label")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("PhoneNumber")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ContactId");
                    b.ToTable("ContactsPhones");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactProjectMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ContactId")
                        .HasColumnType("char(36)");
                    b.Property("ProjectId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ContactId");
                    b.HasIndex("ProjectId");
                    b.HasIndex("TenantId");
                    b.ToTable("ContactProjectMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactTagMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ContactId")
                        .HasColumnType("char(36)");
                    b.Property("ContactTagId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ContactId");
                    b.HasIndex("ContactTagId");
                    b.ToTable("ContactTagMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.ContactTagMaster", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("Name")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("TenantId");
                    b.ToTable("ContactTagMasters");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.DirectoryUpdateLog", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("RefereanceId")
                        .HasColumnType("char(36)");
                    b.Property("UpdateAt")
                        .HasColumnType("datetime(6)");
                    b.Property("UpdatedById")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("UpdatedById");
                    b.ToTable("DirectoryUpdateLogs");
                });
            modelBuilder.Entity("Marco.Pms.Model.Directory.EmployeeBucketMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("BucketId")
                        .HasColumnType("char(36)");
                    b.Property("EmployeeId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("BucketId");
                    b.HasIndex("EmployeeId");
                    b.ToTable("EmployeeBucketMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.DocumentManager.Document", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Base64Data")
                        .HasColumnType("longtext");
                    b.Property("BatchId")
                        .HasColumnType("char(36)");
                    b.Property("ContentType")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("FileName")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("FileSize")
                        .HasColumnType("bigint");
                    b.Property("S3Key")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("ThumbS3Key")
                        .HasColumnType("longtext");
                    b.Property("UploadedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("UploadedById")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("TenantId");
                    b.HasIndex("UploadedById");
                    b.ToTable("Documents");
                });
            modelBuilder.Entity("Marco.Pms.Model.Employees.Employee", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("AadharNumber")
                        .HasColumnType("longtext");
                    b.Property("ApplicationUserId")
                        .HasColumnType("varchar(255)");
                    b.Property("BirthDate")
                        .HasColumnType("datetime(6)");
                    b.Property("CurrentAddress")
                        .HasColumnType("longtext");
                    b.Property("Email")
                        .HasColumnType("longtext");
                    b.Property("EmergencyContactPerson")
                        .HasColumnType("longtext");
                    b.Property("EmergencyPhoneNumber")
                        .HasColumnType("longtext");
                    b.Property("FirstName")
                        .HasColumnType("longtext");
                    b.Property("Gender")
                        .HasColumnType("longtext");
                    b.Property("IsActive")
                        .HasColumnType("tinyint(1)");
                    b.Property("IsSystem")
                        .HasColumnType("tinyint(1)");
                    b.Property("JobRoleId")
                        .HasColumnType("char(36)");
                    b.Property("JoiningDate")
                        .HasColumnType("datetime(6)");
                    b.Property("LastName")
                        .HasColumnType("longtext");
                    b.Property("MiddleName")
                        .HasColumnType("longtext");
                    b.Property("PanNumber")
                        .HasColumnType("longtext");
                    b.Property("PermanentAddress")
                        .HasColumnType("longtext");
                    b.Property("PhoneNumber")
                        .HasColumnType("longtext");
                    b.Property("Photo")
                        .HasColumnType("longblob");
                    b.Property("RoleId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ApplicationUserId");
                    b.HasIndex("JobRoleId");
                    b.HasIndex("TenantId");
                    b.ToTable("Employees");
                });
            modelBuilder.Entity("Marco.Pms.Model.Employees.EmployeeRoleMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("EmployeeId")
                        .HasColumnType("char(36)");
                    b.Property("IsEnabled")
                        .HasColumnType("tinyint(1)");
                    b.Property("RoleId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("EmployeeId");
                    b.HasIndex("RoleId");
                    b.HasIndex("TenantId");
                    b.ToTable("EmployeeRoleMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.Employees.WorkShift", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("EndTime")
                        .HasColumnType("time(6)");
                    b.Property("Name")
                        .HasColumnType("longtext");
                    b.Property("StartTime")
                        .HasColumnType("time(6)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("TenantId");
                    b.ToTable("WorkShifts");
                });
            modelBuilder.Entity("Marco.Pms.Model.Entitlements.ActivityCheckList", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ActivityId")
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .HasColumnType("longtext");
                    b.Property("IsChecked")
                        .HasColumnType("tinyint(1)");
                    b.Property("IsMandatory")
                        .HasColumnType("tinyint(1)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.ToTable("ActivityCheckLists");
                });
            modelBuilder.Entity("Marco.Pms.Model.Entitlements.CheckListMappings", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("CheckListId")
                        .HasColumnType("char(36)");
                    b.Property("TaskAllocationId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.ToTable("CheckListMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.Entitlements.FeaturePermission", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .HasColumnType("longtext");
                    b.Property("FeatureId")
                        .HasColumnType("char(36)");
                    b.Property("IsEnabled")
                        .HasColumnType("tinyint(1)");
                    b.Property("Name")
                        .HasColumnType("longtext");
                    b.HasKey("Id");
                    b.HasIndex("FeatureId");
                    b.ToTable("FeaturePermissions");
                    b.HasData(
                        new
                        {
                            Id = new Guid("6ea44136-987e-44ba-9e5d-1cf8f5837ebc"),
                            Description = "Access all information related to the project.",
                            FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"),
                            IsEnabled = true,
                            Name = "View Project"
                        },
                        new
                        {
                            Id = new Guid("172fc9b6-755b-4f62-ab26-55c34a330614"),
                            Description = "Potentially edit the project name, description, start/end dates, or status.",
                            FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"),
                            IsEnabled = true,
                            Name = "Manage Project"
                        },
                        new
                        {
                            Id = new Guid("b94802ce-0689-4643-9e1d-11c86950c35b"),
                            Description = "The \"Manage Team\" feature allows authorized users to organize project personnel by adding, removing, and assigning employee to projects.",
                            FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"),
                            IsEnabled = true,
                            Name = "Manage Team"
                        },
                        new
                        {
                            Id = new Guid("8d7cc6e3-9147-41f7-aaa7-fa507e450bd4"),
                            Description = "Grants a user comprehensive read-only access to all details concerning the project's underlying systems, technologies, resources, and configurations",
                            FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"),
                            IsEnabled = true,
                            Name = "View Project Infra"
                        },
                        new
                        {
                            Id = new Guid("cf2825ad-453b-46aa-91d9-27c124d63373"),
                            Description = "This allows them to create, modify, and manage all aspects of the supporting infrastructure.",
                            FeatureId = new Guid("53176ebf-c75d-42e5-839f-4508ffac3def"),
                            IsEnabled = true,
                            Name = "Manage Project Infra"
                        },
                        new
                        {
                            Id = new Guid("9fcc5f87-25e3-4846-90ac-67a71ab92e3c"),
                            Description = "Grants a user comprehensive read-only access to all details associated with tasks within a project. This includes task descriptions, statuses, assignees, due dates, dependencies, progress, history, and any related attachments or discussions.",
                            FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"),
                            IsEnabled = true,
                            Name = "View Task"
                        },
                        new
                        {
                            Id = new Guid("08752f33-3b29-4816-b76b-ea8a968ed3c5"),
                            Description = "This allows them to create new tasks, modify existing task attributes (description, status, assignee, due date, etc.),",
                            FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"),
                            IsEnabled = true,
                            Name = "Add/Edit Task"
                        },
                        new
                        {
                            Id = new Guid("6a32379b-8b3f-49a6-8c48-4b7ac1b55dc2"),
                            Description = "Grants a user the ability to designate team members responsible for specific tasks and to update the completion status or provide progress updates for those tasks",
                            FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"),
                            IsEnabled = true,
                            Name = "Assign/Report Progress"
                        },
                        new
                        {
                            Id = new Guid("db4e40c5-2ba9-4b6d-b8a6-a16a250ff99c"),
                            Description = "Grants a user the authority to officially confirm the completion or acceptance of a task, often signifying that it meets the required standards or criteria",
                            FeatureId = new Guid("9d4b5489-2079-40b9-bd77-6e1bf90bc19f"),
                            IsEnabled = true,
                            Name = "Approve Task"
                        },
                        new
                        {
                            Id = new Guid("60611762-7f8a-4fb5-b53f-b1139918796b"),
                            Description = "Grants a user read-only access to details about the all individuals within the system. This typically includes names, contact information, roles, departments, and potentially other relevant employee data",
                            FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"),
                            IsEnabled = true,
                            Name = "View All Employees"
                        },
                        new
                        {
                            Id = new Guid("b82d2b7e-0d52-45f3-997b-c008ea460e7f"),
                            Description = "Grants a user read-only access to details about the individuals within the system which are is assigned to same projects as user. This typically includes names, contact information, roles, departments, and potentially other relevant employee data",
                            FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"),
                            IsEnabled = true,
                            Name = "View Team Members"
                        },
                        new
                        {
                            Id = new Guid("a97d366a-c2bb-448d-be93-402bd2324566"),
                            Description = "Grants a user the authority to create new employee profiles and modify existing employee details within the system. This typically includes adding or updating information such as names, contact details, roles, departments, skills, and potentially other personal or professional data",
                            FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"),
                            IsEnabled = true,
                            Name = "Add/Edit Employee"
                        },
                        new
                        {
                            Id = new Guid("fbd213e0-0250-46f1-9f5f-4b2a1e6e76a3"),
                            Description = "Grants a user the authority to manage employee application roles, enabling them to assign or revoke access privileges within the system.",
                            FeatureId = new Guid("81ab8a87-8ccd-4015-a917-0627cee6a100"),
                            IsEnabled = true,
                            Name = "Assign Roles"
                        },
                        new
                        {
                            Id = new Guid("915e6bff-65f6-4e3f-aea8-3fd217d3ea9e"),
                            Description = "Team Attendance refers to tracking and managing the attendance of all team members collectively, often monitored by a team lead or manager.",
                            FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"),
                            IsEnabled = true,
                            Name = "Team Attendance "
                        },
                        new
                        {
                            Id = new Guid("57802c4a-00aa-4a1f-a048-fd2f70dd44b6"),
                            Description = "Grants a user the authority to approve requests from employees to adjust or correct their recorded attendance. This typically involves reviewing the reason for the regularization, verifying any supporting documentation, and then officially accepting the changes to the employee's attendance records",
                            FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"),
                            IsEnabled = true,
                            Name = "Regularize Attendance"
                        },
                        new
                        {
                            Id = new Guid("ccb0589f-712b-43de-92ed-5b6088e7dc4e"),
                            Description = "Team Attendance refers to tracking and managing the attendance of all team members collectively, often monitored by a team lead or manager.",
                            FeatureId = new Guid("52c9cf54-1eb2-44d2-81bb-524cf29c0a94"),
                            IsEnabled = true,
                            Name = "Self Attendance"
                        },
                        new
                        {
                            Id = new Guid("5ffbafe0-7ab0-48b1-bb50-c1bf76b65f9d"),
                            Description = "Grants a user read-only access to foundational or reference data within the system. \"Masters\" typically refer to predefined lists, categories, or templates that are used throughout the application to standardize information and maintain consistency",
                            FeatureId = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"),
                            IsEnabled = true,
                            Name = "View Masters"
                        },
                        new
                        {
                            Id = new Guid("588a8824-f924-4955-82d8-fc51956cf323"),
                            Description = "Grants a user the authority to create, modify, and delete foundational or reference data within the system. These \"masters\" are typically the core lists, categories, and configurations that other data and functionalities rely upon, such as departments, job titles, product categories",
                            FeatureId = new Guid("be3b3afc-6ccf-4566-b9b6-aafcb65546be"),
                            IsEnabled = true,
                            Name = "Manage Masters"
                        },
                        new
                        {
                            Id = new Guid("4286a13b-bb40-4879-8c6d-18e9e393beda"),
                            Description = "Full control over all directories, including the ability to manage permissions for all directories in the system.",
                            FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"),
                            IsEnabled = true,
                            Name = "Directory Admin"
                        },
                        new
                        {
                            Id = new Guid("62668630-13ce-4f52-a0f0-db38af2230c5"),
                            Description = "Full control over directories they created or have been assigned. Can also manage permissions for those directories.",
                            FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"),
                            IsEnabled = true,
                            Name = "Directory Manager"
                        },
                        new
                        {
                            Id = new Guid("0f919170-92d4-4337-abd3-49b66fc871bb"),
                            Description = "Full control over directories they created. Can view contacts in directories they either created or were assigned to. Can manage permissions only for directories they created.",
                            FeatureId = new Guid("39e66f81-efc6-446c-95bd-46bff6cfb606"),
                            IsEnabled = true,
                            Name = "Directory User"
                        },
                        new
                        {
                            Id = new Guid("385be49f-8fde-440e-bdbc-3dffeb8dd116"),
                            Description = "Allows a user to view only the expense records that they have personally submitted",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "View Self"
                        },
                        new
                        {
                            Id = new Guid("01e06444-9ca7-4df4-b900-8c3fa051b92f"),
                            Description = "Allows a user to view all expense records across the organization or project, regardless of who submitted or paid them",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "View All"
                        },
                        new
                        {
                            Id = new Guid("0f57885d-bcb2-4711-ac95-d841ace6d5a7"),
                            Description = "Allows a user to create and submit new expense records, including attaching relevant documents like receipts or invoices.",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "Upload"
                        },
                        new
                        {
                            Id = new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"),
                            Description = "Allows a user to examine submitted expenses for accuracy, completeness, and policy compliance before they are approved or rejected.",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "Review"
                        },
                        new
                        {
                            Id = new Guid("eaafdd76-8aac-45f9-a530-315589c6deca"),
                            Description = "Allows a user to authorize or reject submitted expenses, making them officially accepted or declined within the system.",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "Approve"
                        },
                        new
                        {
                            Id = new Guid("ea5a1529-4ee8-4828-80ea-0e23c9d4dd11"),
                            Description = "Allows a user to handle post-approval actions such as recording payments, updating financial records, or marking expenses as reimbursed or settled.",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "Process"
                        },
                        new
                        {
                            Id = new Guid("bdee29a2-b73b-402d-8dd1-c4b1f81ccbc3"),
                            Description = "Allows a user to configure and control system settings, such as managing expense types, payment modes, permissions, and overall workflow rules.",
                            FeatureId = new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"),
                            IsEnabled = true,
                            Name = "Manage"
                        });
                });
            modelBuilder.Entity("Marco.Pms.Model.Entitlements.RolePermissionMappings", b =>
                {
                    b.Property("ApplicationRoleId")
                        .HasColumnType("char(36)");
                    b.Property("FeaturePermissionId")
                        .HasColumnType("char(36)");
                    b.HasKey("ApplicationRoleId", "FeaturePermissionId");
                    b.HasIndex("FeaturePermissionId");
                    b.ToTable("RolePermissionMappings");
                });
            modelBuilder.Entity("Marco.Pms.Model.Entitlements.Tenant", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ContactName")
                        .HasColumnType("longtext");
                    b.Property("ContactNumber")
                        .HasColumnType("longtext");
                    b.Property("Description")
                        .HasColumnType("longtext");
                    b.Property("DomainName")
                        .HasColumnType("longtext");
                    b.Property("IndustryId")
                        .HasColumnType("char(36)");
                    b.Property("IsActive")
                        .HasColumnType("tinyint(1)");
                    b.Property("Name")
                        .HasColumnType("longtext");
                    b.Property("OnBoardingDate")
                        .HasColumnType("datetime(6)");
                    b.Property("OragnizationSize")
                        .HasColumnType("longtext");
                    b.HasKey("Id");
                    b.HasIndex("IndustryId");
                    b.ToTable("Tenants");
                    b.HasData(
                        new
                        {
                            Id = new Guid("b3466e83-7e11-464c-b93a-daf047838b26"),
                            ContactName = "Admin",
                            ContactNumber = "123456789",
                            Description = "",
                            DomainName = "www.marcobms.org",
                            IndustryId = new Guid("15436ee3-a650-469e-bfc2-59993f7514bb"),
                            IsActive = true,
                            Name = "MarcoBMS",
                            OnBoardingDate = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
                            OragnizationSize = "100-200"
                        });
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.BillAttachments", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("DocumentId")
                        .HasColumnType("char(36)");
                    b.Property("ExpensesId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("DocumentId");
                    b.HasIndex("ExpensesId");
                    b.HasIndex("TenantId");
                    b.ToTable("BillAttachments");
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.ExpenseLog", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Action")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("Comment")
                        .HasColumnType("longtext");
                    b.Property("ExpenseId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("UpdatedById")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ExpenseId");
                    b.HasIndex("TenantId");
                    b.HasIndex("UpdatedById");
                    b.ToTable("ExpenseLogs");
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.Expenses", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("Amount")
                        .HasColumnType("double");
                    b.Property("ApprovedById")
                        .HasColumnType("char(36)");
                    b.Property("CreatedAt")
                        .HasColumnType("datetime(6)");
                    b.Property("CreatedById")
                        .HasColumnType("char(36)");
                    b.Property("Description")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("ExpensesTypeId")
                        .HasColumnType("char(36)");
                    b.Property("GSTNumber")
                        .HasColumnType("longtext");
                    b.Property("IsActive")
                        .HasColumnType("tinyint(1)");
                    b.Property("Location")
                        .HasColumnType("longtext");
                    b.Property("NoOfPersons")
                        .HasColumnType("int");
                    b.Property("PaidById")
                        .HasColumnType("char(36)");
                    b.Property("PaymentModeId")
                        .HasColumnType("char(36)");
                    b.Property("PreApproved")
                        .HasColumnType("tinyint(1)");
                    b.Property("ProcessedById")
                        .HasColumnType("char(36)");
                    b.Property("ProjectId")
                        .HasColumnType("char(36)");
                    b.Property("ReviewedById")
                        .HasColumnType("char(36)");
                    b.Property("StatusId")
                        .HasColumnType("char(36)");
                    b.Property("SupplerName")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.Property("TransactionDate")
                        .HasColumnType("datetime(6)");
                    b.Property("TransactionId")
                        .HasColumnType("longtext");
                    b.HasKey("Id");
                    b.HasIndex("ApprovedById");
                    b.HasIndex("CreatedById");
                    b.HasIndex("ExpensesTypeId");
                    b.HasIndex("PaidById");
                    b.HasIndex("PaymentModeId");
                    b.HasIndex("ProcessedById");
                    b.HasIndex("ProjectId");
                    b.HasIndex("ReviewedById");
                    b.HasIndex("StatusId");
                    b.HasIndex("TenantId");
                    b.ToTable("Expenses");
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.ExpensesReimburse", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ReimburseById")
                        .HasColumnType("char(36)");
                    b.Property("ReimburseDate")
                        .HasColumnType("datetime(6)");
                    b.Property("ReimburseNote")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("ReimburseTransactionId")
                        .IsRequired()
                        .HasColumnType("longtext");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ReimburseById");
                    b.HasIndex("TenantId");
                    b.ToTable("ExpensesReimburse");
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.ExpensesReimburseMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("ExpensesId")
                        .HasColumnType("char(36)");
                    b.Property("ExpensesReimburseId")
                        .HasColumnType("char(36)");
                    b.Property("TenantId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("ExpensesId");
                    b.HasIndex("ExpensesReimburseId");
                    b.HasIndex("TenantId");
                    b.ToTable("ExpensesReimburseMapping");
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.ExpensesStatusMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("NextStatusId")
                        .HasColumnType("char(36)");
                    b.Property("StatusId")
                        .HasColumnType("char(36)");
                    b.HasKey("Id");
                    b.HasIndex("NextStatusId");
                    b.HasIndex("StatusId");
                    b.ToTable("ExpensesStatusMapping");
                    b.HasData(
                        new
                        {
                            Id = new Guid("5cf7f1df-9d1f-4289-add0-1775ad614f25"),
                            NextStatusId = new Guid("61578360-3a49-4c34-8604-7b35a3787b95"),
                            StatusId = new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27")
                        },
                        new
                        {
                            Id = new Guid("4ddddc10-0ffd-4884-accf-d4fa0bd97f54"),
                            NextStatusId = new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"),
                            StatusId = new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729")
                        },
                        new
                        {
                            Id = new Guid("36c00548-241c-43ec-bc95-cacebedb925c"),
                            NextStatusId = new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"),
                            StatusId = new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8")
                        },
                        new
                        {
                            Id = new Guid("1fca1700-1266-477d-bba4-9ac3753aa33c"),
                            NextStatusId = new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27"),
                            StatusId = new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8")
                        },
                        new
                        {
                            Id = new Guid("9e2ec648-1ca2-4747-9329-e911b18edb3e"),
                            NextStatusId = new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"),
                            StatusId = new Guid("965eda62-7907-4963-b4a1-657fb0b2724b")
                        },
                        new
                        {
                            Id = new Guid("6b867bec-66e6-42a7-9611-f4595af9b9ce"),
                            NextStatusId = new Guid("965eda62-7907-4963-b4a1-657fb0b2724b"),
                            StatusId = new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7")
                        },
                        new
                        {
                            Id = new Guid("ef1fcfbc-60e0-4f17-9308-c583a05d48fd"),
                            NextStatusId = new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"),
                            StatusId = new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7")
                        },
                        new
                        {
                            Id = new Guid("af1e4492-98ee-4451-8ab7-fd8323f29c32"),
                            NextStatusId = new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"),
                            StatusId = new Guid("297e0d8f-f668-41b5-bfea-e03b354251c8")
                        });
                });
            modelBuilder.Entity("Marco.Pms.Model.Expenses.StatusPermissionMapping", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property("PermissionId")
                        .HasColumnType("char(36)");
                    b.Property