public Result SubscribeToDeparture(DepartureLocation departure) => Result .FailureIf( _departureSubscriptions.Any(s => s.Departure == departure), "Already subscribed to this departure.") .Bind(() => ChatDepartureSubscription.Create(this, departure)) .Tap(sc => _departureSubscriptions.Add(sc));
public Result UnsubscribeFromDeparture(DepartureLocation departure) => Result .SuccessIf( _departureSubscriptions.Any(s => s.Departure == departure), _departureSubscriptions.FirstOrDefault(s => s.Departure == departure), "You were not subscribed to this departure.") .Tap(sc => _departureSubscriptions.Remove(sc));
public HotTour( HotTourInfo info, HotelCategoryType hotelCategory, Duration duration, Price price, Country country, Resort resort, DepartureLocation departureLocation, DateTime departureDate) { Info = info; HotelCategory = hotelCategory; Duration = duration; Price = price; Country = country; Resort = resort; DepartureLocation = departureLocation; DepartureDate = departureDate; }
private ChatDepartureSubscription(ChatSettings settings, DepartureLocation departure) { Settings = settings; Departure = departure; }
public Result ToggleDepartureSubscription(DepartureLocation departure) => Settings.DepartureSubscriptions.Any(ds => ds.Departure == departure) ? Settings.UnsubscribeFromDeparture(departure) : Settings.SubscribeToDeparture(departure);
public bool CanReceiveUpdatesFromDeparture(DepartureLocation departure) => !Settings.DepartureSubscriptions.Any() || Settings.DepartureSubscriptions.Any(d => d.Departure == departure);
private static void DepartureToggleAfterMap(CallbackQuery callbackQuery, SettingsDepartureToggleCommand command) { var departureId = ExtractCallbackQueryId(callbackQuery.Data); command.Departure = DepartureLocation.FromId(departureId); }