public Task <IContact> CreateOrUpdateContactSupplementAsync(IContact contact, string existingExternalIdentifier = null)
        {
            NullGuard.NotNull(contact, nameof(contact));

            return(ExecuteAsync(async() =>
            {
                using ContactSupplementModelHandler contactSupplementModelHandler = new ContactSupplementModelHandler(DbContext, ContactModelConverter.Create(), AccountingModelConverter.Create());
                return await contactSupplementModelHandler.CreateOrUpdateContactSupplementAsync(contact, existingExternalIdentifier);
            },
                                MethodBase.GetCurrentMethod()));
        }
        public Task <IContact> DeleteContactSupplementAsync(IContact contact)
        {
            NullGuard.NotNull(contact, nameof(contact));

            return(ExecuteAsync(async() =>
            {
                using ContactSupplementModelHandler contactSupplementModelHandler = new ContactSupplementModelHandler(DbContext, ContactModelConverter.Create(), AccountingModelConverter.Create());
                return await contactSupplementModelHandler.DeleteAsync(contact);
            },
                                MethodBase.GetCurrentMethod()));
        }
        public Task <IEnumerable <IContact> > ApplyContactSupplementAsync(IEnumerable <IContact> contacts)
        {
            NullGuard.NotNull(contacts, nameof(contacts));

            return(ExecuteAsync(async() =>
            {
                using ContactSupplementModelHandler contactSupplementModelHandler = new ContactSupplementModelHandler(DbContext, ContactModelConverter.Create(), AccountingModelConverter.Create());
                return await contactSupplementModelHandler.ApplyContactSupplementAsync(contacts);
            },
                                MethodBase.GetCurrentMethod()));
        }