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; }
public string DeleteGroupFilter(int groupFilterID) { try { GroupFilterRepository repGF = new GroupFilterRepository(); GroupFilterConditionRepository repGFC = new GroupFilterConditionRepository(); GroupFilter gf = repGF.GetByID(groupFilterID); if (gf == null) return "Group Filter not found"; // delete all the conditions first foreach (GroupFilterCondition gfc in gf.FilterConditions) repGFC.Delete(gfc.GroupFilterConditionID); repGF.Delete(groupFilterID); return ""; } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); return ex.Message; } }
public string DeleteAnimeGroup(int animeGroupID, bool deleteFiles) { try { AnimeSeriesRepository repAnimeSer = new AnimeSeriesRepository(); AnimeGroupRepository repGroups = new AnimeGroupRepository(); AnimeGroup grp = repGroups.GetByID(animeGroupID); if (grp == null) return "Group does not exist"; int? parentGroupID = grp.AnimeGroupParentID; foreach (AnimeSeries ser in grp.GetAllSeries()) { DeleteAnimeSeries(ser.AnimeSeriesID, deleteFiles, false); } // delete all sub groups foreach (AnimeGroup subGroup in grp.GetAllChildGroups()) { DeleteAnimeGroup(subGroup.AnimeGroupID, deleteFiles); } GroupFilterConditionRepository repConditions = new GroupFilterConditionRepository(); // delete any group filter conditions which reference these groups foreach (GroupFilterCondition gfc in repConditions.GetByConditionType(GroupFilterConditionType.AnimeGroup)) { int thisGrpID = 0; int.TryParse(gfc.ConditionParameter, out thisGrpID); if (thisGrpID == animeGroupID) repConditions.Delete(gfc.GroupFilterConditionID); } repGroups.Delete(grp.AnimeGroupID); // finally update stats if (parentGroupID.HasValue) { AnimeGroup grpParent = repGroups.GetByID(parentGroupID.Value); if (grpParent != null) { grpParent.TopLevelAnimeGroup.UpdateStatsFromTopLevel(true, true, true); StatsCache.Instance.UpdateUsingGroup(grpParent.TopLevelAnimeGroup.AnimeGroupID); } } return ""; } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); return ex.Message; } }