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); }
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); } }
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); } }