/// <summary> /// Called by DayButton /// </summary> /// <param name="date"></param> public void DayButtonClicked(DateTime date) { if (DateSelectionMode == Dates.DateSelectionMode.SingleDate) { SelectedDate = date; } else { if (SelectedDates.Any(d => d == date)) { SelectedDates.Remove(date); } else { SelectedDates.Add(date); } } if (Ref_DatePicker_DateRange != null) { Ref_DatePicker_DateRange.DateSelected(date); } if (Config.Events.OnDaySelected != null) { Config.Events.OnDaySelected.Invoke(date); } UpdateDisplay(); // I would have preferred to have this react automatically to changes, // but that would mean setting up an observable list, which is an added // complication we don't need right now UpdateInputFieldText(); }
public IActionResult OnGet([FromQuery] int year, [FromQuery] int month, [FromQuery] int day) { if (!ModelState.IsValid) { return(RedirectToPage("Index", new { year, month, day })); } StartTime = "09:00"; DurationMinutesForEachSlot = 30; CountOfSlotForEachSlot = 1; CountOfSlotsToCreate = 1; if (!SelectedDates.Any()) { SelectedDates.Add(LocalDatePattern.CreateWithInvariantCulture("yyyy-MM-dd").Format(SelectedDate)); } return(PageResult(year, month, day)); }
public async Task <IActionResult> OnPost([FromQuery] int year, [FromQuery] int month, [FromQuery] int day) { if (!ModelState.IsValid) { ErrorMessage = "入力に誤りがあります。"; return(PageResult(year, month, day)); } if (!SelectedDates.Any()) { ErrorMessage = "対象の日を1日以上は設定してください。"; return(PageResult(year, month, day)); } var startTime = LocalTimePattern.Create("HH:mm", CultureInfo.CurrentCulture).Parse(StartTime !); if (!startTime.Success) { ErrorMessage = "入力に誤りがあります。"; return(PageResult(year, month, day)); } var dates = SelectedDates .Select(str => LocalDatePattern.CreateWithInvariantCulture("yyyy-MM-dd").Parse(str)) .ToList(); if (dates.Any(r => !r.Success)) { ErrorMessage = "入力に誤りがあります。"; return(PageResult(year, month, day)); } var result = await _service.CreateMultipleAppointmentSlotsAsync(dates.Select(d => d.Value).OrderBy(d => d).ToList(), startTime.Value, Period.FromMinutes(DurationMinutesForEachSlot !.Value), CountOfSlotForEachSlot !.Value, CountOfSlotsToCreate !.Value); if (!result.Succeeded) { ErrorMessage = result.ErrorMessage; return(PageResult(year, month, day)); } return(RedirectToPage("Index", new { year, month, day })); }
private void DayPresenter_Selected(object sender, SelectedDateChangedEventArgs e) { var dateTime = (DateTime)e.SelectedDate; _isInternalSet = true; if (SelectedDates == null) { SelectedDates = new ObservableCollection <DateTime>(); } switch (Mode) { case CalendarXMode.MultipleDate: if (!SelectedDates.Any(x => x.Date.Equals(dateTime))) { SelectedDates.Add(dateTime); } break; case CalendarXMode.Date: SelectedDates.Clear(); SelectedDates.Add(dateTime); break; case CalendarXMode.DateRange: for (int i = 0; i < SelectedDates.Count - 1; i++) { SelectedDates.RemoveAt(0); } SelectedDates.Add(dateTime); break; } SelectedDate = dateTime; UpdateDays(dateTime.Year, dateTime.Month); _isInternalSet = false; }
protected bool ChangeSelectedDate(DateTime?date, bool clicked = true) { if (!date.HasValue) { return(false); } if (!MultiSelectDates) { buttons.FindAll(b => b.IsSelected).ForEach(b => ResetButton(b)); SelectedDates?.Clear(); } if (MinDate.HasValue && date.Value < MinDate.Value) { return(false); } if (buttons.Count == 0) { SelectedDates?.Add(SelectedDate.Value.Date); } var button = buttons.Find(b => b.Date.HasValue && b.Date.Value.Date == date.Value.Date && b.IsEnabled); if (button == null) { return(false); } var deselect = button.IsSelected; if (button.IsSelected) { if (SelectRange && SelectedDates?.Count() > 2) { UnfillSelectedRange(SelectedDate.Value.Date); } else { ResetButton(button); if (SelectedDates?.Count() == 1) { button = buttons.Find(b => b.Date.HasValue && b.Date.Value.Date == SelectedDates?.First() && b.IsEnabled); if (button != null) { SetButton(button); } } } } else { if (SelectedDates != null) { if (SelectRange && SelectedDates.Any()) { FillSelectedRange(SelectedDate.Value.Date); } else { SelectedDates?.Add(SelectedDate.Value.Date); var spD = SpecialDates?.FirstOrDefault(s => s.Date.Date == button.Date.Value.Date); SetButtonSelected(button, spD); } } } if (clicked) { DateClicked?.Invoke(this, new DateTimeEventArgs { DateTime = SelectedDate.Value }); DateCommand?.Execute(SelectedDate.Value); } return(deselect); }