/// <inheritdoc />
        public Task CreateWithSpecifiedIdAsync(string masterId, string slaveId, PersonConsentCreate item,
                                               CancellationToken token = new CancellationToken())
        {
            InternalContract.RequireNotNull(item, nameof(item));
            InternalContract.RequireValidated(item, nameof(item));
            InternalContract.Require(masterId == item.PersonId, $"{nameof(masterId)} ({masterId} must have the same value as {nameof(item)}.{nameof(item.PersonId)} ({item.PersonId}).");
            InternalContract.Require(slaveId == item.ConsentId, $"{nameof(slaveId)} ({slaveId} must have the same value as {nameof(item)}.{nameof(item.ConsentId)} ({item.ConsentId}).");
            var serverItem = MapToServer(item);

            return(_storage.PersonConsent.CreateAsync(serverItem, token));
        }
        private PersonConsentTable MapToServer(PersonConsentCreate source)
        {
            InternalContract.RequireNotNull(source, nameof(source));
            InternalContract.RequireValidated(source, nameof(source));
            var target = new PersonConsentTable
            {
                HasGivenConsent = source.HasGivenConsent,
                PersonId        = MapperHelper.MapToType <Guid, string>(source.PersonId),
                ConsentId       = MapperHelper.MapToType <Guid, string>(source.ConsentId),
            };

            FulcrumAssert.IsValidated(target);
            return(target);
        }