Files
BeWoPlaner/BeWoPlanerMobil/Models/DevExpressSchedulerModel.cs
2026-06-29 13:45:41 +02:00

206 lines
7.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BeWoPlanerMobil.Util.SchedulerUtils;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DevExpress.XtraScheduler;
namespace BeWoPlanerMobil.Models
{
public class DevExpressSchedulerModel : AbstractModel
{
public DevExpressSchedulerModel()
{
SessionModel = new DevExpressSchedulerSessionModel();
SessionModel.ResetValues();
ShowEmployeeColors = true;
}
public SchedulerViewType CurrentViewType
{
get => DevExpressSchedulerSessionModel.CurrentSchedulerViewType;
set => DevExpressSchedulerSessionModel.CurrentSchedulerViewType = value;
}
public DevExpressSchedulerSessionModel DevExpressSchedulerSessionModel => SessionModel as DevExpressSchedulerSessionModel;
public List<CompactCustomerDC> PossibleCustomers { get; set; }
public List<ResourceDC> PossibleResources { get; set; }
public List<CompactEmployeeDC> PossibleEmployees { get; set; }
#region Terminformular-Elemente
public List<CompactCustomerDC> SelectedCustomers { get; set; }
public List<ResourceDC> SelectedResources { get; set; }
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
public List<long> SelectedCustomerOids
{
get => DevExpressSchedulerSessionModel.SelectedCustomerOids;
set => DevExpressSchedulerSessionModel.SelectedCustomerOids = value;
}
public List<long> SelectedEmployeeOids
{
get => DevExpressSchedulerSessionModel.SelectedEmployeeOids;
set => DevExpressSchedulerSessionModel.SelectedEmployeeOids = value;
}
public List<long> SelectedResourceOids
{
get => DevExpressSchedulerSessionModel.SelectedResourceOids;
set => DevExpressSchedulerSessionModel.SelectedResourceOids = value;
}
#endregion
public EmployeeAvailabilityObject EmployeeAvailabilityObject { get; set; }
public IEnumerable Appointments { get; set; }
public IEnumerable Resources { get; set; }
public SchedulerAppointmentDC GetAppointmentByOid(long oid)
{
foreach(SchedulerAppointmentDC appointment in Appointments)
{
if(appointment.SchedulerAppointmentOid?.Equals(oid) ?? false)
{
return appointment;
}
}
return null;
}
public List<long> SelectedEmployeeOidsForFiltering
{
get => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForFiltering;
set => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForFiltering = value;
}
public List<long> SelectedCustomerOidsForFiltering
{
get => DevExpressSchedulerSessionModel.SelectedCustomerOidsForFiltering;
set => DevExpressSchedulerSessionModel.SelectedCustomerOidsForFiltering = value;
}
public List<long> SelectedResourceOidsForFiltering
{
get => DevExpressSchedulerSessionModel.SelectedResourceOidsForFiltering;
set => DevExpressSchedulerSessionModel.SelectedResourceOidsForFiltering = value;
}
public List<CompactTeamDC> MyTeams { get; set; } = new List<CompactTeamDC>();
public Dictionary<ValueListEntryDC, List<ResourceDC>> ResourceCategories2Resources { get; set; } = new Dictionary<ValueListEntryDC, List<ResourceDC>>();
public List<CompactEmployeeDC> MyTeamEmployees { get; set; }
public List<long> TeamMemberCustomerOids { get; set; }
public List<CompactEmployeeDC> SelectedEmployeesForFiltering { get; set; }
public List<CompactCustomerDC> SelectedCustomersForFiltering { get; set; }
public List<ResourceDC> SelectedResourcesForFiltering { get; set; }
public bool ShowTasks
{
get => DevExpressSchedulerSessionModel.ShowTasks;
set => DevExpressSchedulerSessionModel.ShowTasks = value;
}
public bool ShowOnlyPrivateAppointments
{
get => DevExpressSchedulerSessionModel.ShowOnlyPrivateAppointments;
set => DevExpressSchedulerSessionModel.ShowOnlyPrivateAppointments = value;
}
public bool ShowOnlyEmployees
{
get => DevExpressSchedulerSessionModel.ShowOnlyEmployees;
set => DevExpressSchedulerSessionModel.ShowOnlyEmployees = value;
}
public bool ShowOnlyCustomers
{
get => DevExpressSchedulerSessionModel.ShowOnlyCustomers;
set => DevExpressSchedulerSessionModel.ShowOnlyCustomers = value;
}
public bool ShowOnlyResources
{
get => DevExpressSchedulerSessionModel.ShowOnlyResources;
set => DevExpressSchedulerSessionModel.ShowOnlyResources = value;
}
public bool ShowAbsenceTimes
{
get => DevExpressSchedulerSessionModel.ShowAbsenceTimes;
set => DevExpressSchedulerSessionModel.ShowAbsenceTimes = value;
}
public bool ShowEmployeeColors
{
get => DevExpressSchedulerSessionModel.ShowEmployeeColors;
set => DevExpressSchedulerSessionModel.ShowEmployeeColors = value;
}
public bool ShowOnlyMyOwnAppointments
{
get => DevExpressSchedulerSessionModel.ShowOnlyMyOwnAppointments;
set => DevExpressSchedulerSessionModel.ShowOnlyMyOwnAppointments = value;
}
#region Benachrichtigungen
public List<Employee2SchedulerAppointmentDC> OpenEmployee2AppointmentRels { get; set; }
public List<long> OpenEmployee2AppointmentRelOids
{
get => DevExpressSchedulerSessionModel.OpenEmployee2AppointmentRelOids;
set => DevExpressSchedulerSessionModel.OpenEmployee2AppointmentRelOids = value;
}
public List<long> OpenAppointmentOids
{
get => DevExpressSchedulerSessionModel.OpenAppointmentOids;
set => DevExpressSchedulerSessionModel.OpenAppointmentOids = value;
}
public List<SchedulerAppointmentDC> OpenAppointments { get; set; }
public SchedulerAppointmentDC AppointmentToAnswerOrUpdate { get; set; }
public long? AppointmentOidToAnswerOrUpdate
{
get => DevExpressSchedulerSessionModel.AppointmentOidToAnswerOrUpdate;
set => DevExpressSchedulerSessionModel.AppointmentOidToAnswerOrUpdate = value;
}
public Employee2SchedulerAppointmentDC Employee2AppointmentToAnswerOrUpdateRel { get; set; }
public long? Employee2AppointmentToAnswerOrUpdateRelOid
{
get => DevExpressSchedulerSessionModel.Employee2AppointmentToAnswerOrUpdateRelOid;
set => DevExpressSchedulerSessionModel.Employee2AppointmentToAnswerOrUpdateRelOid = value;
}
public int NotificationCount => OpenEmployee2AppointmentRelOids.Count;
public SchedulerAppointmentDC GetAppointment2AnswerByOid(long appointmentOid)
{
return OpenAppointments?.FirstOrDefault(f => f.SchedulerAppointmentOid?.Equals(appointmentOid) ?? false);
}
public bool CanConfirmAllOpenAppointments()
{
return OpenAppointments?.Any(a => a.EndDate is null || a.EndDate.Value < DateTime.Now) is false;
}
#endregion
public string GetNotificationInfo()
{
return $"{NotificationCount} Benachrichtigung{(NotificationCount == 1 ? string.Empty : "en")}";
}
}
}