public async Task SaveApprenticeshipFavourites(string employerAccountId, Domain.WriteModel.ApprenticeshipFavourites apprenticeshipFavourite)
        {
            if (apprenticeshipFavourite == null)
            {
                throw new ArgumentNullException(nameof(apprenticeshipFavourite));
            }

            var providers = apprenticeshipFavourite.SelectMany(s => s.Providers);

            try
            {
                var table = await GetTable();

                var entity = new ApprenticeshipFavouritesEntity(employerAccountId, apprenticeshipFavourite);

                // Create the InsertOrReplace table operation
                TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity);

                // Execute the operation.
                TableResult result = await _retryPolicy.ExecuteAsync(context => table.ExecuteAsync(insertOrMergeOperation), new Context(nameof(SaveApprenticeshipFavourites)));

                ApprenticeshipFavouritesEntity insertedCustomer = result.Result as ApprenticeshipFavouritesEntity;
            }
            catch (StorageException ex)
            {
                _logger.LogError(ex, "Unable to Save Apprenticeship Favourites");
                throw;
            }
        }
        private async Task <ReadModel.ApprenticeshipFavourites> BuildReadModel(Domain.WriteModel.ApprenticeshipFavourites favouritesFromTableStorage)
        {
            var buildFavouritesTasks = favouritesFromTableStorage.Select(BuildReadModelItem).ToList();

            await Task.WhenAll(buildFavouritesTasks);

            var favourites = new ReadModel.ApprenticeshipFavourites();

            favourites.AddRange(buildFavouritesTasks.Select(x => x.Result));

            return(favourites);
        }