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 List RecurrenceIdsWithOccurrences { get; set; } public DevExpressSchedulerSessionModel DevExpressSchedulerSessionModel => SessionModel as DevExpressSchedulerSessionModel; public List PossibleCustomers { get; set; } public List PossibleResources { get; set; } public List PossibleEmployees { get; set; } #region Terminformular-Elemente public List SelectedCustomers { get; set; } public List SelectedResources { get; set; } public List SelectedEmployees { get; set; } public List SelectedCustomerOids { get => DevExpressSchedulerSessionModel.SelectedCustomerOids; set => DevExpressSchedulerSessionModel.SelectedCustomerOids = value; } public List SelectedEmployeeOids { get => DevExpressSchedulerSessionModel.SelectedEmployeeOids; set => DevExpressSchedulerSessionModel.SelectedEmployeeOids = value; } public List 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 SelectedEmployeeOidsForFiltering { get => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForFiltering; set => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForFiltering = value; } public List SelectedCustomerOidsForFiltering { get => DevExpressSchedulerSessionModel.SelectedCustomerOidsForFiltering; set => DevExpressSchedulerSessionModel.SelectedCustomerOidsForFiltering = value; } public List SelectedResourceOidsForFiltering { get => DevExpressSchedulerSessionModel.SelectedResourceOidsForFiltering; set => DevExpressSchedulerSessionModel.SelectedResourceOidsForFiltering = value; } public List MyTeams { get; set; } = new List(); public Dictionary> ResourceCategories2Resources { get; set; } = new Dictionary>(); public List MyTeamEmployees { get; set; } public List TeamMemberCustomerOids { get; set; } public List SelectedEmployeesForFiltering { get; set; } public List SelectedCustomersForFiltering { get; set; } public List 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 OpenEmployee2AppointmentRels { get; set; } public List OpenEmployee2AppointmentRelOids { get => DevExpressSchedulerSessionModel.OpenEmployee2AppointmentRelOids; set => DevExpressSchedulerSessionModel.OpenEmployee2AppointmentRelOids = value; } public List OpenAppointmentOids { get => DevExpressSchedulerSessionModel.OpenAppointmentOids; set => DevExpressSchedulerSessionModel.OpenAppointmentOids = value; } public List 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")}"; } } }