예제 #1
0
        public async Task <IActionResult> GetAllPlants(string vrsta, string porodica, string red, string staniste, string mjesto)
        {
            var result = await _plantService.GetAllPlants(vrsta, porodica, red, staniste, mjesto);

            return(Ok(result));
        }
        public async Task StartAccessSync(List <string> plantList, bool removeUserAccess)
        {
            _logger.LogInformation($"[GroupSync] : Started at {Timestamp}");

            _logger.LogInformation("[GroupSync] : Getting plants.");
            var plants = new List <Plant>();

            if (plantList.Any())
            {
                plants.AddRange(plantList.Select(plant => _plantService.GetPlant(plant)));
            }
            else
            {
                plants = _plantService.GetAllPlants();
            }

            // Set person CreatedBy cache
            await _personService.SetPersonCreatedByCache();

            foreach (var plant in plants)
            {
                if (plant.IsVoided || string.IsNullOrEmpty(plant.AffiliateGroupId) || string.IsNullOrEmpty(plant.InternalGroupId))
                {
                    // go to next plant if above values are empty or plant is voided
                    continue;
                }

                _logger.LogInformation($"[GroupSync] : Started handling {plant.PlantId} at {Timestamp}");

                // Get PCS user OIDs
                var pcsPersonOidList = await GetPcsUserOidList(plant.PlantId);

                // Get AD member OIDs
                var adMemberOidList = await GetAdMemberOidList(new[] { plant.AffiliateGroupId, plant.InternalGroupId });

                // Get AD members that are not existing or mapped by OID in PCS
                var membersInAdNotInPcs = adMemberOidList.Except(pcsPersonOidList).ToList();

                if (membersInAdNotInPcs.Any())
                {
                    _logger.LogInformation($"[GroupSync] : Found {membersInAdNotInPcs.Count} members to update from AD.");
                    _logger.LogInformation("[GroupSync] : Starting AD members update.");

                    var members = membersInAdNotInPcs.Select(oid => new Member(oid, shouldRemove: false)).ToList();
                    await ProcessMembers(members, plant.PlantId);

                    _logger.LogInformation("[GroupSync] : Finished AD members update.");
                }
                else
                {
                    _logger.LogInformation("[GroupSync] : No AD members to update.");
                }

                if (removeUserAccess)
                {
                    // Get PCS users that are no longer a member of the AD group(s)
                    var usersInPcsNotInAd = pcsPersonOidList.Except(adMemberOidList).ToList();

                    if (usersInPcsNotInAd.Any())
                    {
                        _logger.LogInformation($"[GroupSync] : Found {usersInPcsNotInAd.Count} users in PCS (remove access from AD group).");
                        _logger.LogInformation("[GroupSync] : Starting PCS users update.");

                        var members = usersInPcsNotInAd.Select(oid => new Member(oid, shouldRemove: true)).ToList();
                        await ProcessMembers(members, plant.PlantId);

                        _logger.LogInformation("[GroupSync] : Finished PCS users update.");
                    }
                    else
                    {
                        _logger.LogInformation("[GroupSync] : No PCS users to update.");
                    }
                }
                else
                {
                    _logger.LogInformation("[GroupSync] : PCS users update (remove access) is disabled. This step will be skipped.");
                }

                _logger.LogInformation($"[GroupSync] : Finished handling {plant.PlantId} at {Timestamp}");

                // Take a break to allow AI to finish logging.
                await Task.Delay(10000);
            }

            _logger.LogInformation($"[GroupSync] : Finished at {Timestamp}");
        }
예제 #3
0
        public IActionResult GetAllPlants()
        {
            var allPlants = _service.GetAllPlants();

            return(Ok(allPlants));
        }