private MultipleChoiceListFinderModel BuildMultipleChoiceModel(SocketEventContext model, string prefix, IUpdateModel updater) { var viewModel = new MultipleChoiceListFinderModel(); PopulateChoiceListModel(model, viewModel, prefix, updater, null); return(viewModel); }
private void UpdatedMultipleChoiceModel(SocketEventContext model, MultipleChoiceListFinderModel viewModel, string prefix, IUpdateModel updater) { // Any unchecked can be removed model.Query.Connectors.Remove(c => !viewModel.RightItemIds.Contains(c.RightContentItemId)); var currentConnectors = model.Query.Connectors.List(); // Add all ids (unless duplicates are prevented) foreach (var id in viewModel.RightItemIds) { if (model.Connector.Settings.AllowDuplicates || !currentConnectors.Any(c => c.RightContentItemId == id)) { // Add new connector model.Query.Connectors.Add(id); } } // TODO: This logic needs to be in a validation step instead if (!model.Query.Connectors.Any() && !model.Connector.Settings.AllowNone) { updater.AddModelError(prefix + ".RightItemIds", T("You must select items for {0}", model.SocketMetadata.SocketTitle)); } model.Query.Connectors.Flush(_mechanics); }