public Contract_GroupFilter_SaveResponse SaveGroupFilter(Contract_GroupFilter contract) { Contract_GroupFilter_SaveResponse response = new Contract_GroupFilter_SaveResponse(); response.ErrorMessage = string.Empty; response.GroupFilter = null; GroupFilterRepository repGF = new GroupFilterRepository(); GroupFilterConditionRepository repGFC = new GroupFilterConditionRepository(); // Process the group GroupFilter gf = null; if (contract.GroupFilterID.HasValue) { gf = repGF.GetByID(contract.GroupFilterID.Value); if (gf == null) { response.ErrorMessage = "Could not find existing Group Filter with ID: " + contract.GroupFilterID.Value.ToString(); return response; } } else gf = new GroupFilter(); gf.GroupFilterName = contract.GroupFilterName; gf.ApplyToSeries = contract.ApplyToSeries; gf.BaseCondition = contract.BaseCondition; gf.SortingCriteria = contract.SortingCriteria; if (string.IsNullOrEmpty(gf.GroupFilterName)) { response.ErrorMessage = "Must specify a group filter name"; return response; } repGF.Save(gf); // Process the filter conditions // check for any that have been deleted foreach (GroupFilterCondition gfc in gf.FilterConditions) { bool gfcExists = false; foreach (Contract_GroupFilterCondition gfc_con in contract.FilterConditions) { if (gfc_con.GroupFilterConditionID.HasValue && gfc_con.GroupFilterConditionID.Value == gfc.GroupFilterConditionID) { gfcExists = true; break; } } if (!gfcExists) repGFC.Delete(gfc.GroupFilterConditionID); } // save newly added or modified ones foreach (Contract_GroupFilterCondition gfc_con in contract.FilterConditions) { GroupFilterCondition gfc = null; if (gfc_con.GroupFilterConditionID.HasValue) { gfc = repGFC.GetByID(gfc_con.GroupFilterConditionID.Value); if (gfc == null) { response.ErrorMessage = "Could not find existing Group Filter Condition with ID: " + gfc_con.GroupFilterConditionID.ToString(); return response; } } else gfc = new GroupFilterCondition(); gfc.ConditionOperator = gfc_con.ConditionOperator; gfc.ConditionParameter = gfc_con.ConditionParameter; gfc.ConditionType = gfc_con.ConditionType; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); } response.GroupFilter = gf.ToContract(); return response; }
private static void CreateInitialGroupFilters() { // group filters GroupFilterRepository repFilters = new GroupFilterRepository(); GroupFilterConditionRepository repGFC = new GroupFilterConditionRepository(); if (repFilters.GetAll().Count() > 0) return; // Favorites GroupFilter gf = new GroupFilter(); gf.GroupFilterName = "Favorites"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); GroupFilterCondition gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.Favourite; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); // Missing Episodes gf = new GroupFilter(); gf.GroupFilterName = "Missing Episodes"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.MissingEpisodesCollecting; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); // Newly Added Series gf = new GroupFilter(); gf.GroupFilterName = "Newly Added Series"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.SeriesCreatedDate; gfc.ConditionOperator = (int)GroupFilterOperator.LastXDays; gfc.ConditionParameter = "10"; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); // Newly Airing Series gf = new GroupFilter(); gf.GroupFilterName = "Newly Airing Series"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.AirDate; gfc.ConditionOperator = (int)GroupFilterOperator.LastXDays; gfc.ConditionParameter = "30"; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); // Votes Needed gf = new GroupFilter(); gf.GroupFilterName = "Votes Needed"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.CompletedSeries; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasUnwatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Exclude; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.UserVotedAny; gfc.ConditionOperator = (int)GroupFilterOperator.Exclude; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); // Recently Watched gf = new GroupFilter(); gf.GroupFilterName = "Recently Watched"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.EpisodeWatchedDate; gfc.ConditionOperator = (int)GroupFilterOperator.LastXDays; gfc.ConditionParameter = "10"; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); // TvDB/MovieDB Link Missing gf = new GroupFilter(); gf.GroupFilterName = "TvDB/MovieDB Link Missing"; gf.ApplyToSeries = 0; gf.BaseCondition = 1; repFilters.Save(gf); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.AssignedTvDBOrMovieDBInfo; gfc.ConditionOperator = (int)GroupFilterOperator.Exclude; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); }
private static void CreateContinueWatchingGroupFilter() { // group filters GroupFilterRepository repFilters = new GroupFilterRepository(); GroupFilterConditionRepository repGFC = new GroupFilterConditionRepository(); using (var session = JMMService.SessionFactory.OpenSession()) { // check if it already exists List<GroupFilter> lockedGFs = repFilters.GetLockedGroupFilters(session); if (lockedGFs != null) { // if it already exists we can leave foreach (GroupFilter gfTemp in lockedGFs) if (gfTemp.GroupFilterName.Equals(Constants.GroupFilterName.ContinueWatching, StringComparison.InvariantCultureIgnoreCase)) return; } GroupFilter gf = new GroupFilter(); gf.GroupFilterName = Constants.GroupFilterName.ContinueWatching; gf.Locked = 1; gf.SortingCriteria = "4;2"; // by last watched episode desc gf.ApplyToSeries = 0; gf.BaseCondition = 1; // all repFilters.Save(gf); GroupFilterCondition gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasWatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasUnwatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); } }
private static void CreateContinueWatchingGroupFilter() { // group filters GroupFilterRepository repFilters = new GroupFilterRepository(); GroupFilterConditionRepository repGFC = new GroupFilterConditionRepository(); using (var session = JMMService.SessionFactory.OpenSession()) { // check if it already exists List<GroupFilter> lockedGFs = repFilters.GetLockedGroupFilters(session); if (lockedGFs != null) { // if it already exists we can leave foreach (GroupFilter gfTemp in lockedGFs) { if (gfTemp.FilterType == (int)GroupFilterType.ContinueWatching) return; } // the default value when the column was added to the database was '1' // this is only needed for users of a migrated database foreach (GroupFilter gfTemp in lockedGFs) { if (gfTemp.GroupFilterName.Equals(Constants.GroupFilterName.ContinueWatching, StringComparison.InvariantCultureIgnoreCase) && gfTemp.FilterType != (int)GroupFilterType.ContinueWatching) { FixContinueWatchingGroupFilter_20160406(); return; } } } GroupFilter gf = new GroupFilter(); gf.GroupFilterName = Constants.GroupFilterName.ContinueWatching; gf.Locked = 1; gf.SortingCriteria = "4;2"; // by last watched episode desc gf.ApplyToSeries = 0; gf.BaseCondition = 1; // all gf.FilterType = (int)GroupFilterType.ContinueWatching; repFilters.Save(gf); GroupFilterCondition gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasWatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasUnwatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Include; gfc.ConditionParameter = ""; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); } }