using Microsoft.AspNetCore.Mvc.Rendering; using Newtonsoft.Json; using Serilog; using System.ComponentModel.DataAnnotations; using System.Net.Http; using System.Reflection; using WorkFlowCheck.Common.DTO; using WorkFlowCheck.Common.Enums; using WorkFlowCheck.Web.Services.Interfaces; namespace WorkFlowCheck.Web.Services { public class CheckListService : BaseService, ICheckListService { public CheckListService(HttpClient httpClient, IConfiguration configuration, IHttpContextAccessor httpContextAccessor) : base(httpClient, configuration, httpContextAccessor) { } public async Task> GetAllCheckListHeaderAsync() { var endpoint = $"{_httpClient.BaseAddress}api/CheckList/GetAllCheckListHeaders"; var retVal = new List(); try { var response = await _httpClient.GetFromJsonAsync>>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task GetCheckListHeader(int id) { var endpoint = $"{_httpClient.BaseAddress}api/CheckList/GetCheckListHeader/{id}"; var retVal = new CheckListHeaderDTO() { CheckListRowDTO = new List() }; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> UpdateCheckListHeader(CheckListHeaderDTO checkListHeaderDTO) => throw new NotImplementedException(); public async Task> AcceptCheckListHeader(int id, int userid) { var retVal = new ApiResponseDTO(); var endpoint = $"{_httpClient.BaseAddress}api/CheckList/AcceptCheckListHeader/{id}/{userid}"; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> BlockCheckListHeader(int id, int userid) { var retVal = new ApiResponseDTO(); var endpoint = $"{_httpClient.BaseAddress}api/CheckList/BlockCheckListHeader/{id}/{userid}"; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> UnBlockCheckListHeader(int id, int userid) { var retVal = new ApiResponseDTO(); var endpoint = $"{_httpClient.BaseAddress}api/CheckList/UnBlockCheckListHeader/{id}/{userid}"; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> CloseCheckListHeader(CheckListHeaderCloseDTO checkListHeaderCloseDTO) { try { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/CloseCheckListHeader"; using (HttpResponseMessage httpResponseMessage = await _httpClient.PostAsJsonAsync(endpoint, checkListHeaderCloseDTO)) { httpResponseMessage.EnsureSuccessStatusCode(); var jsonString = await httpResponseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject>(jsonString); return response ?? new ApiResponseDTO { IsSuccess = false, }; } } catch (Exception ex) { // Hiba visszaadása return new ApiResponseDTO { IsSuccess = false }; } } public async Task> CreatePDF(int id) { var retVal = new ApiResponseDTO(); var endpoint = $"{_httpClient.BaseAddress}api/CheckList/CreatePDF/{id}"; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> GetAllCheckListTemplateHeaderAsync() { var endpoint = $"{_httpClient.BaseAddress}api/CheckList/GetAllCheckListTemplateHeaders"; var retVal = new List(); try { var response = await _httpClient.GetFromJsonAsync>>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task GetCheckListTemplateHeader(int id) { var endpoint = $"{_httpClient.BaseAddress}api/CheckList/GetCheckListTemplateHeader/{id}"; var retVal = new CheckListTemplateHeaderDTO() { CheckListTemplateRowDTO = new List() }; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> UpdateCheckListTemplateHeader(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO) { try { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/UpdateCheckListTemplateHeader"; using (HttpResponseMessage httpResponseMessage = await _httpClient.PostAsJsonAsync(endpoint, checkListTemplateHeaderDTO)) { httpResponseMessage.EnsureSuccessStatusCode(); var jsonString = await httpResponseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject>(jsonString); return response ?? new ApiResponseDTO { IsSuccess = false, }; } } catch (Exception ex) { // Hiba visszaadása return new ApiResponseDTO { IsSuccess = false }; } } public async Task GetCheckListTemplateRow(int id) { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/GetCheckListTemplateRow/{id}"; var retVal = new CheckListTemplateRowDTO(); try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task DeleteCheckListTemplateRow(int id) { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/DeleteCheckListTemplateRow/{id}"; var retVal = false; try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> UpdateCheckListTemplateRow(CheckListTemplateRowDTO checkListTemplateRowDTO) { try { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/UpdateCheckListTemplateRow"; using (HttpResponseMessage httpResponseMessage = await _httpClient.PostAsJsonAsync(endpoint, checkListTemplateRowDTO)) { httpResponseMessage.EnsureSuccessStatusCode(); var jsonString = await httpResponseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject>(jsonString); return response ?? new ApiResponseDTO { IsSuccess = false, }; } } catch (Exception ex) { // Hiba visszaadása return new ApiResponseDTO { IsSuccess = false }; } } public async Task GetCheckListRow(int id) { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/GetCheckListRow/{id}"; var retVal = new CheckListRowDTO(); try { var response = await _httpClient.GetFromJsonAsync>(endpoint); if (response != null) { if (response.IsSuccess) { return response.Data; } } } catch (Exception ex) { Log.Error(ex.Message); } return retVal; } public async Task> UpdateCheckListRow(CheckListRowDTO checkListRowDTO) { try { string endpoint = $"{_httpClient.BaseAddress}api/CheckList/UpdateCheckListRow"; using (HttpResponseMessage httpResponseMessage = await _httpClient.PostAsJsonAsync(endpoint, checkListRowDTO)) { httpResponseMessage.EnsureSuccessStatusCode(); var jsonString = await httpResponseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject>(jsonString); return response ?? new ApiResponseDTO { IsSuccess = false, }; } } catch (Exception ex) { // Hiba visszaadása return new ApiResponseDTO { IsSuccess = false }; } } public List GetCheckStatus() { return Enum.GetValues(typeof(CheckStatus)) .Cast() .Select(e => new SelectListItem { Value = ((int)e).ToString(), Text = GetEnumDisplayName(e) }).ToList(); } private string GetEnumDisplayName(Enum enumValue) { return enumValue.GetType() .GetMember(enumValue.ToString()) .First() .GetCustomAttribute()?.Name ?? enumValue.ToString(); } } }