예제 #1
0
        private static Music.Data.Model.Filter CreateDbFilter(DjHorsifyFilterModel filter)
        {
            var searchTerm   = $"{filter.SearchType.ToString()}:";
            var jointFilters = string.Join(";", filter.Filters);

            searchTerm += jointFilters;
            var dbFilter = new Music.Data.Model.Filter
            {
                Name        = filter.FileName,
                SearchTerms = searchTerm,
                Id          = filter.Id
            };

            return(dbFilter);
        }
예제 #2
0
        public bool UpdateFilter(Music.Data.Model.Filter dbFilter)
        {
            try
            {
                var filterToUpdate = Filters.FirstOrDefault(x => x.Id == dbFilter.Id);
                filterToUpdate.SearchTerms = dbFilter.SearchTerms;
                filterToUpdate.Name        = dbFilter.Name;

                //Update filter
                _horsifySongApi.UpdateFilterAsync(dbFilter.Id, filterToUpdate);

                return(true);
            }
            catch (System.Exception ex)
            {
                _loggerFacade.Log($"UpdateFilter - {ex.Message}", Category.Exception, Priority.Medium);
                return(false);
            }
        }
예제 #3
0
        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            var filter = navigationContext.Parameters["add_new_filter"] as DjHorsifyFilterModel;

            if (filter != null)
            {
                Log("add_new_filter", Category.Debug);
                Music.Data.Model.Filter dbFilter = CreateDbFilter(filter);

                var  existingFilter = this._djHorsifyService.Filters.FirstOrDefault(x => x.Name == filter.FileName);
                bool update         = existingFilter == null ? false: true;
                try
                {
                    bool result = false;
                    Task.Run(async() =>
                    {
                        if (update)
                        {
                            Log($"Updating filter {dbFilter.Name}");
                            existingFilter.SearchTerms = dbFilter.SearchTerms;
                            result = _djHorsifyService.UpdateFilter(dbFilter);
                        }
                        else
                        {
                            Log($"Adding new filter {dbFilter.Name}");
                            result = await _djHorsifyService.AddFilterAsync(dbFilter);
                        }
                    }).Wait();

                    if (result)
                    {
                        Log("Successfully added filter to database");
                        _djHorsifyService.HorsifyFilters.Add(filter);
                        CreateFilterViews();
                    }
                    else
                    {
                        Log("Couldn't create service filters", Category.Debug);
                    }
                }
                catch (Exception ex)
                {
                    Log($"Couldn't create service filters. {ex.Message}", Category.Exception);
                }
                finally
                {
                }

                return;
            }

            filter = navigationContext.Parameters["edited_filter"] as DjHorsifyFilterModel;
            if (filter != null)
            {
                Music.Data.Model.Filter dbFilter = CreateDbFilter(filter);
                var result = _djHorsifyService.UpdateFilter(dbFilter);
                if (!result)
                {
                    Log("Couldn't update service filters", Category.Debug);
                }
                else
                {
                    var existingFilter = _djHorsifyService.HorsifyFilters.FirstOrDefault(x => x.Id == filter.Id);
                    if (existingFilter != null)
                    {
                        RefreshFilterViews();
                    }
                    //if (existingFilter != null)
                    //{
                    //    existingFilter.FileName = filter.FileName;
                    //    existingFilter.Filters = filter.Filters;
                    //    existingFilter.SearchAndOrOption = filter.SearchAndOrOption;
                    //    existingFilter.SearchType = filter.SearchType;
                    //}

                    Log($"Filter {dbFilter.Name} saved successfully", Category.Info);
                }
                return;
            }

            filter = navigationContext.Parameters["delete_filter"] as DjHorsifyFilterModel;
            if (filter != null)
            {
                Music.Data.Model.Filter dbFilter = CreateDbFilter(filter);

                bool result = false;
                Task.Run(async() =>
                {
                    result = await _djHorsifyService.DeleteFilterAsync(dbFilter);
                }).Wait();

                if (result)
                {
                    var inListFilter = _djHorsifyService.Filters.FirstOrDefault(x => x.Name == dbFilter.Name);
                    if (inListFilter != null)
                    {
                        var deleted = _djHorsifyService.Filters.Remove(inListFilter);
                        filter.SearchAndOrOption = SearchAndOrOption.None;
                        _djHorsifyService.HorsifyFilters.Remove(filter);
                        Log($"Deleted filter from database: {deleted}");
                    }
                    else
                    {
                        Log($"Couldn't find filter to remove");
                    }
                }
                else
                {
                    Log("Couldn't delete filter from database", Category.Warn);
                }

                return;
            }

            var savedfilter = navigationContext.Parameters["load_filter"] as FiltersSearch;

            if (savedfilter != null)
            {
                ClearSelections();
                Log("Loading saved filter into DJ Horsify");

                var searchFilter = savedfilter.ConvertToSearchFilter();
                if (searchFilter != null)
                {
                    //Set ranges
                    this.DjHorsifyOption.BpmRange    = searchFilter.BpmRange;
                    this.DjHorsifyOption.RatingRange = searchFilter.RatingRange;

                    //Set up music keys TODO: not updating UI after load
                    if (!searchFilter.MusicKeys.Contains("None"))
                    {
                        this.DjHorsifyOption.SelectedKeys    = DjHorsifyOption.ConvertKeys(searchFilter.MusicKeys);
                        this.DjHorsifyOption.HarmonicEnabled = true;
                    }
                    else
                    {
                        this.DjHorsifyOption.HarmonicEnabled = false;
                    }

                    //Set amount
                    if (savedfilter.RandomAmount.Value > 0)
                    {
                        this.DjHorsifyOption.Amount = savedfilter.RandomAmount.Value;
                    }

                    if (searchFilter?.Filters?.Count() > 0)
                    {
                        //Go over each filename in filters and set the SearchAndOrOption type making the list update.
                        foreach (var item in searchFilter?.Filters)
                        {
                            var existingFilter = _djHorsifyService.HorsifyFilters.FirstOrDefault(x => x.FileName == item.FileName);
                            if (existingFilter == null)
                            {
                                Log("Couldn't find existing filter whilst loading saved.");
                            }
                            else
                            {
                                existingFilter.SearchAndOrOption = item.SearchAndOrOption;
                            }
                        }
                    }

                    return;
                }

                Log("Couldn't load saved filter", Category.Warn);
            }
        }