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

Add Reports..

parent 29cc9621
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
<ItemGroup> <ItemGroup>
<Folder Include="Identity\ValueObjects\" /> <Folder Include="Identity\ValueObjects\" />
<Folder Include="Reports\Entities\" />
<Folder Include="Reports\Repositories\" /> <Folder Include="Reports\Repositories\" />
</ItemGroup> </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; ...@@ -3,6 +3,7 @@ using PSManagement.Domain.Customers.Entities;
using PSManagement.Domain.Employees.Entities; using PSManagement.Domain.Employees.Entities;
using PSManagement.Domain.Identity.Entities; using PSManagement.Domain.Identity.Entities;
using PSManagement.Domain.Projects.Entities; using PSManagement.Domain.Projects.Entities;
using PSManagement.Domain.Reports.Entities;
using PSManagement.Domain.Tracking; using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.Entities; using PSManagement.Domain.Tracking.Entities;
using PSManagement.Infrastructure.Persistence.SeedDataContext; using PSManagement.Infrastructure.Persistence.SeedDataContext;
...@@ -17,7 +18,8 @@ namespace PSManagement.Infrastructure.Persistence ...@@ -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<User> Users { get; set; }
public DbSet<Role> Roles { get; set; } public DbSet<Role> Roles { get; set; }
public DbSet<Permission> Permission { 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 ...@@ -20,7 +20,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.HasAnnotation("ProductVersion", "5.0.17") .HasAnnotation("ProductVersion", "5.0.17")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); .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") b.Property<int>("Id")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
...@@ -349,6 +349,98 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -349,6 +349,98 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.ToTable("ProjectStatus"); 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 => modelBuilder.Entity("PSManagement.Domain.Tracking.EmployeeTrack", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
...@@ -443,6 +535,21 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -443,6 +535,21 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.ToTable("PermissionRole"); 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 => modelBuilder.Entity("UserRole", b =>
{ {
b.Property<int>("RoleId") b.Property<int>("RoleId")
...@@ -465,7 +572,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -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 => b.OwnsMany("PSManagement.Domain.Customers.Entities.ContactInfo", "ContactInfo", b1 =>
{ {
...@@ -675,7 +782,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -675,7 +782,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
modelBuilder.Entity("PSManagement.Domain.Projects.Entities.Project", b => 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") .WithMany("Projects")
.HasForeignKey("CustomerId"); .HasForeignKey("CustomerId");
...@@ -694,7 +801,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -694,7 +801,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.WithMany() .WithMany()
.HasForeignKey("ProjectStatusId"); .HasForeignKey("ProjectStatusId");
b.HasOne("PSManagement.Domain.Customers.Aggregate.Customer", "Proposer") b.HasOne("PSManagement.Domain.Customers.Entities.Customer", "Proposer")
.WithMany() .WithMany()
.HasForeignKey("ProposerId") .HasForeignKey("ProposerId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
...@@ -839,6 +946,37 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -839,6 +946,37 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.Navigation("Project"); 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 => modelBuilder.Entity("PSManagement.Domain.Tracking.EmployeeTrack", b =>
{ {
b.HasOne("PSManagement.Domain.Employees.Entities.Employee", "Employee") b.HasOne("PSManagement.Domain.Employees.Entities.Employee", "Employee")
...@@ -903,6 +1041,21 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -903,6 +1041,21 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.IsRequired(); .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 => modelBuilder.Entity("UserRole", b =>
{ {
b.HasOne("PSManagement.Domain.Identity.Entities.Role", null) b.HasOne("PSManagement.Domain.Identity.Entities.Role", null)
...@@ -918,7 +1071,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -918,7 +1071,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.IsRequired(); .IsRequired();
}); });
modelBuilder.Entity("PSManagement.Domain.Customers.Aggregate.Customer", b => modelBuilder.Entity("PSManagement.Domain.Customers.Entities.Customer", b =>
{ {
b.Navigation("Projects"); b.Navigation("Projects");
}); });
...@@ -953,6 +1106,16 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -953,6 +1106,16 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.Navigation("StepTracks"); 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 => modelBuilder.Entity("PSManagement.Domain.Tracking.Track", b =>
{ {
b.Navigation("EmployeeTracks"); 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