using System.Collections.ObjectModel;
using Microsoft.Phone.Controls;
using PhoneApp.NavigateToView.Core.Navigation;
using PhoneApp.NavigateToView.Core.Views;
using PhoneApp.NavigateToView.Models;
using PhoneApp.NavigateToView.Models.NavigationParameters.Products;

namespace PhoneApp.NavigateToView.Views.Products
{
    [ViewInfos("/Views/Products/ProductListView.xaml")]
    public partial class ProductListView : PhoneApplicationPage, IView
    {
        private ObservableCollection<Product> products;

        public ProductListView()
        {
            InitializeComponent();
            this.LoadProducts();
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            this.DataContext = this.products;
        }

        private void ProductsListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            if (ProductListBox.SelectedIndex == -1)
                return;
            this.NavigationService.NavigateToView<ProductEditView, EditProductParameters>(new EditProductParameters { Mode = EditProductMode.Edit, Product = ProductListBox.SelectedItem as Product });

            ProductListBox.SelectedIndex = -1;
        }

        private void ApplicationBarIconButton_Click(object sender, System.EventArgs e)
        {
            this.NavigationService.NavigateToView<ProductEditView, EditProductParameters>(new EditProductParameters { Mode = EditProductMode.Create });
        }

        private void LoadProducts()
        {
            this.products = new ObservableCollection<Product>();
            for (int i = 1; i < 51; i++)
            {
                products.Add(new Product
                {
                    Id = i,
                    Name = "Product " + i,
                    Description = "Product description " + i
                });
            }
        }
    }
}