/// <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());
        }