using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.FeatureManagement.Mvc; using LCU.API.Internal.Operations.IncentiveApi.Services.QueueServices; using LCU.Library.Internal.Exceptions; using LCU.Library.Internal.IncentiveApiModels.Requests; using LCU.API.Internal.Operations.IncentiveApi.Configuration; namespace LCU.API.Internal.Operations.IncentiveApi.Controllers; [FeatureGate(FeatureFlags.EnableControllers)] [ApiController] [Route("api/[controller]")] public class ActivityImportController : ControllerBase { private readonly IQueueCreditCardImportService _queueCreditCardImportService; private readonly IQueueIndirectVehicleImportService _queueIndirectVehicleImportService; private readonly IQueueActionCreditCardService _queueActionCreditCardService; private readonly IQueueActionVehicleService _queueActionVehicleService; private readonly IQueueAlliedGapMbpService _queueAlliedGapMbpService; public ActivityImportController(IQueueCreditCardImportService queueCreditCardImportService, IQueueIndirectVehicleImportService queueIndirectVehicleImportService, IQueueActionCreditCardService queueActionCreditCardService, IQueueActionVehicleService queueActionVehicleService, IQueueAlliedGapMbpService queueAlliedGapMbpService) { _queueCreditCardImportService = queueCreditCardImportService; _queueIndirectVehicleImportService = queueIndirectVehicleImportService; _queueActionCreditCardService = queueActionCreditCardService; _queueActionVehicleService = queueActionVehicleService; _queueAlliedGapMbpService = queueAlliedGapMbpService; } [HttpPost("QueueCreditCardImportRequest")] [ProducesResponseType(202)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task QueueCreditCardImportRequest([FromBody] ImportCreditCardSalesRequest request) { try { await _queueCreditCardImportService.QueueCreditCardSalesImport(request); return Accepted(); } catch (ServiceException exception) { return StatusCode(StatusCodes.Status500InternalServerError, exception.Message); } catch (Exception exception) { Log.Error(exception, "Unexpected Exception"); return StatusCode(StatusCodes.Status500InternalServerError); } } [HttpPost("QueueIndirectVehicleImportRequest")] [ProducesResponseType(202)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task QueueIndirectVehicleImportRequest([FromBody] ImportIndirectVehicleSalesRequest request) { try { await _queueIndirectVehicleImportService.QueueIndirectVehicleSalesImport(request); return Accepted(); } catch (ServiceException exception) { return StatusCode(StatusCodes.Status500InternalServerError, exception.Message); } catch (Exception exception) { Log.Error(exception, "Unexpected Exception"); return StatusCode(StatusCodes.Status500InternalServerError); } } [HttpPost("QueueActionCreditCardRequest")] [ProducesResponseType(202)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task QueueActionCreditCardRequest([FromBody] ActionCreditCardRequest request) { try { await _queueActionCreditCardService.QueueActionCreditCardProcess(request); return Accepted(); } catch (ServiceException exception) { return StatusCode(StatusCodes.Status500InternalServerError, exception.Message); } catch (Exception exception) { Log.Error(exception, "Unexpected Exception"); return StatusCode(StatusCodes.Status500InternalServerError); } } [HttpPost("QueueActionVehicleRequest")] [ProducesResponseType(202)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task QueueActionVehicleRequest([FromBody] ActionVehicleRequest request) { try { await _queueActionVehicleService.QueueActionVehicleProcess(request); return Accepted(); } catch (ServiceException exception) { return StatusCode(StatusCodes.Status500InternalServerError, exception.Message); } catch (Exception exception) { Log.Error(exception, "Unexpected Exception"); return StatusCode(StatusCodes.Status500InternalServerError); } } [HttpPost("QueueAlliedGapMbpRequest")] [ProducesResponseType(202)] [ProducesResponseType(400)] [ProducesResponseType(500)] public async Task QueueAlliedGapMbpRequest([FromBody] AlliedGapMbpRequest request) { try { await _queueAlliedGapMbpService.QueueGapMbpProcess(request); return Accepted(); } catch (ServiceException exception) { return StatusCode(StatusCodes.Status500InternalServerError, exception.Message); } catch (Exception exception) { Log.Error(exception, "Unexpected Exception"); return StatusCode(StatusCodes.Status500InternalServerError); } } }