/// <summary>
        ///     Initiatize instances of each controller.
        /// </summary>
        /// <param name="log">Azure logger.</param>
        /// <returns>A new instance of the Sourcing Controller.</returns>
        private static SourcingController InitializeSourcingController(ILogger log)
        {
            var itemController        = new ItemController(log);
            var requirementController = new RequirementController(log, itemController);
            var locationController    = new LocationController(log);
            var orderController       = new OrderController(log, locationController);
            var shippingController    = new ShippingController(log, itemController);
            var sourcingController    = new SourcingController(log, itemController, locationController, shippingController, orderController, requirementController);

            return(sourcingController);
        }
        /// <summary>
        ///     Sets the invalidMPN flag to true on the ATG order line for the provided MPN.
        /// </summary>
        /// <param name="mpn">Master Product Number that was deemed invalid.</param>
        /// <param name="atgOrderRes">The ATG Order response object.</param>
        public void FlagInvalidMPN(string mpn, AtgOrderRes atgOrderRes)
        {
            try
            {
                var orderItems = SourcingController.GetOrderItemsByMPN(mpn, atgOrderRes);

                orderItems.ForEach(item => item.invalidMPN = true);

                var title        = "Item is missing data.";
                var teamsMessage = new TeamsMessage(title, $"Item {mpn} is missing data.", "red", SourcingEngineFunctions.errorLogsUrl);
                teamsMessage.LogToTeams(teamsMessage);
            }
            catch (Exception ex)
            {
                var title        = "Error in FlagInvalidMPNs";
                var teamsMessage = new TeamsMessage(title, $"Order Id: {atgOrderRes.atgOrderId}. Error: {ex.Message}. Stacktrace: {ex.StackTrace}", "yellow", SourcingEngineFunctions.errorLogsUrl);
                teamsMessage.LogToTeams(teamsMessage);
            }
        }