From bf569a4ac5322bbf62849b8c98009d5e03bf5677 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 6 Sep 2026 17:42:46 +0100 Subject: [PATCH] postit: fix rdv date picker binding --- .../BillingCommandPageViewModelTests.cs | 19 +++++++++++++++++++ .../ViewModels/Commands/RdvViewModel.cs | 17 +++++++++++++++++ .../PostIt/Views/Commands/RdvPage.axaml | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs b/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs index 1da8b4cbd..17fcc968c 100644 --- a/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs +++ b/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs @@ -135,6 +135,25 @@ public class BillingCommandPageViewModelTests Assert.Contains("Position sélectionnée", vm.StatusMessage, StringComparison.OrdinalIgnoreCase); } + [Fact] + public void EventDateSelection_round_trips_with_EventDate_for_DatePicker_binding() + { + var api = new RecordingApi(); + var client = new BillingApiClient(api, "https://business.example/api/v1/"); + var vm = + new CommandFormSummary { Id = 12, ActionName = "Rdv", Title = "Rendez-vous" } + .CreateCommandPageViewModel( + new ActivityInfo { Code = "dev", Name = "Développement" }, + new ActivityUserDisplayItem { PerformerId = "perf-1", UserName = "Alice" }, + client) as RdvViewModel; + + var selected = new DateTimeOffset(2026, 9, 7, 14, 30, 0, TimeSpan.FromHours(2)); + vm!.EventDateSelection = selected; + + Assert.Equal(selected.LocalDateTime, vm.EventDate); + Assert.Equal(vm.EventDate, vm.EventDateSelection!.Value.LocalDateTime); + } + [Fact] public void ApplyResolvedAddress_populates_empty_address_directly() { diff --git a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs index 484471c25..7a7d17df6 100644 --- a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs +++ b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs @@ -33,6 +33,18 @@ public partial class RdvViewModel : BillingCommandPageViewModel [ObservableProperty] public partial DateTime EventDate { get; set; } + public DateTimeOffset? EventDateSelection + { + get => new(EventDate); + set + { + if (!value.HasValue) + return; + + EventDate = value.Value.LocalDateTime; + } + } + public RdvViewModel(ActivityInfo activity, ActivityUserDisplayItem performer, CommandFormSummary form, BillingApiClient billingClient) : base(activity, performer, form, billingClient) { @@ -206,6 +218,11 @@ public partial class RdvViewModel : BillingCommandPageViewModel OnPropertyChanged(nameof(HasSuggestedAddressPanel)); } + partial void OnEventDateChanged(DateTime value) + { + OnPropertyChanged(nameof(EventDateSelection)); + } + protected override async Task SubmitAsync() { diff --git a/src/PostIt/PostIt/Views/Commands/RdvPage.axaml b/src/PostIt/PostIt/Views/Commands/RdvPage.axaml index 8609cc3d8..e521a5a6b 100644 --- a/src/PostIt/PostIt/Views/Commands/RdvPage.axaml +++ b/src/PostIt/PostIt/Views/Commands/RdvPage.axaml @@ -26,7 +26,7 @@ - +