[FunctionName("MonitorCleanUpJobStatus")]
public static async Task Run([OrchestrationTrigger]
IDurableOrchestrationContext context)
{
    int cleanUpJobId = context.GetInput<int>();
    int jobPollingInterval = GetPollingInterval();
    DateTime expirationTime = GetExpiryTime();
    string emailAddress = GetEmailAddress();

    while (context.CurrentUtcDateTime < expirationTime)
    {
        // Monitorowanie statusu zadania według identyfikatorów.
        var status =
        await context.CallActivityAsync<string>("GetJobCleanUp", cleanUpJobId);
        if (status == "Completed")
        {
            // Wykonanie akcji po spełnieniu określonego warunku.
            await context.CallActivityAsync("SendMonitoringAlert", emailAddress);
            break;
        }

        // Orkiestracja czeka aż do tego momentu.
        var nextMonitorCheck =
        context.CurrentUtcDateTime.AddSeconds(jobPollingInterval);
        await context.CreateTimer(nextMonitorCheck, CancellationToken.None);
    }

    // tutaj wykonujemy dodatkowe zadania lub pozwalamy orkiestracji się zakończyć.
}
