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); }
private async Task UpdatePrivlegesAsync(long personId, string plantId, PersonProjectHistory personProjectHistory, List <Project> parentProjects, List <long> updatedProjectIds) { await _privilegeService.GivePrivilegesAsync(plantId, personId); updatedProjectIds.ForEach(projectId => { PersonProjectHistoryHelper.LogAddAccess( personId, personProjectHistory, projectId, _personCreatedByCache.Username); var isMainProject = parentProjects.Single(p => p.ProjectId == projectId).IsMainProject; if (isMainProject) { PersonProjectHistoryHelper.LogDefaultUserGroup( personId, personProjectHistory, projectId, _personCreatedByCache.Username); } }); }
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); }