TasksTracker.WebPortal.Frontend.Ui/Pages/Tasks/Edit.cshtml.cs (51 lines of code) (raw):
using Dapr.Client;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using TasksTracker.WebPortal.Frontend.Ui.Pages.Tasks.Models;
namespace TasksTracker.WebPortal.Frontend.Ui.Pages.Tasks
{
public class EditModel : PageModel
{
private readonly IHttpClientFactory _httpClientFactory;
private readonly DaprClient _daprClient;
[BindProperty]
public TaskUpdateModel? TaskUpdate { get; set; }
public EditModel(IHttpClientFactory httpClientFactory, DaprClient daprClient)
{
_httpClientFactory = httpClientFactory;
_daprClient = daprClient;
}
public async Task<IActionResult> OnGetAsync(Guid? id)
{
if (id == null)
{
return NotFound();
}
// direct svc to svc http request
// var httpClient = _httpClientFactory.CreateClient("BackEndApiExternal");
// var Task = await httpClient.GetFromJsonAsync<TaskModel>($"api/tasks/{id}");
//Dapr SideCar Invocation
var Task = await _daprClient.InvokeMethodAsync<TaskModel>(HttpMethod.Get, "tasksmanager-backend-api", $"api/tasks/{id}");
if (Task == null)
{
return NotFound();
}
TaskUpdate = new TaskUpdateModel()
{
TaskId = Task.TaskId,
TaskName = Task.TaskName,
TaskAssignedTo = Task.TaskAssignedTo,
TaskDueDate = Task.TaskDueDate,
};
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
if (TaskUpdate != null)
{
// direct svc to svc http request
// var httpClient = _httpClientFactory.CreateClient("BackEndApiExternal");
// var result = await httpClient.PutAsJsonAsync($"api/tasks/{TaskUpdate.TaskId}", TaskUpdate);
//Dapr SideCar Invocation
await _daprClient.InvokeMethodAsync<TaskUpdateModel>(HttpMethod.Put, "tasksmanager-backend-api", $"api/tasks/{TaskUpdate.TaskId}", TaskUpdate);
}
return RedirectToPage("./Index");
}
}
}