private async void SaveOrderCommandExecute(object obj)
        {
            Logger.For(this).Info("Saving order");
            IsBusy = true;
            var existingOrderItems = Order.OrderItems;
            var newOrderItems      = OrderItems.Where(checkableItem => checkableItem.IsChecked).Select(checkableItem => checkableItem.Item);

            var addedOrderItems   = newOrderItems.Where(orderItem => !existingOrderItems.Any(existingOrderItem => existingOrderItem.Id == orderItem.Id)).ToList();
            var deletedOrderItems = existingOrderItems.Where(existingOrderItem => !newOrderItems.Any(orderItem => orderItem.Id == existingOrderItem.Id)).ToList();
            var updatedOrderItems = existingOrderItems.Where(existingOrderItem => !deletedOrderItems.Any(deletedOrderItem => deletedOrderItem.Id == existingOrderItem.Id)).ToList();

            try
            {
                Logger.For(this).Info("Adding new order items");
                foreach (OrderItemDto orderItem in addedOrderItems)
                {
                    orderItem.OrderId = Order.Id;
                    var createdOrderItem = await orderItemService.CreateAsync(orderItem);

                    Order.OrderItems.Add(createdOrderItem);
                }

                Logger.For(this).Info("Removing older order items");
                foreach (OrderItemDto orderItem in deletedOrderItems)
                {
                    await orderItemService.DeleteAsync(orderItem.Id);

                    Order.OrderItems.Remove(orderItem);
                }

                Logger.For(this).Info("Updating existing order items");
                foreach (OrderItemDto orderItem in updatedOrderItems)
                {
                    await orderItemService.UpdateAsync(orderItem);

                    var tempOrderItem = Order.OrderItems.Find(o => o.Id == orderItem.Id);
                    Order.OrderItems.Remove(tempOrderItem);
                    Order.OrderItems.Add(orderItem);
                }

                IsBusy = false;
                Logger.For(this).Info("Order is saved");
                Messenger.Default.Send <WindowMessege, bool?>(WindowMessege.CloseEditOrderWindow, true);
                Logger.For(this).Info("Close EditOrderWindow");
            }
            catch (NoInternetConnectionException ex)
            {
                Logger.For(this).Error(ex.Message, ex);
                messageService.ShowMessage(ex.Message, "Error", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
            }
            catch (HttpRequestException ex)
            {
                Logger.For(this).Error(ex.Message, ex);
                messageService.ShowMessage(ex.Message, "Error", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
            }
            IsBusy = false;
        }