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); }