public SalesOrdersListViewModel()
        {
            if (DesignerProperties.GetIsInDesignMode(
                new System.Windows.DependencyObject())) return;

            try
            {
                var salesOrders = db.SalesOrders.Include(p => p.Retailer);
                SalesOrders = new ObservableCollection<SalesOrder>(salesOrders.ToList());
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message.ToString());
            }
            try
            {
                var retailers = db.Retailers.ToList();
                Retailers = new ObservableCollection<Retailer>(retailers);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message.ToString());
            }
            try
            {
                var products = db.Products.ToList();
                Products = new ObservableCollection<Product>(products);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message.ToString());
            }

            _newSalesOrder = new SalesOrder();
            _newSalesOrder.SalesOrderLines = new ObservableCollection<SalesOrderLine>();
            _salesOrderLines = new ObservableCollection<SalesOrderLine>();
            _searchResults = new ObservableCollection<SalesOrder>();

            DeleteSalesOrderCommand = new RelayCommand<SalesOrder>(onDeleteSalesOrder);
            UpdateSalesOrderCommand = new RelayCommand<SalesOrder>(onUpdateSalesOrder);
            AddSalesOrderCommand = new RelayCommand<SalesOrder>(onAddSalesOrder);
            AddSalesOrderLineCommand = new RelayCommand<SalesOrderLine>(onAddSalesOrderLine);
            SelectSalesOrderCommand = new RelayCommand<SalesOrder>(onSelectSalesOrder);
            FindSalesOrdersCommand = new RelayCommand<string>(onFindSalesOrders);

            DeleteSalesOrderLineCommand = new RelayCommand<SalesOrderLine>(onDeleteSalesOrderLine);
            DeleteNewSalesOrderLineCommand = new RelayCommand<SalesOrderLine>(onDeleteNewSalesOrderLine);
        }
        public void onUpdateSalesOrder(SalesOrder ord)
        {
            var salesOrder = ord;

            if (salesOrder != null)
            {
                db.Entry(salesOrder).State = EntityState.Modified;
                db.SaveChanges();
                SalesOrders = UpdateSalesOrdersCollection(SalesOrders);

                MessageBoxResult msgBox = MessageBox.Show("Changes Saved", "Success");

            }
        }
        public void onDeleteSalesOrder(SalesOrder ord)
        {
            if (ord != null)
            {
                MessageBoxResult messageBoxResult = System.Windows.MessageBox.Show("Are you sure you wish to delete this salesOrder?", "Confirm Delete", System.Windows.MessageBoxButton.YesNo);

                if (messageBoxResult == MessageBoxResult.Yes)
                {
                    int salesOrderid = ord.salesOrderID;
                    SalesOrder ordToRemove = (SalesOrder)SalesOrders.Single(p => p.salesOrderID == salesOrderid);

                    db.SalesOrders.Remove(ordToRemove);
                    db.SaveChanges();
                    SalesOrders = UpdateSalesOrdersCollection(SalesOrders);
                }
            }
        }
 public void onSelectSalesOrder(SalesOrder ord)
 {
     SelectedSalesOrder = ord;
     SalesOrderLines = new ObservableCollection<SalesOrderLine>(SelectedSalesOrder.SalesOrderLines.ToList());
 }
        public void onAddSalesOrder(SalesOrder ord)
        {
            var newSalesOrder = ord;
            var ordSup = from s in db.Retailers where s.retailerID == ord.retailerID select s;
            newSalesOrder.Retailer = (Retailer)ordSup.Single();

            if (newSalesOrder != null)
            {
                db.SalesOrders.Add(newSalesOrder);
                db.SaveChanges();
                SalesOrders = UpdateSalesOrdersCollection(SalesOrders);
                MessageBoxResult msgBox = MessageBox.Show("SalesOrder Added", "Success");
            }
        }