/// <summary> /// Поставляет во вьюмодель список ид-шников типов, параметр надо ли уточнять этот список и список наименований каталогов в соответствии с выбранными темами /// </summary> /// <param name="model"></param> /// <returns></returns> public virtual ActionResult PostPersonThemes(IndividualPersonThemesModel model) { /* * (сервер) по темам набираем типы * (сервер) если хотя бы для одной темы есть два типа (имеется двусмысленность), то параметр "надо ли уточнять" = 1, иначе 0. * (сервер) возвращаем модель с параметром надо ли уточнять, списком ид-шников типов и список имен каталогов. */ var personTypes = new List <PersonType>(); var needToClarify = false; foreach (var personTypesByThemeID in model.PersonThemes.Select(t => Repository.PersonTypes.GetListByThemeId(t.ID)).Where(personTypesByThemeID => personTypesByThemeID != null)) { if (personTypesByThemeID.Count > 1) { needToClarify = true; } personTypes.AddRange(personTypesByThemeID); } var sc = new StringCollection(); var themeCatalogList = new List <ThemeCatalog>(); foreach (var personTheme in model.PersonThemes) { var personTypeList = Repository.PersonTypes.GetListByThemeId(personTheme.ID); var tc = new ThemeCatalog(); tc.Theme = personTheme.Name; if (personTypeList.Count > 0) { tc.Catalog = Repository.Catalogs.GetInstance(personTypeList[0].CatalogID).CatalogName; } themeCatalogList.Add(tc); } foreach ( var c in personTypes.Select(t => Repository.Catalogs.GetInstance(t.CatalogID)).Where( c => c != null).Where(c => !sc.Contains(c.CatalogName))) { sc.Add(c.CatalogName); } return(JsonModel(new { NeedToClarify = needToClarify, PersonTypes = personTypes.ToArray(), Catalogs = sc, ThemeCatalogs = themeCatalogList }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Поставляет во вьюмодель массив наименований каталогов в соответствии с выбранными типами лиц /// </summary> /// <param name="model"></param> /// <returns></returns> public virtual ActionResult SetPersonTypeIDs(IndividualPersonTypeIDModel model) { var sc = new StringCollection(); var themeCatalogList = new List <ThemeCatalog>(); for (var index = 0; index < model.PersonTypeIDs.Count; index++) { var pt = Repository.PersonTypes.GetInstance(model.PersonTypeIDs.ToArray()[index]); if (pt == null) { continue; } var c = Repository.Catalogs.GetInstance(pt.CatalogID); if (c == null) { continue; } if (!sc.Contains(c.CatalogName)) { sc.Add(c.CatalogName); } var themeCatalog = new ThemeCatalog { Catalog = c.CatalogName, Theme = Repository.PersonThemes.GetInstance(pt.PersonThemeID).Name }; themeCatalogList.Add(themeCatalog); } return(JsonModel(new { Catalogs = sc, ThemeCatalogs = themeCatalogList }, JsonRequestBehavior.AllowGet)); }