public async Task <bool> GiveProjectAccessToPlantAsync(long personId, string plantId)
        {
            var hasChanges = false;

            var personProjectHistory =
                PersonProjectHistoryHelper.CreatePersonProjectHistory(
                    _personCreatedByCache.Id,
                    _personCreatedByCache.Username);

            var projects = await _projectRepository.GetParentProjectsByPlant(plantId);

            var(updatedProjectIds, unvoidedProjectIds) = await UpdatePersonProjectsAsync(personId, projects);

            if (updatedProjectIds.Any())
            {
                await UpdatePrivlegesAsync(personId, plantId, personProjectHistory, projects, updatedProjectIds);
            }

            if (unvoidedProjectIds.Any())
            {
                unvoidedProjectIds.ForEach(projectId =>
                                           PersonProjectHistoryHelper.LogUnvoidProjects(
                                               personId,
                                               personProjectHistory,
                                               projectId,
                                               _personCreatedByCache.Username));
            }

            if (updatedProjectIds.Any() || unvoidedProjectIds.Any())
            {
                await _personProjectHistoryRepository.AddAsync(personProjectHistory);

                hasChanges = true;
            }

            return(hasChanges);
        }