// <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 TecniStamp.Infrastructure.DAL.Context;

#nullable disable

namespace TecniStamp.Infrastructure.Migrations
{
    [DbContext(typeof(TecniStampDbContext))]
    [Migration("20260130123720_Anagrafiche")]
    partial class Anagrafiche
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.11")
                .HasAnnotation("Relational:MaxIdentifierLength", 128);

            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);

            modelBuilder.Entity("TecniStamp.Domain.Feature", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

                    b.HasIndex("SezioneId");

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

            modelBuilder.Entity("TecniStamp.Domain.Lavorazione", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

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

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

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

                    b.Property<float?>("CostoOrario")
                        .HasColumnType("real");

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

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

            modelBuilder.Entity("TecniStamp.Domain.Macchinario", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

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

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

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

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

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

            modelBuilder.Entity("TecniStamp.Domain.Permission", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdFeature");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

                    b.HasIndex("RuoloId");

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

            modelBuilder.Entity("TecniStamp.Domain.Ruolo", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

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

            modelBuilder.Entity("TecniStamp.Domain.Sezione", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

                    b.HasIndex("ParentId");

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

            modelBuilder.Entity("TecniStamp.Domain.Utente", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");

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

                    b.Property<decimal>("Costo")
                        .HasColumnType("decimal(18,2)");

                    b.Property<DateTime>("DataCreazione")
                        .HasColumnType("datetime2");

                    b.Property<DateTime?>("DataModifica")
                        .HasColumnType("datetime2");

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

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

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

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("IdUtenteCreazione");

                    b.HasIndex("IdUtenteModifica");

                    b.HasIndex("RuoloId");

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

            modelBuilder.Entity("TecniStamp.Domain.Feature", b =>
                {
                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.HasOne("TecniStamp.Domain.Sezione", "Sezione")
                        .WithMany("Features")
                        .HasForeignKey("SezioneId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Sezione");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Lavorazione", b =>
                {
                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Macchinario", b =>
                {
                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Permission", b =>
                {
                    b.HasOne("TecniStamp.Domain.Feature", "Feature")
                        .WithMany()
                        .HasForeignKey("IdFeature")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.HasOne("TecniStamp.Domain.Ruolo", "Ruolo")
                        .WithMany("Permessi")
                        .HasForeignKey("RuoloId");

                    b.Navigation("Feature");

                    b.Navigation("Ruolo");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Ruolo", b =>
                {
                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Sezione", b =>
                {
                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.HasOne("TecniStamp.Domain.Sezione", "Parent")
                        .WithMany()
                        .HasForeignKey("ParentId");

                    b.Navigation("Parent");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Utente", b =>
                {
                    b.HasOne("TecniStamp.Domain.Utente", "UtenteCreazione")
                        .WithMany()
                        .HasForeignKey("IdUtenteCreazione");

                    b.HasOne("TecniStamp.Domain.Utente", "UtenteModifica")
                        .WithMany()
                        .HasForeignKey("IdUtenteModifica");

                    b.HasOne("TecniStamp.Domain.Ruolo", "Ruolo")
                        .WithMany("Utenti")
                        .HasForeignKey("RuoloId");

                    b.Navigation("Ruolo");

                    b.Navigation("UtenteCreazione");

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

            modelBuilder.Entity("TecniStamp.Domain.Ruolo", b =>
                {
                    b.Navigation("Permessi");

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

            modelBuilder.Entity("TecniStamp.Domain.Sezione", b =>
                {
                    b.Navigation("Features");
                });
#pragma warning restore 612, 618
        }
    }
}
