示例#1
0
        private async Task ImportOrgUnits(CancellationToken cancellationToken)
        {
            await foreach (var googleOrgUnit in Google.GetOrgUnitsAsync(cancellationToken))
            {
                if (IgnoreOrgUnitPaths.Contains(googleOrgUnit.OrgUnitPath))
                {
                    Logger.LogDebug("Skipping organization unit {OrgUnitPath}.", googleOrgUnit.OrgUnitPath);
                    continue;
                }

                var orgUnit = await Context.OrganizationUnits.FirstOrDefaultAsync(x => x.Path.Equals(googleOrgUnit.OrgUnitPath), cancellationToken);

                if (orgUnit is null)
                {
                    orgUnit = new OrganizationUnit
                    {
                        Path = googleOrgUnit.OrgUnitPath
                    };

                    await Context.OrganizationUnits.AddAsync(orgUnit, cancellationToken);
                }

                orgUnit.Name       = googleOrgUnit.Name.TrimStart('_');
                orgUnit.ParentPath = googleOrgUnit.ParentOrgUnitPath;
            }

            var count = await Context.SaveChangesAsync(cancellationToken);

            Logger.LogInformation("Imported {OrgUnitCount} org units from Google.", count);
        }