diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index b302de035..dcca5ba80 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -2002,7 +2002,7 @@ - + {8a83c4dc-a0b1-4a51-ae1d-366d7a05b298} ChatController diff --git a/BeWo/Scheduler/View/EmployeeBrushConverter.cs b/BeWo/Scheduler/View/EmployeeBrushConverter.cs index 16566c1a7..83c7dfad6 100644 --- a/BeWo/Scheduler/View/EmployeeBrushConverter.cs +++ b/BeWo/Scheduler/View/EmployeeBrushConverter.cs @@ -20,15 +20,14 @@ namespace BeWo.Scheduler.View var farbe = Color.FromRgb(192, 255, 208); var gradientCollection = new GradientStopCollection { new GradientStop(farbe, 1) }; - if (values[2] is bool && ((bool) values[2]) == false) + if(values[2] is bool b && b == false) { return gradientCollection; } try { - var customViewInfo = values[1] as CustomFieldCollection; - if (customViewInfo == null) + if(!(values[1] is CustomFieldCollection customViewInfo)) { return new LinearGradientBrush(new GradientStopCollection { new GradientStop(farbe, 1) }, new Point(.5, 0), new Point(.5, 1)); } @@ -36,12 +35,12 @@ namespace BeWo.Scheduler.View var aptEmployees = (List) customViewInfo["EmployeeList"]; var ersteller = (CompactEmployeeDC) customViewInfo["Originator"]; - if (aptEmployees.Count > 0) + if(aptEmployees.Count > 0) { var firstEmployeeInList = aptEmployees.First(f => f.Employee.EmployeeColor != null); gradientCollection = new GradientStopCollection { new GradientStop(firstEmployeeInList.Employee.FilterableBrush.Color, 1) }; } - else if (!String.IsNullOrEmpty(ersteller.EmployeeColor)) + else if(!string.IsNullOrEmpty(ersteller.EmployeeColor)) { gradientCollection = new GradientStopCollection {new GradientStop(ersteller.FilterableBrush.Color, 1)}; } diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml b/BeWo/Scheduler/View/NewSchedulerView.xaml index b4156372a..973bd9604 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml @@ -17,6 +17,7 @@ + @@ -136,7 +137,7 @@ - + @@ -205,7 +206,7 @@ - + @@ -381,9 +382,9 @@ - + - + diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs index 2fd331c20..53cd46f0c 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs @@ -26,7 +26,7 @@ using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; using BS.Shared.Translation; - +using DevExpress.Utils.Extensions; using DevExpress.Xpf.Bars; using DevExpress.Xpf.Editors; using DevExpress.Xpf.Scheduler; @@ -276,11 +276,9 @@ namespace BeWo.Scheduler.View if(!ListEquals(_SelectedCustomers, value)) { _SelectedCustomers = value; - _SelectedCustomers.Sort((x, y) => string.Compare(x.LastName + ", " + x.FirstName, - y.LastName + ", " + y.FirstName, StringComparison.Ordinal)); + _SelectedCustomers.Sort((x, y) => string.Compare(x.LastName + ", " + x.FirstName, y.LastName + ", " + y.FirstName, StringComparison.Ordinal)); - if(NurMeineKlientenCB.IsChecked.HasValue && NurMeineKlientenCB.IsChecked.Value && - value.Equals(GefilterteKlienten) || value.Equals(AllCustomers)) + if(NurMeineKlientenCB.IsChecked.HasValue && NurMeineKlientenCB.IsChecked.Value && value.Equals(GefilterteKlienten) || value.Equals(AllCustomers)) { AlleKlientenCB.IsChecked = true; } @@ -299,6 +297,7 @@ namespace BeWo.Scheduler.View if(!ListEquals(_SelectedResources, value)) { _SelectedResources = value; + if(value.Equals(AllResources)) { AlleRessourcenCB.IsChecked = true; @@ -315,6 +314,7 @@ namespace BeWo.Scheduler.View get { var erg = new List(); + erg.AddRange(SelectedEmployees); erg.AddRange(SelectedCustomers); erg.AddRange(SelectedResources); @@ -328,6 +328,7 @@ namespace BeWo.Scheduler.View get { var erg = new List(); + erg.AddRange(GefilterteKlienten); erg.AddRange(AllResources); @@ -390,16 +391,6 @@ namespace BeWo.Scheduler.View ConstructObject(); } - public static void SchedulerWriteLog(string info = "") - { -#if(DEBUG) - using (var sw = new StreamWriter(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "SchedulerLog.txt"), true)) - { - sw.WriteLine(DateTime.Now.ToString("HH:mm:ss.ffff") + " " + info); - } -#endif - } - private void ConstructObject() { //WriteToDebugLog("Beginning"); @@ -1560,8 +1551,8 @@ namespace BeWo.Scheduler.View return; } - var start = pIntervalStart - NewSchedulerView.FetchPadding; - var end = pIntervalEnd + NewSchedulerView.FetchPadding; + var start = pIntervalStart - FetchPadding; + var end = pIntervalEnd + FetchPadding; Cache.GetInstance().GetAllActiveEmployeesCompact(allEmployees => { @@ -1584,12 +1575,15 @@ namespace BeWo.Scheduler.View { var prefilteredAppointments = appointments.Where(w => (w.EmployeeList.Count == 0 && w.Originator.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid) || w.EmployeeList.Count > 0 && w.EmployeeList.Any(a => a.Employee.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid)) || - BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)) && (!w.EmployeeList.TrueForAll(e2a => e2a.ParticipationAnswer == ParticipationAnswer.Absage) || (w.EmployeeList == null || w.EmployeeList.Count == 0))).ToList(); + BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)) && (!w.EmployeeList.TrueForAll(e2a => e2a.ParticipationAnswer == ParticipationAnswer.Absage) || w.EmployeeList == null || w.EmployeeList.Count == 0)).ToList(); var vm = new SchedulerAppointmentListVM(prefilteredAppointments, customers, allEmployees, cats2Res); if (pShouldShowAbsenceTimes) { - vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(absenceTimes, end)); + vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(absenceTimes.Where(w => + { + return SelectedEmployees.Count == 0 || SelectedEmployees.Any(a => a.EmployeeOid == w.EmployeeOid); + }), end, allEmployees)); } ViewModel.ActiveAppointmentViewModel = vm; @@ -2331,5 +2325,27 @@ namespace BeWo.Scheduler.View public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } - #endregion + + public class ToolTipTimeVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var customFields = (CustomFieldCollection) value; + + if(customFields == null || customFields.ToArray().ToList().Any(a => a == null)) + { + return Visibility.Visible; + } + + var isParsingSuccessful = bool.TryParse(customFields[SchedulerAppointmentListVM.CustomField_IsAbsenceTime].ToString(), out var isAbsenceTime); + + return isParsingSuccessful && isAbsenceTime ? Visibility.Collapsed : Visibility.Visible; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } + #endregion } diff --git a/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs b/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs index 5534d799b..e7612eb45 100644 --- a/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs +++ b/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs @@ -2,17 +2,12 @@ using System.Collections.Generic; using System.Linq; -using BeWo.Core.Service; -using BS.Shared.Core; - using BeWo.Scheduler.View; -using BeWo.ServiceProxy; -using BS.Shared; +using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; -using DevExpress.DataProcessing; using DevExpress.XtraScheduler; namespace BeWo.Scheduler.ViewModel @@ -21,27 +16,24 @@ namespace BeWo.Scheduler.ViewModel { public event EventHandler> ViewModelChanged; - private ISchedulerViewModel _activeAppointmentViewModel; - private Dictionary> _allCats2ResInDic; + private ISchedulerViewModel _ActiveAppointmentViewModel; + private Dictionary> _AllCats2ResInDic; + public ISchedulerViewModel ActiveAppointmentViewModel { - get => _activeAppointmentViewModel; + get => _ActiveAppointmentViewModel; set { if(value != null) { - _activeAppointmentViewModel = value; + _ActiveAppointmentViewModel = value; ViewModelChanged?.Invoke(this, new EventArgs(value)); } } } - private List _allEmployees = new List(); - - - public AbstractAppointmentEditForm GetEditAppointmentForm(DevExpress.Xpf.Scheduler.SchedulerControl control, Appointment appointment) { return ActiveAppointmentViewModel?.GetEditAppointmentForm(control, appointment); @@ -59,9 +51,20 @@ namespace BeWo.Scheduler.ViewModel return ActiveAppointmentViewModel == null ? null : SchedulerSettings ?? ActiveAppointmentViewModel.GetDefaultSchedulerSettings(); } - public IEnumerable ConvertAbsenceTimesToAppointments(IEnumerable pAbsenceTimes, DateTime pIntervalEnd) + public IEnumerable ConvertAbsenceTimesToAppointments(IEnumerable pAbsenceTimes, DateTime pIntervalEnd, List allEmployees) { - return pAbsenceTimes.Select(abwesenheit => new SchedulerAppointmentVM(true, abwesenheit.Reason.Description, abwesenheit.Start.Value, abwesenheit.End ?? pIntervalEnd, _allEmployees.FirstOrDefault(f => f.EmployeeOid == abwesenheit.EmployeeOid.Value))).ToList(); + return pAbsenceTimes.Select(abwesenheit => + { + var subject = $"{abwesenheit.Reason.Description}"; + var employee = allEmployees.FirstOrDefault(f => f.EmployeeOid == abwesenheit.EmployeeOid.Value); + + if(employee != null) + { + subject += $" ({employee.SimpleDescription})"; + } + + return new SchedulerAppointmentVM(true, subject, abwesenheit.Start.Value, abwesenheit.End ?? pIntervalEnd, employee); + }).ToList(); } } } diff --git a/BeWoPlanerAndroid/Web.config b/BeWoPlanerAndroid/Web.config index f65e2007d..810a1aa5e 100644 --- a/BeWoPlanerAndroid/Web.config +++ b/BeWoPlanerAndroid/Web.config @@ -34,7 +34,7 @@ - + diff --git a/Host/Multitenancy/demo.config b/Host/Multitenancy/demo.config index f3377eb22..0425a5f31 100644 --- a/Host/Multitenancy/demo.config +++ b/Host/Multitenancy/demo.config @@ -16,7 +16,7 @@ - Server=localhost;Password=root;User ID=root;Initial Catalog=chattest + Server=localhost;Password=root;User ID=root;Initial Catalog=bewodemo