INSERT : Controller

BasicCRUD Insert Query with Bridge

Now let us look at the control and action, for our add customer.

We have the controller created. So in the Constructor, we inject all the dependencies that we need in our controller, we can have our own independence and for the add customer since it was create it created the post method and the route is by default at customer.

[HttpPost]
        [Route("AddCustomer")]
        [ProducesResponseType(typeof(BadRequestResult), 400)]
        [ProducesResponseType(typeof(string), 201)]
        public async Task<IActionResult> AddCustomer([FromBody]AddCustomerInputAPIModel value)
        {
            if (value == null)
            {
                ModelState.AddModelError("requesterror", $"{nameof(AddCustomerInputAPIModel)} can not be empty");
                _logger.LogDebug($"{nameof(AddCustomerInputAPIModel)} can not be empty" + DateTime.Now.ToString());
                return ControllerContext.ReturnFlexBadRequestError();
            }

            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            CommandResult cmdResult = null;

            //Set the values for the parameter
            AddCustomerParams addParams = new AddCustomerParams();

            FlexHostContextInfoBridge hostContextInfo = new FlexHostContextInfoBridge();
            hostContextInfo.Populate<IFlexHostHttpContextAccesorBridge>(_appHttpContextAccessor);
            addParams.HostContextInfo = hostContextInfo;

            addParams.Model = value;

            cmdResult = await ProcessCustomerService.AddCustomer(addParams);
            
            if (cmdResult.Status != Status.Success)
            {
                ModelState.ComposeFlexBadRequestError(cmdResult.Errors());
                return ControllerContext.ReturnFlexBadRequestError();
            }
            return StatusCode(201, cmdResult.result);
        }

Then we do the basic validations, Create a AddCustomerParams as we explained earlier, then in the ContextInfo, the AccessorInfo is mapped. Then it is passed to be filled with the params value and passed in onto the services and any result that comes from the services is written back to the user of the API. If it is successful, then finally it will return the 201 status code with the result, here one interesting thing is what with the result.

Last updated