private void DeserializeSelectedEquipments(string value) { string error = null; try { List<Item> items = JsonConvert.DeserializeObject<List<Item>>(value); var eqpErrors = new List<string>(); foreach (ArmorPieceTypesViewModel type in armorPieceTypes) { Item item = items.FirstOrDefault(x => x.Type == (int)type.Type); if (item.Selected == null) { error = "Invalid advanced search data"; break; } foreach (ISolverDataEquipmentModel eqp in type.Equipments) eqp.IsSelected = false; foreach (string eqpName in item.Selected) { ISolverDataEquipmentModel eqp = type.Equipments.FirstOrDefault(x => Core.Localization.GetDefault(x.Equipment.Name) == eqpName); if (eqp == null) eqpErrors.Add(eqpName); else eqp.IsSelected = true; } type.ForceRefreshEquipments(); } if (eqpErrors.Count > 0) { string errMessage = string.Join("\n- ", eqpErrors); error = $"The following equipment(s) could not be selected because unavailable:\n- {errMessage}"; } } catch (Exception ex) { if (error == null) error = ex.Message; } if (error != null) { IMessageBoxService service = ServicesContainer.GetService<IMessageBoxService>(); service.Show(new MessageBoxServiceOptions { Buttons = Core.ServiceContracts.MessageBoxButton.OK, Icon = Core.ServiceContracts.MessageBoxImage.Warning, MessageBoxText = error, Title = "Error", }); } }
public AdvancedSearchEquipment(ISolverDataEquipmentModel model, Action onSelectionChanged) { this.model = model; this.onSelectionChanged = onSelectionChanged; originalSelection = model.IsSelected; }