If a checklist item is removed while updating an activity, it must also be deleted from the database.

This commit is contained in:
ashutosh.nehete 2025-04-28 12:15:00 +05:30
parent 32ad77cace
commit 37534e9b31

View File

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