Added checklist and taskallocation relation table and logic to map taskallocation and checklist in that table in report task API

This commit is contained in:
ashutosh.nehete 2025-04-15 17:11:29 +05:30
parent cac50a3f06
commit 1c48ab80aa
9 changed files with 2203 additions and 11 deletions

View File

@ -73,6 +73,7 @@ namespace Marco.Pms.DataAccess.Data
public DbSet<Industry>Industries { get; set; } public DbSet<Industry>Industries { get; set; }
public DbSet<ActivityCheckList>ActivityCheckLists { get; set; } public DbSet<ActivityCheckList>ActivityCheckLists { get; set; }
public DbSet<CheckListMappings> CheckListMappings { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Marco.Pms.DataAccess.Migrations
{
/// <inheritdoc />
public partial class Added_CheckListMappings_Table : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "CheckListMappings",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
TaskAllocationId = table.Column<long>(type: "bigint", nullable: false),
CheckListId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_CheckListMappings", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "CheckListMappings");
}
}
}

View File

@ -604,6 +604,25 @@ namespace Marco.Pms.DataAccess.Migrations
}); });
}); });
modelBuilder.Entity("Marco.Pms.Model.Entitlements.CheckListMappings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CheckListId")
.HasColumnType("int");
b.Property<long>("TaskAllocationId")
.HasColumnType("bigint");
b.HasKey("Id");
b.ToTable("CheckListMappings");
});
modelBuilder.Entity("Marco.Pms.Model.Entitlements.EmployeeRoleMapping", b => modelBuilder.Entity("Marco.Pms.Model.Entitlements.EmployeeRoleMapping", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")

View File

@ -0,0 +1,9 @@
namespace Marco.Pms.Model.Entitlements
{
public class CheckListMappings
{
public int Id { get; set; }
public long TaskAllocationId { get; set; }
public int CheckListId { get; set; }
}
}

View File

@ -133,14 +133,14 @@ namespace Marco.Pms.Model.Mapper
CheckLists = checkList, CheckLists = checkList,
}; };
} }
public static CheckListVM ToCheckListVMFromActivityCheckList(this ActivityCheckList checkList,int activityId) public static CheckListVM ToCheckListVMFromActivityCheckList(this ActivityCheckList checkList,int activityId,bool IsChecked)
{ {
return new CheckListVM return new CheckListVM
{ {
Id = checkList.Id, Id = checkList.Id,
Check = checkList.Check, Check = checkList.Check,
ActivityMasterId = activityId, ActivityMasterId = activityId,
IsChecked = checkList.IsChecked, IsChecked = IsChecked,
IsMandatory = checkList.IsMandatory, IsMandatory = checkList.IsMandatory,
}; };
} }
@ -155,5 +155,16 @@ namespace Marco.Pms.Model.Mapper
TenantId = tenantId TenantId = tenantId
}; };
} }
public static CheckListVM ToCheckListVMFromReportCheckListDto(this ReportCheckListDto checkListDto, int activityId)
{
return new CheckListVM
{
Id = checkListDto.Id,
Check = checkListDto.Check,
ActivityMasterId = activityId,
IsChecked = checkListDto.IsChecked,
IsMandatory = checkListDto.IsMandatory,
};
}
} }
} }

View File

@ -15,5 +15,6 @@ namespace Marco.Pms.Model.ViewModels.Activities
public int TenantId { get; set; } public int TenantId { get; set; }
public List<CommentVM>? Comments { get; set; } public List<CommentVM>? Comments { get; set; }
public List<CheckListVM>? checkList { get; set; }
} }
} }

View File

@ -37,7 +37,7 @@ namespace Marco.Pms.Services.Controllers
{ {
foreach (ActivityCheckList check in checkList) foreach (ActivityCheckList check in checkList)
{ {
var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id); var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id,false);
checkListVM.Add(checkVM); checkListVM.Add(checkVM);
} }
} }
@ -73,7 +73,7 @@ namespace Marco.Pms.Services.Controllers
List<CheckListVM> checkListVM = new List<CheckListVM>(); List<CheckListVM> checkListVM = new List<CheckListVM>();
foreach (ActivityCheckList check in activityCheckList) foreach (ActivityCheckList check in activityCheckList)
{ {
var checkVM = check.ToCheckListVMFromActivityCheckList(activityMaster.Id); var checkVM = check.ToCheckListVMFromActivityCheckList(activityMaster.Id,false);
checkListVM.Add(checkVM); checkListVM.Add(checkVM);
} }
@ -107,7 +107,7 @@ namespace Marco.Pms.Services.Controllers
List<CheckListVM> checkListVM = new List<CheckListVM>(); List<CheckListVM> checkListVM = new List<CheckListVM>();
foreach (ActivityCheckList check in activityCheckList) foreach (ActivityCheckList check in activityCheckList)
{ {
var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id); var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id, false);
checkListVM.Add(checkVM); checkListVM.Add(checkVM);
} }

