diff --git a/global.json b/global.json index 65cf76e..c120c81 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "3.1.103" + "version": "3.1.301" } } \ No newline at end of file diff --git a/src/Internship.Core/InternshipEntity.cs b/src/Internship.Core/InternshipEntity.cs index e74c312..212b0ff 100644 --- a/src/Internship.Core/InternshipEntity.cs +++ b/src/Internship.Core/InternshipEntity.cs @@ -19,5 +19,6 @@ namespace Internship.Core public int InternshipLengthInWeeks { get; set; } public float Grade { get; set; } public List Program { get; set; } + public Mentor Mentor { get; set; } } } \ No newline at end of file diff --git a/src/Internship.Core/Mentor.cs b/src/Internship.Core/Mentor.cs new file mode 100644 index 0000000..6b49ce6 --- /dev/null +++ b/src/Internship.Core/Mentor.cs @@ -0,0 +1,9 @@ +namespace Internship.Core +{ + public class Mentor { + public string Name { get; set; } + public string Surname { get; set; } + public string Email { get; set; } + public string Phone { get; set; } + } +} diff --git a/src/Internship.Repository/InternshipDbContext.cs b/src/Internship.Repository/InternshipDbContext.cs index 7b5bfe8..9af3eaa 100644 --- a/src/Internship.Repository/InternshipDbContext.cs +++ b/src/Internship.Repository/InternshipDbContext.cs @@ -10,7 +10,6 @@ namespace Internship.Repository public DbSet Editions { get; set; } public DbSet Reports { get; set; } public DbSet Interns { get; set; } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseNpgsql("Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=szwoniu") @@ -21,6 +20,7 @@ namespace Internship.Repository .Entity(ie => { ie.OwnsOne(i => i.DeanAcceptance); ie.OwnsOne(i => i.Insurance); + ie.OwnsOne(i => i.Mentor); }); modelBuilder diff --git a/src/Internship.Repository/Migrations/20200706165537_AddMentor.Designer.cs b/src/Internship.Repository/Migrations/20200706165537_AddMentor.Designer.cs new file mode 100644 index 0000000..9cdee56 --- /dev/null +++ b/src/Internship.Repository/Migrations/20200706165537_AddMentor.Designer.cs @@ -0,0 +1,462 @@ +// +using System; +using Internship.Repository; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace Internship.Repository.Migrations +{ + [DbContext(typeof(InternshipDbContext))] + [Migration("20200706165537_AddMentor")] + partial class AddMentor + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.5") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("Internship.Core.BranchOffice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("CompanyNip") + .HasColumnName("company_nip") + .HasColumnType("text"); + + b.Property("Provider") + .HasColumnName("provider") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_branch_office"); + + b.HasIndex("CompanyNip") + .HasName("ix_branch_office_company_nip"); + + b.ToTable("branch_office"); + }); + + modelBuilder.Entity("Internship.Core.Company", b => + { + b.Property("Nip") + .HasColumnName("nip") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.Property("Provider") + .HasColumnName("provider") + .HasColumnType("integer"); + + b.Property("Range") + .HasColumnName("range") + .HasColumnType("integer"); + + b.Property("SiteAddress") + .HasColumnName("site_address") + .HasColumnType("text"); + + b.HasKey("Nip") + .HasName("pk_companies"); + + b.ToTable("companies"); + }); + + modelBuilder.Entity("Internship.Core.Course", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_course"); + + b.ToTable("course"); + }); + + modelBuilder.Entity("Internship.Core.Edition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("EndDate") + .HasColumnName("end_date") + .HasColumnType("timestamp without time zone"); + + b.Property("IPPDeadlineDate") + .HasColumnName("ipp_deadline_date") + .HasColumnType("timestamp without time zone"); + + b.Property("StartDate") + .HasColumnName("start_date") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id") + .HasName("pk_editions"); + + b.ToTable("editions"); + }); + + modelBuilder.Entity("Internship.Core.Intern", b => + { + b.Property("AlbumNumber") + .HasColumnName("album_number") + .HasColumnType("text"); + + b.Property("CourseId") + .HasColumnName("course_id") + .HasColumnType("integer"); + + b.Property("Email") + .HasColumnName("email") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.Property("Semester") + .HasColumnName("semester") + .HasColumnType("integer"); + + b.Property("Surname") + .HasColumnName("surname") + .HasColumnType("text"); + + b.HasKey("AlbumNumber") + .HasName("pk_interns"); + + b.HasIndex("CourseId") + .HasName("ix_interns_course_id"); + + b.ToTable("interns"); + }); + + modelBuilder.Entity("Internship.Core.InternshipEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("BranchOfficeId") + .HasColumnName("branch_office_id") + .HasColumnType("integer"); + + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnName("end_date") + .HasColumnType("timestamp without time zone"); + + b.Property("Grade") + .HasColumnName("grade") + .HasColumnType("real"); + + b.Property("InternAlbumNumber") + .HasColumnName("intern_album_number") + .HasColumnType("text"); + + b.Property("InternshipLengthInWeeks") + .HasColumnName("internship_length_in_weeks") + .HasColumnType("integer"); + + b.Property("IsAccepted") + .HasColumnName("is_accepted") + .HasColumnType("boolean"); + + b.Property("ReportId") + .HasColumnName("report_id") + .HasColumnType("integer"); + + b.Property("StartDate") + .HasColumnName("start_date") + .HasColumnType("timestamp without time zone"); + + b.Property("Type") + .HasColumnName("type") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_internships"); + + b.HasIndex("BranchOfficeId") + .HasName("ix_internships_branch_office_id"); + + b.HasIndex("EditionId") + .HasName("ix_internships_edition_id"); + + b.HasIndex("InternAlbumNumber") + .HasName("ix_internships_intern_album_number"); + + b.HasIndex("ReportId") + .HasName("ix_internships_report_id"); + + b.ToTable("internships"); + }); + + modelBuilder.Entity("Internship.Core.InternshipProgramSubject", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("CourseId") + .HasColumnName("course_id") + .HasColumnType("integer"); + + b.Property("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("integer"); + + b.Property("InternshipEntityId") + .HasColumnName("internship_entity_id") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_internship_program_subject"); + + b.HasIndex("CourseId") + .HasName("ix_internship_program_subject_course_id"); + + b.HasIndex("EditionId") + .HasName("ix_internship_program_subject_edition_id"); + + b.HasIndex("InternshipEntityId") + .HasName("ix_internship_program_subject_internship_entity_id"); + + b.ToTable("internship_program_subject"); + }); + + modelBuilder.Entity("Internship.Core.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.HasKey("Id") + .HasName("pk_reports"); + + b.ToTable("reports"); + }); + + modelBuilder.Entity("Internship.Core.BranchOffice", b => + { + b.HasOne("Internship.Core.Company", "Company") + .WithMany("Branches") + .HasForeignKey("CompanyNip") + .HasConstraintName("fk_branch_office_companies_company_nip"); + + b.OwnsOne("Internship.Core.Address", "Address", b1 => + { + b1.Property("BranchOfficeId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("Building") + .HasColumnName("building") + .HasColumnType("text"); + + b1.Property("City") + .HasColumnName("city") + .HasColumnType("text"); + + b1.Property("Country") + .HasColumnName("country") + .HasColumnType("text"); + + b1.Property("PostalCode") + .HasColumnName("postal_code") + .HasColumnType("text"); + + b1.Property("Street") + .HasColumnName("street") + .HasColumnType("text"); + + b1.HasKey("BranchOfficeId") + .HasName("pk_branch_office"); + + b1.ToTable("branch_office"); + + b1.WithOwner() + .HasForeignKey("BranchOfficeId") + .HasConstraintName("fk_address_branch_office_branch_office_id"); + }); + }); + + modelBuilder.Entity("Internship.Core.Intern", b => + { + b.HasOne("Internship.Core.Course", "Course") + .WithMany() + .HasForeignKey("CourseId") + .HasConstraintName("fk_interns_course_course_id"); + }); + + modelBuilder.Entity("Internship.Core.InternshipEntity", b => + { + b.HasOne("Internship.Core.BranchOffice", "BranchOffice") + .WithMany() + .HasForeignKey("BranchOfficeId") + .HasConstraintName("fk_internships_branch_office_branch_office_id"); + + b.HasOne("Internship.Core.Edition", "Edition") + .WithMany() + .HasForeignKey("EditionId") + .HasConstraintName("fk_internships_editions_edition_id"); + + b.HasOne("Internship.Core.Intern", "Intern") + .WithMany() + .HasForeignKey("InternAlbumNumber") + .HasConstraintName("fk_internships_interns_intern_album_number"); + + b.HasOne("Internship.Core.Report", "Report") + .WithMany() + .HasForeignKey("ReportId") + .HasConstraintName("fk_internships_reports_report_id"); + + b.OwnsOne("Internship.Core.DeanAcceptance", "DeanAcceptance", b1 => + { + b1.Property("InternshipEntityId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("AcceptanceDate") + .HasColumnName("acceptance_date") + .HasColumnType("timestamp without time zone"); + + b1.Property("IsDeansAcceptanceRequired") + .HasColumnName("is_deans_acceptance_required") + .HasColumnType("boolean"); + + b1.Property("Reason") + .HasColumnName("reason") + .HasColumnType("integer"); + + b1.HasKey("InternshipEntityId") + .HasName("pk_internships"); + + b1.ToTable("internships"); + + b1.WithOwner() + .HasForeignKey("InternshipEntityId") + .HasConstraintName("fk_dean_acceptance_internships_internship_entity_id"); + }); + + b.OwnsOne("Internship.Core.Insurance", "Insurance", b1 => + { + b1.Property("InternshipEntityId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("InsuranceDeliveryDate") + .HasColumnName("insurance_delivery_date") + .HasColumnType("timestamp without time zone"); + + b1.Property("IsInsuranceRequired") + .HasColumnName("is_insurance_required") + .HasColumnType("boolean"); + + b1.HasKey("InternshipEntityId") + .HasName("pk_internships"); + + b1.ToTable("internships"); + + b1.WithOwner() + .HasForeignKey("InternshipEntityId") + .HasConstraintName("fk_insurance_internships_internship_entity_id"); + }); + + b.OwnsOne("Internship.Core.Mentor", "Mentor", b1 => + { + b1.Property("InternshipEntityId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("Emali") + .HasColumnName("emali") + .HasColumnType("text"); + + b1.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b1.Property("Phone") + .HasColumnName("phone") + .HasColumnType("text"); + + b1.Property("Surname") + .HasColumnName("surname") + .HasColumnType("text"); + + b1.HasKey("InternshipEntityId") + .HasName("pk_internships"); + + b1.ToTable("internships"); + + b1.WithOwner() + .HasForeignKey("InternshipEntityId") + .HasConstraintName("fk_mentor_internships_internship_entity_id"); + }); + }); + + modelBuilder.Entity("Internship.Core.InternshipProgramSubject", b => + { + b.HasOne("Internship.Core.Course", "Course") + .WithMany() + .HasForeignKey("CourseId") + .HasConstraintName("fk_internship_program_subject_course_course_id"); + + b.HasOne("Internship.Core.Edition", null) + .WithMany("Subjects") + .HasForeignKey("EditionId") + .HasConstraintName("fk_internship_program_subject_editions_edition_id"); + + b.HasOne("Internship.Core.InternshipEntity", null) + .WithMany("Program") + .HasForeignKey("InternshipEntityId") + .HasConstraintName("fk_internship_program_subject_internships_internship_entity_id"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Internship.Repository/Migrations/20200706165537_AddMentor.cs b/src/Internship.Repository/Migrations/20200706165537_AddMentor.cs new file mode 100644 index 0000000..01a4acf --- /dev/null +++ b/src/Internship.Repository/Migrations/20200706165537_AddMentor.cs @@ -0,0 +1,49 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Internship.Repository.Migrations +{ + public partial class AddMentor : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "emali", + table: "internships", + nullable: true); + + migrationBuilder.AddColumn( + name: "name", + table: "internships", + nullable: true); + + migrationBuilder.AddColumn( + name: "phone", + table: "internships", + nullable: true); + + migrationBuilder.AddColumn( + name: "surname", + table: "internships", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "emali", + table: "internships"); + + migrationBuilder.DropColumn( + name: "name", + table: "internships"); + + migrationBuilder.DropColumn( + name: "phone", + table: "internships"); + + migrationBuilder.DropColumn( + name: "surname", + table: "internships"); + } + } +} diff --git a/src/Internship.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/Internship.Repository/Migrations/InternshipDbContextModelSnapshot.cs index ef5df0a..58f3b0b 100644 --- a/src/Internship.Repository/Migrations/InternshipDbContextModelSnapshot.cs +++ b/src/Internship.Repository/Migrations/InternshipDbContextModelSnapshot.cs @@ -401,6 +401,40 @@ namespace Internship.Repository.Migrations .HasForeignKey("InternshipEntityId") .HasConstraintName("fk_insurance_internships_internship_entity_id"); }); + + b.OwnsOne("Internship.Core.Mentor", "Mentor", b1 => + { + b1.Property("InternshipEntityId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("Emali") + .HasColumnName("emali") + .HasColumnType("text"); + + b1.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b1.Property("Phone") + .HasColumnName("phone") + .HasColumnType("text"); + + b1.Property("Surname") + .HasColumnName("surname") + .HasColumnType("text"); + + b1.HasKey("InternshipEntityId") + .HasName("pk_internships"); + + b1.ToTable("internships"); + + b1.WithOwner() + .HasForeignKey("InternshipEntityId") + .HasConstraintName("fk_mentor_internships_internship_entity_id"); + }); }); modelBuilder.Entity("Internship.Core.InternshipProgramSubject", b =>