using Asp.Versioning; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using OnlineSalesAutoCrop.CoreAPI.Models.Requests.Integrations; using OnlineSalesAutoCrop.CoreAPI.Models.Responses.Integrations; using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Integrations; using OnlineSalesAutoCrop.CoreAPI.Services.Services.Integrations; using System; using System.Threading.Tasks; namespace OnlineSalesAutoCrop.CoreAPI.Controllers.IntegretionApi { /// /// /// /// /// /// /// /// [Authorize] [ApiController] [ApiVersion("1.0")] [ValidateAntiForgeryToken] [Route("api/v{version:apiVersion}/Integration")] public class IntegrationController(ILogger logger, IIntegrationService integrationService) : ControllerBase { private readonly ILogger _logger = logger; private readonly IIntegrationService _integrationService = integrationService; [HttpGet("Customers")] [IgnoreAntiforgeryToken] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IntegrationLoginResponse))] public async Task UpsertCustomers(CustomerIntegrationRequest request) { CustomerIntegrationResponse response = new CustomerIntegrationResponse(); try { bool result = await _integrationService.UpsertCustomerAsync(request); if (result) { response.ReturnMessage.Add($"Customer Created Successfully for CustomerNumber :{request.CustomerNumber} & CompanyCode:{request.CompanyCode}"); response.ReturnStatus = StatusCodes.Status201Created; return StatusCode(StatusCodes.Status201Created, response); } else { response.ReturnMessage.Add($"Customer Updated Successfully for CustomerNumber :{request.CustomerNumber} & CompanyCode:{request.CompanyCode}"); response.ReturnStatus = StatusCodes.Status204NoContent; return StatusCode(StatusCodes.Status204NoContent, response); } } catch (Exception ex) { string msg = $"Exception Occur in Customer Operation {request?.CustomerName}~{request?.CompanyCode}"; _logger.LogError(exception: ex, msg); response.ReturnStatus = StatusCodes.Status500InternalServerError; response.ReturnMessage.Add(ex.InnerException != null ? ex.InnerException.Message : ex.Message); return StatusCode(StatusCodes.Status500InternalServerError, response); } } } }