From b2d7fcb34ebcf1567a50a0ce778b8abc53de537a Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz <m.w.bohdanowicz@gmail.com> Date: Sat, 9 Jan 2021 12:37:12 +0100 Subject: [PATCH 1/6] XD --- global.json | 5 - .../Controllers/ReportFieldsController.cs | 32 + src/InternshipSystem.Core/Entity/Edition.cs | 1 + .../Entity/ReportField.cs | 29 + .../InternshipDbContext.cs | 31 + .../20201128203805_init.Designer.cs | 699 +--------------- .../Migrations/20201128203805_init.cs | 482 +---------- .../20210107220846_Init.Designer.cs | 778 ++++++++++++++++++ .../Migrations/20210107220846_Init.cs | 533 ++++++++++++ .../InternshipDbContextModelSnapshot.cs | 96 ++- 10 files changed, 1494 insertions(+), 1192 deletions(-) delete mode 100644 global.json create mode 100644 src/InternshipSystem.Api/Controllers/ReportFieldsController.cs create mode 100644 src/InternshipSystem.Core/Entity/ReportField.cs create mode 100644 src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs create mode 100644 src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs diff --git a/global.json b/global.json deleted file mode 100644 index c120c81..0000000 --- a/global.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sdk": { - "version": "3.1.301" - } -} \ No newline at end of file diff --git a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs new file mode 100644 index 0000000..88a2877 --- /dev/null +++ b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs @@ -0,0 +1,32 @@ +using System.Threading; +using System.Threading.Tasks; +using InternshipSystem.Repository; +using Microsoft.AspNetCore.Mvc; + +namespace InternshipSystem.Api.Controllers +{ + public class ReportFieldsController : ControllerBase + { + private readonly InternshipDbContext _context; + + public ReportFieldsController(InternshipDbContext context) + { + _context = context; + } + + public async Task<ActionResult> CreateField(FieldCreateRequest request, CancellationToken ct) + { + + + return Ok(); + } + } + + public class FieldCreateRequest + { + public string Label { get; set; } + public string LabelEng { get; set; } + public string Description { get; set; } + public string DescriptionEng { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Core/Entity/Edition.cs b/src/InternshipSystem.Core/Entity/Edition.cs index dd00699..705f045 100644 --- a/src/InternshipSystem.Core/Entity/Edition.cs +++ b/src/InternshipSystem.Core/Entity/Edition.cs @@ -17,6 +17,7 @@ namespace InternshipSystem.Core public List<Internship> Internships { get; set; } public List<EditionSubject> AvailableSubjects { get; set; } public List<EditionInternshipType> AvailableInternshipTypes { get; set; } + public List<ReportFieldEdition> ReportSchema { get; set; } public bool IsOpen => EditionFinish < DateTime.Today; diff --git a/src/InternshipSystem.Core/Entity/ReportField.cs b/src/InternshipSystem.Core/Entity/ReportField.cs new file mode 100644 index 0000000..9b6b6a8 --- /dev/null +++ b/src/InternshipSystem.Core/Entity/ReportField.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +namespace InternshipSystem.Core.Entity +{ + public class ReportField + { + public long Id { get; set; } + public string Label { get; set; } + public string LabelEng { get; set; } + public string Description { get; set; } + public string DescriptionEng { get; set; } + public FieldType FieldType { get; set; } + } + + public enum FieldType + { + LongText, + ShortText, + Select, + Radial, + Checkbox + } + + public class ReportChoiceField : ReportField + { + public string[] Choices { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index 117f5ea..adf2279 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -1,3 +1,5 @@ +using System; +using System.Linq; using Microsoft.EntityFrameworkCore; using InternshipSystem.Core; using InternshipSystem.Core.Entity; @@ -90,6 +92,35 @@ namespace InternshipSystem.Repository .WithMany() .HasForeignKey(subject => subject.InternshipSubjectId); }); + + modelBuilder.Entity<ReportFieldEdition>(builder => + { + builder + .HasKey(e => new {e.EditionId, e.ReportFieldId}); + + builder + .HasOne(e => e.Edition) + .WithMany(edition => edition.ReportSchema) + .HasForeignKey(r => r.EditionId); + + builder + .HasOne(e => e.Field) + .WithMany() + .HasForeignKey(r => r.ReportFieldId); + }); + + modelBuilder.Entity<ReportField>() + .HasDiscriminator(r => r.FieldType); + + modelBuilder.Entity<ReportChoiceField>() + .Property(r => r.Choices) + .HasConversion( + a => string.Join('#', a), + s => s.Split('#', StringSplitOptions.RemoveEmptyEntries)); + + modelBuilder.Entity<Report>() + .Property(r => r.Value) + .HasColumnType("jsonb"); } } } \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs index 0f461fa..5f28270 100644 --- a/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs +++ b/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs @@ -1,698 +1 @@ -// <auto-generated /> -using System; -using InternshipSystem.Repository; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - [DbContext(typeof(InternshipDbContext))] - [Migration("20201128203805_init")] - partial class init - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) - .HasAnnotation("ProductVersion", "3.1.4") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<long?>("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property<long>("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_branch_office"); - - b.HasIndex("CompanyId") - .HasName("ix_branch_office_company_id"); - - b.ToTable("branch_office"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Company", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property<string>("Nip") - .HasColumnName("nip") - .HasColumnType("text"); - - b.Property<long>("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_companies"); - - b.ToTable("companies"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<long?>("InternshipId") - .HasColumnName("internship_id") - .HasColumnType("bigint"); - - b.Property<string>("RejectionReason") - .HasColumnName("rejection_reason") - .HasColumnType("text"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<int>("Type") - .HasColumnName("type") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_document"); - - b.HasIndex("InternshipId") - .HasName("ix_document_internship_id"); - - b.ToTable("document"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.Property<long>("DocumentId") - .HasColumnName("document_id") - .HasColumnType("bigint"); - - b.Property<byte[]>("File") - .HasColumnName("file") - .HasColumnType("bytea"); - - b.Property<string>("Filename") - .HasColumnName("filename") - .HasColumnType("text"); - - b.Property<string>("Mime") - .HasColumnName("mime") - .HasColumnType("text"); - - b.Property<long>("Size") - .HasColumnName("size") - .HasColumnType("bigint"); - - b.HasKey("DocumentId") - .HasName("pk_document_scan"); - - b.ToTable("document_scan"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.Property<Guid>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("uuid"); - - b.Property<long?>("CourseId") - .HasColumnName("course_id") - .HasColumnType("bigint"); - - b.Property<DateTime>("EditionFinish") - .HasColumnName("edition_finish") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("EditionStart") - .HasColumnName("edition_start") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("ReportingStart") - .HasColumnName("reporting_start") - .HasColumnType("timestamp without time zone"); - - b.HasKey("Id") - .HasName("pk_editions"); - - b.HasIndex("CourseId") - .HasName("ix_editions_course_id"); - - b.ToTable("editions"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Course", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property<string>("NameEng") - .HasColumnName("name_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_courses"); - - b.ToTable("courses"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<Guid?>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<float?>("Grade") - .HasColumnName("grade") - .HasColumnType("real"); - - b.Property<long?>("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property<long?>("ReportId") - .HasColumnName("report_id") - .HasColumnType("bigint"); - - b.Property<long?>("StudentId") - .HasColumnName("student_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship"); - - b.HasIndex("EditionId") - .HasName("ix_internship_edition_id"); - - b.HasIndex("InternshipRegistrationId") - .HasName("ix_internship_internship_registration_id"); - - b.HasIndex("ReportId") - .HasName("ix_internship_report_id"); - - b.HasIndex("StudentId") - .HasName("ix_internship_student_id"); - - b.ToTable("internship"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<long?>("BranchAddressId") - .HasColumnName("branch_address_id") - .HasColumnType("bigint"); - - b.Property<long?>("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property<int>("DeclaredHours") - .HasColumnName("declared_hours") - .HasColumnType("integer"); - - b.Property<DateTime>("End") - .HasColumnName("end") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("Start") - .HasColumnName("start") - .HasColumnType("timestamp without time zone"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<long?>("TypeId") - .HasColumnName("type_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship_registration"); - - b.HasIndex("BranchAddressId") - .HasName("ix_internship_registration_branch_address_id"); - - b.HasIndex("CompanyId") - .HasName("ix_internship_registration_company_id"); - - b.HasIndex("TypeId") - .HasName("ix_internship_registration_type_id"); - - b.ToTable("internship_registration"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_subject"); - - b.ToTable("internship_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.Property<string>("Label") - .HasColumnName("label") - .HasColumnType("text"); - - b.Property<string>("LabelEng") - .HasColumnName("label_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_types"); - - b.ToTable("internship_types"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Report", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<int>("Range") - .HasColumnName("range") - .HasColumnType("integer"); - - b.Property<string>("SiteAddress") - .HasColumnName("site_address") - .HasColumnType("text"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_report"); - - b.ToTable("report"); - }); - - modelBuilder.Entity("InternshipSystem.Core.StaticPage", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("AccessName") - .HasColumnName("access_name") - .HasColumnType("text"); - - b.Property<string>("Content") - .HasColumnName("content") - .HasColumnType("text"); - - b.Property<string>("ContentEng") - .HasColumnName("content_eng") - .HasColumnType("text"); - - b.Property<string>("Title") - .HasColumnName("title") - .HasColumnType("text"); - - b.Property<string>("TitleEng") - .HasColumnName("title_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_static_pages"); - - b.ToTable("static_pages"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Student", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<int>("AlbumNumber") - .HasColumnName("album_number") - .HasColumnType("integer"); - - b.Property<string>("Course") - .HasColumnName("course") - .HasColumnType("text"); - - b.Property<string>("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b.Property<string>("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b.Property<string>("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b.Property<int?>("Semester") - .HasColumnName("semester") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_students"); - - b.ToTable("students"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("InternshipTypeId") - .HasColumnName("internship_type_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipTypeId") - .HasName("pk_edition_internship_type"); - - b.HasIndex("InternshipTypeId") - .HasName("ix_edition_internship_type_internship_type_id"); - - b.ToTable("edition_internship_type"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipSubjectId") - .HasName("pk_edition_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_edition_subject_internship_subject_id"); - - b.ToTable("edition_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.Property<long>("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property<long>("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("InternshipRegistrationId", "InternshipSubjectId") - .HasName("pk_program_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_program_subject_internship_subject_id"); - - b.ToTable("program_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.HasOne("InternshipSystem.Core.Company", null) - .WithMany("Branches") - .HasForeignKey("CompanyId") - .HasConstraintName("fk_branch_office_companies_company_id"); - - b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 => - { - b1.Property<long>("BranchOfficeId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property<string>("Building") - .HasColumnName("building") - .HasColumnType("text"); - - b1.Property<string>("City") - .HasColumnName("city") - .HasColumnType("text"); - - b1.Property<string>("Country") - .HasColumnName("country") - .HasColumnType("text"); - - b1.Property<string>("PostalCode") - .HasColumnName("postal_code") - .HasColumnType("text"); - - b1.Property<string>("Street") - .HasColumnName("street") - .HasColumnType("text"); - - b1.HasKey("BranchOfficeId") - .HasName("pk_branch_office"); - - b1.ToTable("branch_office"); - - b1.WithOwner() - .HasForeignKey("BranchOfficeId") - .HasConstraintName("fk_branch_address_branch_office_branch_office_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null) - .WithMany("Documentation") - .HasForeignKey("InternshipId") - .HasConstraintName("fk_document_internship_internship_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.HasOne("InternshipSystem.Core.Document", "Document") - .WithOne("Scan") - .HasForeignKey("InternshipSystem.Core.DocumentScan", "DocumentId") - .HasConstraintName("fk_document_scan_document_document_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.HasOne("InternshipSystem.Core.Entity.Course", "Course") - .WithMany() - .HasForeignKey("CourseId") - .HasConstraintName("fk_editions_courses_course_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("Internships") - .HasForeignKey("EditionId") - .HasConstraintName("fk_internship_editions_edition_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration") - .WithMany() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_internship_internship_registration_internship_registration_"); - - b.HasOne("InternshipSystem.Core.Report", "Report") - .WithMany() - .HasForeignKey("ReportId") - .HasConstraintName("fk_internship_report_report_id"); - - b.HasOne("InternshipSystem.Core.Student", "Student") - .WithMany() - .HasForeignKey("StudentId") - .HasConstraintName("fk_internship_students_student_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress") - .WithMany() - .HasForeignKey("BranchAddressId") - .HasConstraintName("fk_internship_registration_branch_office_branch_address_id"); - - b.HasOne("InternshipSystem.Core.Company", "Company") - .WithMany() - .HasForeignKey("CompanyId") - .HasConstraintName("fk_internship_registration_companies_company_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type") - .WithMany() - .HasForeignKey("TypeId") - .HasConstraintName("fk_internship_registration_internship_types_type_id"); - - b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 => - { - b1.Property<long>("InternshipRegistrationId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property<string>("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b1.Property<string>("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b1.Property<string>("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b1.Property<string>("PhoneNumber") - .HasColumnName("phone_number") - .HasColumnType("text"); - - b1.HasKey("InternshipRegistrationId") - .HasName("pk_internship_registration"); - - b1.ToTable("internship_registration"); - - b1.WithOwner() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_mentor_internship_registration_internship_registration_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableInternshipTypes") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_internship_type_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType") - .WithMany() - .HasForeignKey("InternshipTypeId") - .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableSubjects") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_subject_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration") - .WithMany("Subjects") - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_program_subject_internship_registration_internship_registrat") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} + \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs b/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs index ac30931..5f28270 100644 --- a/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs +++ b/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs @@ -1,481 +1 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - public partial class init : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "companies", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - nip = table.Column<string>(nullable: true), - name = table.Column<string>(nullable: true), - provider = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_companies", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "courses", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column<string>(nullable: true), - name_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_courses", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "internship_subject", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - description = table.Column<string>(nullable: true), - description_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_subject", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "internship_types", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - label = table.Column<string>(nullable: true), - label_eng = table.Column<string>(nullable: true), - description = table.Column<string>(nullable: true), - description_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_types", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "report", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - state = table.Column<int>(nullable: false), - range = table.Column<int>(nullable: false), - site_address = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_report", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "static_pages", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - access_name = table.Column<string>(nullable: true), - title = table.Column<string>(nullable: true), - title_eng = table.Column<string>(nullable: true), - content = table.Column<string>(nullable: true), - content_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_static_pages", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "students", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - album_number = table.Column<int>(nullable: false), - first_name = table.Column<string>(nullable: true), - last_name = table.Column<string>(nullable: true), - email = table.Column<string>(nullable: true), - course = table.Column<string>(nullable: true), - semester = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_students", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "branch_office", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - street = table.Column<string>(nullable: true), - building = table.Column<string>(nullable: true), - city = table.Column<string>(nullable: true), - postal_code = table.Column<string>(nullable: true), - country = table.Column<string>(nullable: true), - provider = table.Column<long>(nullable: false), - company_id = table.Column<long>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_branch_office", x => x.id); - table.ForeignKey( - name: "fk_branch_office_companies_company_id", - column: x => x.company_id, - principalTable: "companies", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "editions", - columns: table => new - { - id = table.Column<Guid>(nullable: false), - edition_start = table.Column<DateTime>(nullable: false), - edition_finish = table.Column<DateTime>(nullable: false), - reporting_start = table.Column<DateTime>(nullable: false), - course_id = table.Column<long>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_editions", x => x.id); - table.ForeignKey( - name: "fk_editions_courses_course_id", - column: x => x.course_id, - principalTable: "courses", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "internship_registration", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - company_id = table.Column<long>(nullable: true), - branch_address_id = table.Column<long>(nullable: true), - start = table.Column<DateTime>(nullable: false), - end = table.Column<DateTime>(nullable: false), - first_name = table.Column<string>(nullable: true), - last_name = table.Column<string>(nullable: true), - email = table.Column<string>(nullable: true), - phone_number = table.Column<string>(nullable: true), - type_id = table.Column<long>(nullable: true), - declared_hours = table.Column<int>(nullable: false), - state = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_registration", x => x.id); - table.ForeignKey( - name: "fk_internship_registration_branch_office_branch_address_id", - column: x => x.branch_address_id, - principalTable: "branch_office", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_registration_companies_company_id", - column: x => x.company_id, - principalTable: "companies", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_registration_internship_types_type_id", - column: x => x.type_id, - principalTable: "internship_types", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "edition_internship_type", - columns: table => new - { - edition_id = table.Column<Guid>(nullable: false), - internship_type_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id }); - table.ForeignKey( - name: "fk_edition_internship_type_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_edition_internship_type_internship_types_internship_type_id", - column: x => x.internship_type_id, - principalTable: "internship_types", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "edition_subject", - columns: table => new - { - edition_id = table.Column<Guid>(nullable: false), - internship_subject_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id }); - table.ForeignKey( - name: "fk_edition_subject_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_edition_subject_internship_subject_internship_subject_id", - column: x => x.internship_subject_id, - principalTable: "internship_subject", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "internship", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - student_id = table.Column<long>(nullable: true), - internship_registration_id = table.Column<long>(nullable: true), - report_id = table.Column<long>(nullable: true), - edition_id = table.Column<Guid>(nullable: true), - grade = table.Column<float>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship", x => x.id); - table.ForeignKey( - name: "fk_internship_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_internship_registration_internship_registration_", - column: x => x.internship_registration_id, - principalTable: "internship_registration", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_report_report_id", - column: x => x.report_id, - principalTable: "report", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_students_student_id", - column: x => x.student_id, - principalTable: "students", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "program_subject", - columns: table => new - { - internship_registration_id = table.Column<long>(nullable: false), - internship_subject_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id }); - table.ForeignKey( - name: "fk_program_subject_internship_registration_internship_registrat", - column: x => x.internship_registration_id, - principalTable: "internship_registration", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_program_subject_internship_subject_internship_subject_id", - column: x => x.internship_subject_id, - principalTable: "internship_subject", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "document", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - description = table.Column<string>(nullable: true), - type = table.Column<int>(nullable: false), - state = table.Column<int>(nullable: false), - rejection_reason = table.Column<string>(nullable: true), - internship_id = table.Column<long>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_document", x => x.id); - table.ForeignKey( - name: "fk_document_internship_internship_id", - column: x => x.internship_id, - principalTable: "internship", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "document_scan", - columns: table => new - { - document_id = table.Column<long>(nullable: false), - size = table.Column<long>(nullable: false), - filename = table.Column<string>(nullable: true), - mime = table.Column<string>(nullable: true), - file = table.Column<byte[]>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_document_scan", x => x.document_id); - table.ForeignKey( - name: "fk_document_scan_document_document_id", - column: x => x.document_id, - principalTable: "document", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "ix_branch_office_company_id", - table: "branch_office", - column: "company_id"); - - migrationBuilder.CreateIndex( - name: "ix_document_internship_id", - table: "document", - column: "internship_id"); - - migrationBuilder.CreateIndex( - name: "ix_edition_internship_type_internship_type_id", - table: "edition_internship_type", - column: "internship_type_id"); - - migrationBuilder.CreateIndex( - name: "ix_edition_subject_internship_subject_id", - table: "edition_subject", - column: "internship_subject_id"); - - migrationBuilder.CreateIndex( - name: "ix_editions_course_id", - table: "editions", - column: "course_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_edition_id", - table: "internship", - column: "edition_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_internship_registration_id", - table: "internship", - column: "internship_registration_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_report_id", - table: "internship", - column: "report_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_student_id", - table: "internship", - column: "student_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_branch_address_id", - table: "internship_registration", - column: "branch_address_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_company_id", - table: "internship_registration", - column: "company_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_type_id", - table: "internship_registration", - column: "type_id"); - - migrationBuilder.CreateIndex( - name: "ix_program_subject_internship_subject_id", - table: "program_subject", - column: "internship_subject_id"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "document_scan"); - - migrationBuilder.DropTable( - name: "edition_internship_type"); - - migrationBuilder.DropTable( - name: "edition_subject"); - - migrationBuilder.DropTable( - name: "program_subject"); - - migrationBuilder.DropTable( - name: "static_pages"); - - migrationBuilder.DropTable( - name: "document"); - - migrationBuilder.DropTable( - name: "internship_subject"); - - migrationBuilder.DropTable( - name: "internship"); - - migrationBuilder.DropTable( - name: "editions"); - - migrationBuilder.DropTable( - name: "internship_registration"); - - migrationBuilder.DropTable( - name: "report"); - - migrationBuilder.DropTable( - name: "students"); - - migrationBuilder.DropTable( - name: "courses"); - - migrationBuilder.DropTable( - name: "branch_office"); - - migrationBuilder.DropTable( - name: "internship_types"); - - migrationBuilder.DropTable( - name: "companies"); - } - } -} + \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs new file mode 100644 index 0000000..8e99457 --- /dev/null +++ b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs @@ -0,0 +1,778 @@ +// <auto-generated /> +using System; +using InternshipSystem.Repository; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace InternshipSystem.Repository.Migrations +{ + [DbContext(typeof(InternshipDbContext))] + [Migration("20210107220846_Init")] + partial class Init + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<long?>("CompanyId") + .HasColumnName("company_id") + .HasColumnType("bigint"); + + b.Property<long>("Provider") + .HasColumnName("provider") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_branch_office"); + + b.HasIndex("CompanyId") + .HasName("ix_branch_office_company_id"); + + b.ToTable("branch_office"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Company", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.Property<string>("Nip") + .HasColumnName("nip") + .HasColumnType("text"); + + b.Property<long>("Provider") + .HasColumnName("provider") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_companies"); + + b.ToTable("companies"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Document", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<long?>("InternshipId") + .HasColumnName("internship_id") + .HasColumnType("bigint"); + + b.Property<string>("RejectionReason") + .HasColumnName("rejection_reason") + .HasColumnType("text"); + + b.Property<int>("State") + .HasColumnName("state") + .HasColumnType("integer"); + + b.Property<int>("Type") + .HasColumnName("type") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_document"); + + b.HasIndex("InternshipId") + .HasName("ix_document_internship_id"); + + b.ToTable("document"); + }); + + modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => + { + b.Property<long>("DocumentId") + .HasColumnName("document_id") + .HasColumnType("bigint"); + + b.Property<byte[]>("File") + .HasColumnName("file") + .HasColumnType("bytea"); + + b.Property<string>("Filename") + .HasColumnName("filename") + .HasColumnType("text"); + + b.Property<string>("Mime") + .HasColumnName("mime") + .HasColumnType("text"); + + b.Property<long>("Size") + .HasColumnName("size") + .HasColumnType("bigint"); + + b.HasKey("DocumentId") + .HasName("pk_document_scan"); + + b.ToTable("document_scan"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Edition", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("uuid"); + + b.Property<long?>("CourseId") + .HasColumnName("course_id") + .HasColumnType("bigint"); + + b.Property<DateTime>("EditionFinish") + .HasColumnName("edition_finish") + .HasColumnType("timestamp without time zone"); + + b.Property<DateTime>("EditionStart") + .HasColumnName("edition_start") + .HasColumnType("timestamp without time zone"); + + b.Property<DateTime>("ReportingStart") + .HasColumnName("reporting_start") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id") + .HasName("pk_editions"); + + b.HasIndex("CourseId") + .HasName("ix_editions_course_id"); + + b.ToTable("editions"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Course", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.Property<string>("NameEng") + .HasColumnName("name_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_courses"); + + b.ToTable("courses"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<Guid?>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<float?>("Grade") + .HasColumnName("grade") + .HasColumnType("real"); + + b.Property<long?>("InternshipRegistrationId") + .HasColumnName("internship_registration_id") + .HasColumnType("bigint"); + + b.Property<long?>("ReportId") + .HasColumnName("report_id") + .HasColumnType("bigint"); + + b.Property<long?>("StudentId") + .HasColumnName("student_id") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_internship"); + + b.HasIndex("EditionId") + .HasName("ix_internship_edition_id"); + + b.HasIndex("InternshipRegistrationId") + .HasName("ix_internship_internship_registration_id"); + + b.HasIndex("ReportId") + .HasName("ix_internship_report_id"); + + b.HasIndex("StudentId") + .HasName("ix_internship_student_id"); + + b.ToTable("internship"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<long?>("BranchAddressId") + .HasColumnName("branch_address_id") + .HasColumnType("bigint"); + + b.Property<long?>("CompanyId") + .HasColumnName("company_id") + .HasColumnType("bigint"); + + b.Property<int>("DeclaredHours") + .HasColumnName("declared_hours") + .HasColumnType("integer"); + + b.Property<DateTime>("End") + .HasColumnName("end") + .HasColumnType("timestamp without time zone"); + + b.Property<DateTime>("Start") + .HasColumnName("start") + .HasColumnType("timestamp without time zone"); + + b.Property<int>("State") + .HasColumnName("state") + .HasColumnType("integer"); + + b.Property<long?>("TypeId") + .HasColumnName("type_id") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_internship_registration"); + + b.HasIndex("BranchAddressId") + .HasName("ix_internship_registration_branch_address_id"); + + b.HasIndex("CompanyId") + .HasName("ix_internship_registration_company_id"); + + b.HasIndex("TypeId") + .HasName("ix_internship_registration_type_id"); + + b.ToTable("internship_registration"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<string>("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_internship_subject"); + + b.ToTable("internship_subject"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<string>("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property<string>("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property<string>("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_internship_types"); + + b.ToTable("internship_types"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<string>("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property<string>("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property<string>("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property<string>("field_type") + .IsRequired() + .HasColumnName("field_type") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_field"); + + b.ToTable("report_field"); + + b.HasDiscriminator<string>("field_type").HasValue("ReportField"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Report", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<int>("State") + .HasColumnName("state") + .HasColumnType("integer"); + + b.Property<string>("Value") + .HasColumnName("value") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report"); + + b.ToTable("report"); + }); + + modelBuilder.Entity("InternshipSystem.Core.StaticPage", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("AccessName") + .HasColumnName("access_name") + .HasColumnType("text"); + + b.Property<string>("Content") + .HasColumnName("content") + .HasColumnType("text"); + + b.Property<string>("ContentEng") + .HasColumnName("content_eng") + .HasColumnType("text"); + + b.Property<string>("Title") + .HasColumnName("title") + .HasColumnType("text"); + + b.Property<string>("TitleEng") + .HasColumnName("title_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_static_pages"); + + b.ToTable("static_pages"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Student", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<int>("AlbumNumber") + .HasColumnName("album_number") + .HasColumnType("integer"); + + b.Property<string>("Course") + .HasColumnName("course") + .HasColumnType("text"); + + b.Property<string>("Email") + .HasColumnName("email") + .HasColumnType("text"); + + b.Property<string>("FirstName") + .HasColumnName("first_name") + .HasColumnType("text"); + + b.Property<string>("LastName") + .HasColumnName("last_name") + .HasColumnType("text"); + + b.Property<int?>("Semester") + .HasColumnName("semester") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_students"); + + b.ToTable("students"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => + { + b.Property<Guid>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<long>("InternshipTypeId") + .HasColumnName("internship_type_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "InternshipTypeId") + .HasName("pk_edition_internship_type"); + + b.HasIndex("InternshipTypeId") + .HasName("ix_edition_internship_type_internship_type_id"); + + b.ToTable("edition_internship_type"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => + { + b.Property<Guid>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<long>("InternshipSubjectId") + .HasColumnName("internship_subject_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "InternshipSubjectId") + .HasName("pk_edition_subject"); + + b.HasIndex("InternshipSubjectId") + .HasName("ix_edition_subject_internship_subject_id"); + + b.ToTable("edition_subject"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => + { + b.Property<long>("InternshipRegistrationId") + .HasColumnName("internship_registration_id") + .HasColumnType("bigint"); + + b.Property<long>("InternshipSubjectId") + .HasColumnName("internship_subject_id") + .HasColumnType("bigint"); + + b.HasKey("InternshipRegistrationId", "InternshipSubjectId") + .HasName("pk_program_subject"); + + b.HasIndex("InternshipSubjectId") + .HasName("ix_program_subject_internship_subject_id"); + + b.ToTable("program_subject"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.Property<Guid>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<long>("ReportFieldId") + .HasColumnName("report_field_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "ReportFieldId") + .HasName("pk_report_field_edition"); + + b.HasIndex("ReportFieldId") + .HasName("ix_report_field_edition_report_field_id"); + + b.ToTable("report_field_edition"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportFieldDict", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property<string>("Values") + .HasColumnName("values") + .HasColumnType("jsonb"); + + b.HasDiscriminator().HasValue("ReportFieldDict"); + }); + + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => + { + b.HasOne("InternshipSystem.Core.Company", null) + .WithMany("Branches") + .HasForeignKey("CompanyId") + .HasConstraintName("fk_branch_office_companies_company_id"); + + b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 => + { + b1.Property<long>("BranchOfficeId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property<string>("Building") + .HasColumnName("building") + .HasColumnType("text"); + + b1.Property<string>("City") + .HasColumnName("city") + .HasColumnType("text"); + + b1.Property<string>("Country") + .HasColumnName("country") + .HasColumnType("text"); + + b1.Property<string>("PostalCode") + .HasColumnName("postal_code") + .HasColumnType("text"); + + b1.Property<string>("Street") + .HasColumnName("street") + .HasColumnType("text"); + + b1.HasKey("BranchOfficeId") + .HasName("pk_branch_office"); + + b1.ToTable("branch_office"); + + b1.WithOwner() + .HasForeignKey("BranchOfficeId") + .HasConstraintName("fk_branch_address_branch_office_branch_office_id"); + }); + }); + + modelBuilder.Entity("InternshipSystem.Core.Document", b => + { + b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null) + .WithMany("Documentation") + .HasForeignKey("InternshipId") + .HasConstraintName("fk_document_internship_internship_id"); + }); + + modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => + { + b.HasOne("InternshipSystem.Core.Document", "Document") + .WithOne("Scan") + .HasForeignKey("InternshipSystem.Core.DocumentScan", "DocumentId") + .HasConstraintName("fk_document_scan_document_document_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.Edition", b => + { + b.HasOne("InternshipSystem.Core.Entity.Course", "Course") + .WithMany() + .HasForeignKey("CourseId") + .HasConstraintName("fk_editions_courses_course_id"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("Internships") + .HasForeignKey("EditionId") + .HasConstraintName("fk_internship_editions_edition_id"); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration") + .WithMany() + .HasForeignKey("InternshipRegistrationId") + .HasConstraintName("fk_internship_internship_registration_internship_registration_"); + + b.HasOne("InternshipSystem.Core.Report", "Report") + .WithMany() + .HasForeignKey("ReportId") + .HasConstraintName("fk_internship_report_report_id"); + + b.HasOne("InternshipSystem.Core.Student", "Student") + .WithMany() + .HasForeignKey("StudentId") + .HasConstraintName("fk_internship_students_student_id"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => + { + b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress") + .WithMany() + .HasForeignKey("BranchAddressId") + .HasConstraintName("fk_internship_registration_branch_office_branch_address_id"); + + b.HasOne("InternshipSystem.Core.Company", "Company") + .WithMany() + .HasForeignKey("CompanyId") + .HasConstraintName("fk_internship_registration_companies_company_id"); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type") + .WithMany() + .HasForeignKey("TypeId") + .HasConstraintName("fk_internship_registration_internship_types_type_id"); + + b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 => + { + b1.Property<long>("InternshipRegistrationId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property<string>("Email") + .HasColumnName("email") + .HasColumnType("text"); + + b1.Property<string>("FirstName") + .HasColumnName("first_name") + .HasColumnType("text"); + + b1.Property<string>("LastName") + .HasColumnName("last_name") + .HasColumnType("text"); + + b1.Property<string>("PhoneNumber") + .HasColumnName("phone_number") + .HasColumnType("text"); + + b1.HasKey("InternshipRegistrationId") + .HasName("pk_internship_registration"); + + b1.ToTable("internship_registration"); + + b1.WithOwner() + .HasForeignKey("InternshipRegistrationId") + .HasConstraintName("fk_mentor_internship_registration_internship_registration_id"); + }); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("AvailableInternshipTypes") + .HasForeignKey("EditionId") + .HasConstraintName("fk_edition_internship_type_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType") + .WithMany() + .HasForeignKey("InternshipTypeId") + .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("AvailableSubjects") + .HasForeignKey("EditionId") + .HasConstraintName("fk_edition_subject_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") + .WithMany() + .HasForeignKey("InternshipSubjectId") + .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => + { + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration") + .WithMany("Subjects") + .HasForeignKey("InternshipRegistrationId") + .HasConstraintName("fk_program_subject_internship_registration_internship_registrat") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") + .WithMany() + .HasForeignKey("InternshipSubjectId") + .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("ReportSchema") + .HasForeignKey("EditionId") + .HasConstraintName("fk_report_field_edition_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") + .WithMany() + .HasForeignKey("ReportFieldId") + .HasConstraintName("fk_report_field_edition_report_field_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs new file mode 100644 index 0000000..7460b41 --- /dev/null +++ b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs @@ -0,0 +1,533 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace InternshipSystem.Repository.Migrations +{ + public partial class Init : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "companies", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + nip = table.Column<string>(nullable: true), + name = table.Column<string>(nullable: true), + provider = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_companies", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "courses", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + name = table.Column<string>(nullable: true), + name_eng = table.Column<string>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_courses", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "internship_subject", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + description = table.Column<string>(nullable: true), + description_eng = table.Column<string>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_internship_subject", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "internship_types", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + label = table.Column<string>(nullable: true), + label_eng = table.Column<string>(nullable: true), + description = table.Column<string>(nullable: true), + description_eng = table.Column<string>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_internship_types", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "report", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + state = table.Column<int>(nullable: false), + value = table.Column<string>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_report", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "report_field", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + label = table.Column<string>(nullable: true), + label_eng = table.Column<string>(nullable: true), + description = table.Column<string>(nullable: true), + description_eng = table.Column<string>(nullable: true), + field_type = table.Column<string>(nullable: false), + values = table.Column<string>(type: "jsonb", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_report_field", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "static_pages", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + access_name = table.Column<string>(nullable: true), + title = table.Column<string>(nullable: true), + title_eng = table.Column<string>(nullable: true), + content = table.Column<string>(nullable: true), + content_eng = table.Column<string>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_static_pages", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "students", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + album_number = table.Column<int>(nullable: false), + first_name = table.Column<string>(nullable: true), + last_name = table.Column<string>(nullable: true), + email = table.Column<string>(nullable: true), + course = table.Column<string>(nullable: true), + semester = table.Column<int>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_students", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "branch_office", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + street = table.Column<string>(nullable: true), + building = table.Column<string>(nullable: true), + city = table.Column<string>(nullable: true), + postal_code = table.Column<string>(nullable: true), + country = table.Column<string>(nullable: true), + provider = table.Column<long>(nullable: false), + company_id = table.Column<long>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_branch_office", x => x.id); + table.ForeignKey( + name: "fk_branch_office_companies_company_id", + column: x => x.company_id, + principalTable: "companies", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "editions", + columns: table => new + { + id = table.Column<Guid>(nullable: false), + edition_start = table.Column<DateTime>(nullable: false), + edition_finish = table.Column<DateTime>(nullable: false), + reporting_start = table.Column<DateTime>(nullable: false), + course_id = table.Column<long>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_editions", x => x.id); + table.ForeignKey( + name: "fk_editions_courses_course_id", + column: x => x.course_id, + principalTable: "courses", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "internship_registration", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + company_id = table.Column<long>(nullable: true), + branch_address_id = table.Column<long>(nullable: true), + start = table.Column<DateTime>(nullable: false), + end = table.Column<DateTime>(nullable: false), + first_name = table.Column<string>(nullable: true), + last_name = table.Column<string>(nullable: true), + email = table.Column<string>(nullable: true), + phone_number = table.Column<string>(nullable: true), + type_id = table.Column<long>(nullable: true), + declared_hours = table.Column<int>(nullable: false), + state = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_internship_registration", x => x.id); + table.ForeignKey( + name: "fk_internship_registration_branch_office_branch_address_id", + column: x => x.branch_address_id, + principalTable: "branch_office", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_registration_companies_company_id", + column: x => x.company_id, + principalTable: "companies", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_registration_internship_types_type_id", + column: x => x.type_id, + principalTable: "internship_types", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "edition_internship_type", + columns: table => new + { + edition_id = table.Column<Guid>(nullable: false), + internship_type_id = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id }); + table.ForeignKey( + name: "fk_edition_internship_type_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_edition_internship_type_internship_types_internship_type_id", + column: x => x.internship_type_id, + principalTable: "internship_types", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "edition_subject", + columns: table => new + { + edition_id = table.Column<Guid>(nullable: false), + internship_subject_id = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id }); + table.ForeignKey( + name: "fk_edition_subject_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_edition_subject_internship_subject_internship_subject_id", + column: x => x.internship_subject_id, + principalTable: "internship_subject", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "report_field_edition", + columns: table => new + { + edition_id = table.Column<Guid>(nullable: false), + report_field_id = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_report_field_edition", x => new { x.edition_id, x.report_field_id }); + table.ForeignKey( + name: "fk_report_field_edition_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_report_field_edition_report_field_report_field_id", + column: x => x.report_field_id, + principalTable: "report_field", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "internship", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + student_id = table.Column<long>(nullable: true), + internship_registration_id = table.Column<long>(nullable: true), + report_id = table.Column<long>(nullable: true), + edition_id = table.Column<Guid>(nullable: true), + grade = table.Column<float>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_internship", x => x.id); + table.ForeignKey( + name: "fk_internship_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_internship_registration_internship_registration_", + column: x => x.internship_registration_id, + principalTable: "internship_registration", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_report_report_id", + column: x => x.report_id, + principalTable: "report", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_students_student_id", + column: x => x.student_id, + principalTable: "students", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "program_subject", + columns: table => new + { + internship_registration_id = table.Column<long>(nullable: false), + internship_subject_id = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id }); + table.ForeignKey( + name: "fk_program_subject_internship_registration_internship_registrat", + column: x => x.internship_registration_id, + principalTable: "internship_registration", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_program_subject_internship_subject_internship_subject_id", + column: x => x.internship_subject_id, + principalTable: "internship_subject", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "document", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + description = table.Column<string>(nullable: true), + type = table.Column<int>(nullable: false), + state = table.Column<int>(nullable: false), + rejection_reason = table.Column<string>(nullable: true), + internship_id = table.Column<long>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_document", x => x.id); + table.ForeignKey( + name: "fk_document_internship_internship_id", + column: x => x.internship_id, + principalTable: "internship", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "document_scan", + columns: table => new + { + document_id = table.Column<long>(nullable: false), + size = table.Column<long>(nullable: false), + filename = table.Column<string>(nullable: true), + mime = table.Column<string>(nullable: true), + file = table.Column<byte[]>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_document_scan", x => x.document_id); + table.ForeignKey( + name: "fk_document_scan_document_document_id", + column: x => x.document_id, + principalTable: "document", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "ix_branch_office_company_id", + table: "branch_office", + column: "company_id"); + + migrationBuilder.CreateIndex( + name: "ix_document_internship_id", + table: "document", + column: "internship_id"); + + migrationBuilder.CreateIndex( + name: "ix_edition_internship_type_internship_type_id", + table: "edition_internship_type", + column: "internship_type_id"); + + migrationBuilder.CreateIndex( + name: "ix_edition_subject_internship_subject_id", + table: "edition_subject", + column: "internship_subject_id"); + + migrationBuilder.CreateIndex( + name: "ix_editions_course_id", + table: "editions", + column: "course_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_edition_id", + table: "internship", + column: "edition_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_internship_registration_id", + table: "internship", + column: "internship_registration_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_report_id", + table: "internship", + column: "report_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_student_id", + table: "internship", + column: "student_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_registration_branch_address_id", + table: "internship_registration", + column: "branch_address_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_registration_company_id", + table: "internship_registration", + column: "company_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_registration_type_id", + table: "internship_registration", + column: "type_id"); + + migrationBuilder.CreateIndex( + name: "ix_program_subject_internship_subject_id", + table: "program_subject", + column: "internship_subject_id"); + + migrationBuilder.CreateIndex( + name: "ix_report_field_edition_report_field_id", + table: "report_field_edition", + column: "report_field_id"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "document_scan"); + + migrationBuilder.DropTable( + name: "edition_internship_type"); + + migrationBuilder.DropTable( + name: "edition_subject"); + + migrationBuilder.DropTable( + name: "program_subject"); + + migrationBuilder.DropTable( + name: "report_field_edition"); + + migrationBuilder.DropTable( + name: "static_pages"); + + migrationBuilder.DropTable( + name: "document"); + + migrationBuilder.DropTable( + name: "internship_subject"); + + migrationBuilder.DropTable( + name: "report_field"); + + migrationBuilder.DropTable( + name: "internship"); + + migrationBuilder.DropTable( + name: "editions"); + + migrationBuilder.DropTable( + name: "internship_registration"); + + migrationBuilder.DropTable( + name: "report"); + + migrationBuilder.DropTable( + name: "students"); + + migrationBuilder.DropTable( + name: "courses"); + + migrationBuilder.DropTable( + name: "branch_office"); + + migrationBuilder.DropTable( + name: "internship_types"); + + migrationBuilder.DropTable( + name: "companies"); + } + } +} diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs index aabead5..e291852 100644 --- a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs +++ b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs @@ -338,6 +338,43 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("internship_types"); }); + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<string>("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property<string>("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property<string>("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property<string>("field_type") + .IsRequired() + .HasColumnName("field_type") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_field"); + + b.ToTable("report_field"); + + b.HasDiscriminator<string>("field_type").HasValue("ReportField"); + }); + modelBuilder.Entity("InternshipSystem.Core.Report", b => { b.Property<long>("Id") @@ -346,18 +383,14 @@ namespace InternshipSystem.Repository.Migrations .HasColumnType("bigint") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - b.Property<int>("Range") - .HasColumnName("range") - .HasColumnType("integer"); - - b.Property<string>("SiteAddress") - .HasColumnName("site_address") - .HasColumnType("text"); - b.Property<int>("State") .HasColumnName("state") .HasColumnType("integer"); + b.Property<string>("Value") + .HasColumnName("value") + .HasColumnType("jsonb"); + b.HasKey("Id") .HasName("pk_report"); @@ -493,6 +526,36 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("program_subject"); }); + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.Property<Guid>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<long>("ReportFieldId") + .HasColumnName("report_field_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "ReportFieldId") + .HasName("pk_report_field_edition"); + + b.HasIndex("ReportFieldId") + .HasName("ix_report_field_edition_report_field_id"); + + b.ToTable("report_field_edition"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportFieldDict", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property<string>("Values") + .HasColumnName("values") + .HasColumnType("jsonb"); + + b.HasDiscriminator().HasValue("ReportFieldDict"); + }); + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => { b.HasOne("InternshipSystem.Core.Company", null) @@ -690,6 +753,23 @@ namespace InternshipSystem.Repository.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("ReportSchema") + .HasForeignKey("EditionId") + .HasConstraintName("fk_report_field_edition_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") + .WithMany() + .HasForeignKey("ReportFieldId") + .HasConstraintName("fk_report_field_edition_report_field_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } } -- 2.45.2 From fb52cd78142616d621659cdeafffa447ad7d8e9e Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz <m.w.bohdanowicz@gmail.com> Date: Sat, 9 Jan 2021 20:28:54 +0100 Subject: [PATCH 2/6] XD --- .../Controllers/ReportFieldsController.cs | 40 +- src/InternshipSystem.Core/Entity/Report.cs | 3 +- .../Entity/ReportField.cs | 15 + .../UglyOrmArtifacts/ReportFieldEdition.cs | 13 + .../InternshipDbContext.cs | 2 + .../InternshipSystem.Repository.csproj | 4 - .../20201128203805_init.Designer.cs | 1 - .../Migrations/20201128203805_init.cs | 1 - .../20210107220846_Init.Designer.cs | 778 ------------------ .../Migrations/20210107220846_Init.cs | 533 ------------ .../InternshipDbContextModelSnapshot.cs | 776 ----------------- 11 files changed, 67 insertions(+), 2099 deletions(-) create mode 100644 src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs delete mode 100644 src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs delete mode 100644 src/InternshipSystem.Repository/Migrations/20201128203805_init.cs delete mode 100644 src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs delete mode 100644 src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs delete mode 100644 src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs diff --git a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs index 88a2877..71e91a4 100644 --- a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs +++ b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs @@ -1,5 +1,9 @@ -using System.Threading; +using System; +using System.Threading; using System.Threading.Tasks; +using AutoMapper; +using InternshipSystem.Core; +using InternshipSystem.Core.Entity; using InternshipSystem.Repository; using Microsoft.AspNetCore.Mvc; @@ -8,16 +12,42 @@ namespace InternshipSystem.Api.Controllers public class ReportFieldsController : ControllerBase { private readonly InternshipDbContext _context; + private readonly IMapper _mapper; - public ReportFieldsController(InternshipDbContext context) + public ReportFieldsController(InternshipDbContext context, IMapper mapper) { _context = context; + _mapper = mapper; } public async Task<ActionResult> CreateField(FieldCreateRequest request, CancellationToken ct) { - - + ReportField field; + + switch (request.FieldType) + { + case FieldType.LongText: + case FieldType.ShortText: + field = new ReportField(request.Label, request.LabelEng, request.Description, request.DescriptionEng, request.FieldType); + break; + case FieldType.Select: + case FieldType.Radial: + case FieldType.Checkbox: + field = new ReportChoiceField(request.Label, request.LabelEng, request.Description, request.DescriptionEng, request.FieldType, request.Choices); + break; + default: + return BadRequest("Unknown field type"); + } + + try + { + await _context.ReportFields.AddAsync(field, ct); + } + catch (Exception e) + { + return BadRequest("Failed"); + } + return Ok(); } } @@ -28,5 +58,7 @@ namespace InternshipSystem.Api.Controllers public string LabelEng { get; set; } public string Description { get; set; } public string DescriptionEng { get; set; } + public FieldType FieldType { get; set; } + public string[] Choices { get; set; } } } \ No newline at end of file diff --git a/src/InternshipSystem.Core/Entity/Report.cs b/src/InternshipSystem.Core/Entity/Report.cs index ab5df11..5515c28 100644 --- a/src/InternshipSystem.Core/Entity/Report.cs +++ b/src/InternshipSystem.Core/Entity/Report.cs @@ -6,8 +6,7 @@ namespace InternshipSystem.Core { public long Id { get; set; } public DocumentState State { get; set; } - public RangeOfActivity Range { get; set; } - public Uri SiteAddress { get; set; } + public string Value { get; set; } public static Report Create() { diff --git a/src/InternshipSystem.Core/Entity/ReportField.cs b/src/InternshipSystem.Core/Entity/ReportField.cs index 9b6b6a8..e10cd24 100644 --- a/src/InternshipSystem.Core/Entity/ReportField.cs +++ b/src/InternshipSystem.Core/Entity/ReportField.cs @@ -5,6 +5,15 @@ namespace InternshipSystem.Core.Entity { public class ReportField { + public ReportField(string label, string labelEng, string description, string descriptionEng, FieldType fieldType) + { + Label = label; + LabelEng = labelEng; + Description = description; + DescriptionEng = descriptionEng; + FieldType = fieldType; + } + public long Id { get; set; } public string Label { get; set; } public string LabelEng { get; set; } @@ -24,6 +33,12 @@ namespace InternshipSystem.Core.Entity public class ReportChoiceField : ReportField { + public ReportChoiceField(string label, string labelEng, string description, string descriptionEng, + FieldType fieldType, string[] choices) : base(label, labelEng, description, descriptionEng, fieldType) + { + Choices = choices; + } + public string[] Choices { get; set; } } } \ No newline at end of file diff --git a/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs b/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs new file mode 100644 index 0000000..2dcb318 --- /dev/null +++ b/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs @@ -0,0 +1,13 @@ +using System; +using InternshipSystem.Core.Entity; + +namespace InternshipSystem.Core.UglyOrmArtifacts +{ + public class ReportFieldEdition + { + public Guid EditionId { get; set; } + public Edition Edition { get; set; } + public int ReportFieldId { get; set; } + public ReportField Field { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index adf2279..33583b0 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -17,6 +17,8 @@ namespace InternshipSystem.Repository public DbSet<Student> Students { get; set; } public DbSet<Course> Courses { get; set; } + public DbSet<ReportField> ReportFields { get; set; } + public InternshipDbContext(DbContextOptions<InternshipDbContext> options) : base(options) { diff --git a/src/InternshipSystem.Repository/InternshipSystem.Repository.csproj b/src/InternshipSystem.Repository/InternshipSystem.Repository.csproj index 45f6950..ac1ea48 100644 --- a/src/InternshipSystem.Repository/InternshipSystem.Repository.csproj +++ b/src/InternshipSystem.Repository/InternshipSystem.Repository.csproj @@ -20,8 +20,4 @@ <ProjectReference Include="..\InternshipSystem.Core\InternshipSystem.Core.csproj" /> </ItemGroup> - <ItemGroup> - <Folder Include="Migrations" /> - </ItemGroup> - </Project> diff --git a/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs deleted file mode 100644 index 5f28270..0000000 --- a/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs b/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs deleted file mode 100644 index 5f28270..0000000 --- a/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs deleted file mode 100644 index 8e99457..0000000 --- a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs +++ /dev/null @@ -1,778 +0,0 @@ -// <auto-generated /> -using System; -using InternshipSystem.Repository; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - [DbContext(typeof(InternshipDbContext))] - [Migration("20210107220846_Init")] - partial class Init - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) - .HasAnnotation("ProductVersion", "3.1.4") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<long?>("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property<long>("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_branch_office"); - - b.HasIndex("CompanyId") - .HasName("ix_branch_office_company_id"); - - b.ToTable("branch_office"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Company", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property<string>("Nip") - .HasColumnName("nip") - .HasColumnType("text"); - - b.Property<long>("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_companies"); - - b.ToTable("companies"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<long?>("InternshipId") - .HasColumnName("internship_id") - .HasColumnType("bigint"); - - b.Property<string>("RejectionReason") - .HasColumnName("rejection_reason") - .HasColumnType("text"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<int>("Type") - .HasColumnName("type") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_document"); - - b.HasIndex("InternshipId") - .HasName("ix_document_internship_id"); - - b.ToTable("document"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.Property<long>("DocumentId") - .HasColumnName("document_id") - .HasColumnType("bigint"); - - b.Property<byte[]>("File") - .HasColumnName("file") - .HasColumnType("bytea"); - - b.Property<string>("Filename") - .HasColumnName("filename") - .HasColumnType("text"); - - b.Property<string>("Mime") - .HasColumnName("mime") - .HasColumnType("text"); - - b.Property<long>("Size") - .HasColumnName("size") - .HasColumnType("bigint"); - - b.HasKey("DocumentId") - .HasName("pk_document_scan"); - - b.ToTable("document_scan"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.Property<Guid>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("uuid"); - - b.Property<long?>("CourseId") - .HasColumnName("course_id") - .HasColumnType("bigint"); - - b.Property<DateTime>("EditionFinish") - .HasColumnName("edition_finish") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("EditionStart") - .HasColumnName("edition_start") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("ReportingStart") - .HasColumnName("reporting_start") - .HasColumnType("timestamp without time zone"); - - b.HasKey("Id") - .HasName("pk_editions"); - - b.HasIndex("CourseId") - .HasName("ix_editions_course_id"); - - b.ToTable("editions"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Course", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property<string>("NameEng") - .HasColumnName("name_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_courses"); - - b.ToTable("courses"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<Guid?>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<float?>("Grade") - .HasColumnName("grade") - .HasColumnType("real"); - - b.Property<long?>("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property<long?>("ReportId") - .HasColumnName("report_id") - .HasColumnType("bigint"); - - b.Property<long?>("StudentId") - .HasColumnName("student_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship"); - - b.HasIndex("EditionId") - .HasName("ix_internship_edition_id"); - - b.HasIndex("InternshipRegistrationId") - .HasName("ix_internship_internship_registration_id"); - - b.HasIndex("ReportId") - .HasName("ix_internship_report_id"); - - b.HasIndex("StudentId") - .HasName("ix_internship_student_id"); - - b.ToTable("internship"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<long?>("BranchAddressId") - .HasColumnName("branch_address_id") - .HasColumnType("bigint"); - - b.Property<long?>("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property<int>("DeclaredHours") - .HasColumnName("declared_hours") - .HasColumnType("integer"); - - b.Property<DateTime>("End") - .HasColumnName("end") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("Start") - .HasColumnName("start") - .HasColumnType("timestamp without time zone"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<long?>("TypeId") - .HasColumnName("type_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship_registration"); - - b.HasIndex("BranchAddressId") - .HasName("ix_internship_registration_branch_address_id"); - - b.HasIndex("CompanyId") - .HasName("ix_internship_registration_company_id"); - - b.HasIndex("TypeId") - .HasName("ix_internship_registration_type_id"); - - b.ToTable("internship_registration"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_subject"); - - b.ToTable("internship_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.Property<string>("Label") - .HasColumnName("label") - .HasColumnType("text"); - - b.Property<string>("LabelEng") - .HasColumnName("label_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_types"); - - b.ToTable("internship_types"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.Property<string>("Label") - .HasColumnName("label") - .HasColumnType("text"); - - b.Property<string>("LabelEng") - .HasColumnName("label_eng") - .HasColumnType("text"); - - b.Property<string>("field_type") - .IsRequired() - .HasColumnName("field_type") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_report_field"); - - b.ToTable("report_field"); - - b.HasDiscriminator<string>("field_type").HasValue("ReportField"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Report", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<string>("Value") - .HasColumnName("value") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_report"); - - b.ToTable("report"); - }); - - modelBuilder.Entity("InternshipSystem.Core.StaticPage", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("AccessName") - .HasColumnName("access_name") - .HasColumnType("text"); - - b.Property<string>("Content") - .HasColumnName("content") - .HasColumnType("text"); - - b.Property<string>("ContentEng") - .HasColumnName("content_eng") - .HasColumnType("text"); - - b.Property<string>("Title") - .HasColumnName("title") - .HasColumnType("text"); - - b.Property<string>("TitleEng") - .HasColumnName("title_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_static_pages"); - - b.ToTable("static_pages"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Student", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<int>("AlbumNumber") - .HasColumnName("album_number") - .HasColumnType("integer"); - - b.Property<string>("Course") - .HasColumnName("course") - .HasColumnType("text"); - - b.Property<string>("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b.Property<string>("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b.Property<string>("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b.Property<int?>("Semester") - .HasColumnName("semester") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_students"); - - b.ToTable("students"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("InternshipTypeId") - .HasColumnName("internship_type_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipTypeId") - .HasName("pk_edition_internship_type"); - - b.HasIndex("InternshipTypeId") - .HasName("ix_edition_internship_type_internship_type_id"); - - b.ToTable("edition_internship_type"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipSubjectId") - .HasName("pk_edition_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_edition_subject_internship_subject_id"); - - b.ToTable("edition_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.Property<long>("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property<long>("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("InternshipRegistrationId", "InternshipSubjectId") - .HasName("pk_program_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_program_subject_internship_subject_id"); - - b.ToTable("program_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("ReportFieldId") - .HasColumnName("report_field_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "ReportFieldId") - .HasName("pk_report_field_edition"); - - b.HasIndex("ReportFieldId") - .HasName("ix_report_field_edition_report_field_id"); - - b.ToTable("report_field_edition"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.ReportFieldDict", b => - { - b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); - - b.Property<string>("Values") - .HasColumnName("values") - .HasColumnType("jsonb"); - - b.HasDiscriminator().HasValue("ReportFieldDict"); - }); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.HasOne("InternshipSystem.Core.Company", null) - .WithMany("Branches") - .HasForeignKey("CompanyId") - .HasConstraintName("fk_branch_office_companies_company_id"); - - b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 => - { - b1.Property<long>("BranchOfficeId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property<string>("Building") - .HasColumnName("building") - .HasColumnType("text"); - - b1.Property<string>("City") - .HasColumnName("city") - .HasColumnType("text"); - - b1.Property<string>("Country") - .HasColumnName("country") - .HasColumnType("text"); - - b1.Property<string>("PostalCode") - .HasColumnName("postal_code") - .HasColumnType("text"); - - b1.Property<string>("Street") - .HasColumnName("street") - .HasColumnType("text"); - - b1.HasKey("BranchOfficeId") - .HasName("pk_branch_office"); - - b1.ToTable("branch_office"); - - b1.WithOwner() - .HasForeignKey("BranchOfficeId") - .HasConstraintName("fk_branch_address_branch_office_branch_office_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null) - .WithMany("Documentation") - .HasForeignKey("InternshipId") - .HasConstraintName("fk_document_internship_internship_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.HasOne("InternshipSystem.Core.Document", "Document") - .WithOne("Scan") - .HasForeignKey("InternshipSystem.Core.DocumentScan", "DocumentId") - .HasConstraintName("fk_document_scan_document_document_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.HasOne("InternshipSystem.Core.Entity.Course", "Course") - .WithMany() - .HasForeignKey("CourseId") - .HasConstraintName("fk_editions_courses_course_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("Internships") - .HasForeignKey("EditionId") - .HasConstraintName("fk_internship_editions_edition_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration") - .WithMany() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_internship_internship_registration_internship_registration_"); - - b.HasOne("InternshipSystem.Core.Report", "Report") - .WithMany() - .HasForeignKey("ReportId") - .HasConstraintName("fk_internship_report_report_id"); - - b.HasOne("InternshipSystem.Core.Student", "Student") - .WithMany() - .HasForeignKey("StudentId") - .HasConstraintName("fk_internship_students_student_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress") - .WithMany() - .HasForeignKey("BranchAddressId") - .HasConstraintName("fk_internship_registration_branch_office_branch_address_id"); - - b.HasOne("InternshipSystem.Core.Company", "Company") - .WithMany() - .HasForeignKey("CompanyId") - .HasConstraintName("fk_internship_registration_companies_company_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type") - .WithMany() - .HasForeignKey("TypeId") - .HasConstraintName("fk_internship_registration_internship_types_type_id"); - - b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 => - { - b1.Property<long>("InternshipRegistrationId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property<string>("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b1.Property<string>("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b1.Property<string>("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b1.Property<string>("PhoneNumber") - .HasColumnName("phone_number") - .HasColumnType("text"); - - b1.HasKey("InternshipRegistrationId") - .HasName("pk_internship_registration"); - - b1.ToTable("internship_registration"); - - b1.WithOwner() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_mentor_internship_registration_internship_registration_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableInternshipTypes") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_internship_type_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType") - .WithMany() - .HasForeignKey("InternshipTypeId") - .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableSubjects") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_subject_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration") - .WithMany("Subjects") - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_program_subject_internship_registration_internship_registrat") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("ReportSchema") - .HasForeignKey("EditionId") - .HasConstraintName("fk_report_field_edition_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") - .WithMany() - .HasForeignKey("ReportFieldId") - .HasConstraintName("fk_report_field_edition_report_field_report_field_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs deleted file mode 100644 index 7460b41..0000000 --- a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs +++ /dev/null @@ -1,533 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - public partial class Init : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "companies", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - nip = table.Column<string>(nullable: true), - name = table.Column<string>(nullable: true), - provider = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_companies", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "courses", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column<string>(nullable: true), - name_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_courses", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "internship_subject", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - description = table.Column<string>(nullable: true), - description_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_subject", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "internship_types", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - label = table.Column<string>(nullable: true), - label_eng = table.Column<string>(nullable: true), - description = table.Column<string>(nullable: true), - description_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_types", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "report", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - state = table.Column<int>(nullable: false), - value = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_report", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "report_field", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - label = table.Column<string>(nullable: true), - label_eng = table.Column<string>(nullable: true), - description = table.Column<string>(nullable: true), - description_eng = table.Column<string>(nullable: true), - field_type = table.Column<string>(nullable: false), - values = table.Column<string>(type: "jsonb", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_report_field", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "static_pages", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - access_name = table.Column<string>(nullable: true), - title = table.Column<string>(nullable: true), - title_eng = table.Column<string>(nullable: true), - content = table.Column<string>(nullable: true), - content_eng = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_static_pages", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "students", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - album_number = table.Column<int>(nullable: false), - first_name = table.Column<string>(nullable: true), - last_name = table.Column<string>(nullable: true), - email = table.Column<string>(nullable: true), - course = table.Column<string>(nullable: true), - semester = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_students", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "branch_office", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - street = table.Column<string>(nullable: true), - building = table.Column<string>(nullable: true), - city = table.Column<string>(nullable: true), - postal_code = table.Column<string>(nullable: true), - country = table.Column<string>(nullable: true), - provider = table.Column<long>(nullable: false), - company_id = table.Column<long>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_branch_office", x => x.id); - table.ForeignKey( - name: "fk_branch_office_companies_company_id", - column: x => x.company_id, - principalTable: "companies", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "editions", - columns: table => new - { - id = table.Column<Guid>(nullable: false), - edition_start = table.Column<DateTime>(nullable: false), - edition_finish = table.Column<DateTime>(nullable: false), - reporting_start = table.Column<DateTime>(nullable: false), - course_id = table.Column<long>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_editions", x => x.id); - table.ForeignKey( - name: "fk_editions_courses_course_id", - column: x => x.course_id, - principalTable: "courses", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "internship_registration", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - company_id = table.Column<long>(nullable: true), - branch_address_id = table.Column<long>(nullable: true), - start = table.Column<DateTime>(nullable: false), - end = table.Column<DateTime>(nullable: false), - first_name = table.Column<string>(nullable: true), - last_name = table.Column<string>(nullable: true), - email = table.Column<string>(nullable: true), - phone_number = table.Column<string>(nullable: true), - type_id = table.Column<long>(nullable: true), - declared_hours = table.Column<int>(nullable: false), - state = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_registration", x => x.id); - table.ForeignKey( - name: "fk_internship_registration_branch_office_branch_address_id", - column: x => x.branch_address_id, - principalTable: "branch_office", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_registration_companies_company_id", - column: x => x.company_id, - principalTable: "companies", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_registration_internship_types_type_id", - column: x => x.type_id, - principalTable: "internship_types", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "edition_internship_type", - columns: table => new - { - edition_id = table.Column<Guid>(nullable: false), - internship_type_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id }); - table.ForeignKey( - name: "fk_edition_internship_type_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_edition_internship_type_internship_types_internship_type_id", - column: x => x.internship_type_id, - principalTable: "internship_types", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "edition_subject", - columns: table => new - { - edition_id = table.Column<Guid>(nullable: false), - internship_subject_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id }); - table.ForeignKey( - name: "fk_edition_subject_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_edition_subject_internship_subject_internship_subject_id", - column: x => x.internship_subject_id, - principalTable: "internship_subject", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "report_field_edition", - columns: table => new - { - edition_id = table.Column<Guid>(nullable: false), - report_field_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_report_field_edition", x => new { x.edition_id, x.report_field_id }); - table.ForeignKey( - name: "fk_report_field_edition_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_report_field_edition_report_field_report_field_id", - column: x => x.report_field_id, - principalTable: "report_field", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "internship", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - student_id = table.Column<long>(nullable: true), - internship_registration_id = table.Column<long>(nullable: true), - report_id = table.Column<long>(nullable: true), - edition_id = table.Column<Guid>(nullable: true), - grade = table.Column<float>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship", x => x.id); - table.ForeignKey( - name: "fk_internship_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_internship_registration_internship_registration_", - column: x => x.internship_registration_id, - principalTable: "internship_registration", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_report_report_id", - column: x => x.report_id, - principalTable: "report", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_students_student_id", - column: x => x.student_id, - principalTable: "students", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "program_subject", - columns: table => new - { - internship_registration_id = table.Column<long>(nullable: false), - internship_subject_id = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id }); - table.ForeignKey( - name: "fk_program_subject_internship_registration_internship_registrat", - column: x => x.internship_registration_id, - principalTable: "internship_registration", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_program_subject_internship_subject_internship_subject_id", - column: x => x.internship_subject_id, - principalTable: "internship_subject", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "document", - columns: table => new - { - id = table.Column<long>(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - description = table.Column<string>(nullable: true), - type = table.Column<int>(nullable: false), - state = table.Column<int>(nullable: false), - rejection_reason = table.Column<string>(nullable: true), - internship_id = table.Column<long>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_document", x => x.id); - table.ForeignKey( - name: "fk_document_internship_internship_id", - column: x => x.internship_id, - principalTable: "internship", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "document_scan", - columns: table => new - { - document_id = table.Column<long>(nullable: false), - size = table.Column<long>(nullable: false), - filename = table.Column<string>(nullable: true), - mime = table.Column<string>(nullable: true), - file = table.Column<byte[]>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_document_scan", x => x.document_id); - table.ForeignKey( - name: "fk_document_scan_document_document_id", - column: x => x.document_id, - principalTable: "document", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "ix_branch_office_company_id", - table: "branch_office", - column: "company_id"); - - migrationBuilder.CreateIndex( - name: "ix_document_internship_id", - table: "document", - column: "internship_id"); - - migrationBuilder.CreateIndex( - name: "ix_edition_internship_type_internship_type_id", - table: "edition_internship_type", - column: "internship_type_id"); - - migrationBuilder.CreateIndex( - name: "ix_edition_subject_internship_subject_id", - table: "edition_subject", - column: "internship_subject_id"); - - migrationBuilder.CreateIndex( - name: "ix_editions_course_id", - table: "editions", - column: "course_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_edition_id", - table: "internship", - column: "edition_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_internship_registration_id", - table: "internship", - column: "internship_registration_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_report_id", - table: "internship", - column: "report_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_student_id", - table: "internship", - column: "student_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_branch_address_id", - table: "internship_registration", - column: "branch_address_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_company_id", - table: "internship_registration", - column: "company_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_type_id", - table: "internship_registration", - column: "type_id"); - - migrationBuilder.CreateIndex( - name: "ix_program_subject_internship_subject_id", - table: "program_subject", - column: "internship_subject_id"); - - migrationBuilder.CreateIndex( - name: "ix_report_field_edition_report_field_id", - table: "report_field_edition", - column: "report_field_id"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "document_scan"); - - migrationBuilder.DropTable( - name: "edition_internship_type"); - - migrationBuilder.DropTable( - name: "edition_subject"); - - migrationBuilder.DropTable( - name: "program_subject"); - - migrationBuilder.DropTable( - name: "report_field_edition"); - - migrationBuilder.DropTable( - name: "static_pages"); - - migrationBuilder.DropTable( - name: "document"); - - migrationBuilder.DropTable( - name: "internship_subject"); - - migrationBuilder.DropTable( - name: "report_field"); - - migrationBuilder.DropTable( - name: "internship"); - - migrationBuilder.DropTable( - name: "editions"); - - migrationBuilder.DropTable( - name: "internship_registration"); - - migrationBuilder.DropTable( - name: "report"); - - migrationBuilder.DropTable( - name: "students"); - - migrationBuilder.DropTable( - name: "courses"); - - migrationBuilder.DropTable( - name: "branch_office"); - - migrationBuilder.DropTable( - name: "internship_types"); - - migrationBuilder.DropTable( - name: "companies"); - } - } -} diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs deleted file mode 100644 index e291852..0000000 --- a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs +++ /dev/null @@ -1,776 +0,0 @@ -// <auto-generated /> -using System; -using InternshipSystem.Repository; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - [DbContext(typeof(InternshipDbContext))] - partial class InternshipDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) - .HasAnnotation("ProductVersion", "3.1.4") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<long?>("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property<long>("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_branch_office"); - - b.HasIndex("CompanyId") - .HasName("ix_branch_office_company_id"); - - b.ToTable("branch_office"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Company", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property<string>("Nip") - .HasColumnName("nip") - .HasColumnType("text"); - - b.Property<long>("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_companies"); - - b.ToTable("companies"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<long?>("InternshipId") - .HasColumnName("internship_id") - .HasColumnType("bigint"); - - b.Property<string>("RejectionReason") - .HasColumnName("rejection_reason") - .HasColumnType("text"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<int>("Type") - .HasColumnName("type") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_document"); - - b.HasIndex("InternshipId") - .HasName("ix_document_internship_id"); - - b.ToTable("document"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.Property<long>("DocumentId") - .HasColumnName("document_id") - .HasColumnType("bigint"); - - b.Property<byte[]>("File") - .HasColumnName("file") - .HasColumnType("bytea"); - - b.Property<string>("Filename") - .HasColumnName("filename") - .HasColumnType("text"); - - b.Property<string>("Mime") - .HasColumnName("mime") - .HasColumnType("text"); - - b.Property<long>("Size") - .HasColumnName("size") - .HasColumnType("bigint"); - - b.HasKey("DocumentId") - .HasName("pk_document_scan"); - - b.ToTable("document_scan"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.Property<Guid>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("uuid"); - - b.Property<long?>("CourseId") - .HasColumnName("course_id") - .HasColumnType("bigint"); - - b.Property<DateTime>("EditionFinish") - .HasColumnName("edition_finish") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("EditionStart") - .HasColumnName("edition_start") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("ReportingStart") - .HasColumnName("reporting_start") - .HasColumnType("timestamp without time zone"); - - b.HasKey("Id") - .HasName("pk_editions"); - - b.HasIndex("CourseId") - .HasName("ix_editions_course_id"); - - b.ToTable("editions"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Course", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property<string>("NameEng") - .HasColumnName("name_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_courses"); - - b.ToTable("courses"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<Guid?>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<float?>("Grade") - .HasColumnName("grade") - .HasColumnType("real"); - - b.Property<long?>("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property<long?>("ReportId") - .HasColumnName("report_id") - .HasColumnType("bigint"); - - b.Property<long?>("StudentId") - .HasColumnName("student_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship"); - - b.HasIndex("EditionId") - .HasName("ix_internship_edition_id"); - - b.HasIndex("InternshipRegistrationId") - .HasName("ix_internship_internship_registration_id"); - - b.HasIndex("ReportId") - .HasName("ix_internship_report_id"); - - b.HasIndex("StudentId") - .HasName("ix_internship_student_id"); - - b.ToTable("internship"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<long?>("BranchAddressId") - .HasColumnName("branch_address_id") - .HasColumnType("bigint"); - - b.Property<long?>("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property<int>("DeclaredHours") - .HasColumnName("declared_hours") - .HasColumnType("integer"); - - b.Property<DateTime>("End") - .HasColumnName("end") - .HasColumnType("timestamp without time zone"); - - b.Property<DateTime>("Start") - .HasColumnName("start") - .HasColumnType("timestamp without time zone"); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<long?>("TypeId") - .HasColumnName("type_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship_registration"); - - b.HasIndex("BranchAddressId") - .HasName("ix_internship_registration_branch_address_id"); - - b.HasIndex("CompanyId") - .HasName("ix_internship_registration_company_id"); - - b.HasIndex("TypeId") - .HasName("ix_internship_registration_type_id"); - - b.ToTable("internship_registration"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_subject"); - - b.ToTable("internship_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.Property<string>("Label") - .HasColumnName("label") - .HasColumnType("text"); - - b.Property<string>("LabelEng") - .HasColumnName("label_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_types"); - - b.ToTable("internship_types"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property<string>("DescriptionEng") - .HasColumnName("description_eng") - .HasColumnType("text"); - - b.Property<string>("Label") - .HasColumnName("label") - .HasColumnType("text"); - - b.Property<string>("LabelEng") - .HasColumnName("label_eng") - .HasColumnType("text"); - - b.Property<string>("field_type") - .IsRequired() - .HasColumnName("field_type") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_report_field"); - - b.ToTable("report_field"); - - b.HasDiscriminator<string>("field_type").HasValue("ReportField"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Report", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<int>("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property<string>("Value") - .HasColumnName("value") - .HasColumnType("jsonb"); - - b.HasKey("Id") - .HasName("pk_report"); - - b.ToTable("report"); - }); - - modelBuilder.Entity("InternshipSystem.Core.StaticPage", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<string>("AccessName") - .HasColumnName("access_name") - .HasColumnType("text"); - - b.Property<string>("Content") - .HasColumnName("content") - .HasColumnType("text"); - - b.Property<string>("ContentEng") - .HasColumnName("content_eng") - .HasColumnType("text"); - - b.Property<string>("Title") - .HasColumnName("title") - .HasColumnType("text"); - - b.Property<string>("TitleEng") - .HasColumnName("title_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_static_pages"); - - b.ToTable("static_pages"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Student", b => - { - b.Property<long>("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property<int>("AlbumNumber") - .HasColumnName("album_number") - .HasColumnType("integer"); - - b.Property<string>("Course") - .HasColumnName("course") - .HasColumnType("text"); - - b.Property<string>("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b.Property<string>("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b.Property<string>("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b.Property<int?>("Semester") - .HasColumnName("semester") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_students"); - - b.ToTable("students"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("InternshipTypeId") - .HasColumnName("internship_type_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipTypeId") - .HasName("pk_edition_internship_type"); - - b.HasIndex("InternshipTypeId") - .HasName("ix_edition_internship_type_internship_type_id"); - - b.ToTable("edition_internship_type"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipSubjectId") - .HasName("pk_edition_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_edition_subject_internship_subject_id"); - - b.ToTable("edition_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.Property<long>("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property<long>("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("InternshipRegistrationId", "InternshipSubjectId") - .HasName("pk_program_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_program_subject_internship_subject_id"); - - b.ToTable("program_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => - { - b.Property<Guid>("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property<long>("ReportFieldId") - .HasColumnName("report_field_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "ReportFieldId") - .HasName("pk_report_field_edition"); - - b.HasIndex("ReportFieldId") - .HasName("ix_report_field_edition_report_field_id"); - - b.ToTable("report_field_edition"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.ReportFieldDict", b => - { - b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); - - b.Property<string>("Values") - .HasColumnName("values") - .HasColumnType("jsonb"); - - b.HasDiscriminator().HasValue("ReportFieldDict"); - }); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.HasOne("InternshipSystem.Core.Company", null) - .WithMany("Branches") - .HasForeignKey("CompanyId") - .HasConstraintName("fk_branch_office_companies_company_id"); - - b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 => - { - b1.Property<long>("BranchOfficeId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property<string>("Building") - .HasColumnName("building") - .HasColumnType("text"); - - b1.Property<string>("City") - .HasColumnName("city") - .HasColumnType("text"); - - b1.Property<string>("Country") - .HasColumnName("country") - .HasColumnType("text"); - - b1.Property<string>("PostalCode") - .HasColumnName("postal_code") - .HasColumnType("text"); - - b1.Property<string>("Street") - .HasColumnName("street") - .HasColumnType("text"); - - b1.HasKey("BranchOfficeId") - .HasName("pk_branch_office"); - - b1.ToTable("branch_office"); - - b1.WithOwner() - .HasForeignKey("BranchOfficeId") - .HasConstraintName("fk_branch_address_branch_office_branch_office_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null) - .WithMany("Documentation") - .HasForeignKey("InternshipId") - .HasConstraintName("fk_document_internship_internship_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.HasOne("InternshipSystem.Core.Document", "Document") - .WithOne("Scan") - .HasForeignKey("InternshipSystem.Core.DocumentScan", "DocumentId") - .HasConstraintName("fk_document_scan_document_document_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.HasOne("InternshipSystem.Core.Entity.Course", "Course") - .WithMany() - .HasForeignKey("CourseId") - .HasConstraintName("fk_editions_courses_course_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("Internships") - .HasForeignKey("EditionId") - .HasConstraintName("fk_internship_editions_edition_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration") - .WithMany() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_internship_internship_registration_internship_registration_"); - - b.HasOne("InternshipSystem.Core.Report", "Report") - .WithMany() - .HasForeignKey("ReportId") - .HasConstraintName("fk_internship_report_report_id"); - - b.HasOne("InternshipSystem.Core.Student", "Student") - .WithMany() - .HasForeignKey("StudentId") - .HasConstraintName("fk_internship_students_student_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress") - .WithMany() - .HasForeignKey("BranchAddressId") - .HasConstraintName("fk_internship_registration_branch_office_branch_address_id"); - - b.HasOne("InternshipSystem.Core.Company", "Company") - .WithMany() - .HasForeignKey("CompanyId") - .HasConstraintName("fk_internship_registration_companies_company_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type") - .WithMany() - .HasForeignKey("TypeId") - .HasConstraintName("fk_internship_registration_internship_types_type_id"); - - b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 => - { - b1.Property<long>("InternshipRegistrationId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property<string>("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b1.Property<string>("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b1.Property<string>("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b1.Property<string>("PhoneNumber") - .HasColumnName("phone_number") - .HasColumnType("text"); - - b1.HasKey("InternshipRegistrationId") - .HasName("pk_internship_registration"); - - b1.ToTable("internship_registration"); - - b1.WithOwner() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_mentor_internship_registration_internship_registration_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableInternshipTypes") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_internship_type_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType") - .WithMany() - .HasForeignKey("InternshipTypeId") - .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableSubjects") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_subject_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration") - .WithMany("Subjects") - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_program_subject_internship_registration_internship_registrat") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("ReportSchema") - .HasForeignKey("EditionId") - .HasConstraintName("fk_report_field_edition_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") - .WithMany() - .HasForeignKey("ReportFieldId") - .HasConstraintName("fk_report_field_edition_report_field_report_field_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} -- 2.45.2 From 2178cde4dd92f9fe8acba6ea6772b0bec320e319 Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz <m.w.bohdanowicz@gmail.com> Date: Sun, 10 Jan 2021 18:17:40 +0100 Subject: [PATCH 3/6] rest --- .../Result/EditionReportSchemaResult.cs | 10 ++ .../InternshipDbContext.cs | 4 +- ...ner.cs => 20210110161858_Init.Designer.cs} | 104 ++++++++++++++++-- ...9193303_init.cs => 20210110161858_Init.cs} | 59 +++++++++- .../InternshipDbContextModelSnapshot.cs | 100 +++++++++++++++-- 5 files changed, 255 insertions(+), 22 deletions(-) create mode 100644 src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs rename src/InternshipSystem.Repository/Migrations/{20210109193303_init.Designer.cs => 20210110161858_Init.Designer.cs} (88%) rename src/InternshipSystem.Repository/Migrations/{20210109193303_init.cs => 20210110161858_Init.cs} (89%) diff --git a/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs new file mode 100644 index 0000000..9770ad5 --- /dev/null +++ b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using InternshipSystem.Core.Entity; + +namespace InternshipSystem.Api.Result +{ + public class EditionReportSchemaResult + { + public List<ReportField> Fields { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index a216e1b..a3a4cd2 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -113,7 +113,9 @@ namespace InternshipSystem.Repository }); modelBuilder.Entity<ReportField>() - .HasDiscriminator(r => r.FieldType); + .HasDiscriminator<string>("field_discrimnator") + .HasValue<ReportField>("single") + .HasValue<ReportChoiceField>("choice"); modelBuilder.Entity<ReportChoiceField>() .Property(r => r.Choices) diff --git a/src/InternshipSystem.Repository/Migrations/20210109193303_init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs similarity index 88% rename from src/InternshipSystem.Repository/Migrations/20210109193303_init.Designer.cs rename to src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs index 049b8d1..7ccda94 100644 --- a/src/InternshipSystem.Repository/Migrations/20210109193303_init.Designer.cs +++ b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs @@ -10,8 +10,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace InternshipSystem.Repository.Migrations { [DbContext(typeof(InternshipDbContext))] - [Migration("20210109193303_init")] - partial class init + [Migration("20210110161858_Init")] + partial class Init { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -344,6 +344,47 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("internship_types"); }); + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<string>("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property<int>("FieldType") + .HasColumnName("field_type") + .HasColumnType("integer"); + + b.Property<string>("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property<string>("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property<string>("field_discrimnator") + .IsRequired() + .HasColumnName("field_discrimnator") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_fields"); + + b.ToTable("report_fields"); + + b.HasDiscriminator<string>("field_discrimnator").HasValue("single"); + }); + modelBuilder.Entity("InternshipSystem.Core.Report", b => { b.Property<long>("Id") @@ -352,18 +393,14 @@ namespace InternshipSystem.Repository.Migrations .HasColumnType("bigint") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - b.Property<int>("Range") - .HasColumnName("range") - .HasColumnType("integer"); - - b.Property<string>("SiteAddress") - .HasColumnName("site_address") - .HasColumnType("text"); - b.Property<int>("State") .HasColumnName("state") .HasColumnType("integer"); + b.Property<string>("Value") + .HasColumnName("value") + .HasColumnType("jsonb"); + b.HasKey("Id") .HasName("pk_report"); @@ -499,6 +536,36 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("program_subject"); }); + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.Property<Guid>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<long>("ReportFieldId") + .HasColumnName("report_field_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "ReportFieldId") + .HasName("pk_report_field_edition"); + + b.HasIndex("ReportFieldId") + .HasName("ix_report_field_edition_report_field_id"); + + b.ToTable("report_field_edition"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportChoiceField", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property<string>("Choices") + .HasColumnName("choices") + .HasColumnType("text"); + + b.HasDiscriminator().HasValue("choice"); + }); + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => { b.HasOne("InternshipSystem.Core.Company", null) @@ -696,6 +763,23 @@ namespace InternshipSystem.Repository.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("ReportSchema") + .HasForeignKey("EditionId") + .HasConstraintName("fk_report_field_edition_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") + .WithMany() + .HasForeignKey("ReportFieldId") + .HasConstraintName("fk_report_field_edition_report_fields_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } } diff --git a/src/InternshipSystem.Repository/Migrations/20210109193303_init.cs b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs similarity index 89% rename from src/InternshipSystem.Repository/Migrations/20210109193303_init.cs rename to src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs index 406b485..b55c366 100644 --- a/src/InternshipSystem.Repository/Migrations/20210109193303_init.cs +++ b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs @@ -4,7 +4,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace InternshipSystem.Repository.Migrations { - public partial class init : Migration + public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) { @@ -74,14 +74,32 @@ namespace InternshipSystem.Repository.Migrations id = table.Column<long>(nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), state = table.Column<int>(nullable: false), - range = table.Column<int>(nullable: false), - site_address = table.Column<string>(nullable: true) + value = table.Column<string>(type: "jsonb", nullable: true) }, constraints: table => { table.PrimaryKey("pk_report", x => x.id); }); + migrationBuilder.CreateTable( + name: "report_fields", + columns: table => new + { + id = table.Column<long>(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + label = table.Column<string>(nullable: true), + label_eng = table.Column<string>(nullable: true), + description = table.Column<string>(nullable: true), + description_eng = table.Column<string>(nullable: true), + field_type = table.Column<int>(nullable: false), + field_discrimnator = table.Column<string>(nullable: false), + choices = table.Column<string>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_report_fields", x => x.id); + }); + migrationBuilder.CreateTable( name: "static_pages", columns: table => new @@ -253,6 +271,30 @@ namespace InternshipSystem.Repository.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "report_field_edition", + columns: table => new + { + edition_id = table.Column<Guid>(nullable: false), + report_field_id = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_report_field_edition", x => new { x.edition_id, x.report_field_id }); + table.ForeignKey( + name: "fk_report_field_edition_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_report_field_edition_report_fields_report_field_id", + column: x => x.report_field_id, + principalTable: "report_fields", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "internships", columns: table => new @@ -426,6 +468,11 @@ namespace InternshipSystem.Repository.Migrations name: "ix_program_subject_internship_subject_id", table: "program_subject", column: "internship_subject_id"); + + migrationBuilder.CreateIndex( + name: "ix_report_field_edition_report_field_id", + table: "report_field_edition", + column: "report_field_id"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -442,6 +489,9 @@ namespace InternshipSystem.Repository.Migrations migrationBuilder.DropTable( name: "program_subject"); + migrationBuilder.DropTable( + name: "report_field_edition"); + migrationBuilder.DropTable( name: "static_pages"); @@ -451,6 +501,9 @@ namespace InternshipSystem.Repository.Migrations migrationBuilder.DropTable( name: "internship_subject"); + migrationBuilder.DropTable( + name: "report_fields"); + migrationBuilder.DropTable( name: "internships"); diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs index 032fcad..ad39bf2 100644 --- a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs +++ b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs @@ -342,6 +342,47 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("internship_types"); }); + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => + { + b.Property<long>("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property<string>("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property<int>("FieldType") + .HasColumnName("field_type") + .HasColumnType("integer"); + + b.Property<string>("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property<string>("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property<string>("field_discrimnator") + .IsRequired() + .HasColumnName("field_discrimnator") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_fields"); + + b.ToTable("report_fields"); + + b.HasDiscriminator<string>("field_discrimnator").HasValue("single"); + }); + modelBuilder.Entity("InternshipSystem.Core.Report", b => { b.Property<long>("Id") @@ -350,18 +391,14 @@ namespace InternshipSystem.Repository.Migrations .HasColumnType("bigint") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - b.Property<int>("Range") - .HasColumnName("range") - .HasColumnType("integer"); - - b.Property<string>("SiteAddress") - .HasColumnName("site_address") - .HasColumnType("text"); - b.Property<int>("State") .HasColumnName("state") .HasColumnType("integer"); + b.Property<string>("Value") + .HasColumnName("value") + .HasColumnType("jsonb"); + b.HasKey("Id") .HasName("pk_report"); @@ -497,6 +534,36 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("program_subject"); }); + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.Property<Guid>("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property<long>("ReportFieldId") + .HasColumnName("report_field_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "ReportFieldId") + .HasName("pk_report_field_edition"); + + b.HasIndex("ReportFieldId") + .HasName("ix_report_field_edition_report_field_id"); + + b.ToTable("report_field_edition"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportChoiceField", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property<string>("Choices") + .HasColumnName("choices") + .HasColumnType("text"); + + b.HasDiscriminator().HasValue("choice"); + }); + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => { b.HasOne("InternshipSystem.Core.Company", null) @@ -694,6 +761,23 @@ namespace InternshipSystem.Repository.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("ReportSchema") + .HasForeignKey("EditionId") + .HasConstraintName("fk_report_field_edition_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") + .WithMany() + .HasForeignKey("ReportFieldId") + .HasConstraintName("fk_report_field_edition_report_fields_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } } -- 2.45.2 From 4bdc04858ed122ff6551151e00577c655de5f87d Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz <m.w.bohdanowicz@gmail.com> Date: Sun, 10 Jan 2021 18:21:00 +0100 Subject: [PATCH 4/6] fix --- src/InternshipSystem.Api/ApiProfile.cs | 2 + .../Controllers/EditionController.cs | 2 + .../EditionManagementController.cs | 12 +- .../Controllers/ReportFieldsController.cs | 153 ++++++++++-------- .../Queries/EditionForm.cs | 1 + .../Result/EditionConfigurationResult.cs | 1 + .../Result/EditionDetailsResult.cs | 1 + .../Result/EditionReportSchemaResult.cs | 2 +- src/InternshipSystem.Core/Entity/Edition.cs | 25 ++- .../UglyOrmArtifacts/ReportFieldEdition.cs | 2 +- 10 files changed, 130 insertions(+), 71 deletions(-) diff --git a/src/InternshipSystem.Api/ApiProfile.cs b/src/InternshipSystem.Api/ApiProfile.cs index 729a8ba..208a577 100644 --- a/src/InternshipSystem.Api/ApiProfile.cs +++ b/src/InternshipSystem.Api/ApiProfile.cs @@ -21,6 +21,8 @@ namespace InternshipSystem.Api CreateMap<Edition, EditionManagementResult>(); + CreateMap<Edition, EditionReportSchemaResult>(); + CreateMap<Edition, EditionDetailsResult>(); CreateMap<Edition, EditionConfigurationResult>(); diff --git a/src/InternshipSystem.Api/Controllers/EditionController.cs b/src/InternshipSystem.Api/Controllers/EditionController.cs index 35a4bc9..c7790ab 100644 --- a/src/InternshipSystem.Api/Controllers/EditionController.cs +++ b/src/InternshipSystem.Api/Controllers/EditionController.cs @@ -99,6 +99,8 @@ namespace InternshipSystem.Api.Controllers var edition = await Context.Editions .Include(e => e.AvailableSubjects) + .Include(e => e.ReportSchema) + .ThenInclude(e => e.Field) .Include(e => e.Course) .Where(e => e.Id == user.EditionId) .ProjectTo<EditionConfigurationResult>(Mapper.ConfigurationProvider) diff --git a/src/InternshipSystem.Api/Controllers/EditionManagementController.cs b/src/InternshipSystem.Api/Controllers/EditionManagementController.cs index 973eef6..fdaaac0 100644 --- a/src/InternshipSystem.Api/Controllers/EditionManagementController.cs +++ b/src/InternshipSystem.Api/Controllers/EditionManagementController.cs @@ -43,6 +43,8 @@ namespace InternshipSystem.Api.Controllers .Skip(searchQuery.Page * searchQuery.PerPage) .Take(searchQuery.PerPage) .ToListAsync(token); + + [HttpGet("{editionId}")] [ProducesResponseType(StatusCodes.Status200OK)] @@ -57,6 +59,8 @@ namespace InternshipSystem.Api.Controllers .ThenInclude(s => s.Subject) .Include(e => e.AvailableInternshipTypes) .ThenInclude(i => i.InternshipType) + .Include(e => e.ReportSchema) + .ThenInclude(er => er.Field) .Where(e => e.Id == editionId) .ProjectTo<EditionDetailsResult>(Mapper.ConfigurationProvider) .FirstOrDefaultAsync(token); @@ -68,7 +72,7 @@ namespace InternshipSystem.Api.Controllers return Ok(edition); } - + [HttpPut] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] @@ -90,6 +94,7 @@ namespace InternshipSystem.Api.Controllers var editionToUpdate = await Context.Editions .Include(e => e.AvailableSubjects) .Include(e => e.AvailableInternshipTypes) + .Include(e => e.ReportSchema) .FirstOrDefaultAsync(e => e.Id == editionForm.Id.Value, token); if (editionToUpdate == null) @@ -98,7 +103,7 @@ namespace InternshipSystem.Api.Controllers } editionToUpdate.UpdateEdition(editionForm.EditionStart, editionForm.EditionFinish, editionForm.ReportingStart, - editionForm.Course, editionForm.AvailableSubjectsIds, editionForm.AvailableInternshipTypesIds); + editionForm.Course, editionForm.AvailableSubjectsIds, editionForm.AvailableInternshipTypesIds, editionForm.ReportSchema); if (!editionToUpdate.IsValidDates) { @@ -109,7 +114,7 @@ namespace InternshipSystem.Api.Controllers { var newEdition = Edition.CreateEdition(editionForm.EditionStart.Value, editionForm.EditionFinish.Value, editionForm.ReportingStart.Value, - editionForm.Course, editionForm.AvailableSubjectsIds, editionForm.AvailableInternshipTypesIds); + editionForm.Course, editionForm.AvailableSubjectsIds, editionForm.AvailableInternshipTypesIds, editionForm.ReportSchema); if (!newEdition.IsValidDates) { @@ -135,6 +140,7 @@ namespace InternshipSystem.Api.Controllers var editionToDelete = await Context.Editions .Include(e => e.AvailableSubjects) .Include(e => e.AvailableInternshipTypes) + .Include(e => e.ReportSchema) .FirstOrDefaultAsync(e => e.Id.Equals(editionId), token); if (editionToDelete == null) diff --git a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs index f37e2e6..45a7a37 100644 --- a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs +++ b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs @@ -1,64 +1,89 @@ -// using System; -// using System.Threading; -// using System.Threading.Tasks; -// using AutoMapper; -// using InternshipSystem.Core; -// using InternshipSystem.Core.Entity; -// using InternshipSystem.Repository; -// using Microsoft.AspNetCore.Mvc; -// -// namespace InternshipSystem.Api.Controllers -// { -// public class ReportFieldsController : ControllerBase -// { -// private readonly InternshipDbContext _context; -// private readonly IMapper _mapper; -// -// public ReportFieldsController(InternshipDbContext context, IMapper mapper) -// { -// _context = context; -// _mapper = mapper; -// } -// -// public async Task<ActionResult> CreateField(FieldCreateRequest request, CancellationToken ct) -// { -// ReportField field; -// -// switch (request.FieldType) -// { -// case FieldType.LongText: -// case FieldType.ShortText: -// field = new ReportField(request.Label, request.LabelEng, request.Description, request.DescriptionEng, request.FieldType); -// break; -// case FieldType.Select: -// case FieldType.Radial: -// case FieldType.Checkbox: -// field = new ReportChoiceField(request.Label, request.LabelEng, request.Description, request.DescriptionEng, request.FieldType, request.Choices); -// break; -// default: -// return BadRequest("Unknown field type"); -// } -// -// try -// { -// await _context.ReportFields.AddAsync(field, ct); -// } -// catch (Exception e) -// { -// return BadRequest("Failed"); -// } -// -// return Ok(); -// } -// } -// -// public class FieldCreateRequest -// { -// public string Label { get; set; } -// public string LabelEng { get; set; } -// public string Description { get; set; } -// public string DescriptionEng { get; set; } -// public FieldType FieldType { get; set; } -// public string[] Choices { get; set; } -// } -// } \ No newline at end of file +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using InternshipSystem.Api.Queries.SearchQuery; +using InternshipSystem.Api.Security; +using InternshipSystem.Core; +using InternshipSystem.Core.Entity; +using InternshipSystem.Repository; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace InternshipSystem.Api.Controllers +{ + [Route("management/report")] + public class ReportFieldsController : ControllerBase + { + private readonly InternshipDbContext _context; + private readonly IMapper _mapper; + + public ReportFieldsController(InternshipDbContext context, IMapper mapper) + { + _context = context; + _mapper = mapper; + } + + [HttpGet("fields")] + [Authorize(Policy = Policies.IsOverseer)] + public async Task<IEnumerable<ReportField>> GetFields(FieldSearchQuery searchQuery, CancellationToken ct) => + await _context.ReportFields + .Where(c => c.Label.ToLower().Contains(searchQuery.Label.ToLower())) + .OrderBy(o => o.Label) + .Skip(searchQuery.Page * searchQuery.PerPage) + .Take(searchQuery.PerPage) + .ToListAsync(ct); + + [HttpPost("fields")] + [Authorize(Policy = Policies.IsOverseer)] + public async Task<ActionResult> CreateField([FromBody] FieldCreateRequest request, CancellationToken ct) + { + ReportField field; + + switch (request.FieldType) + { + case FieldType.LongText: + case FieldType.ShortText: + field = new ReportField(request.Label, request.LabelEng, request.Description, request.DescriptionEng, request.FieldType); + break; + case FieldType.Select: + case FieldType.Radial: + case FieldType.Checkbox: + field = new ReportChoiceField(request.Label, request.LabelEng, request.Description, request.DescriptionEng, request.FieldType, request.Choices); + break; + default: + return BadRequest("Unknown field type"); + } + + try + { + await _context.ReportFields.AddAsync(field, ct); + await _context.SaveChangesAsync(ct); + } + catch (Exception e) + { + return BadRequest("Failed"); + } + + return Ok(); + } + } + + public class FieldSearchQuery : SearchQuery + { + public string Label { get; set; } = ""; + } + + public class FieldCreateRequest + { + public string Label { get; set; } + public string LabelEng { get; set; } + public string Description { get; set; } + public string DescriptionEng { get; set; } + public FieldType FieldType { get; set; } + public string[] Choices { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Api/Queries/EditionForm.cs b/src/InternshipSystem.Api/Queries/EditionForm.cs index b95ecda..94fa40b 100644 --- a/src/InternshipSystem.Api/Queries/EditionForm.cs +++ b/src/InternshipSystem.Api/Queries/EditionForm.cs @@ -16,6 +16,7 @@ namespace InternshipSystem.Api.Queries public Course Course { get; set; } public List<long> AvailableSubjectsIds { get; set; } = new List<long>(); public List<long> AvailableInternshipTypesIds { get; set; } = new List<long>(); + public List<long> ReportSchema { get; set; } = new List<long>(); public class Validator : AbstractValidator<EditionForm> { diff --git a/src/InternshipSystem.Api/Result/EditionConfigurationResult.cs b/src/InternshipSystem.Api/Result/EditionConfigurationResult.cs index 62fc5fa..0a9895b 100644 --- a/src/InternshipSystem.Api/Result/EditionConfigurationResult.cs +++ b/src/InternshipSystem.Api/Result/EditionConfigurationResult.cs @@ -10,6 +10,7 @@ namespace InternshipSystem.Api.Result public class EditionConfigurationResult { public List<InternshipSubject> AvailableSubjects { get; set; } + public List<ReportField> ReportSchema { get; set; } public Course Course { get; set; } public DateTime EditionStart { get; set; } public DateTime EditionFinish { get; set; } diff --git a/src/InternshipSystem.Api/Result/EditionDetailsResult.cs b/src/InternshipSystem.Api/Result/EditionDetailsResult.cs index 44b8459..9f54a10 100644 --- a/src/InternshipSystem.Api/Result/EditionDetailsResult.cs +++ b/src/InternshipSystem.Api/Result/EditionDetailsResult.cs @@ -15,5 +15,6 @@ namespace InternshipSystem.Api.Result public Course Course { get; set; } public List<InternshipSubject> AvailableSubjects { get; set; } public List<InternshipType> AvailableInternshipTypes { get; set; } + public List<ReportField> ReportSchema { get; set; } } } \ No newline at end of file diff --git a/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs index 9770ad5..54e3993 100644 --- a/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs +++ b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs @@ -5,6 +5,6 @@ namespace InternshipSystem.Api.Result { public class EditionReportSchemaResult { - public List<ReportField> Fields { get; set; } + public List<ReportField> ReportSchema { get; set; } } } \ No newline at end of file diff --git a/src/InternshipSystem.Core/Entity/Edition.cs b/src/InternshipSystem.Core/Entity/Edition.cs index 705f045..a044dd5 100644 --- a/src/InternshipSystem.Core/Entity/Edition.cs +++ b/src/InternshipSystem.Core/Entity/Edition.cs @@ -22,7 +22,7 @@ namespace InternshipSystem.Core public bool IsOpen => EditionFinish < DateTime.Today; public static Edition CreateEdition(DateTime start, DateTime end, DateTime reportingStart, Course course, - IEnumerable<long> subjectsIds, IEnumerable<long> internshipTypesIds) + IEnumerable<long> subjectsIds, IEnumerable<long> internshipTypesIds, IEnumerable<long> reportFieldIds) { var newEdition = CreateEdition(start, end, reportingStart, course); @@ -43,6 +43,15 @@ namespace InternshipSystem.Core InternshipTypeId = i, }) .ToList(); + + newEdition.ReportSchema = + reportFieldIds + .Select(i => new ReportFieldEdition + { + Edition = newEdition, + ReportFieldId = i, + }) + .ToList(); return newEdition; } @@ -57,11 +66,12 @@ namespace InternshipSystem.Core Course = course, AvailableSubjects = new List<EditionSubject>(), AvailableInternshipTypes = new List<EditionInternshipType>(), + ReportSchema = new List<ReportFieldEdition>() }; } public void UpdateEdition(DateTime? start, DateTime? end, DateTime? reportingStart, Course course, - IEnumerable<long> subjectsIds, IEnumerable<long> internshipTypesIds) + IEnumerable<long> subjectsIds, IEnumerable<long> internshipTypesIds, IEnumerable<long> reportFieldIds) { EditionStart = start ?? EditionStart; EditionFinish = end ?? EditionFinish; @@ -89,6 +99,17 @@ namespace InternshipSystem.Core }) .ToList(); } + + if (reportFieldIds != null) + { + ReportSchema = + reportFieldIds + .Select(i => new ReportFieldEdition + { + ReportFieldId = i, + }) + .ToList(); + } } public void RegisterInternship(Student student) diff --git a/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs b/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs index 2dcb318..53af38a 100644 --- a/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs +++ b/src/InternshipSystem.Core/UglyOrmArtifacts/ReportFieldEdition.cs @@ -7,7 +7,7 @@ namespace InternshipSystem.Core.UglyOrmArtifacts { public Guid EditionId { get; set; } public Edition Edition { get; set; } - public int ReportFieldId { get; set; } + public long ReportFieldId { get; set; } public ReportField Field { get; set; } } } \ No newline at end of file -- 2.45.2 From ca81ce2604a14c0c361ea2f2a9ce3cbd8ca751da Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz <m.w.bohdanowicz@gmail.com> Date: Sun, 10 Jan 2021 18:28:23 +0100 Subject: [PATCH 5/6] XD --- src/InternshipSystem.Api/ApiProfile.cs | 2 -- .../Result/EditionReportSchemaResult.cs | 10 ---------- 2 files changed, 12 deletions(-) delete mode 100644 src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs diff --git a/src/InternshipSystem.Api/ApiProfile.cs b/src/InternshipSystem.Api/ApiProfile.cs index 208a577..1ff0e8f 100644 --- a/src/InternshipSystem.Api/ApiProfile.cs +++ b/src/InternshipSystem.Api/ApiProfile.cs @@ -20,8 +20,6 @@ namespace InternshipSystem.Api opt => opt.MapFrom(edition => edition.IsOpen ? "Open" : "Archival")); CreateMap<Edition, EditionManagementResult>(); - - CreateMap<Edition, EditionReportSchemaResult>(); CreateMap<Edition, EditionDetailsResult>(); diff --git a/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs deleted file mode 100644 index 54e3993..0000000 --- a/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; -using InternshipSystem.Core.Entity; - -namespace InternshipSystem.Api.Result -{ - public class EditionReportSchemaResult - { - public List<ReportField> ReportSchema { get; set; } - } -} \ No newline at end of file -- 2.45.2 From 8babe6a46192d6b6fa6d4e97bba118cf32bb3157 Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz <m.w.bohdanowicz@gmail.com> Date: Sun, 10 Jan 2021 18:30:11 +0100 Subject: [PATCH 6/6] XD --- ...0161858_Init.Designer.cs => 20210110173006_Init.Designer.cs} | 2 +- .../{20210110161858_Init.cs => 20210110173006_Init.cs} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/InternshipSystem.Repository/Migrations/{20210110161858_Init.Designer.cs => 20210110173006_Init.Designer.cs} (99%) rename src/InternshipSystem.Repository/Migrations/{20210110161858_Init.cs => 20210110173006_Init.cs} (100%) diff --git a/src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20210110173006_Init.Designer.cs similarity index 99% rename from src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs rename to src/InternshipSystem.Repository/Migrations/20210110173006_Init.Designer.cs index 7ccda94..ed77292 100644 --- a/src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs +++ b/src/InternshipSystem.Repository/Migrations/20210110173006_Init.Designer.cs @@ -10,7 +10,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace InternshipSystem.Repository.Migrations { [DbContext(typeof(InternshipDbContext))] - [Migration("20210110161858_Init")] + [Migration("20210110173006_Init")] partial class Init { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs b/src/InternshipSystem.Repository/Migrations/20210110173006_Init.cs similarity index 100% rename from src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs rename to src/InternshipSystem.Repository/Migrations/20210110173006_Init.cs -- 2.45.2