120 lines
5.2 KiB
C#
120 lines
5.2 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using Elwig.Models.Entities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
|
|
namespace Elwig.ViewModels {
|
|
public partial class DeliveryScheduleAdminViewModel : ObservableObject {
|
|
|
|
[ObservableProperty]
|
|
public partial string? SearchQuery { get; set; } = "";
|
|
public List<string> TextFilter => [.. SearchQuery?.ToLower().Split(' ').ToList().FindAll(e => e.Length > 0) ?? []];
|
|
|
|
[ObservableProperty]
|
|
public partial bool FilterOnlyUpcoming { get; set; }
|
|
[ObservableProperty]
|
|
public partial string? FilterSeasonString { get; set; }
|
|
public int? FilterSeason {
|
|
get => int.TryParse(FilterSeasonString, out var year) ? year : null;
|
|
set => FilterSeasonString = $"{value}";
|
|
}
|
|
|
|
[ObservableProperty]
|
|
public partial DeliverySchedule? SelectedDeliverySchedule { get; set; }
|
|
[ObservableProperty]
|
|
public partial IEnumerable<DeliverySchedule> DeliverySchedules { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial bool EnableSearchInputs { get; set; } = true;
|
|
|
|
[ObservableProperty]
|
|
public partial string DateString { get; set; } = "";
|
|
public DateOnly? Date {
|
|
get => DateOnly.TryParseExact(DateString, "dd.MM.yyyy", out var d) ? d : null;
|
|
set => DateString = $"{value:dd.MM.yyyy}";
|
|
}
|
|
[ObservableProperty]
|
|
public partial Branch? Branch { get; set; }
|
|
[ObservableProperty]
|
|
public partial IEnumerable<Branch> BranchSource { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial string Description { get; set; } = "";
|
|
[ObservableProperty]
|
|
public partial string? MaxWeightString { get; set; } = "";
|
|
public int? MaxWeight {
|
|
get => int.TryParse(MaxWeightString, out var w) ? w : null;
|
|
set => MaxWeightString = $"{value}";
|
|
}
|
|
[ObservableProperty]
|
|
public partial bool IsCancelled { get; set; }
|
|
public ObservableCollection<WineVar> MainVarieties { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial IEnumerable<WineVar> MainVarietiesSource { get; set; } = [];
|
|
public ObservableCollection<WineVar> OtherVarieties { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial IEnumerable<WineVar> OtherVarietiesSource { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial IEnumerable<object> AttributeSource { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial object? AttributeObj { get; set; }
|
|
public WineAttr? Attribute {
|
|
get => AttributeObj as WineAttr;
|
|
set => AttributeObj = value ?? AttributeSource.FirstOrDefault();
|
|
}
|
|
[ObservableProperty]
|
|
public partial IEnumerable<object> CultivationSource { get; set; } = [];
|
|
[ObservableProperty]
|
|
public partial object? CultivationObj { get; set; }
|
|
public WineCult? Cultivation {
|
|
get => CultivationObj as WineCult;
|
|
set => CultivationObj = value ?? CultivationSource.FirstOrDefault();
|
|
}
|
|
|
|
[ObservableProperty]
|
|
public partial string AncmtFromDateString { get; set; } = "";
|
|
public DateOnly? AncmtFromDate {
|
|
get => DateOnly.TryParseExact(AncmtFromDateString, "dd.MM.yyyy", out var d) ? d : null;
|
|
set => AncmtFromDateString = $"{value:dd.MM.yyyy}";
|
|
}
|
|
[ObservableProperty]
|
|
public partial string AncmtFromTimeString { get; set; } = "";
|
|
public TimeOnly? AncmtFromTime {
|
|
get => TimeOnly.TryParseExact(AncmtFromTimeString, "HH:mm", out var t) ? t : null;
|
|
set => AncmtFromTimeString = $"{value:HH:mm}";
|
|
}
|
|
public DateTime? AncmtFrom {
|
|
get => AncmtFromDate != null && AncmtFromTime != null ? AncmtFromDate.Value.ToDateTime(AncmtFromTime.Value) : null;
|
|
set {
|
|
AncmtFromDateString = $"{value:dd.MM.yyyy}";
|
|
AncmtFromTimeString = $"{value:HH:mm}";
|
|
}
|
|
}
|
|
[ObservableProperty]
|
|
public partial string AncmtToDateString { get; set; } = "";
|
|
public DateOnly? AncmtToDate {
|
|
get => DateOnly.TryParseExact(AncmtToDateString, "dd.MM.yyyy", out var d) ? d : null;
|
|
set => AncmtToDateString = $"{value:dd.MM.yyyy}";
|
|
}
|
|
[ObservableProperty]
|
|
public partial string AncmtToTimeString { get; set; } = "";
|
|
public TimeOnly? AncmtToTime {
|
|
get => TimeOnly.TryParseExact(AncmtToTimeString, "HH:mm", out var t) ? t : null;
|
|
set => AncmtToTimeString = $"{value:HH:mm}";
|
|
}
|
|
public DateTime? AncmtTo {
|
|
get => AncmtToDate != null && AncmtToTime != null ? AncmtToDate.Value.ToDateTime(AncmtToTime.Value) : null;
|
|
set {
|
|
AncmtToDateString = $"{value:dd.MM.yyyy}";
|
|
AncmtToTimeString = $"{value:HH:mm}";
|
|
}
|
|
}
|
|
|
|
[ObservableProperty]
|
|
public partial Visibility ControlButtonsVisibility { get; set; } = Visibility.Visible;
|
|
[ObservableProperty]
|
|
public partial Visibility EditingButtonsVisibility { get; set; } = Visibility.Hidden;
|
|
}
|
|
}
|