using DamageAssesment.Api.Responses.Interfaces; using DamageAssesment.Api.Responses.Models; using Microsoft.AspNetCore.Mvc.Routing; using Newtonsoft.Json; namespace DamageAssesment.Api.Responses.Services { public class EmployeeServiceProvider : ServiceProviderBase, IEmployeeServiceProvider { public EmployeeServiceProvider(IConfiguration configuration, IHttpUtil httpUtil, ILogger<EmployeeServiceProvider> logger) : base(configuration, httpUtil, logger, configuration.GetValue<string>("RessourceSettings:Employee"), configuration.GetValue<string>("EndPointSettings:EmployeeUrlBase")) { } public async Task<List<Employee>> getEmployeesAsync() { try { var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null); var employees = JsonConvert.DeserializeObject<List<Employee>>(responseJsonString); if (employees == null || !employees.Any()) return new List<Employee>(); else return employees; } catch (Exception ex) { logger?.LogError($"Exception Found : {ex.Message} - Ref: EmployeeServiceProvider.getEmployeesAsync()"); return new List<Employee>(); } } public async Task<Employee> getEmployeeAsync(int employeeId) { try { url = urlBase + string.Format(configuration.GetValue<string>("RessourceSettings:EmployeeById"), employeeId); var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null); var employee = JsonConvert.DeserializeObject<Employee>(responseJsonString); if (employee == null) return null; else return employee; } catch (Exception ex) { logger?.LogError($"Exception Found : {ex.Message} - Ref: EmployeeServiceProvider.getEmployeeAsync()"); return null; } } } }