/// <summary>
        ///  Page with items that need to be created first
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public async Task <IActionResult> ItemsToBeCreatedInExact(int Id)
        {
            // Check if order exists
            var order = _context.ExactOrders
                        .Include(nameof(ExactOrder.Lines) + "." + nameof(ExactOrderLine.Item))
                        .Include(nameof(ExactOrder.Supplier))
                        .FirstOrDefault(x => x.Id == Id);

            if (order == null || order.Lines == null)
            {
                return(RedirectToAction(nameof(Index), new { sm = StateMessage.FailedMissingInfo }));
            }

            // Check if user exists
            var user = _dbHelper.GetUser(_context, User.Identity.Name);

            if (user == null)
            {
                return(RedirectToAction("LogOut", "Account"));
            }

            var vm = new ItemsToBeCreatedVM();

            ExactOnlineConnect.data.Context     = _context;
            ExactOnlineConnect.data.AccessToken = user.Token;

            var itemsInExact = await ExactOnlineConnect.data.GetItems(user.DivisionId);

            vm.SupplierName = order.Supplier.Name;
            vm.Items        = (_exactHelper.GetToBeCreatedItems(itemsInExact, order.Lines.Select(x => x.Item).ToList(), user, null, order.Lines));
            var itemgroups = await ExactOnlineConnect.data.GetItemGroups(user.DivisionId);

            vm.ItemGroups = _exactHelper.ItemGroupsToSelectList(itemgroups).OrderBy(x => x.Value == user.ItemGroupId.ToString()).ToList();
            vm.OrderId    = order.Id;

            if (!vm.Items.Any())
            {
                order.ItemsAreInExact = true;
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Order), new { Id = vm.OrderId }));
            }

            return(View(vm));
        }
        /// <summary>
        /// Configuration page for changing the user's Exact configurations
        /// </summary>
        /// <param name="sm">StateMessage</param>
        /// <returns></returns>
        public async Task <IActionResult> Index(StateMessage sm = StateMessage.None)
        {
            // DB Info
            var user   = _dbHelper.GetUser(_context, User.Identity.Name);
            var config = _dbHelper.GetExactConfig(_context, user.ConfigID);

            // Exact data
            ExactOnlineConnect.data.Context     = _context;
            ExactOnlineConnect.data.AccessToken = user.Token;

            var suppliers = await ExactOnlineConnect.data.GetSuppliers(user.DivisionId);

            var divisions = await ExactOnlineConnect.data.GetDivisions(user.DivisionId);

            var itemgroups = await ExactOnlineConnect.data.GetItemGroups(user.DivisionId);

            var paymentConditions = await ExactOnlineConnect.data.GetPaymentConditions(user.DivisionId);

            var vm = new Areas.ExactOnline.Models.Configuration.ConfigVM
            {
                ConfigurationId    = config.Id,
                ItemGroupId        = config.ItemGroupId.ToString(),
                ItemGroups         = _exactHelper.ItemGroupsToSelectList(itemgroups),
                PaymentConditionId = config.PaymentConditionId,
                PaymentConditions  = _exactHelper.PaymentConditionsToSelectList(paymentConditions),
                SupplierId         = config.SupplierId.ToString(),
                Suppliers          = _exactHelper.SuppliersToSelectList(suppliers),
                DivisionId         = user.DivisionId.ToString(),
                Divisions          = _exactHelper.DivisionsToSelectList(divisions),
                UserId             = user.Id,
                StateMessage       = sm,
                ConfigType         = config.ConfigType,
            };

            return(View(vm));
        }