示例#1
0
        public void UpdateSpecies(DBObject.Species species, DBObject.Species editedSpecies)
        {
            IDatabaseHost.Database.BeginTransaction();
            try
            {
                IDatabaseHost.ISpeciesStore.Update(editedSpecies);

                List <Int64> editedImageIds = editedSpecies.Images.Select(n => n.id).ToList();
                foreach (DBObject.Image image in species.Images)
                {
                    if (!editedImageIds.Contains(image.id))
                    {
                        IDatabaseHost.IImageStore.Delete(image);
                    }
                }

                WriteImages(editedSpecies);

                IDatabaseHost.Database.CompleteTransaction();
            }
            catch
            {
                IDatabaseHost.Database.AbortTransaction();
            }

            Load();
        }
示例#2
0
        //private void LoadImages(DBStore.IDatabaseHost iDatabaseHost, DBObject.Species species)
        //{
        //    Dictionary<long, string> paths = DBStore.DatabaseHelpers.LoadImagePaths(iDatabaseHost.IImagePathsStore);

        //    species.Images = iDatabaseHost.IImageStore.LoadImages(species.id, paths);
        //}


        private void _buttonEdit_Click(object sender, RoutedEventArgs e)
        {
            if (_datagrid.SelectedIndex < 0)
            {
                return;
            }

            int selectedIndex = _datagrid.SelectedIndex;

            ViewModel.SpeciesListViewModel speciesListViewModel = DataContext as ViewModel.SpeciesListViewModel;
            DBObject.Species species = speciesListViewModel.SpeciesCollection[_datagrid.SelectedIndex] as DBObject.Species;
            // Edit a clone of the species
            DBObject.Species editedSpecies = species.Clone();
            speciesListViewModel.LoadImages(species);
            speciesListViewModel.LoadImages(editedSpecies);

            View.SpeciesView           speciesView      = new SpeciesView();
            ViewModel.SpeciesViewModel speciesViewModel = new ViewModel.SpeciesViewModel(speciesListViewModel.IDatabaseHost.IConfigurationStore, editedSpecies);
            speciesView.DataContext           = speciesViewModel;
            speciesView.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            speciesView.Owner = this;
            if (speciesView.ShowDialog() == false)
            {
                return;
            }

            speciesListViewModel.UpdateSpecies(species, editedSpecies);
            _datagrid.Columns[0].Visibility = Visibility.Collapsed;
        }
示例#3
0
        public bool Update(DBObject.Species species)
        {
            bool success = true;

            try
            {
                _iSpeciesTable.Update(species);
            }
            catch
            {
                success = false;
            }

            return(success);
        }
示例#4
0
        public bool Insert(DBObject.Species species)
        {
            bool success = true;

            try
            {
                _iSpeciesTable.Insert(species);
            }
            catch
            {
                success = false;
            }

            return(success);
        }
示例#5
0
        public bool Delete(DBObject.Species species)
        {
            bool success = true;

            try
            {
                _iDatabase.BeginTransaction();
                _iSpeciesAttributeChoiceTable.DeleteBySpecies(species.id);
                _iSpeciesTable.Delete(species);
                _iDatabase.CommitTransaction();
            }
            catch
            {
                success = false;
                _iDatabase.RollbackTransaction();
            }

            return(success);
        }
示例#6
0
        private void _buttonNew_Click(object sender, RoutedEventArgs e)
        {
            ViewModel.SpeciesListViewModel speciesListViewModel = DataContext as ViewModel.SpeciesListViewModel;
            DBObject.Species species = new DBObject.Species();

            View.SpeciesView           speciesView      = new SpeciesView();
            ViewModel.SpeciesViewModel speciesViewModel = new ViewModel.SpeciesViewModel(speciesListViewModel.IDatabaseHost.IConfigurationStore, species);
            speciesView.DataContext           = speciesViewModel;
            speciesView.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            speciesView.Owner = this;
            if (speciesView.ShowDialog() == false)
            {
                return;
            }

            // Save everything

            speciesListViewModel.InsertSpecies(species);
            _datagrid.Columns[0].Visibility = Visibility.Collapsed;
        }
示例#7
0
        private void WriteImages(DBObject.Species species)
        {
            byte displayOrder = 0;

            ParseImagePath(IDatabaseHost.IImagePathsStore, species.Images);

            foreach (DBObject.Image image in species.Images)
            {
                image.display_order = displayOrder;
                ++displayOrder;
                image.fungus_id = species.id;
                if (image.id == 0)
                {
                    IDatabaseHost.IImageStore.Insert(image);
                }
                else
                {
                    IDatabaseHost.IImageStore.Update(image);
                }
            }
        }
示例#8
0
        public void DeleteSpecies(int index)
        {
            DBObject.Species species = SelectedSpecies;
            LoadImages(species);

            IDatabaseHost.Database.BeginTransaction();
            try
            {
                foreach (var image in species.Images)
                {
                    IDatabaseHost.IImageStore.Delete(image);
                }
                IDatabaseHost.ISpeciesStore.Delete(species);

                IDatabaseHost.Database.CompleteTransaction();
            }
            catch
            {
                IDatabaseHost.Database.AbortTransaction();
            }
            Load();
        }
示例#9
0
        public void InsertSpecies(DBObject.Species species)
        {
            IDatabaseHost.Database.BeginTransaction();
            try
            {
                IDatabaseHost.ISpeciesStore.Insert(species);
                WriteImages(species);

                IDatabaseHost.Database.CompleteTransaction();
            }
            catch (Exception exception)
            {
                IDatabaseHost.Database.AbortTransaction();
            }
            Load();
            var enumerator = SpeciesCollection.Where(n => n.id == species.id);

            if ((enumerator != null) && (enumerator.Count() > 0))
            {
                SelectedSpecies = enumerator.First();
            }
        }
示例#10
0
 public void Delete(DBObject.Species species)
 {
     _database.Delete("tblFungi", "id", species);
 }
示例#11
0
 public void Insert(DBObject.Species species)
 {
     species.id = System.Convert.ToInt64(_database.Insert("tblFungi", "id", species));
 }
示例#12
0
        internal void LoadImages(DBObject.Species species)
        {
            Dictionary <long, string> paths = IDatabaseHost.IImagePathsStore.LoadImagePaths();

            species.Images = IDatabaseHost.IImageStore.LoadImages(species.id, paths);
        }
 public SpeciesViewModel(DBStore.IConfigurationStore iConfigurationStore, DBObject.Species species)
 {
     _iConfigurationStore = iConfigurationStore;
     Species = species;
     Images  = new ObservableCollection <DBObject.Image>(species.Images);
 }