View File

@ -116,14 +116,26 @@ namespace MarcoBMS.Services.Controllers
taskAllocation.CompletedTask = reportTask.CompletedTask; taskAllocation.CompletedTask = reportTask.CompletedTask;
taskAllocation.WorkItem.CompletedWork += reportTask.CompletedTask; taskAllocation.WorkItem.CompletedWork += reportTask.CompletedTask;
} }
List<ActivityCheckList> activityCheckLists = new List<ActivityCheckList>(); List<CheckListMappings> checkListMappings = new List<CheckListMappings>();
List<CheckListVM> checkListVMs = new List<CheckListVM>();
foreach (var checkDto in reportTask.CheckList) foreach (var checkDto in reportTask.CheckList)
{ {
var check = checkList.Find(c => c.Id == checkDto.Id); checkListVMs.Add(checkDto.ToCheckListVMFromReportCheckListDto(taskAllocation.WorkItem.ActivityId));
check.IsChecked = checkDto.IsChecked; if (checkDto.IsChecked)
activityCheckLists.Add(check); {
var check = checkList.Find(c => c.Id == checkDto.Id);
if (check != null)
{
CheckListMappings checkListMapping = new CheckListMappings
{
CheckListId = check.Id,
TaskAllocationId = reportTask.Id
};
checkListMappings.Add(checkListMapping);
}
}
} }
_context.ActivityCheckLists.UpdateRange(activityCheckLists); _context.CheckListMappings.AddRange(checkListMappings);
var comment = reportTask.ToCommentFromReportTaskDto(tenantId,Employee.Id); var comment = reportTask.ToCommentFromReportTaskDto(tenantId,Employee.Id);
_context.TaskComments.Add(comment); _context.TaskComments.Add(comment);
@ -137,6 +149,7 @@ namespace MarcoBMS.Services.Controllers
resultComments.Add(result.ToCommentVMFromTaskComment()); resultComments.Add(result.ToCommentVMFromTaskComment());
} }
response.Comments = resultComments; response.Comments = resultComments;
response.checkList = checkListVMs;
return Ok(ApiResponse<object>.SuccessResponse(response, "Task reported successfully", 200)); return Ok(ApiResponse<object>.SuccessResponse(response, "Task reported successfully", 200));
} }
@ -223,9 +236,18 @@ namespace MarcoBMS.Services.Controllers
commentVM.Add(comment.ToCommentVMFromTaskComment()); commentVM.Add(comment.ToCommentVMFromTaskComment());
} }
List<ActivityCheckList> checkLists = await _context.ActivityCheckLists.Where(x => x.ActivityMasterId == taskAllocation.WorkItem.ActivityId).ToListAsync(); List<ActivityCheckList> checkLists = await _context.ActivityCheckLists.Where(x => x.ActivityMasterId == taskAllocation.WorkItem.ActivityId).ToListAsync();
List<CheckListMappings> checkListMappings = await _context.CheckListMappings.Where(c => c.TaskAllocationId == taskAllocation.Id).ToListAsync();
List<CheckListVM>checkList = new List<CheckListVM>(); List<CheckListVM>checkList = new List<CheckListVM>();
foreach (var check in checkLists) { foreach (var check in checkLists) {
checkList.Add(check.ToCheckListVMFromActivityCheckList(check.ActivityMasterId)); var checkListMapping = checkListMappings.Find(c => c.CheckListId == check.Id);
if(checkListMapping != null)
{
checkList.Add(check.ToCheckListVMFromActivityCheckList(check.ActivityMasterId, true));
}
else
{
checkList.Add(check.ToCheckListVMFromActivityCheckList(check.ActivityMasterId, false));
}
} }
response.comments = commentVM; response.comments = commentVM;
response.teamMembers = team; response.teamMembers = team;