using log4net.Core; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Swashbuckle.AspNetCore.Annotations; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; using UF.AssessmentProject.Helper; using UF.AssessmentProject.logs; using UF.AssessmentProject.Providers; namespace UF.AssessmentProject.Controllers { [Produces("application/json"), Route("api/[action]"), ApiController] [SwaggerTag("Transaction Middleware Controller to keep transactional data in Log Files")] public class TransactionController : ControllerBase { private readonly HomeProvider _homeProvider = new HomeProvider(); private readonly ILoggerManager _logger; public TransactionController(ILoggerManager logger) { _logger = logger; } /// <summary> /// Submit Transaction data /// </summary> /// <remarks> /// Ensure all parameter needed and responded as per IDD /// Ensure all posible validation is done /// API purpose: To ensure all data is validated and only valid partner with valid signature are able to access to this API /// </remarks> /// <param name="req">language:en-US(English), ms-MY(BM)</param> /// <returns></returns> /// [HttpPut] [SwaggerResponse(StatusCodes.Status200OK, "Submit Transaction Message successfully", typeof(Model.Transaction.ResponseMessage))] [SwaggerResponse(StatusCodes.Status401Unauthorized, "Unauthorized, Request")] [SwaggerResponse(StatusCodes.Status500InternalServerError, "Oops! Can't get your Post right now")] public ActionResult<Model.Transaction.ResponseMessage> SubmitTRansaction(Model.Transaction.RequestMessage req) { try { Model.Transaction.ResponseMessage results = new Model.Transaction.ResponseMessage(); results.success = 0; // Your Code here results = _homeProvider.Validate(req); _logger.LogInformation(Request.Path.ToString() + "\r\nRequest = " + JsonConvert.SerializeObject(req)); if (results.success == DataDictionary.responseResult.failed) { _logger.LogError(Request.Path.ToString() + "\r\nResponse =" + JsonConvert.SerializeObject(results)); } else { _logger.LogInformation(Request.Path.ToString() + "\r\nResponse =" + JsonConvert.SerializeObject(results)); } return Ok(results); } catch (Exception ex) { return BadRequest(ex.Message); } } /// <summary> /// Test this controller is active /// </summary> /// <remarks> /// Test API to check API is Alive or not /// </remarks> /// <returns></returns> [HttpGet] public ActionResult<string> TestAPI() { string result = "Hello World!"; return Ok(result); } } }