/// <summary> /// Создание места для модификации заполняя недостающие данные из старого объекта, /// Если не один из типов мест не указан для модификации, то возвращается null /// </summary> /// <returns>Созданный объект</returns> public PreferedPlace CreatePlaceForModify() { PreferedPlace res = null; if (NewNotSpecificPlace != null) { res = new PreferedPlace(); res.SmokingAllowed = NewNotSpecificPlace.SmokingAllowed; res.Location = NewNotSpecificPlace.Location; } if (NewSpecificPlace != null) { if (res == null) { res = new PreferedPlace(); } res.PlaceNumber = NewSpecificPlace.PlaceNumber; res.RowNumber = NewSpecificPlace.RowNumber; } if (res != null) { res.SegNumber = SegNum; } return res; }
/// <summary> /// Выполняет модификацию хранимой информации о предпочитаемых местах пассажира /// </summary> /// <param name="placeInfo">Новая информация о предпочитаемых местах</param> /// <param name="specificPlaceModified">Ассоциативный массив индикаторов какие из мест были модифицированы</param> public void ModifyPlaceInfo(List<TravellerPreferedPlace> placeInfo, Dictionary<int, bool> specificPlaceModified) { PreferedPlace tmpPlace, oldPlaceInfo; if (placeInfo != null && placeInfo.Count > 0) { foreach (TravellerPreferedPlace newPlaceInfo in placeInfo) { if (PreferedPlaces == null) { PreferedPlaces = new List<PreferedPlace>(); } //находим старую информацию о предпочитаемом месте oldPlaceInfo = PreferedPlaces.Find(place => place.SegNumber == newPlaceInfo.SegNum); //если есть новая информация о неконкретном (не через карту мест) предпочитаемом месте if (newPlaceInfo.NewNotSpecificPlace != null) { if (oldPlaceInfo != null) { oldPlaceInfo.SmokingAllowed = newPlaceInfo.NewNotSpecificPlace.SmokingAllowed; oldPlaceInfo.Location = newPlaceInfo.NewNotSpecificPlace.Location; } else { tmpPlace = new PreferedPlace(); tmpPlace.SmokingAllowed = newPlaceInfo.NewNotSpecificPlace.SmokingAllowed; tmpPlace.Location = newPlaceInfo.NewNotSpecificPlace.Location; PreferedPlaces.Add(tmpPlace); } } //если есть новая информация о конкретном месте и оно было модифицировано if (newPlaceInfo.NewSpecificPlace != null && specificPlaceModified[newPlaceInfo.SegNum]) { if (oldPlaceInfo != null) { oldPlaceInfo.PlaceNumber = newPlaceInfo.NewSpecificPlace.PlaceNumber; oldPlaceInfo.RowNumber = newPlaceInfo.NewSpecificPlace.RowNumber; } else { tmpPlace = new PreferedPlace(); tmpPlace.PlaceNumber = newPlaceInfo.NewSpecificPlace.PlaceNumber; tmpPlace.RowNumber = newPlaceInfo.NewSpecificPlace.RowNumber; PreferedPlaces.Add(tmpPlace); } } } } }