public async Task <ResourceOrderFill> SaveFillAsync(ResourceOrderFill fill, CancellationToken cancellationToken = default(CancellationToken)) { if (fill.ResourceOrderFillId == 0) { var orderFill = await _resourceOrderFillRepository.InsertAsync(fill, cancellationToken); if (orderFill != null) { fill.ResourceOrderFillId = orderFill.ResourceOrderFillId; foreach (var unit in fill.Units) { unit.ResourceOrderFillId = orderFill.ResourceOrderFillId; var fillUnit = await _resourceOrderFillUnitRepository.InsertAsync(unit, cancellationToken); if (fillUnit != null) { unit.ResourceOrderFillUnitId = fillUnit.ResourceOrderFillUnitId; } } } } else { await _resourceOrderFillRepository.UpdateAsync(fill, cancellationToken); foreach (var unit in fill.Units) { await _resourceOrderFillUnitRepository.SaveOrUpdateAsync(unit, cancellationToken); } } return(fill); }