using CPRNIMS.Domain.UIContracts.Canvass; using CPRNIMS.Domain.UIContracts.Common; using CPRNIMS.Infrastructure.Helper; using CPRNIMS.Infrastructure.Models.Account; using CPRNIMS.Infrastructure.Models.Common; using CPRNIMS.Infrastructure.ViewModel.Canvass; using CPRNIMS.Infrastructure.ViewModel.PR; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace CPRNIMS.Domain.UIServices.Canvass { public class Canvass : ICanvass { private readonly IConfiguration _configuration; private readonly TokenHelper _tokenHelper; private readonly IApiConfigurationService _apiConfigurationService; public Canvass(IConfiguration configuration, TokenHelper tokenHelper, IApiConfigurationService apiConfigurationService) { _configuration = configuration; _tokenHelper = tokenHelper; _apiConfigurationService = apiConfigurationService; } #region SendRequest service public async Task SendPostApiRequest(User user, CanvassVM viewModel, string apiEndpoint) { var token = await _tokenHelper.GetValidTokenAsync(); try { if (string.IsNullOrEmpty(token)) { return null; } viewModel.UserId = user.UserId; viewModel.FullName = user.FullName; var jsonContent = JsonSerializer.Serialize(viewModel); var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); using (var httpClient = _apiConfigurationService.CreateHttpClientWithDefaultHeaders(token)) { HttpResponseMessage response; response = await httpClient.PostAsync(apiEndpoint, content); var responseObject = JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync()); if (response.IsSuccessStatusCode) { viewModel.messCode =1; viewModel.StatusResponse = responseObject.statusResponse; return viewModel; } else { viewModel.errMessage = responseObject.message; viewModel.messCode = responseObject.messCode; return viewModel; } } } catch (Exception ex) { ex.ToString(); throw; } } public async Task> SendGetApiRequest(User user, CanvassVM viewModel, string apiEndpoint) { var token = await _tokenHelper.GetValidTokenAsync(); try { if (string.IsNullOrEmpty(token)) { // Handle token retrieval failure return null; } viewModel.UserId = user.UserId; var jsonContent = JsonSerializer.Serialize(viewModel); var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); using (var httpClient = _apiConfigurationService.CreateHttpClientWithDefaultHeaders(token)) { HttpResponseMessage response; response = await httpClient.PostAsync(apiEndpoint, content); if (response.IsSuccessStatusCode) { var jsonResponse = await response.Content.ReadAsStringAsync(); var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; var myArtWork = JsonSerializer.Deserialize>(jsonResponse, options); if(myArtWork.Count > 0) { myArtWork[0].URL = _configuration["CommonEndpoints:ApiDefaultHeaders:ItemImages"]; } return myArtWork; } else { // Handle API request failure return null; } } } catch (Exception ex) { throw; } } #endregion #region Get public async Task> GetSupplierBid(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetSupplierBid"]); } public async Task> GetSupplierBidByItem(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetSupplierBidByItem"]); } public async Task> GetCanvassPerSupplier(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassPerSupplier"]); } public async Task> GetCanvassPerSupplierEmail(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassPerSupplierEmail"]); } public async Task> GetCanvassById(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassById"]); } public async Task> GetPRItemList(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetPRItemList"]); } public async Task> GetPRItem(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetPRItem"]); } public async Task> GetCanvassWOResponse(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassWOResponse"]); } public async Task> GetCanvassByPRNo(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassByPRNo"]); } public async Task> GetItemSupplierWOEmail(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetItemSupplierWOEmail"]); } public async Task> GetSupplierItemWOEmail(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetSupplierItemWOEmail"]); } public async Task> GetSupplierById(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetSupplierById"]); } public async Task> GetSupplierBidById(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetSupplierBidById"]); } public async Task> GetWOResponseBySuppId(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetWOResponseBySuppId"]); } public async Task> GetForCanvassPerItem(User user, CanvassVM viewModels) { return await SendGetApiRequest(user, viewModels, _configuration["LLI:NonInvent:CanvassMgmt:GetForCanvassPerItem"]); } public async Task?> GetPRListByPRNo(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetPRListByPRNo"]); } public async Task?> GetMySuppliers(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetMySuppliers"]); } public async Task?> GetMyPRWOCanvass(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetMyPRWOCanvass"]); } public async Task?> GetCanvassPerSupplierId(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassPerSupplierId"]); } public async Task?> GetCanvassGroupByPRNo(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetCanvassGroupByPRNo"]); } public async Task?> GetIndexCard(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetIndexCard"]); } public async Task?> GetAlternativeOfferByPRDetailId(User user, CanvassVM viewModel) { return await SendGetApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:GetAlternativeOfferByPRDetailId"]); } #endregion #region Post Put public async Task PostCanvass(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostCanvass"]); } public async Task PostPutSupplier(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostPutSupplier"]); } public async Task PostApprovedSupp(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostApprovedSupp"]); } public async Task PostSuggestedSupp(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostSuggestedSupp"]); } public async Task PostTaggingSupplier(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostTaggingSupplier"]); } public async Task PutSuppUnitPrice(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PutSuppUnitPrice"]); } public async Task PutSuppBidDetails(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PutSuppBidDetails"]); } public async Task PostPutMySupplier(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostPutMySupplier"]); } public async Task PostPutItemTagging(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:PostPutItemTagging"]); } public async Task UnlockFormLink(User user, CanvassVM viewModel) { return await SendPostApiRequest(user, viewModel, _configuration["LLI:NonInvent:CanvassMgmt:UnlockFormLink"]); } #endregion } }