elsa-core/samples/aspnet/Elsa.Samples.AspNet.Onboarding.Web/Controllers/HomeController.cs

39 lines
1.3 KiB
C#
Raw Normal View History

2023-06-08 10:01:26 +00:00
using Elsa.Samples.AspNet.Onboarding.Web.Data;
using Elsa.Samples.AspNet.Onboarding.Web.Services;
using Elsa.Samples.AspNet.Onboarding.Web.Views.Home;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
2023-06-08 10:01:26 +00:00
namespace Elsa.Samples.AspNet.Onboarding.Web.Controllers;
public class HomeController(OnboardingDbContext dbContext, ElsaClient elsaClient) : Controller
{
public async Task<IActionResult> Index(CancellationToken cancellationToken)
{
var tasks = await dbContext.Tasks.Where(x => !x.IsCompleted).ToListAsync(cancellationToken: cancellationToken);
var model = new IndexViewModel(tasks);
return View(model);
}
2023-12-04 13:25:34 +00:00
public async Task<IActionResult> CompleteTask(int taskId, CancellationToken cancellationToken)
{
var task = dbContext.Tasks.FirstOrDefault(x => x.Id == taskId);
2023-12-04 13:25:34 +00:00
if (task == null)
return NotFound();
2023-12-04 13:25:34 +00:00
var result = new
{
Magic = Random.Shared.NextDouble()
};
await elsaClient.ReportTaskCompletedAsync(task.ExternalId, result, cancellationToken);
2023-12-04 13:25:34 +00:00
task.IsCompleted = true;
task.CompletedAt = DateTimeOffset.Now;
2023-12-04 13:25:34 +00:00
dbContext.Tasks.Update(task);
await dbContext.SaveChangesAsync(cancellationToken);
2023-12-04 13:25:34 +00:00
return RedirectToAction("Index");
}
}