public async Task<IActionResult> Checkout(OrderViewModel order)
		{
			if (!ModelState.IsValid||order.OrderQuantities==null)
			{
				_logger.LogInformation("OrderViewModel is invalid", order);
				return RedirectToAction(nameof(EmptyOrder));				
			}
			
			int totalItems = 0;
			int index = 0;
			List<int> emptyIndices = new List<int>();
			foreach(var item in order.OrderQuantities)
			{
				totalItems += item;
				if (item == 0)
				{
					emptyIndices.Add(index);
				}
				index++;
			}
			if (totalItems == 0)
			{
				return RedirectToAction(nameof(EmptyOrder));
			}

			
			if (!(emptyIndices == null))
			{
				for (int i = emptyIndices.Count-1; i >= 0; i--)
				{
					order.Products.RemoveAt(emptyIndices[i]);
					order.OrderQuantities.RemoveAt(emptyIndices[i]);
				}
				/*foreach (var item in emptyIndices)
				{
					order.Products.RemoveAt(item);
					order.OrderQuantities.RemoveAt(item);
				}*/
			}

			//  calculate cost
			double orderCost = 0;
			index = 0;
			foreach (var item in order.Products)
			{
				Product product = await _productRepository.GetProductById(item);
				//  calculate order total
				orderCost += (product.UnitPrice * order.OrderQuantities[index]);
				index++;
			}

			int locId = order.LocationIds[0];
			int userId = int.Parse(HttpContext.User.FindFirst(claim => claim.Type == "UserId").Value);
			//  Create new order and get order id
			_logger.LogInformation("Attempting to create new order for user: {0}, at time: {1}",userId, DateTime.Now);
			var newOrder = await _orderRepository.AddOrder(userId, locId, orderCost);
			index = 0;
			//  Create line items
			List<OrderLineItem> lineItems = new List<OrderLineItem>();
			foreach(var item in order.Products)
			{
				Product product = await _productRepository.GetProductById(item);
				await _orderRepository.AddLineItem(userId, newOrder, product, order.OrderQuantities[index]);
				index++;
			}

			// var items = await _orderRepository.GetLineItems(newOrder);

			lineItems.AddRange(await _orderRepository.GetLineItems(newOrder));

			/*var productVM = new ProductsViewModel
			{
				Locations = new SelectList(locnames.Distinct().ToList()),
				Products = listProducts
			};*/
			//  get location name
			string locName = await _locationRepository.GetLocationName(locId);
			var checkoutVM = new CompletedOrder
			{
				Date = newOrder.Timestamp,
				Location = locName,
				Total = orderCost,
				OrderLineItems = lineItems
			};

			return View(checkoutVM);
		}