using System.Text.Json; using PaydayFrontend.Models; namespace PaydayFrontend.Services; public interface IUniversityService { public Task> GetAllUniversity(); public Task> GetDirectionsByUniversityId(long universityId); public Task GetUniversityById(long id); public Task> GetOffers(long directionId); public Task GetDirectionsById(long directionId); } public class UniversityService : IUniversityService { private readonly HttpClient _httpClient; public UniversityService(HttpClient httpClient) { _httpClient = httpClient; _httpClient.BaseAddress = new Uri("https://payday.zetcraft.ru"); } public async Task> GetAllUniversity() { var response = await _httpClient.GetAsync("v1/public/university"); var result = await response.Content.ReadAsStringAsync(); var university = JsonSerializer.Deserialize>(result, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); return university; } public async Task> GetDirectionsByUniversityId(long universityId) { var response = await _httpClient.GetAsync($"v1/public/university/{universityId}/directions"); var result = await response.Content.ReadAsStringAsync(); var directions = JsonSerializer.Deserialize>(result, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); return directions; } public async Task GetDirectionsById(long directionId) { var response = await _httpClient.GetAsync("v1/public/direction/" + directionId); var result = await response.Content.ReadAsStringAsync(); var direction = JsonSerializer.Deserialize(result, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); return direction; } public async Task GetUniversityById(long id) { var response = await _httpClient.GetAsync("v1/public/university/" + id); var result = await response.Content.ReadAsStringAsync(); var university = JsonSerializer.Deserialize(result, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); return university; } public async Task> GetOffers(long directionId) { var response = await _httpClient.GetAsync("v1/public/credit/direction/" + directionId); var result = await response.Content.ReadAsStringAsync(); var offers = JsonSerializer.Deserialize>(result, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); return offers; } }