/// <summary> /// Applies the settlement. /// </summary> /// <param name="parameters">The parameters.</param> public async Task <ApplySettlementProcessResult> ApplySettlement(ApplySettlementProcessParams parameters) { var activeOverdraft = (await GetOverdrafts(parameters.EmployeeID, parameters.InstanceID, parameters.IdentityWorkID, parameters.PeriodDetailID, new List <OverdraftType>() { OverdraftType.Ordinary })); var mgr = new AuthorizationManager(); var overdrafts = new List <Guid>(); if (parameters.OrdinaryID != Guid.Empty) { overdrafts.Add(parameters.OrdinaryID); } if (parameters.OrdinaryID != Guid.Empty) { overdrafts.Add(parameters.IndemnizationOverID); } using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { if (parameters.ChangeOverdrafts) { await UpdateDetails(parameters.OrdinaryID, parameters.IndemnizationOverID, parameters.OrdinaryOverDetailsIDs, parameters.IndemnizationOverDetailsIDs, parameters.IdentityWorkID, parameters.InstanceID); } await mgr.AuthorizationByOverdraftAsync(new AuthorizationByOverdraftParams() { IdentityWorkID = parameters.IdentityWorkID, InstanceID = parameters.InstanceID, OverdraftIDs = overdrafts, user = parameters.user }); await UnregisterEmployee(parameters); await DeleteOverdrafts(activeOverdraft, parameters.IdentityWorkID); scope.Complete(); } return(new ApplySettlementProcessResult()); }