TasksTracker.WebPortal.Frontend.Ui/Pages/Tasks/Index.cshtml.cs (35 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 IndexModel : PageModel
{
private readonly IHttpClientFactory _httpClientFactory;
private readonly DaprClient _daprClient;
public List<TaskModel>? TasksList { get; set; }
[BindProperty]
public string? TasksCreatedBy { get; set; }
public IndexModel(IHttpClientFactory httpClientFactory, DaprClient daprClient)
{
_httpClientFactory = httpClientFactory;
_daprClient = daprClient;
}
public async Task OnGetAsync()
{
TasksCreatedBy = Request.Cookies["TasksCreatedByCookie"];
//Invoke via internal URL (Not Dapr)
//var httpClient = _httpClientFactory.CreateClient("BackEndApiExternal");
//TasksList = await httpClient.GetFromJsonAsync<List<TaskModel>>($"api/tasks?createdBy={TasksCreatedBy}");
// Invoke via Dapr SideCar URL
//var port = 3500;//Environment.GetEnvironmentVariable("DAPR_HTTP_PORT");
//HttpClient client = new HttpClient();
//var result = await client.GetFromJsonAsync<List<TaskModel>>($"http://localhost:{port}/v1.0/invoke/tasksmanager-backend-api/method/api/tasks?createdBy={TasksCreatedBy}");
//TasksList = result;
// Invoke via DaprSDK (Invoke HTTP services using HttpClient) --> Use Dapr Appi ID (Option 1)
//var daprHttpClient = DaprClient.CreateInvokeHttpClient(appId: "tasksmanager-backend-api");
//TasksList = await daprHttpClient.GetFromJsonAsync<List<TaskModel>>($"api/tasks?createdBy={TasksCreatedBy}");
// Invoke via DaprSDK (Invoke HTTP services using HttpClient) --> Specify Custom Port (Option 2)
// var daprHttpClient = DaprClient.CreateInvokeHttpClient(daprEndpoint: "http://localhost:3500");
// TasksList = await daprHttpClient.GetFromJsonAsync<List<TaskModel>>($"http://tasksmanager-backend-api/api/tasks?createdBy={TasksCreatedBy}");
// Invoke via DaprSDK (Invoke HTTP services using DaprClient)
TasksList = await _daprClient.InvokeMethodAsync<List<TaskModel>>(HttpMethod.Get, "tasksmanager-backend-api", $"api/tasks?createdBy={TasksCreatedBy}");
}
public async Task<IActionResult> OnPostDeleteAsync(Guid id)
{
// direct svc to svc http request
// var httpClient = _httpClientFactory.CreateClient("BackEndApiExternal");
// var result = await httpClient.DeleteAsync($"api/tasks/{id}");
//Dapr SideCar Invocation
await _daprClient.InvokeMethodAsync(HttpMethod.Delete, "tasksmanager-backend-api", $"api/tasks/{id}");
return RedirectToPage();
}
public async Task<IActionResult> OnPostCompleteAsync(Guid id)
{
// direct svc to svc http request
// var httpClient = _httpClientFactory.CreateClient("BackEndApiExternal");
// var result = await httpClient.PutAsync($"api/tasks/{id}/markcomplete", null);
//Dapr SideCar Invocation
await _daprClient.InvokeMethodAsync(HttpMethod.Put, "tasksmanager-backend-api", $"api/tasks/{id}/markcomplete");
return RedirectToPage();
}
}
}