TasksTracker.Processor.Backend.Svc/Controllers/ScheduledTasksManagerController.cs (40 lines of code) (raw):

using Dapr.Client; using Microsoft.AspNetCore.Mvc; using TasksTracker.Processor.Backend.Svc.Models; namespace TasksTracker.Processor.Backend.Svc.Controllers { [Route("ScheduledTasksManager")] [ApiController] public class ScheduledTasksManagerController : ControllerBase { private readonly ILogger<ScheduledTasksManagerController> _logger; private readonly DaprClient _daprClient; public ScheduledTasksManagerController(ILogger<ScheduledTasksManagerController> logger, DaprClient daprClient) { _logger = logger; _daprClient = daprClient; } [HttpPost] public async Task CheckOverDueTasksJob() { var runAt = DateTime.UtcNow; _logger.LogInformation($"ScheduledTasksManager::Timer Services triggered at: {runAt}"); var overdueTasksList = new List<TaskModel>(); var tasksList = await _daprClient.InvokeMethodAsync<List<TaskModel>>(HttpMethod.Get, "tasksmanager-backend-api", $"api/overduetasks"); _logger.LogInformation($"ScheduledTasksManager::completed query state store for tasks, retrieved tasks count: {tasksList?.Count()}"); tasksList?.ForEach(taskModel => { if (runAt.Date> taskModel.TaskDueDate.Date) { overdueTasksList.Add(taskModel); } }); if (overdueTasksList.Count> 0) { _logger.LogInformation($"ScheduledTasksManager::marking {overdueTasksList.Count()} as overdue tasks"); await _daprClient.InvokeMethodAsync(HttpMethod.Post, "tasksmanager-backend-api", $"api/overduetasks/markoverdue", overdueTasksList); } } } }