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

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

            var projects = _personProjectRepository.VoidPersonProjects(plantId, personId).Select(pp => pp.Project !).ToList();

            projects.ForEach(p => PersonProjectHistoryHelper.LogVoidProjects(
                                 personId,
                                 personProjectHistory,
                                 p.ProjectId,
                                 _personCreatedByCache.Username));

            if (projects.Count > 0)
            {
                await _personProjectHistoryRepository.AddAsync(personProjectHistory);

                hasChanges = true;
            }
            else
            {
                _logger.LogInformation(
                    $"Access to all projects are already voided for person {personId} and plant {plantId}. No action taken.");
            }

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