Skip to content

Commit

Permalink
add/remove access items in save budget command
Browse files Browse the repository at this point in the history
  • Loading branch information
robsmitha committed Sep 2, 2024
1 parent fc252b3 commit ccd7c61
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/Infrastructure/Services/BudgetService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,34 @@ await context.AddAsync(new BudgetCategory
context.RemoveRange(oldCategories);
}

var newAccessItemIds = model.BudgetAccessItems.Select(c => c.InstitutionAccessItemId);
var oldAccessItems = await context.BudgetAccessItems.Where(c => c.BudgetId == model.BudgetId).ToListAsync();
var oldAccessItemsIds = oldAccessItems.Select(c => c.InstitutionAccessItemId).ToList();
if (model.BudgetAccessItems?.Count > 0)
{
var removeAccessItemsIds = oldAccessItemsIds.Except(newAccessItemIds).ToList();
foreach (var removeAccessItemId in removeAccessItemsIds)
{
var budgetAccessItem = await context.BudgetAccessItems.FirstOrDefaultAsync(c => c.BudgetId == model.BudgetId
&& c.InstitutionAccessItemId == removeAccessItemId);
context.Remove(budgetAccessItem);
}

var addAccessItemIds = newAccessItemIds.Except(oldAccessItemsIds).ToList();
foreach (var accessItemId in addAccessItemIds)
{
await context.AddAsync(new BudgetAccessItem
{
BudgetId = budget.BudgetId,
InstitutionAccessItemId = accessItemId
});
}
}
else if (oldAccessItems.Any())
{
context.RemoveRange(oldAccessItems);
}

await context.SaveChangesAsync();
return mapper.Map<BudgetModel>(budget);
}
Expand Down

0 comments on commit ccd7c61

Please sign in to comment.