Merge pull request 'If a checklist item is removed while updating an activity, it must also be deleted from the database.' (#28) from Ashutosh_Bug#119_Remove_CheckList_Item into Feature_Forum

Reviewed-on: #28
This commit is contained in:
Vikas Nale 2025-04-29 05:44:15 +00:00
commit a7553d8461

View File

@ -105,25 +105,45 @@ namespace Marco.Pms.Services.Controllers
activity.ActivityName = createActivity.ActivityName; activity.ActivityName = createActivity.ActivityName;
activity.UnitOfMeasurement = createActivity.UnitOfMeasurement; activity.UnitOfMeasurement = createActivity.UnitOfMeasurement;
List<ActivityCheckList> activityCheckLists = await _context.ActivityCheckLists.AsNoTracking().Where(c => c.ActivityId == activity.Id).ToListAsync();
List<CheckListVM> checkListVM = new List<CheckListVM>(); List<CheckListVM> checkListVM = new List<CheckListVM>();
if (createActivity.CheckList != null) if (createActivity.CheckList != null)
{ {
List<ActivityCheckList> activityCheckList = new List<ActivityCheckList>(); var newCheckIds = createActivity.CheckList.Select(c => c.Id);
foreach (var check in createActivity.CheckList) List<ActivityCheckList> updateCheckList = new List<ActivityCheckList>();
List<ActivityCheckList> deleteCheckList = new List<ActivityCheckList>();
foreach (var check in activityCheckLists)
{ {
ActivityCheckList checkList = check.ToActivityCheckListFromCreateCheckListDto(tenantId, activity.Id); if (newCheckIds.Contains(check.Id))
activityCheckList.Add(checkList); {
var updatedCheck = createActivity.CheckList.Find(c => c.Id == check.Id);
ActivityCheckList checkList = updatedCheck.ToActivityCheckListFromCreateCheckListDto(tenantId, activity.Id);
updateCheckList.Add(checkList);
}
else
{
deleteCheckList.Add(check);
}
}
_context.ActivityCheckLists.UpdateRange(updateCheckList);
if (deleteCheckList != null)
{
_context.ActivityCheckLists.RemoveRange(deleteCheckList);
} }
_context.ActivityCheckLists.UpdateRange(activityCheckList);
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
foreach (ActivityCheckList check in activityCheckList) foreach (ActivityCheckList check in updateCheckList)
{ {
var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id, false); var checkVM = check.ToCheckListVMFromActivityCheckList(activity.Id, false);
checkListVM.Add(checkVM); checkListVM.Add(checkVM);
} }
} }
else if (activityCheckLists != null)
{
_context.ActivityCheckLists.RemoveRange(activityCheckLists);
await _context.SaveChangesAsync();
}
ActivityVM activityVM = activity.ToActivityVMFromActivityMaster(checkListVM); ActivityVM activityVM = activity.ToActivityVMFromActivityMaster(checkListVM);
_logger.LogInfo("activity updated successfully from tenant {tenantId}", tenantId); _logger.LogInfo("activity updated successfully from tenant {tenantId}", tenantId);
return Ok(ApiResponse<object>.SuccessResponse(activityVM, "activity updated successfully", 200)); return Ok(ApiResponse<object>.SuccessResponse(activityVM, "activity updated successfully", 200));