Commit 1d47855f authored by hasan khaddour's avatar hasan khaddour

Add Reports..

parent 29cc9621
......@@ -6,7 +6,6 @@
<ItemGroup>
<Folder Include="Identity\ValueObjects\" />
<Folder Include="Reports\Entities\" />
<Folder Include="Reports\Repositories\" />
</ItemGroup>
......
using PSManagement.SharedKernel.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PSManagement.Domain.Reports.Entities
{
public class Report :BaseEntity
{
public String ReportName { get; set; }
public ICollection<Section> Sections { get; set; }
}
public class Section : BaseEntity
{
public String SectionName { get; set; }
public Report Report { get; set; }
public ICollection<Question> Questions { get; set; }
}
public class Question : BaseEntity
{
public String QuestionName { get; set; }
public ICollection<Section> Sections { get; set; }
}
public class Answer : BaseEntity
{
public Question Question { get; set; }
public String AnswerValue { get; set; }
}
public class ReportResult : BaseEntity
{
public Report Report { get; set; }
public ICollection<Answer> Answers { get; set; }
}
}
......@@ -3,6 +3,7 @@ using PSManagement.Domain.Customers.Entities;
using PSManagement.Domain.Employees.Entities;
using PSManagement.Domain.Identity.Entities;
using PSManagement.Domain.Projects.Entities;
using PSManagement.Domain.Reports.Entities;
using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.Entities;
using PSManagement.Infrastructure.Persistence.SeedDataContext;
......@@ -17,7 +18,8 @@ namespace PSManagement.Infrastructure.Persistence
{
}
public DbSet<Report> Reports { get; set; }
public DbSet<ReportResult> ReportResults { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<Permission> Permission { get; set; }
......
using Microsoft.EntityFrameworkCore.Migrations;
namespace PSManagement.Infrastructure.Persistence.Migrations
{
public partial class AddReports : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Question",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
QuestionName = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Question", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Reports",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ReportName = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Reports", x => x.Id);
});
migrationBuilder.CreateTable(
name: "ReportResults",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ReportId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ReportResults", x => x.Id);
table.ForeignKey(
name: "FK_ReportResults_Reports_ReportId",
column: x => x.ReportId,
principalTable: "Reports",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Section",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
SectionName = table.Column<string>(type: "nvarchar(max)", nullable: true),
ReportId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Section", x => x.Id);
table.ForeignKey(
name: "FK_Section_Reports_ReportId",
column: x => x.ReportId,
principalTable: "Reports",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Answer",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
QuestionId = table.Column<int>(type: "int", nullable: true),
AnswerValue = table.Column<string>(type: "nvarchar(max)", nullable: true),
ReportResultId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Answer", x => x.Id);
table.ForeignKey(
name: "FK_Answer_Question_QuestionId",
column: x => x.QuestionId,
principalTable: "Question",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Answer_ReportResults_ReportResultId",
column: x => x.ReportResultId,
principalTable: "ReportResults",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "QuestionSection",
columns: table => new
{
QuestionsId = table.Column<int>(type: "int", nullable: false),
SectionsId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_QuestionSection", x => new { x.QuestionsId, x.SectionsId });
table.ForeignKey(
name: "FK_QuestionSection_Question_QuestionsId",
column: x => x.QuestionsId,
principalTable: "Question",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_QuestionSection_Section_SectionsId",
column: x => x.SectionsId,
principalTable: "Section",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Answer_QuestionId",
table: "Answer",
column: "QuestionId");
migrationBuilder.CreateIndex(
name: "IX_Answer_ReportResultId",
table: "Answer",
column: "ReportResultId");
migrationBuilder.CreateIndex(
name: "IX_QuestionSection_SectionsId",
table: "QuestionSection",
column: "SectionsId");
migrationBuilder.CreateIndex(
name: "IX_ReportResults_ReportId",
table: "ReportResults",
column: "ReportId");
migrationBuilder.CreateIndex(
name: "IX_Section_ReportId",
table: "Section",
column: "ReportId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Answer");
migrationBuilder.DropTable(
name: "QuestionSection");
migrationBuilder.DropTable(
name: "ReportResults");
migrationBuilder.DropTable(
name: "Question");
migrationBuilder.DropTable(
name: "Section");
migrationBuilder.DropTable(
name: "Reports");
}
}
}
......@@ -20,7 +20,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.HasAnnotation("ProductVersion", "5.0.17")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("PSManagement.Domain.Customers.Aggregate.Customer", b =>
modelBuilder.Entity("PSManagement.Domain.Customers.Entities.Customer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
......@@ -349,6 +349,98 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.ToTable("ProjectStatus");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Answer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<string>("AnswerValue")
.HasColumnType("nvarchar(max)");
b.Property<int?>("QuestionId")
.HasColumnType("int");
b.Property<int?>("ReportResultId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("QuestionId");
b.HasIndex("ReportResultId");
b.ToTable("Answer");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Question", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<string>("QuestionName")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Question");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Report", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<string>("ReportName")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Reports");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.ReportResult", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<int?>("ReportId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ReportId");
b.ToTable("ReportResults");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Section", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<int?>("ReportId")
.HasColumnType("int");
b.Property<string>("SectionName")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("ReportId");
b.ToTable("Section");
});
modelBuilder.Entity("PSManagement.Domain.Tracking.EmployeeTrack", b =>
{
b.Property<int>("Id")
......@@ -443,6 +535,21 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.ToTable("PermissionRole");
});
modelBuilder.Entity("QuestionSection", b =>
{
b.Property<int>("QuestionsId")
.HasColumnType("int");
b.Property<int>("SectionsId")
.HasColumnType("int");
b.HasKey("QuestionsId", "SectionsId");
b.HasIndex("SectionsId");
b.ToTable("QuestionSection");
});
modelBuilder.Entity("UserRole", b =>
{
b.Property<int>("RoleId")
......@@ -465,7 +572,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
});
});
modelBuilder.Entity("PSManagement.Domain.Customers.Aggregate.Customer", b =>
modelBuilder.Entity("PSManagement.Domain.Customers.Entities.Customer", b =>
{
b.OwnsMany("PSManagement.Domain.Customers.Entities.ContactInfo", "ContactInfo", b1 =>
{
......@@ -675,7 +782,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
modelBuilder.Entity("PSManagement.Domain.Projects.Entities.Project", b =>
{
b.HasOne("PSManagement.Domain.Customers.Aggregate.Customer", null)
b.HasOne("PSManagement.Domain.Customers.Entities.Customer", null)
.WithMany("Projects")
.HasForeignKey("CustomerId");
......@@ -694,7 +801,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.WithMany()
.HasForeignKey("ProjectStatusId");
b.HasOne("PSManagement.Domain.Customers.Aggregate.Customer", "Proposer")
b.HasOne("PSManagement.Domain.Customers.Entities.Customer", "Proposer")
.WithMany()
.HasForeignKey("ProposerId")
.OnDelete(DeleteBehavior.Cascade)
......@@ -839,6 +946,37 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.Navigation("Project");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Answer", b =>
{
b.HasOne("PSManagement.Domain.Reports.Entities.Question", "Question")
.WithMany()
.HasForeignKey("QuestionId");
b.HasOne("PSManagement.Domain.Reports.Entities.ReportResult", null)
.WithMany("Answers")
.HasForeignKey("ReportResultId");
b.Navigation("Question");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.ReportResult", b =>
{
b.HasOne("PSManagement.Domain.Reports.Entities.Report", "Report")
.WithMany()
.HasForeignKey("ReportId");
b.Navigation("Report");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Section", b =>
{
b.HasOne("PSManagement.Domain.Reports.Entities.Report", "Report")
.WithMany("Sections")
.HasForeignKey("ReportId");
b.Navigation("Report");
});
modelBuilder.Entity("PSManagement.Domain.Tracking.EmployeeTrack", b =>
{
b.HasOne("PSManagement.Domain.Employees.Entities.Employee", "Employee")
......@@ -903,6 +1041,21 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.IsRequired();
});
modelBuilder.Entity("QuestionSection", b =>
{
b.HasOne("PSManagement.Domain.Reports.Entities.Question", null)
.WithMany()
.HasForeignKey("QuestionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PSManagement.Domain.Reports.Entities.Section", null)
.WithMany()
.HasForeignKey("SectionsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("UserRole", b =>
{
b.HasOne("PSManagement.Domain.Identity.Entities.Role", null)
......@@ -918,7 +1071,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.IsRequired();
});
modelBuilder.Entity("PSManagement.Domain.Customers.Aggregate.Customer", b =>
modelBuilder.Entity("PSManagement.Domain.Customers.Entities.Customer", b =>
{
b.Navigation("Projects");
});
......@@ -953,6 +1106,16 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.Navigation("StepTracks");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.Report", b =>
{
b.Navigation("Sections");
});
modelBuilder.Entity("PSManagement.Domain.Reports.Entities.ReportResult", b =>
{
b.Navigation("Answers");
});
modelBuilder.Entity("PSManagement.Domain.Tracking.Track", b =>
{
b.Navigation("EmployeeTracks");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment