Added the assigned by in organization mapping

This commit is contained in:
ashutosh.nehete 2025-09-24 17:20:09 +05:30
parent c5da400e6b
commit 42da1f12cf
10 changed files with 12602 additions and 23 deletions

View File

@ -993,11 +993,6 @@ namespace Marco.Pms.DataAccess.Data
);
modelBuilder.Entity<OrgTypeMaster>().HasData(
new OrgTypeMaster
{
Id = Guid.Parse("743806fe-d991-4079-b223-e4e2da44f435"),
Name = "Tenant"
},
new OrgTypeMaster
{
Id = Guid.Parse("5ee49bcd-b6d3-482f-9aaf-484afe04abec"),
@ -1007,11 +1002,6 @@ namespace Marco.Pms.DataAccess.Data
{
Id = Guid.Parse("a283356a-9b02-4029-afb7-e65c703efdd4"),
Name = "Sub-Contractor"
},
new OrgTypeMaster
{
Id = Guid.Parse("b1877a3b-8832-47b1-bbe3-dc7e98672f49"),
Name = "PMC"
}
);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,84 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Marco.Pms.DataAccess.Migrations
{
/// <inheritdoc />
public partial class Added_Assigned_By_In_Mapping_Tables : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<Guid>(
name: "AssignedById",
table: "TenantOrgMappings",
type: "char(36)",
nullable: false,
defaultValue: new Guid("08dd8b35-d98b-44f1-896d-12aec3f035aa"),
collation: "ascii_general_ci");
migrationBuilder.AddColumn<Guid>(
name: "AssignedById",
table: "ProjectOrgMappings",
type: "char(36)",
nullable: false,
defaultValue: new Guid("08dd8b35-d98b-44f1-896d-12aec3f035aa"),
collation: "ascii_general_ci");
migrationBuilder.CreateIndex(
name: "IX_TenantOrgMappings_AssignedById",
table: "TenantOrgMappings",
column: "AssignedById");
migrationBuilder.CreateIndex(
name: "IX_ProjectOrgMappings_AssignedById",
table: "ProjectOrgMappings",
column: "AssignedById");
migrationBuilder.AddForeignKey(
name: "FK_ProjectOrgMappings_Employees_AssignedById",
table: "ProjectOrgMappings",
column: "AssignedById",
principalTable: "Employees",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_TenantOrgMappings_Employees_AssignedById",
table: "TenantOrgMappings",
column: "AssignedById",
principalTable: "Employees",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_ProjectOrgMappings_Employees_AssignedById",
table: "ProjectOrgMappings");
migrationBuilder.DropForeignKey(
name: "FK_TenantOrgMappings_Employees_AssignedById",
table: "TenantOrgMappings");
migrationBuilder.DropIndex(
name: "IX_TenantOrgMappings_AssignedById",
table: "TenantOrgMappings");
migrationBuilder.DropIndex(
name: "IX_ProjectOrgMappings_AssignedById",
table: "ProjectOrgMappings");
migrationBuilder.DropColumn(
name: "AssignedById",
table: "TenantOrgMappings");
migrationBuilder.DropColumn(
name: "AssignedById",
table: "ProjectOrgMappings");
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,40 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
namespace Marco.Pms.DataAccess.Migrations
{
/// <inheritdoc />
public partial class Deleted_Organization_Types : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DeleteData(
table: "OrgTypeMasters",
keyColumn: "Id",
keyValue: new Guid("743806fe-d991-4079-b223-e4e2da44f435"));
migrationBuilder.DeleteData(
table: "OrgTypeMasters",
keyColumn: "Id",
keyValue: new Guid("b1877a3b-8832-47b1-bbe3-dc7e98672f49"));
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.InsertData(
table: "OrgTypeMasters",
columns: new[] { "Id", "Name" },
values: new object[,]
{
{ new Guid("743806fe-d991-4079-b223-e4e2da44f435"), "Tenant" },
{ new Guid("b1877a3b-8832-47b1-bbe3-dc7e98672f49"), "PMC" }
});
}
}
}

View File

@ -3588,11 +3588,6 @@ namespace Marco.Pms.DataAccess.Migrations
b.ToTable("OrgTypeMasters");
b.HasData(
new
{
Id = new Guid("743806fe-d991-4079-b223-e4e2da44f435"),
Name = "Tenant"
},
new
{
Id = new Guid("5ee49bcd-b6d3-482f-9aaf-484afe04abec"),
@ -3602,11 +3597,6 @@ namespace Marco.Pms.DataAccess.Migrations
{
Id = new Guid("a283356a-9b02-4029-afb7-e65c703efdd4"),
Name = "Sub-Contractor"
},
new
{
Id = new Guid("b1877a3b-8832-47b1-bbe3-dc7e98672f49"),
Name = "PMC"
});
});
@ -3682,6 +3672,9 @@ namespace Marco.Pms.DataAccess.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("char(36)");
b.Property<Guid>("AssignedById")
.HasColumnType("char(36)");
b.Property<DateTime>("AssignedDate")
.HasColumnType("datetime(6)");
@ -3705,6 +3698,8 @@ namespace Marco.Pms.DataAccess.Migrations
b.HasKey("Id");
b.HasIndex("AssignedById");
b.HasIndex("OrganizationId");
b.HasIndex("OrganizationTypeId");
@ -3765,6 +3760,9 @@ namespace Marco.Pms.DataAccess.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("char(36)");
b.Property<Guid>("AssignedById")
.HasColumnType("char(36)");
b.Property<DateTime>("AssignedDate")
.HasColumnType("datetime(6)");
@ -3785,6 +3783,8 @@ namespace Marco.Pms.DataAccess.Migrations
b.HasKey("Id");
b.HasIndex("AssignedById");
b.HasIndex("OrganizationId");
b.HasIndex("TenantId");
@ -5737,6 +5737,12 @@ namespace Marco.Pms.DataAccess.Migrations
modelBuilder.Entity("Marco.Pms.Model.OrganizationModel.ProjectOrgMapping", b =>
{
b.HasOne("Marco.Pms.Model.Employees.Employee", "AssignedBy")
.WithMany()
.HasForeignKey("AssignedById")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Marco.Pms.Model.OrganizationModel.Organization", "Organization")
.WithMany()
.HasForeignKey("OrganizationId")
@ -5767,6 +5773,8 @@ namespace Marco.Pms.DataAccess.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("AssignedBy");
b.Navigation("Organization");
b.Navigation("OrganizationType");
@ -5807,6 +5815,12 @@ namespace Marco.Pms.DataAccess.Migrations
modelBuilder.Entity("Marco.Pms.Model.OrganizationModel.TenantOrgMapping", b =>
{
b.HasOne("Marco.Pms.Model.Employees.Employee", "AssignedBy")
.WithMany()
.HasForeignKey("AssignedById")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Marco.Pms.Model.OrganizationModel.Organization", "Organization")
.WithMany()
.HasForeignKey("OrganizationId")
@ -5819,6 +5833,8 @@ namespace Marco.Pms.DataAccess.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("AssignedBy");
b.Navigation("Organization");
b.Navigation("Tenant");

View File

@ -1,4 +1,5 @@
using Marco.Pms.Model.Utilities;
using Marco.Pms.Model.Employees;
using Marco.Pms.Model.Utilities;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System.ComponentModel.DataAnnotations.Schema;
@ -27,6 +28,12 @@ namespace Marco.Pms.Model.OrganizationModel
[ValidateNever]
[ForeignKey("OrganizationTypeId")]
public OrgTypeMaster? OrganizationType { get; set; }
public Guid AssignedById { get; set; }
[ValidateNever]
[ForeignKey("AssignedById")]
public Employee? AssignedBy { get; set; }
public DateTime AssignedDate { get; set; }
public DateTime? CompletionDate { get; set; }
}

View File

@ -1,4 +1,5 @@
using Marco.Pms.Model.Utilities;
using Marco.Pms.Model.Employees;
using Marco.Pms.Model.Utilities;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System.ComponentModel.DataAnnotations.Schema;
@ -14,6 +15,11 @@ namespace Marco.Pms.Model.OrganizationModel
public Organization? Organization { get; set; }
public double SPRID { get; set; }
public bool IsActive { get; set; } = true;
public Guid AssignedById { get; set; }
[ValidateNever]
[ForeignKey("AssignedById")]
public Employee? AssignedBy { get; set; }
public DateTime AssignedDate { get; set; }
public DateTime? ReassignedDate { get; set; }
}

View File

@ -0,0 +1,19 @@
using Marco.Pms.Model.ViewModels.Activities;
using Marco.Pms.Model.ViewModels.Master;
namespace Marco.Pms.Model.ViewModels.Organization
{
public class ProjectOrganizationVM
{
public Guid Id { get; set; }
public string? Name { get; set; }
public string? Email { get; set; }
public string? ContactPerson { get; set; }
public double SPRID { get; set; }
public string? logoImage { get; set; }
public DateTime AssignedDate { get; set; }
public BasicEmployeeVM? AssignedBy { get; set; }
public ServiceMasterVM? Service { get; set; }
public DateTime? CompletionDate { get; set; }
}
}

View File

@ -2261,12 +2261,25 @@ namespace Marco.Pms.Services.Service
var projectOrgMapping = await _context.ProjectOrgMappings
.Include(po => po.ProjectService)
.ThenInclude(ps => ps!.Service)
.Include(po => po.Organization)
.Where(po => po.ProjectService != null && po.ProjectService.ProjectId == projectId && po.TenantId == tenantId)
.Distinct()
.ToListAsync();
var response = projectOrgMapping.Select(po => _mapper.Map<OrganizationVM>(po.Organization)).ToList();
var response = projectOrgMapping.Where(po => po.Organization != null).Select(po => new ProjectOrganizationVM
{
Id = po.Organization!.Id,
Name = po.Organization.Name,
Email = po.Organization.Email,
ContactPerson = po.Organization.ContactPerson,
SPRID = po.Organization.SPRID,
logoImage = po.Organization.logoImage,
AssignedBy = _mapper.Map<BasicEmployeeVM>(po.AssignedBy),
Service = _mapper.Map<ServiceMasterVM>(po.ProjectService!.Service),
AssignedDate = po.AssignedDate,
CompletionDate = po.CompletionDate
}).ToList();
return ApiResponse<object>.SuccessResponse(response, "Successfully fetched the list of organization assigned to the project", 200);
}