If a checklist item is removed while updating an activity, it must also be deleted from the database. #28
@ -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));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user