206 lines
7.6 KiB
C#
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")}";
|
|
}
|
|
}
|
|
} |