public PaymentController(IImisModules imisModules, IHostingEnvironment hostingEnvironment)
        {
            _imisModules        = imisModules;
            _hostingEnvironment = hostingEnvironment;

            _imisModules.GetPaymentModule().GetPaymentLogic().WebRootPath     = _hostingEnvironment.WebRootPath;
            _imisModules.GetPaymentModule().GetPaymentLogic().ContentRootPath = _hostingEnvironment.ContentRootPath;
        }
        public PaymentController(IConfiguration configuration, IHostingEnvironment hostingEnvironment, IImisModules imisModules)
        {
            _configuration      = configuration;
            _hostingEnvironment = hostingEnvironment;
            _imisModules        = imisModules;

            _imisModules.GetPaymentModule().GetPaymentLogic().WebRootPath     = _hostingEnvironment.WebRootPath;
            _imisModules.GetPaymentModule().GetPaymentLogic().ContentRootPath = _hostingEnvironment.ContentRootPath;
        }
        public virtual async Task <IActionResult> GetControlNumber([FromBody] IntentOfPay intent)
        {
            if (!ModelState.IsValid)
            {
                var error = ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage;

                if (intent != null)
                {
                    var resp = await _imisModules.GetPaymentModule().GetPaymentLogic().SaveIntent(intent, error.GetErrorNumber(), error.GetErrorMessage());

                    return(BadRequest(new ErrorResponseV2()
                    {
                        error_occured = true, error_message = error
                    }));
                }
                else
                {
                    return(BadRequest(new ErrorResponseV2()
                    {
                        error_occured = true, error_message = "10-Uknown type of payment"
                    }));
                }
            }

            try
            {
                var response = await _imisModules.GetPaymentModule().GetPaymentLogic().SaveIntent(intent);

                AssignedControlNumber data = (AssignedControlNumber)response.Data;

                return(Ok(new GetControlNumberResp()
                {
                    error_occured = response.ErrorOccured, error_message = response.MessageValue, internal_identifier = data.internal_identifier, control_number = data.control_number
                }));
            }
            catch (Exception e)
            {
                return(BadRequest(new ErrorResponseV2()
                {
                    error_occured = true, error_message = e.Message
                }));
            }
        }
        public virtual IActionResult MatchPayment([FromBody] MatchModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { error_occured = true, error_message = ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage }));
            }

            try
            {
                var response = _imisModules.GetPaymentModule().GetPaymentLogic().MatchPayment(model);
                return(Ok(response));
            }
            catch (Exception)
            {
                return(BadRequest(new { error_occured = true, error_message = "Unknown Error Occured" }));
            }
        }