diff --git a/BeWo/Scheduler/Utils/AppointmentExtensions.cs b/BeWo/Scheduler/Utils/AppointmentExtensions.cs index 7ebf3ec34..4718321b1 100644 --- a/BeWo/Scheduler/Utils/AppointmentExtensions.cs +++ b/BeWo/Scheduler/Utils/AppointmentExtensions.cs @@ -106,6 +106,10 @@ namespace BeWo.Scheduler.Utils return appointment.GetCustomFieldStorage()?.AbsenceTimeOid; } + public static bool CF_IsCustomerAbsenceTime(this Appointment appointment) + { + return appointment.GetCustomFieldStorage()?.IsCustomerAbsenceTime ?? false; + } public static void CF_IsTask(this Appointment appointment, bool pIsTask) { @@ -132,7 +136,10 @@ namespace BeWo.Scheduler.Utils appointment.GetCustomFieldStorage().AbsenceTimeOid = absenceTimeOid; } - + public static void CF_IsCustomerAbsenceTime(this Appointment appointment, bool isCustomerAbsenceTime) + { + appointment.GetCustomFieldStorage().IsCustomerAbsenceTime = isCustomerAbsenceTime; + } public static void CF_EmployeeList(this Appointment appointment, ObservableCollection pEmployeeList) { diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml b/BeWo/Scheduler/View/NewSchedulerView.xaml index bc2de893e..c8eed3032 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml @@ -9,9 +9,8 @@ xmlns:dxschint="http://schemas.devexpress.com/winfx/2008/xaml/scheduler/internal" xmlns:dxscht="http://schemas.devexpress.com/winfx/2008/xaml/scheduler/themekeys" xmlns:view="clr-namespace:BeWo.Scheduler.View" - xmlns:converter="clr-namespace:BeWo.Converter" xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" - xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup" xmlns:controls="clr-namespace:BeWo.View.Controls" + xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True"> @@ -106,9 +105,9 @@ + DefaultBorderThickness="2" ViewInfo="{TemplateBinding ViewInfo}" + BorderBrush="Black" + Visibility="{Binding ViewInfo.Selected, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource boolToVisibilityConverter}}" /> - + @@ -192,57 +190,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Background="{Binding Path=ViewInfo.CustomViewInfo, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource AppointmentBorderZusageConverter}}"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DefaultBorderThickness="2" ViewInfo="{TemplateBinding ViewInfo}" + BorderBrush="Black" + Visibility="{Binding ViewInfo.Selected, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource boolToVisibilityConverter}}" /> + Visibility="{Binding ViewInfo.CanResizeStart, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource boolToVisibilityConverter}}" + IsHitTestVisible="True" + dxsch:SchedulerControl.HitTestType="AppointmentResizingLeftEdge" + dxsch:SchedulerControl.SelectableIntervalViewInfo="{TemplateBinding ViewInfo}" + Cursor="SizeWE"> + Visibility="{Binding Path=ViewInfo.CanResizeEnd, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource boolToVisibilityConverter}}" + dxsch:SchedulerControl.HitTestType="AppointmentResizingRightEdge" + dxsch:SchedulerControl.SelectableIntervalViewInfo="{TemplateBinding ViewInfo}" + Cursor="SizeWE"> @@ -276,7 +275,7 @@ - + @@ -329,7 +328,7 @@ - + diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs index e6f53f788..21180414e 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs @@ -484,27 +484,31 @@ namespace BeWo.Scheduler.View private void ConstructObject() { - IsEmployeeBrushVisible = true; - - InitializeComponent(); - InitViewModel(); - InitScheduler(); - - Scheduler.Storage.AppointmentStorage.ResourceSharing = false; - - DataContext = this; - - - - EditorLocalizer.Active = new GermanEditorLocalizer(); - - InitRights(); - - foreach(var item in from object item in TabControl.Items let ti = (TabItem) item where ti.Visibility.Equals(Visibility.Visible) select item) + ServiceFacade.DoResourceServiceAsync(s => s.ConvertResourceBookingsToResourceAppointments(), () => { - TabControl.SelectedIndex = TabControl.Items.IndexOf(item); - break; - } + this.Dispatch(() => + { + IsEmployeeBrushVisible = true; + + InitializeComponent(); + InitViewModel(); + InitScheduler(); + + Scheduler.Storage.AppointmentStorage.ResourceSharing = false; + + DataContext = this; + + EditorLocalizer.Active = new GermanEditorLocalizer(); + + InitRights(); + + foreach(var item in from object item in TabControl.Items let ti = (TabItem)item where ti.Visibility.Equals(Visibility.Visible) select item) + { + TabControl.SelectedIndex = TabControl.Items.IndexOf(item); + break; + } + }); + }); } //private void Synchronize() @@ -1094,7 +1098,7 @@ namespace BeWo.Scheduler.View private void NewSchedulerStorage_AppointmentDeleting(object sender, PersistentObjectCancelEventArgs e) { - var appointment = (Appointment)e.Object; + var appointment = (Appointment) e.Object; var items = Scheduler.Storage.AppointmentStorage.Items; @@ -1102,7 +1106,7 @@ namespace BeWo.Scheduler.View { var aptList = new List(); - foreach (var item in items) + foreach(var item in items) { var apt = item.GetSourceObject(Scheduler.GetCoreStorage()) as SchedulerAppointmentVM; @@ -1127,32 +1131,28 @@ namespace BeWo.Scheduler.View var selectedAppointmentCount = Scheduler.SelectedAppointments.Count; - if (_NumberOfAppointmentsToDelete == 0) + if(_NumberOfAppointmentsToDelete == 0) { _NumberOfAppointmentsToDelete = selectedAppointmentCount; } - var sourceObj = (SchedulerAppointmentVM) appointment.GetSourceObject(Scheduler.GetCoreStorage()); if(!(sourceObj is null)) { - ServiceFacade.DoEmployeeServiceAsync(s => s.LoadTeamsRelatedCustomerOids(BeWoApp.CompactLoggedOnEmployee.EmployeeOid), customerOids => - { - this.Dispatch(() => - { - if(!BeWoUtils.CheckSchedulerRights(appointment, sourceObj.IsNew, SchedulerRightsCheckType.Edit, customerOids, true)) - { - e.Cancel = true; - return; - } + var customerOids = new List(); + ServiceFacade.DoEmployeeServiceSync(s => customerOids = s.LoadTeamsRelatedCustomerOids(BeWoApp.CompactLoggedOnEmployee.EmployeeOid)); - if(e.Object is Appointment app) - { - e.Cancel = PrepareDeletion(app); - } - }); - }); + if(!BeWoUtils.CheckSchedulerRights(appointment, sourceObj.IsNew, SchedulerRightsCheckType.Edit, customerOids, true)) + { + e.Cancel = true; + return; + } + + if(e.Object is Appointment app) + { + e.Cancel = PrepareDeletion(app); + } } else { @@ -2054,90 +2054,95 @@ namespace BeWo.Scheduler.View ServiceFacade.DoResourceServiceAsync(s2 => s2.LoadFilteredAppointmentsMitAufgaben(BeWoApp.HasLoggedOnUserRight(new[] {UserRightType.KalenderMitarbeitertermineAnsehen}), BeWoApp.LoggedOnEmployee.EmployeeOid.Value, start, end, pSelectedEmployees, pSelectedCustomer, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, IsTasksVisible), appointments => { - ServiceFacade.DoResourceServiceAsync(s3 => s3.GetAllActiveAbsenceTimesInInterval(start, end, BeWoApp.LoggedOnEmployee.EmployeeOid.Value, BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)), - absenceTimes => + ServiceFacade.DoResourceServiceAsync(s3 => s3.GetAllActiveEmployeeAbsenceTimesInInterval(start, end, BeWoApp.LoggedOnEmployee.EmployeeOid.Value, SelectedEmployees.Select(employee => employee.EmployeeOid).ToList()), + employeeAbsenceTimes => { - this.Dispatch(() => + ServiceFacade.DoResourceServiceAsync(s4 => s4.GetAllActiveCustomersAbsenceTimesInInterval(start, end, BeWoApp.LoggedOnEmployeeOid.Value, SelectedCustomers.Select(customer => customer.CustomerOid).ToList()), customerAbsenceTimes => { - 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)) || - BeWoUtils.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)) && (!w.EmployeeList.TrueForAll(e2a => e2a.ParticipationAnswer == ParticipationAnswer.Absage) || w.EmployeeList == null || w.EmployeeList.Count == 0)).ToList(); - - var anonymizedAppointments = appointments.Where(w => w.CanBeEdited == false && w.IsTask == false).ToList(); - - prefilteredAppointments.AddRangeIfElementsNotIn(anonymizedAppointments); - - if(!IsTasksVisible) + this.Dispatch(() => { - prefilteredAppointments = prefilteredAppointments.Where(app => !app.IsTask).ToList(); - } + 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)) || + BeWoUtils.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen)) && (!w.EmployeeList.TrueForAll(e2a => e2a.ParticipationAnswer == ParticipationAnswer.Absage) || w.EmployeeList == null || w.EmployeeList.Count == 0)).ToList(); - var vm = new SchedulerAppointmentListVM(prefilteredAppointments, c, e, r); - if(pShouldShowAbsenceTimes) - { - vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(absenceTimes.Where(w => { return SelectedEmployees.Count == 0 || SelectedEmployees.Any(a => a.EmployeeOid == w.EmployeeOid); }), end, e)); - } + var anonymizedAppointments = appointments.Where(w => w.CanBeEdited == false && w.IsTask == false).ToList(); - ViewModel.ActiveAppointmentViewModel = vm; + prefilteredAppointments.AddRangeIfElementsNotIn(anonymizedAppointments); - ViewModel.SchedulerSettings = ViewModel.GetActiveSettings(); - ViewModel.SchedulerSettings.StartDate = pIntervalStart; - - GefilterteMitarbeiter = ViewModel.ActiveAppointmentViewModel.AllEmployees; - AllEmployees = ViewModel.ActiveAppointmentViewModel.AllEmployees; - GefilterteKlienten = ViewModel.ActiveAppointmentViewModel.AllCustomers; - AllCustomers = ViewModel.ActiveAppointmentViewModel.AllCustomers; - - Category2ResourcesDictionary = ViewModel.ActiveAppointmentViewModel.Categories2Resources; - - SelectedEmployees = AllEmployees.Where(w => SelectedEmployees.Any(a => a.EmployeeOid.Equals(w.EmployeeOid))).ToList(); - SelectedCustomers = AllCustomers.Where(w => SelectedCustomers.Any(a => a.CustomerOid.Equals(w.CustomerOid))).ToList(); - SelectedResources = AllResources.Where(w => SelectedResources.Any(a => a.ResourceOid.Equals(w.ResourceOid))).ToList(); - - var items = SelectedItems; - - var testtesttest = ViewModel.ActiveAppointmentViewModel; - - _ReloadingViewModel = false; - - // TODO: Hier tritt eine Exception auf, wenn man zu schnell löscht? - Scheduler.Storage.RefreshData(); - Scheduler.Storage.RefreshUI(); - - if(_IsComingFromHomeDragPanel && _SelectedAppointmentFromHomePanelView != null) - { - var apps = Scheduler.ActiveView.GetAppointments().ToList(); - - var oid = _SelectedAppointmentFromHomePanelView.SchedulerAppointmentOid; - Appointment appointmentToOpen; - - if(oid != null) + if(!IsTasksVisible) { - appointmentToOpen = apps.Find(app => - { - var oidValue = app.CF_SchedulerAppointmentOid(); - - return oidValue.HasValue && oidValue.Value == oid; - }); - - - if(appointmentToOpen != null) - { - Scheduler.ShowEditAppointmentForm(appointmentToOpen); - } - } - else if(_SelectedAppointmentFromHomePanelView.RecurrenceId != null && _SelectedAppointmentFromHomePanelView.RecurrenceIndex > 0) - { - appointmentToOpen = apps.Find(appointment => appointment.RecurrenceInfo.Id.ToString().Equals(_SelectedAppointmentFromHomePanelView.RecurrenceId)); - - if(appointmentToOpen != null) - { - Scheduler.ShowEditAppointmentForm(appointmentToOpen); - } + prefilteredAppointments = prefilteredAppointments.Where(app => !app.IsTask).ToList(); } - _IsComingFromHomeDragPanel = false; - } + var vm = new SchedulerAppointmentListVM(prefilteredAppointments, c, e, r); + if(pShouldShowAbsenceTimes) + { + vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(customerAbsenceTimes, end, e, c)); + vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(employeeAbsenceTimes, end, e, c)); + //vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(employeeAbsenceTimes.Where(w => { return SelectedEmployees.Count == 0 || SelectedEmployees.Any(a => a.EmployeeOid == w.EmployeeOid); }), end, e, c)); + } + + ViewModel.ActiveAppointmentViewModel = vm; + + ViewModel.SchedulerSettings = ViewModel.GetActiveSettings(); + ViewModel.SchedulerSettings.StartDate = pIntervalStart; + + GefilterteMitarbeiter = ViewModel.ActiveAppointmentViewModel.AllEmployees; + AllEmployees = ViewModel.ActiveAppointmentViewModel.AllEmployees; + GefilterteKlienten = ViewModel.ActiveAppointmentViewModel.AllCustomers; + AllCustomers = ViewModel.ActiveAppointmentViewModel.AllCustomers; + + Category2ResourcesDictionary = ViewModel.ActiveAppointmentViewModel.Categories2Resources; + + SelectedEmployees = AllEmployees.Where(w => SelectedEmployees.Any(a => a.EmployeeOid.Equals(w.EmployeeOid))).ToList(); + SelectedCustomers = AllCustomers.Where(w => SelectedCustomers.Any(a => a.CustomerOid.Equals(w.CustomerOid))).ToList(); + SelectedResources = AllResources.Where(w => SelectedResources.Any(a => a.ResourceOid.Equals(w.ResourceOid))).ToList(); + + var items = SelectedItems; + + var testtesttest = ViewModel.ActiveAppointmentViewModel; + + _ReloadingViewModel = false; + + // TODO: Hier tritt eine Exception auf, wenn man zu schnell löscht? + Scheduler.Storage.RefreshData(); + Scheduler.Storage.RefreshUI(); + + if(_IsComingFromHomeDragPanel && _SelectedAppointmentFromHomePanelView != null) + { + var apps = Scheduler.ActiveView.GetAppointments().ToList(); + + var oid = _SelectedAppointmentFromHomePanelView.SchedulerAppointmentOid; + Appointment appointmentToOpen; + + if(oid != null) + { + appointmentToOpen = apps.Find(app => + { + var oidValue = app.CF_SchedulerAppointmentOid(); + + return oidValue.HasValue && oidValue.Value == oid; + }); + + + if(appointmentToOpen != null) + { + Scheduler.ShowEditAppointmentForm(appointmentToOpen); + } + } + else if(_SelectedAppointmentFromHomePanelView.RecurrenceId != null && _SelectedAppointmentFromHomePanelView.RecurrenceIndex > 0) + { + appointmentToOpen = apps.Find(appointment => appointment.RecurrenceInfo.Id.ToString().Equals(_SelectedAppointmentFromHomePanelView.RecurrenceId)); + + if(appointmentToOpen != null) + { + Scheduler.ShowEditAppointmentForm(appointmentToOpen); + } + } + + _IsComingFromHomeDragPanel = false; + } + }); }); }); }); @@ -2334,8 +2339,6 @@ namespace BeWo.Scheduler.View var mehrTaegigeTermine = new List(); - // ToDo: Für Montag, 18.07.2022: - // ToDo: Serientermine kommen doppelt vor! Mehrtägige Serientermine aus den appointmentOids herausnehmen! foreach (var app in apps.Where(a => !a.SameDay && !(!a.SameDay && a.AllDay && a.Duration == new TimeSpan(1, 0, 0, 0)))) { var sourceObject = app.GetSourceObject(Scheduler.GetCoreStorage()); @@ -2354,126 +2357,8 @@ namespace BeWo.Scheduler.View } appointmentOidListe.RemoveRange(mehrTaegigeTermine.Where(w => w.SchedulerAppointmentOid.HasValue).Select(s => s.SchedulerAppointmentOid.Value)); - var neueTermine = new List(); - foreach(var termin in mehrTaegigeTermine) - { - var tage = termin.StartDate.Value.GetDayNumberBetweenTwoDates(termin.EndDate.Value); - if(tage > 31) - { - tage = 31; - } - - if(termin.AllDay) - { - tage -= 1; - } - - if(tage > 0) - { - if(termin.AllDay) - { - for(var i = 0; i <= tage; i++) - { - neueTermine.Add(new SchedulerAppointmentDC - { - AllDay = termin.AllDay, - CustomerList = termin.CustomerList, - Description = termin.Description, - EmployeeList = termin.EmployeeList, - EndDate = new DateTime(termin.StartDate.Value.AddDays(i + 1).Year, termin.StartDate.Value.AddDays(i + 1).Month, termin.StartDate.Value.AddDays(i + 1).Day), - FormerBookingSequenceOid = termin.FormerBookingSequenceOid, - IsPrivate = termin.IsPrivate, - LabelKey = termin.LabelKey, - Location = termin.Location, - Originator = termin.Originator, - RecurrenceInfo = termin.RecurrenceInfo, - ReminderInfo = termin.ReminderInfo, - ResourceList = termin.ResourceList, - StartDate = new DateTime(termin.StartDate.Value.AddDays(i).Year, termin.StartDate.Value.AddDays(i).Month, termin.StartDate.Value.AddDays(i).Day), - Status = termin.Status, - Subject = termin.Subject, - Type = termin.Type - }); - } - } - else - { - for(var i = 0; i <= tage; i++) - { - if(i == 0) - { - neueTermine.Add(new SchedulerAppointmentDC - { - AllDay = false, - CustomerList = termin.CustomerList, - Description = termin.Description, - EmployeeList = termin.EmployeeList, - EndDate = new DateTime(termin.StartDate.Value.AddDays(1).Year, termin.StartDate.Value.AddDays(1).Month, termin.StartDate.Value.AddDays(1).Day), - FormerBookingSequenceOid = termin.FormerBookingSequenceOid, - IsPrivate = termin.IsPrivate, - LabelKey = termin.LabelKey, - Location = termin.Location, - Originator = termin.Originator, - RecurrenceInfo = termin.RecurrenceInfo, - ReminderInfo = termin.ReminderInfo, - ResourceList = termin.ResourceList, - StartDate = termin.StartDate, - Status = termin.Status, - Subject = termin.Subject, - Type = termin.Type - }); - } - else if(i == tage) - { - neueTermine.Add(new SchedulerAppointmentDC - { - AllDay = false, - CustomerList = termin.CustomerList, - Description = termin.Description, - EmployeeList = termin.EmployeeList, - EndDate = termin.EndDate, - FormerBookingSequenceOid = termin.FormerBookingSequenceOid, - IsPrivate = termin.IsPrivate, - LabelKey = termin.LabelKey, - Location = termin.Location, - Originator = termin.Originator, - RecurrenceInfo = termin.RecurrenceInfo, - ReminderInfo = termin.ReminderInfo, - ResourceList = termin.ResourceList, - StartDate = new DateTime(termin.EndDate.Value.Year, termin.EndDate.Value.Month, termin.EndDate.Value.Day), - Status = termin.Status, - Subject = termin.Subject, - Type = termin.Type - }); - } - else - { - neueTermine.Add(new SchedulerAppointmentDC - { - AllDay = true, - CustomerList = termin.CustomerList, - Description = termin.Description, - EmployeeList = termin.EmployeeList, - EndDate = new DateTime(termin.StartDate.Value.AddDays(i + 1).Year, termin.StartDate.Value.AddDays(i + 1).Month, termin.StartDate.Value.AddDays(i + 1).Day), - FormerBookingSequenceOid = termin.FormerBookingSequenceOid, - IsPrivate = termin.IsPrivate, - LabelKey = termin.LabelKey, - Location = termin.Location, - Originator = termin.Originator, - RecurrenceInfo = termin.RecurrenceInfo, - ReminderInfo = termin.ReminderInfo, - ResourceList = termin.ResourceList, - StartDate = new DateTime(termin.StartDate.Value.AddDays(i).Year, termin.StartDate.Value.AddDays(i).Month, termin.StartDate.Value.AddDays(i).Day), - Status = termin.Status, - Subject = termin.Subject, - Type = termin.Type - }); - } - } - } - } - } + var neueTermine = SchedulerUtils.GenerateSeveralDaysAppointments(mehrTaegigeTermine); var variablenDictionary = new Dictionary { @@ -3120,6 +3005,11 @@ namespace BeWo.Scheduler.View farbe = Color.FromRgb(153, 59, 59); } + if(customFieldStorage.IsAbsenceTime && customFieldStorage.IsCustomerAbsenceTime) + { + farbe = Color.FromRgb(59, 119, 153); + } + var aptCustomers = customFieldStorage.CustomerList; var aptResources = customFieldStorage.ResourceList; diff --git a/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs b/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs index 3c6772f84..e86ce4163 100644 --- a/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs +++ b/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs @@ -27,11 +27,11 @@ namespace BeWo.Scheduler.ViewModel result += " erledigt am " + CompletedDate.Value.ToShortDateString(); } else if(DueDate.HasValue) { - result += " bis " + DueDate.Value.ToString("dd.MM.yyyy HH:mm"); + result += $" bis {DueDate.Value:dd.MM.yyyy HH:mm}"; } } - if (IsAbsenceTime && _AbsenceTimeStart.HasValue) + if(IsAbsenceTime && _AbsenceTimeStart.HasValue) { result += _AbsenceTimeStart.Value.GetIntervalDescription(_AbsenceTimeEnd); } @@ -77,6 +77,8 @@ namespace BeWo.Scheduler.ViewModel public long? AbsenceTimeOid { get; set; } + public bool IsCustomerAbsenceTime { get; set; } + public CustomFieldStorage() { @@ -114,6 +116,7 @@ namespace BeWo.Scheduler.ViewModel CanBeEdited = pAppointment.CanBeEdited; AbsenceTimeOid = pAppointment.AbsenceTimeOid; + IsCustomerAbsenceTime = pAppointment.IsCustomerAbsenceTime; } public CustomFieldStorage(SchedulerAppointmentDC pAppointment) diff --git a/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs b/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs index 3596489a9..76277d512 100644 --- a/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs +++ b/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using BeWo.Scheduler.View; - +using BeWo.ServiceProxy; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; @@ -56,22 +56,47 @@ namespace BeWo.Scheduler.ViewModel return ActiveAppointmentViewModel == null ? null : SchedulerSettings ?? ActiveAppointmentViewModel.GetDefaultSchedulerSettings(); } - public IEnumerable ConvertAbsenceTimesToAppointments(IEnumerable pAbsenceTimes, DateTime pIntervalEnd, List allEmployees) + public IEnumerable ConvertAbsenceTimesToAppointments(IEnumerable pAbsenceTimes, DateTime pIntervalEnd, List allEmployees, List allCustomers) { return pAbsenceTimes.Where(w => w.AbsenceTimeOid.HasValue && w.Start.HasValue).Select(abwesenheit => - { + { + var isEmployeeAbsenceTime = abwesenheit.EmployeeOid.HasValue; + var subject = $"{abwesenheit.Reason.Description}"; var employee = abwesenheit.EmployeeOid.HasValue ? allEmployees.FirstOrDefault(f => f.EmployeeOid == abwesenheit.EmployeeOid.Value) : null; + var customer = abwesenheit.CustomerOid.HasValue ? allCustomers.FirstOrDefault(f => f.CustomerOid == abwesenheit.CustomerOid.Value) : null; - if(!(employee is null)) - { - subject += $" ({employee.SimpleDescription})"; - } + IFilterableDC dc = employee; + var originator = employee; + if(!isEmployeeAbsenceTime) + { + dc = customer; + ServiceFacade.DoEmployeeServiceSync(s => originator = s.FindCompactEmployeeByFullname(abwesenheit.InsUser)); + } + + if(!(dc is null)) + { + subject += $" ({dc.SimpleDescription})"; + } var absenceTimeEnd = abwesenheit.End?.AddTicks(1); + + if(originator is null) + { + originator = BeWoApp.CompactLoggedOnEmployee; + } - return new SchedulerAppointmentVM(true, subject, abwesenheit.Start.Value, abwesenheit.End ?? pIntervalEnd, employee, abwesenheit.Start, absenceTimeEnd, abwesenheit.AbsenceTimeOid.Value); - }).ToList(); + return new SchedulerAppointmentVM( + true, + subject, + abwesenheit.Start.Value, + abwesenheit.End ?? pIntervalEnd, + originator, + abwesenheit.Start, + absenceTimeEnd, + abwesenheit.AbsenceTimeOid.Value, + !isEmployeeAbsenceTime); + }).ToList(); } } } diff --git a/BeWo/Scheduler/ViewModel/SchedulerAppointmentVM.cs b/BeWo/Scheduler/ViewModel/SchedulerAppointmentVM.cs index a726bee65..b2c1cba3d 100644 --- a/BeWo/Scheduler/ViewModel/SchedulerAppointmentVM.cs +++ b/BeWo/Scheduler/ViewModel/SchedulerAppointmentVM.cs @@ -61,6 +61,7 @@ namespace BeWo.Scheduler.ViewModel private bool _HasServiceRecordEntry; private bool _IsArchived; private long? _AbsenceTimeOid; + private bool _IsCustomerAbsenceTime; public bool HasServiceRecordEntry @@ -98,6 +99,8 @@ namespace BeWo.Scheduler.ViewModel public long? AbsenceTimeOid { get; set; } + public bool IsCustomerAbsenceTime { get; set; } + public object Id { get; set; } public Dictionary CustomFields @@ -126,6 +129,7 @@ namespace BeWo.Scheduler.ViewModel CompletedNotice = customFieldStorage.CompletedNotice; SupportConceptList = customFieldStorage.SupportConceptList; AbsenceTimeOid = customFieldStorage.AbsenceTimeOid; + IsCustomerAbsenceTime = customFieldStorage.IsCustomerAbsenceTime; } } @@ -580,6 +584,7 @@ namespace BeWo.Scheduler.ViewModel _ResourceList = appointment.CF_ResourceList(); _Originator = appointment.CF_Originator(); _AbsenceTimeOid = appointment.CF_AbsenceTimeOid(); + _IsCustomerAbsenceTime = appointment.CF_IsCustomerAbsenceTime(); if(!(appointment.RecurrenceInfo is null) && appointment.Type == AppointmentType.Occurrence) @@ -589,7 +594,7 @@ namespace BeWo.Scheduler.ViewModel } // Wird für Abwesenheiten genutzt - public SchedulerAppointmentVM(bool pAllDay, string pSubject, DateTime pStart, DateTime pEnd, CompactEmployeeDC pOriginator, DateTime? absenceTimeStart, DateTime? absenceTimeEnd, long absenceTimeOid) + public SchedulerAppointmentVM(bool pAllDay, string pSubject, DateTime pStart, DateTime pEnd, CompactEmployeeDC pOriginator, DateTime? absenceTimeStart, DateTime? absenceTimeEnd, long absenceTimeOid, bool isCustomerAbsenceTime) { _AllDay = pAllDay; _Subject = pSubject; @@ -599,10 +604,10 @@ namespace BeWo.Scheduler.ViewModel AbsenceTimeStart = absenceTimeStart; AbsenceTimeEnd = absenceTimeEnd; - IsAbsenceTime = true; + AbsenceTimeOid = absenceTimeOid; - AbsenceTimeOid = absenceTimeOid; + IsCustomerAbsenceTime = isCustomerAbsenceTime; UpdateCustomFields(); } diff --git a/BeWo/ServiceProxy/Generated.cs b/BeWo/ServiceProxy/Generated.cs index 18de8509e..0a6960ec4 100644 --- a/BeWo/ServiceProxy/Generated.cs +++ b/BeWo/ServiceProxy/Generated.cs @@ -314,6 +314,10 @@ namespace BeWo.ServiceProxy "iterBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] System.Collections.Generic.Dictionary, decimal> BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(System.Collections.Generic.List> empOids, int year, string reason); + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/FindCompactEmployeeByFullname", ReplyAction="http://tempuri.org/IEmployeeService/FindCompactEmployeeByFullnameResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IEmployeeService/FindCompactEmployeeByFullnameBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + BS.Shared.DataContracts.Compact.CompactEmployeeDC FindCompactEmployeeByFullname(string fullname); + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/ArchiveEmployee", ReplyAction="http://tempuri.org/IEmployeeService/ArchiveEmployeeResponse")] [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IEmployeeService/ArchiveEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] void ArchiveEmployee(long pOid, long pVersion); @@ -872,6 +876,11 @@ namespace BeWo.ServiceProxy return base.Channel.BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(empOids, year, reason); } + public BS.Shared.DataContracts.Compact.CompactEmployeeDC FindCompactEmployeeByFullname(string fullname) + { + return base.Channel.FindCompactEmployeeByFullname(fullname); + } + public void ArchiveEmployee(long pOid, long pVersion) { base.Channel.ArchiveEmployee(pOid, pVersion); @@ -4796,6 +4805,25 @@ namespace BeWo.ServiceProxy [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/FindAppointmentsInRange", ReplyAction="http://tempuri.org/IResourceService/FindAppointmentsInRangeResponse")] [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] System.Collections.Generic.Dictionary> FindAppointmentsInRange(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List resourceOids, System.Collections.Generic.List customerOids, System.Collections.Generic.List employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/ConvertResourceBookingsToResourceAppointments" + + "", ReplyAction="http://tempuri.org/IResourceService/ConvertResourceBookingsToResourceAppointments" + + "Response")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/ConvertResourceBookingsToResourceAppointments" + + "BeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + void ConvertResourceBookingsToResourceAppointments(); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/GetAllActiveCustomersAbsenceTimesInInterval", ReplyAction="http://tempuri.org/IResourceService/GetAllActiveCustomersAbsenceTimesInIntervalRe" + + "sponse")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/GetAllActiveCustomersAbsenceTimesInIntervalBe" + + "WoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + System.Collections.Generic.List GetAllActiveCustomersAbsenceTimesInInterval(System.DateTime start, System.DateTime end, long employeeOid, System.Collections.Generic.List selectedCustomerOids); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/GetAllActiveEmployeeAbsenceTimesInInterval", ReplyAction="http://tempuri.org/IResourceService/GetAllActiveEmployeeAbsenceTimesInIntervalRes" + + "ponse")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/GetAllActiveEmployeeAbsenceTimesInIntervalBeW" + + "oFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + System.Collections.Generic.List GetAllActiveEmployeeAbsenceTimesInInterval(System.DateTime start, System.DateTime end, long employeeOid, System.Collections.Generic.List selectedEmployeeOids); } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] @@ -5106,6 +5134,21 @@ namespace BeWo.ServiceProxy { return base.Channel.FindAppointmentsInRange(duration, startDate, endDate, resourceOids, customerOids, employeeOids, loggedInEmployeeOid, intervalBuffer, skipWeekends); } + + public void ConvertResourceBookingsToResourceAppointments() + { + base.Channel.ConvertResourceBookingsToResourceAppointments(); + } + + public System.Collections.Generic.List GetAllActiveCustomersAbsenceTimesInInterval(System.DateTime start, System.DateTime end, long employeeOid, System.Collections.Generic.List selectedCustomerOids) + { + return base.Channel.GetAllActiveCustomersAbsenceTimesInInterval(start, end, employeeOid, selectedCustomerOids); + } + + public System.Collections.Generic.List GetAllActiveEmployeeAbsenceTimesInInterval(System.DateTime start, System.DateTime end, long employeeOid, System.Collections.Generic.List selectedEmployeeOids) + { + return base.Channel.GetAllActiveEmployeeAbsenceTimesInInterval(start, end, employeeOid, selectedEmployeeOids); + } } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] diff --git a/BeWo/View/Detail/BookingView.xaml.cs b/BeWo/View/Detail/BookingView.xaml.cs index 54b1855b5..d93a91cfb 100644 --- a/BeWo/View/Detail/BookingView.xaml.cs +++ b/BeWo/View/Detail/BookingView.xaml.cs @@ -65,12 +65,9 @@ namespace BeWo.View.Detail DependencyPropertyDescriptor.FromProperty(DateEdit.EditValueProperty, typeof(DateEdit)).AddValueChanged( this.EDIT_datepickerStartDate, (s, e) => - { - if (this.ViewModel.EditVM != null) - { - this.ViewModel.EditVM.UpdatePossibleFrequencies(this.EDIT_datepickerStartDate.DateTime); - } - }); + { + this.ViewModel.EditVM?.UpdatePossibleFrequencies(this.EDIT_datepickerStartDate.DateTime); + }); this.ReloadViewModel(); @@ -141,51 +138,30 @@ namespace BeWo.View.Detail } } - public override bool CanDelete - { - get - { - return !this.expander_new_booking.IsExpanded && this.expander_edit_booking.IsExpanded; - } - } + public override bool CanDelete => !expander_new_booking.IsExpanded && expander_edit_booking.IsExpanded; - public override bool IsDirty - { - get - { - return this.ViewModel != null ? this.ViewModel.IsDirty : false; - } - } + public override bool IsDirty => ViewModel?.IsDirty ?? false; - public override string Title - { - get - { - return "Ressourcenbuchung"; - } - } + public override string Title => "Ressourcenbuchung"; internal BookingVM ViewModel { - get - { - return this._ViewModel; - } + get => _ViewModel; set { - this._ViewModel = value; - this.grid_root.DataContext = value; - if (this.calendar.IsLoaded) + _ViewModel = value; + grid_root.DataContext = value; + if(calendar.IsLoaded) { - this.Refresh(); + Refresh(); } } } public override void Delete() { - this.DeleteBooking(); + DeleteBooking(); } protected override void Save() diff --git a/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml b/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml index d6d2b7645..a888e6aa9 100644 --- a/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml +++ b/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml @@ -393,12 +393,11 @@ - - - - - + + + + @@ -543,12 +542,10 @@ ItemsSource="{x:Static core:EnumTranslations.ServiceRecordTimeIntervalTranslations}" Margin="3,3,3,3" EditValue="{Binding Path=ServiceRecordTimeInterval, UpdateSourceTrigger=PropertyChanged}" - DisplayMember="Value" ValueMember="Key" - IsTextEditable="False" + DisplayMember="Value" ValueMember="Key" IsTextEditable="False" x:Name="TimeIntervalComboBox" Width="120" SelectedIndexChanged="TimeIntervalComboBox_OnSelectedIndexChanged"/> - diff --git a/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml.cs b/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml.cs index 78e2a3356..fa5c81277 100644 --- a/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml.cs +++ b/BeWo/View/Detail/Zeiterfassung/ServiceRecordView2.xaml.cs @@ -1717,11 +1717,14 @@ namespace BeWo.View.Detail.Zeiterfassung } } - foreach (FlatSupportConceptTreeNodeDC node in from dc in multiSupportConceptControl.SelectedSupportConcepts - where lValid - select SupportConceptService.CreateFlatSupportConceptItem(dc, null)) - lValid = BeWoUtils.ValidateServiceRecordVM(ViewModel.PrototypeVM, null, node, true, - ViewModel.SelectedEmployee, employeeOids, cb2scOids); + foreach(var selectedSupportConcept in multiSupportConceptControl.SelectedSupportConcepts) + { + if(lValid) + { + FlatSupportConceptTreeNodeDC node = SupportConceptService.CreateFlatSupportConceptItem(selectedSupportConcept, null); + lValid = BeWoUtils.ValidateServiceRecordVM(ViewModel.PrototypeVM, null, node, true, ViewModel.SelectedEmployee, employeeOids, cb2scOids); + } + } //lValid = ValidateServiceRecordVMClientX(ViewModel.PrototypeVM, node, true); diff --git a/BeWo/ViewModel/VMFactory.cs b/BeWo/ViewModel/VMFactory.cs index 7dae94935..bed1c19a9 100644 --- a/BeWo/ViewModel/VMFactory.cs +++ b/BeWo/ViewModel/VMFactory.cs @@ -484,6 +484,8 @@ namespace BeWo.ViewModel s2 => s2.GetAllServiceCategories(), s3 => { + var x = r1.FirstOrDefault(tm => tm.TextModuleOid == 41); + pCallBack(new TextModuleListVM(r1.OrderBy(o => o.Name), s3)); })); } diff --git a/BeWoDatabaseTerminator/bdt.ico b/BeWoDatabaseTerminator/bdt.ico new file mode 100644 index 000000000..6b833c942 Binary files /dev/null and b/BeWoDatabaseTerminator/bdt.ico differ diff --git a/BeWoDatabaseTerminator/bdt_icon.xcf b/BeWoDatabaseTerminator/bdt_icon.xcf new file mode 100644 index 000000000..dff3247d5 Binary files /dev/null and b/BeWoDatabaseTerminator/bdt_icon.xcf differ diff --git a/BeWoDatabaseTerminator/bdt_log.xcf b/BeWoDatabaseTerminator/bdt_log.xcf new file mode 100644 index 000000000..182c4fab6 Binary files /dev/null and b/BeWoDatabaseTerminator/bdt_log.xcf differ diff --git a/BeWoDatabaseTerminator/bdt_logo.png b/BeWoDatabaseTerminator/bdt_logo.png new file mode 100644 index 000000000..7adc0b915 Binary files /dev/null and b/BeWoDatabaseTerminator/bdt_logo.png differ diff --git a/BeWoDatabaseTerminator/bdt_logo.xcf b/BeWoDatabaseTerminator/bdt_logo.xcf new file mode 100644 index 000000000..54fa0602a Binary files /dev/null and b/BeWoDatabaseTerminator/bdt_logo.xcf differ diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj index 2afc99d64..0b8ce76c2 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj @@ -211,6 +211,7 @@ + @@ -241,6 +242,7 @@ + @@ -269,6 +271,7 @@ + @@ -1327,7 +1330,9 @@ + + @@ -1377,6 +1382,11 @@ + + + + + @@ -1561,6 +1571,9 @@ 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + favicon.ico + diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user index 2c93437fb..c0bfd0240 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user @@ -27,16 +27,15 @@ - Views/Login/Index.cshtml - CurrentPage + Views/Main/Main.cshtml + URL True False False False - - + http://localhost/BeWoPlanerMobil/ diff --git a/BeWoPlanerMobil/Content/style.css b/BeWoPlanerMobil/Content/style.css index a3e84c017..4d098d2ec 100644 --- a/BeWoPlanerMobil/Content/style.css +++ b/BeWoPlanerMobil/Content/style.css @@ -121,6 +121,7 @@ --danger: #dc3545; --light: #f8f9fa; --dark: #343a40; + --bewo-teams: #565999; --bewo-goal-rating: #0000ff; --bewo-dev: #00cf7c; --bewo-customers: #3b7799; @@ -1987,6 +1988,26 @@ pre code { background-color: #b9bbbe; } +.table-bewo-teams, +.table-bewo-teams > th, +.table-bewo-teams > td { + background-color: #d0d1e2; +} +.table-bewo-teams th, +.table-bewo-teams td, +.table-bewo-teams thead th, +.table-bewo-teams tbody + tbody { + border-color: #a7a9ca; +} + +.table-hover .table-bewo-teams:hover { + background-color: #c0c2d8; +} +.table-hover .table-bewo-teams:hover > td, +.table-hover .table-bewo-teams:hover > th { + background-color: #c0c2d8; +} + .table-bewo-goal-rating, .table-bewo-goal-rating > th, .table-bewo-goal-rating > td { @@ -3035,6 +3056,36 @@ fieldset:disabled a.btn { box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } +.btn-bewo-teams { + color: #fff; + background-color: #565999; + border-color: #565999; +} +.btn-bewo-teams:hover { + color: #fff; + background-color: #484b81; + border-color: #444678; +} +.btn-bewo-teams:focus, .btn-bewo-teams.focus { + color: #fff; + background-color: #484b81; + border-color: #444678; + box-shadow: 0 0 0 0.2rem rgba(111, 114, 168, 0.5); +} +.btn-bewo-teams.disabled, .btn-bewo-teams:disabled { + color: #fff; + background-color: #565999; + border-color: #565999; +} +.btn-bewo-teams:not(:disabled):not(.disabled):active, .btn-bewo-teams:not(:disabled):not(.disabled).active, .show > .btn-bewo-teams.dropdown-toggle { + color: #fff; + background-color: #444678; + border-color: #3f4170; +} +.btn-bewo-teams:not(:disabled):not(.disabled):active:focus, .btn-bewo-teams:not(:disabled):not(.disabled).active:focus, .show > .btn-bewo-teams.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(111, 114, 168, 0.5); +} + .btn-bewo-goal-rating { color: #fff; background-color: #0000ff; @@ -3625,6 +3676,31 @@ fieldset:disabled a.btn { box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } +.btn-outline-bewo-teams { + color: #565999; + border-color: #565999; +} +.btn-outline-bewo-teams:hover { + color: #fff; + background-color: #565999; + border-color: #565999; +} +.btn-outline-bewo-teams:focus, .btn-outline-bewo-teams.focus { + box-shadow: 0 0 0 0.2rem rgba(86, 89, 153, 0.5); +} +.btn-outline-bewo-teams.disabled, .btn-outline-bewo-teams:disabled { + color: #565999; + background-color: transparent; +} +.btn-outline-bewo-teams:not(:disabled):not(.disabled):active, .btn-outline-bewo-teams:not(:disabled):not(.disabled).active, .show > .btn-outline-bewo-teams.dropdown-toggle { + color: #fff; + background-color: #565999; + border-color: #565999; +} +.btn-outline-bewo-teams:not(:disabled):not(.disabled):active:focus, .btn-outline-bewo-teams:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-bewo-teams.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(86, 89, 153, 0.5); +} + .btn-outline-bewo-goal-rating { color: #0000ff; border-color: #0000ff; @@ -5825,6 +5901,19 @@ a.badge-dark:focus, a.badge-dark.focus { box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } +.badge-bewo-teams { + color: #fff; + background-color: #565999; +} +a.badge-bewo-teams:hover, a.badge-bewo-teams:focus { + color: #fff; + background-color: #444678; +} +a.badge-bewo-teams:focus, a.badge-bewo-teams.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(86, 89, 153, 0.5); +} + .badge-bewo-goal-rating { color: #fff; background-color: #0000ff; @@ -6135,6 +6224,18 @@ a.badge-bewo-report:focus, a.badge-bewo-report.focus { color: #040505; } +.alert-bewo-teams { + color: #2d2e50; + background-color: #dddeeb; + border-color: #d0d1e2; +} +.alert-bewo-teams hr { + border-top-color: #c0c2d8; +} +.alert-bewo-teams .alert-link { + color: #1b1b2f; +} + .alert-bewo-goal-rating { color: #000085; background-color: #ccccff; @@ -6648,6 +6749,20 @@ a.badge-bewo-report:focus, a.badge-bewo-report.focus { border-color: #1b1e21; } +.list-group-item-bewo-teams { + color: #2d2e50; + background-color: #d0d1e2; +} +.list-group-item-bewo-teams.list-group-item-action:hover, .list-group-item-bewo-teams.list-group-item-action:focus { + color: #2d2e50; + background-color: #c0c2d8; +} +.list-group-item-bewo-teams.list-group-item-action.active { + color: #fff; + background-color: #2d2e50; + border-color: #2d2e50; +} + .list-group-item-bewo-goal-rating { color: #000085; background-color: #b8b8ff; @@ -7662,6 +7777,16 @@ button.bg-dark:focus { background-color: #1d2124 !important; } +.bg-bewo-teams { + background-color: #565999 !important; +} + +a.bg-bewo-teams:hover, a.bg-bewo-teams:focus, +button.bg-bewo-teams:hover, +button.bg-bewo-teams:focus { + background-color: #444678 !important; +} + .bg-bewo-goal-rating { background-color: #0000ff !important; } @@ -7872,6 +7997,10 @@ button.bg-bewo-report:focus { border-color: #343a40 !important; } +.border-bewo-teams { + border-color: #565999 !important; +} + .border-bewo-goal-rating { border-color: #0000ff !important; } @@ -11507,6 +11636,14 @@ a.text-dark:hover, a.text-dark:focus { color: #121416 !important; } +.text-bewo-teams { + color: #565999 !important; +} + +a.text-bewo-teams:hover, a.text-bewo-teams:focus { + color: #3a3d68 !important; +} + .text-bewo-goal-rating { color: #0000ff !important; } diff --git a/BeWoPlanerMobil/Content/style.css.map b/BeWoPlanerMobil/Content/style.css.map index 6316102de..276e2b017 100644 --- a/BeWoPlanerMobil/Content/style.css.map +++ b/BeWoPlanerMobil/Content/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["style.scss","../node_modules/bootstrap/scss/bootstrap.scss","../node_modules/bootstrap/scss/_root.scss","../node_modules/bootstrap/scss/_reboot.scss","../node_modules/bootstrap/scss/vendor/_rfs.scss","../node_modules/bootstrap/scss/_variables.scss","../node_modules/bootstrap/scss/mixins/_hover.scss","../node_modules/bootstrap/scss/_type.scss","../node_modules/bootstrap/scss/mixins/_lists.scss","../node_modules/bootstrap/scss/_images.scss","../node_modules/bootstrap/scss/mixins/_image.scss","../node_modules/bootstrap/scss/mixins/_border-radius.scss","../node_modules/bootstrap/scss/_code.scss","../node_modules/bootstrap/scss/_grid.scss","../node_modules/bootstrap/scss/mixins/_grid.scss","../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../node_modules/bootstrap/scss/mixins/_grid-framework.scss","../node_modules/bootstrap/scss/_tables.scss","../node_modules/bootstrap/scss/mixins/_table-row.scss","../node_modules/bootstrap/scss/_forms.scss","../node_modules/bootstrap/scss/mixins/_transition.scss","../node_modules/bootstrap/scss/mixins/_forms.scss","../node_modules/bootstrap/scss/mixins/_gradients.scss","../node_modules/bootstrap/scss/_buttons.scss","../node_modules/bootstrap/scss/mixins/_buttons.scss","../node_modules/bootstrap/scss/_transitions.scss","../node_modules/bootstrap/scss/_dropdown.scss","../node_modules/bootstrap/scss/mixins/_caret.scss","../node_modules/bootstrap/scss/mixins/_nav-divider.scss","../node_modules/bootstrap/scss/_button-group.scss","../node_modules/bootstrap/scss/_input-group.scss","../node_modules/bootstrap/scss/_custom-forms.scss","../node_modules/bootstrap/scss/_nav.scss","../node_modules/bootstrap/scss/_navbar.scss","../node_modules/bootstrap/scss/_card.scss","../node_modules/bootstrap/scss/_breadcrumb.scss","../node_modules/bootstrap/scss/_pagination.scss","../node_modules/bootstrap/scss/mixins/_pagination.scss","../node_modules/bootstrap/scss/_badge.scss","../node_modules/bootstrap/scss/mixins/_badge.scss","../node_modules/bootstrap/scss/_jumbotron.scss","../node_modules/bootstrap/scss/_alert.scss","../node_modules/bootstrap/scss/mixins/_alert.scss","../node_modules/bootstrap/scss/_progress.scss","../node_modules/bootstrap/scss/_media.scss","../node_modules/bootstrap/scss/_list-group.scss","../node_modules/bootstrap/scss/mixins/_list-group.scss","../node_modules/bootstrap/scss/_close.scss","../node_modules/bootstrap/scss/_toasts.scss","../node_modules/bootstrap/scss/_modal.scss","../node_modules/bootstrap/scss/_tooltip.scss","../node_modules/bootstrap/scss/mixins/_reset-text.scss","../node_modules/bootstrap/scss/_popover.scss","../node_modules/bootstrap/scss/_carousel.scss","../node_modules/bootstrap/scss/mixins/_clearfix.scss","../node_modules/bootstrap/scss/_spinners.scss","../node_modules/bootstrap/scss/utilities/_align.scss","../node_modules/bootstrap/scss/mixins/_background-variant.scss","../node_modules/bootstrap/scss/utilities/_background.scss","../node_modules/bootstrap/scss/utilities/_borders.scss","../node_modules/bootstrap/scss/utilities/_display.scss","../node_modules/bootstrap/scss/utilities/_embed.scss","../node_modules/bootstrap/scss/utilities/_flex.scss","../node_modules/bootstrap/scss/utilities/_float.scss","../node_modules/bootstrap/scss/utilities/_overflow.scss","../node_modules/bootstrap/scss/utilities/_position.scss","../node_modules/bootstrap/scss/utilities/_screenreaders.scss","../node_modules/bootstrap/scss/mixins/_screen-reader.scss","../node_modules/bootstrap/scss/utilities/_shadows.scss","../node_modules/bootstrap/scss/utilities/_sizing.scss","../node_modules/bootstrap/scss/utilities/_stretched-link.scss","../node_modules/bootstrap/scss/utilities/_spacing.scss","../node_modules/bootstrap/scss/utilities/_text.scss","../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../node_modules/bootstrap/scss/mixins/_text-emphasis.scss","../node_modules/bootstrap/scss/mixins/_text-hide.scss","../node_modules/bootstrap/scss/utilities/_visibility.scss","../node_modules/bootstrap/scss/_print.scss"],"names":[],"mappings":"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;;AEtQ9B;EC/EE;EACA;;;ADmFF;ECpFE;EACA;;;ADsFF;EACE;;AAEA;EACE,cFwP0B;;;AE9O9B;EHjCI;EGmCF;;;AAIF;EACE,eFwBO;EDTH,WAtCa;;;AG2BnB;EACE;EH7CE;EG+CF,OF1GS;;AE4GT;EACE;;;AEnHJ;ECIE;EAGA;;;ADDF;EACE,SJigCkC;EIhgClC,kBJRS;EIST;EEXE,eN6O0B;EKvO5B;EAGA;;;ADcF;EAEE;;;AAGF;EACE;EACA;;;AAGF;ELkCI;EKhCF,OJ3BS;;;AOZX;ERuEI;EQrEF,OPoCQ;EOnCR;;AAGA;EACE;;;AAKJ;EACE;ER0DE;EQxDF,OPTS;EOUT,kBPDS;EMXP,eN+O0B;;AO/N5B;EACE;ERkDA;EQhDA,aP4Q0B;;;AOtQ9B;EACE;ERyCE;EQvCF,OPjBS;;AOoBT;ERoCE;EQlCA;EACA;;;AAKJ;EACE,YP4jCkC;EO3jClC;;;ACxCA;ECDA;EACA;EACA;EACA;EACA;;ACmDE;EFtDF;ICWI,WToMiB;;;AUzJnB;EFtDF;ICWI,WToMiB;;;AUzJnB;EFtDF;ICWI,WToMiB;;;AUzJnB;EFtDF;ICWI,WToMiB;;;;AQzMrB;ECPA;EACA;EACA;EACA;EACA;;;ACmDE;EFrCE;IACE,WR6Le;;;AUzJnB;EFrCE;IACE,WR6Le;;;AUzJnB;EFrCE;IACE,WR6Le;;;AUzJnB;EFrCE;IACE,WR6Le;;;AQzKrB;ECrBA;EACA;EACA;EACA;;;ADwBA;EACE;EACA;;AAEA;AAAA;EAEE;EACA;;;AGlDJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;;AAmBE;EACE;EACA;EACA;;;AF+BN;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AExBE;EFMJ;EACA;EACA;;;AEHM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEQI;EAAwB;;;AAExB;EAAuB;;;AAGrB;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AACX;EAAwB,OADb;;;AAOT;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;AEQQ;EFRR;;;ACKE;EC9BE;IACE;IACA;IACA;;;EF+BN;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EExBE;IFMJ;IACA;IACA;;;EEHM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEQI;IAAwB;;;EAExB;IAAuB;;;EAGrB;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EAOT;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;ACKE;EC9BE;IACE;IACA;IACA;;;EF+BN;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EExBE;IFMJ;IACA;IACA;;;EEHM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEQI;IAAwB;;;EAExB;IAAuB;;;EAGrB;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EAOT;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;ACKE;EC9BE;IACE;IACA;IACA;;;EF+BN;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EExBE;IFMJ;IACA;IACA;;;EEHM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEQI;IAAwB;;;EAExB;IAAuB;;;EAGrB;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EAOT;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;ACKE;EC9BE;IACE;IACA;IACA;;;EF+BN;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EExBE;IFMJ;IACA;IACA;;;EEHM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEGM;IFPN;IAIA;;;EEQI;IAAwB;;;EAExB;IAAuB;;;EAGrB;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EACX;IAAwB,OADb;;;EAOT;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;EEQQ;IFRR;;;AGnDF;EACE;EACA,eZkIO;EYjIP,OZSS;;AYNT;AAAA;EAEE,SZsV0B;EYrV1B;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;;AAUF;AAAA;EAEE,SZgU0B;;;AYvT9B;EACE;;AAEA;AAAA;EAEE;;AAIA;AAAA;EAEE;;;AAMJ;AAAA;AAAA;AAAA;EAIE;;;AASF;EACE,kBZ4R0B;;;AC3V5B;EW2EI,OZvEK;EYwEL,kBZiRwB;;;AanW1B;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;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;;ADIN;ECvDA;EFAE,kBjByEW;EmBvEb,cnBuEa;;ACnEb;EkBAE;EFNA,kBED2D;EAS3D,cATqG;;AAYvG;EAEE;EFbA,kBED2D;EAgB3D,cAhBqG;EAqBnG;;AAKJ;EAEE;EACA,kBnB6CW;EmB5CX,cnB4CW;;AmBrCb;EAGE;EACA,kBAzC+I;EA6C/I,cA7CyL;;AA+CzL;EAKI;;;ADIN;ECvDA;EFAE,kBjByEW;EmBvEb,cnBuEa;;ACnEb;EkBAE;EFNA,kBED2D;EAS3D,cATqG;;AAYvG;EAEE;EFbA,kBED2D;EAgB3D,cAhBqG;EAqBnG;;AAKJ;EAEE;EACA,kBnB6CW;EmB5CX,cnB4CW;;AmBrCb;EAGE;EACA,kBAzC+I;EA6C/I,cA7CyL;;AA+CzL;EAKI;;;ADUN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,On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c1Bqf4C;;A0B9e5C;EACE,O1B/CK;;A0BiDL;EACE,kB1BtDG;;;A0BgEX;EACE;EACA;EAEA;;AAIA;EACE;EACA;EACA;EACA;EACA,O1B4boC;E0B3bpC,Q1B2boC;E0B1bpC;EACA;EACA,kB1BnFO;E0BoFP;;AAKF;EACE;EACA;EACA;EACA;EACA,O1B6aoC;E0B5apC,Q1B4aoC;E0B3apC;EACA;;;AAUF;EpB7GE,eN6O0B;;A0B3H1B;EACE;;AAKF;EACE,c1B+HwB;EiBvP1B,kBjBuP0B;;A0B3H1B;EACE;;AAKF;EACE,kB1BwZ0C;;A0BtZ5C;EACE,kB1BqZ0C;;;A0B3Y9C;EAEE,e1B8Z4C;;A0B1Z5C;EACE;;AAKF;EACE,kB1B8X0C;;;A0BpXhD;EACE;;AAGE;EACE;EACA,O1BsY0C;E0BrY1C;EAEA,e1BoY0C;;A0BjY5C;EACE;EACA;EACA,O1B+X0C;E0B9X1C,Q1B8X0C;E0B7X1C,kB1BlLK;E0BoLL,e1B0X0C;EepjB1C,YW2LA;;AXtLF;EW8KA;IX7KE;;;AW0LF;EACE,kB1BhMK;E0BiML;;AAKF;EACE,kB1BmV0C;;;A0BvUhD;EACE;EACA;EACA,Q1ByRsC;E0BxRtC;E3B/FI,WAtCa;E2BwIjB,a1BkE4B;E0BjE5B,a1BsE4B;E0BrE5B,O1BrNS;E0BsNT;EACA;EACA;EpBjOE,eN6O0B;E0BT5B;;AAEA;EACE,c1B4PoC;E0B3PpC;EAIE,Y1BwW8B;;A0BrWhC;EAME,O1B5OK;E0B6OL,kB1BpPK;;A0BwPT;EAEE;EACA,e1BoI0B;E0BnI1B;;AAGF;EACE,O1B1PO;E0B2PP,kB1B/PO;;A0BmQT;EACE;;AAIF;EACE;EACA;;;AAIJ;EACE,Q1B+NsC;E0B9NtC,a1BsH4B;E0BrH5B,gB1BqH4B;E0BpH5B,c1BqH4B;EDjRxB,WAtCa;;;A2BsMnB;EACE,Q1BwNsC;E0BvNtC,a1BmH4B;E0BlH5B,gB1BkH4B;E0BjH5B,c1BkH4B;EDtRxB,WAtCa;;;A2BmNnB;EACE;EACA;EACA;EACA,Q1BsMsC;E0BrMtC;;;AAGF;EACE;EACA;EACA;EACA,Q1B8LsC;E0B7LtC;EACA;;AAEA;EACE,c1B2KoC;E0B1KpC,Y1B+E0B;;A0B3E5B;EAEE,kB1B3TO;;A0B+TP;EACE,S1BiUa;;A0B7TjB;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,Q1B8JsC;E0B7JtC;EAEA,a1BxD4B;E0ByD5B,a1BpD4B;E0BqD5B,O1B/US;E0BgVT,kB1BvVS;E0BwVT;EpB1VE,eN6O0B;;A0BiH5B;EACE;EACA;EACA;EACA;EACA;EACA;EACA,Q1BwIoC;E0BvIpC;EACA,a1BpE0B;E0BqE1B,O1B/VO;E0BgWP;ETxWA,kBjBGO;E0BuWP;EpB3WA,eoB4WuB;;;AAU3B;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EAA0B,Y1B2Oe;;A0B1OzC;EAA0B,Y1B0Oe;;A0BzOzC;EAA0B,Y1ByOe;;A0BtO3C;EACE;;AAGF;EACE,O1B2NyC;E0B1NzC,Q1B0NyC;E0BzNzC;ET7YA,kBjBuP0B;E0BwJ1B,Q1B0NyC;EM1mBzC,eN2mByC;Ee1mBvC,YWkZF;EACA;;AX9YA;EWqYF;IXpYI;;;AW+YF;ETrZA,kBjB8mByC;;A0BpN3C;EACE,O1BoMgC;E0BnMhC,Q1BoMgC;E0BnMhC;EACA,Q1BmMgC;E0BlMhC,kB1B3ZO;E0B4ZP;EpBjaA,eNomBgC;;A0B9LlC;EACE,O1BgMyC;E0B/LzC,Q1B+LyC;EiBtmBzC,kBjBuP0B;E0BkL1B,Q1BgMyC;EM1mBzC,eN2mByC;Ee1mBvC,YW4aF;EACA;;AXxaA;EWgaF;IX/ZI;;;AWyaF;ET/aA,kBjB8mByC;;A0B1L3C;EACE,O1B0KgC;E0BzKhC,Q1B0KgC;E0BzKhC;EACA,Q1ByKgC;E0BxKhC,kB1BrbO;E0BsbP;EpB3bA,eNomBgC;;A0BpKlC;EACE,O1BsKyC;E0BrKzC,Q1BqKyC;E0BpKzC;EACA,c1B9D0B;E0B+D1B,a1B/D0B;EiBrY1B,kBjBuP0B;E0B+M1B,Q1BmKyC;EM1mBzC,eN2mByC;Ee1mBvC,YWycF;EACA;;AXrcA;EW0bF;IXzbI;;;AWscF;ET5cA,kBjB8mByC;;A0B7J3C;EACE,O1B6IgC;E0B5IhC,Q1B6Ig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C;IvBjLlC,2BuBiLkC;;EAE5B;AAAA;IAGE;;EAEF;AAAA;IAGE;;;;AAcV;EACE,e7BglBgC;;AUlwBhC;EmBgLJ;IAMI,c7B6lBgC;I6B5lBhC,Y7B6lBgC;I6B5lBhC;IACA;;EAEA;IACE;IACA;;;;AAWJ;EACE;;AAEA;EACE;EvB5OF,4BuB6OgC;EvB5OhC,2BuB4OgC;;AAGhC;EvB9PA,wBuB+P6B;EvB9P7B,yBuB8P6B;;AAG7B;EvB3QA,euB4QyB;EACvB;;;AClRN;EACE;EACA;EACA;EACA,e9BiiCkC;E8B/hClC;EACA,kB9BES;EMJP,eN6O0B;;;A8BrO5B;EACE,c9BqhCgC;;A8BnhChC;EACE;EACA,e9BihC8B;E8BhhC9B,O9BNK;E8BOL;;AAUJ;EACE;;AAGF;EACE;;AAGF;EACE,O9B1BO;;;A+BbX;EACE;E5BGA;EACA;EGAE,eN6O0B;;;A+B5O9B;EACE;EACA;EACA;EACA;EACA,a/BmxBkC;E+BlxBlC,O/BsKwC;E+BrKxC,kB/BNS;E+BOT;;AAEA;EACE;EACA,O/BkKsC;E+BjKtC;EACA,kB/BXO;E+BYP,c/BXO;;A+BcT;EACE;EACA,S/B4wBgC;E+B3wBhC,Y/BkX0B;;;A+B5W1B;EACE;EzBCF,wBN+M0B;EM9M1B,2BN8M0B;;A+B3M1B;EzBlBA,yBN6N0B;EM5N1B,4BN4N0B;;A+BtM5B;EACE;EACA,O/BvCO;E+BwCP,kB/B8M0B;E+B7M1B,c/B6M0B;;A+B1M5B;EACE,O/BvCO;E+BwCP;EAEA;EACA,kB/BjDO;E+BkDP,c/B/CO;;;AgCPT;EACE;EjC2HE,WAtCa;EiCnFf,ahCsO0B;;AgCjOxB;E1BwBF,wBNgN0B;EM/M1B,2BN+M0B;;AgCnOxB;E1BKF,yBN8N0B;EM7N1B,4BN6N0B;;;AgChP5B;EACE;EjC2HE,WAtCa;EiCnFf,ahCuO0B;;AgClOxB;E1BwBF,wBNiN0B;EMhN1B,2BNgN0B;;AgCpOxB;E1BKF,yBN+N0B;EM9N1B,4BN8N0B;;;AiC/O9B;EACE;EACA;ElCiEE;EkC/DF,ajC2R4B;EiC1R5B;EACA;EACA;EACA;E3BRE,eN6O0B;Ee5OxB,YkBSJ;;AlBJE;EkBNJ;IlBOM;;;AdIJ;EgCGI;;;AAKJ;EACE;;;AAKJ;EACE;EACA;;;AAOF;EACE,ejC63BkC;EiC53BlC,cjC43BkC;EMh6BhC,eNm6BgC;;;AiCt3BlC;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ACbN;EACE;EACA,enCqzBkC;EmCnzBlC,kBnCKS;EMJP,eN8O0B;;AUvL1B;EyB5DJ;IAQI;;;;AAIJ;EACE;EACA;E7BTE,e6BUqB;;;ACXzB;EACE;EACA;EACA,epCq9BkC;EoCp9BlC;E9BHE,eN6O0B;;;AoCrO9B;EAEE;;;AAIF;EACE,apCgR4B;;;AoCxQ9B;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;;;AAUF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ACRF;EACE;IAAO;;EACP;IAAK;;;AAIT;EACE;EACA,QtC89BkC;EsC79BlC;EvCoHI,WAtCa;EuC5EjB,kBtCJS;EMJP,eN6O0B;;;AsChO9B;EACE;EACA;EACA;EACA;EACA,OtChBS;EsCiBT;EACA;EACA,kBtCo9BkC;Eex+B9B,YuBqBJ;;AvBhBE;EuBOJ;IvBNM;;;;AuBkBN;ErBaE;EqBXA;;;AAIA;EACE;;AAGE;EAJJ;IAKM;;;;ACzCR;EACE;EACA;;;AAGF;EACE;;;ACFF;EACE;EACA;EAGA;EACA;;;AASF;EACE;EACA,OxCPS;EwCQT;;AvCNA;EuCUE;EACA,OxCbO;EwCcP;EACA,kBxCrBO;;AwCwBT;EACE,OxCjBO;EwCkBP,kBxCzBO;;;AwCkCX;EACE;EACA;EACA;EAEA,kBxCzCS;EwC0CT;;AAEA;ElCrCE,wBNoO0B;EMnO1B,yBNmO0B;;AwC3L5B;ElC3BE,4BNsN0B;EMrN1B,2BNqN0B;;AwCvL5B;EAEE,OxChDO;EwCiDP;EACA,kBxCxDO;;AwC4DT;EACE;EACA,OxC9DO;EwC+DP,kBxCuL0B;EwCtL1B,cxCsL0B;;AwCnL5B;EACE;;AAEA;EACE;EACA,kBxCgKwB;;;AwClJ1B;EACE;;AAGE;ElCrCJ,2BNsL0B;EMlM1B,yBkCmDuC;;AAGnC;ElCtDJ,yBNkM0B;EMtL1B,2BkC4CyC;;AAGrC;EACE;;AAGF;EACE,kBxC+HoB;EwC9HpB;;AAEA;EACE;EACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AwC3G5B;EACE;EACA;ElCjIA,ekCkIuB;;AAEvB;EACE;;AAKF;EACE;;;AC7IJ;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;AE5J1E;EACE;E3C8HI,WAtCa;E2CtFjB,a1CiS4B;E0ChS5B;EACA,O1CYS;E0CXT,a1ColCkC;E0CnlClC;;AzCKA;EyCDE,O1CMO;E0CLP;;A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AEF;AAAA;IAEE;;;AxDTF;EwDlDI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAQF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AxDTF;EwDlDI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAQF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AC/DN;EAAkB;;;AAIlB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;ECTE;EACA;EACA;;;ADeE;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AAM5B;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AAInB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AAIvB;EAAc;;;AEvCZ;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AFuCR;EAAa;;;AACb;EAAc;;;AAEd;EAAiB;;;AACjB;EAAiB;;;AAIjB;EGvDE;EACA;EACA;EACA;EACA;;;AHuDF;EAAwB;;;AAExB;EACE;EACA;;;AAKF;EAAc;;;AIjEd;EACE;;;AAGF;EACE;;;ACAA;EACE;AAAA;AAAA;IAKE;IAEA;;;EAIA;IACE;;;EASJ;IACE;;;EAcF;IACE;;;EAEF;AAAA;IAEE;IACA;;;EAQF;IACE;;;EAGF;AAAA;IAEE;;;EAGF;AAAA;AAAA;IAGE;IACA;;;EAGF;AAAA;IAEE;;;EAQF;IACE,MxE4hC8B;;EwE1hChC;IACE;;;EAEF;IACE;;;EAIF;IACE;;;EAEF;IACE;;;EAGF;IACE;;EAEA;AAAA;IAEE;;;EAKF;AAAA;IAEE;;;EAIJ;IACE;;EAEA;AAAA;AAAA;AAAA;IAIE,cxEvHG;;;EwE2HP;IACE;IACA,cxE7HK","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["style.scss","../node_modules/bootstrap/scss/bootstrap.scss","../node_modules/bootstrap/scss/_root.scss","../node_modules/bootstrap/scss/_reboot.scss","../node_modules/bootstrap/scss/vendor/_rfs.scss","../node_modules/bootstrap/scss/_variables.scss","../node_modules/bootstrap/scss/mixins/_hover.scss","../node_modules/bootstrap/scss/_type.scss","../node_modules/bootstrap/scss/mixins/_lists.scss","../node_modules/bootstrap/scss/_images.scss","../node_modules/bootstrap/scss/mixins/_image.scss","../node_modules/bootstrap/scss/mixins/_border-radius.scss","../node_modules/bootstrap/scss/_code.scss","../node_modules/bootstrap/scss/_grid.scss","../node_modules/bootstrap/scss/mixins/_grid.scss","../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../node_modules/bootstrap/scss/mixins/_grid-framework.scss","../node_modules/bootstrap/scss/_tables.scss","../node_modules/bootstrap/scss/mixins/_table-row.scss","../node_modules/bootstrap/scss/_forms.scss","../node_modules/bootstrap/scss/mixins/_transition.scss","../node_modules/bootstrap/scss/mixins/_forms.scss","../node_modules/bootstrap/scss/mixins/_gradients.scss","../node_modules/bootstrap/scss/_buttons.scss","../node_modules/bootstrap/scss/mixins/_buttons.scss","../node_modules/bootstrap/scss/_transitions.scss","../node_modules/bootstrap/scss/_dropdown.scss","../node_modules/bootstrap/scss/mixins/_caret.scss","../node_modules/bootstrap/scss/mixins/_nav-divider.scss","../node_modules/bootstrap/scss/_button-group.scss","../node_modules/bootstrap/scss/_input-group.scss","../node_modules/bootstrap/scss/_custom-forms.scss","../node_modules/bootstrap/scss/_nav.scss","../node_modules/bootstrap/scss/_navbar.scss","../node_modules/bootstrap/scss/_card.scss","../node_modules/bootstrap/scss/_breadcrumb.scss","../node_modules/bootstrap/scss/_pagination.scss","../node_modules/bootstrap/scss/mixins/_pagination.scss","../node_modules/bootstrap/scss/_badge.scss","../node_modules/bootstrap/scss/mixins/_badge.scss","../node_modules/bootstrap/scss/_jumbotron.scss","../node_modules/bootstrap/scss/_alert.scss","../node_modules/bootstrap/scss/mixins/_alert.scss","../node_modules/bootstrap/scss/_progress.scss","../node_modules/bootstrap/scss/_media.scss","../node_modules/bootstrap/scss/_list-group.scss","../node_modules/bootstrap/scss/mixins/_list-group.scss","../node_modules/bootstrap/scss/_close.scss","../node_modules/bootstrap/scss/_toasts.scss","../node_modules/bootstrap/scss/_modal.scss","../node_modules/bootstrap/scss/_tooltip.scss","../node_modules/bootstrap/scss/mixins/_reset-text.scss","../node_modules/bootstrap/scss/_popover.scss","../node_modules/bootstrap/scss/_carousel.scss","../node_modules/bootstrap/scss/mixins/_clearfix.scss","../node_modules/bootstrap/scss/_spinners.scss","../node_modules/bootstrap/scss/utilities/_align.scss","../node_modules/bootstrap/scss/mixins/_background-variant.scss","../node_modules/bootstrap/scss/utilities/_background.scss","../node_modules/bootstrap/scss/utilities/_borders.scss","../node_modules/bootstrap/scss/utilities/_display.scss","../node_modules/bootstrap/scss/utilities/_embed.scss","../node_modules/bootstrap/scss/utilities/_flex.scss","../node_modules/bootstrap/scss/utilities/_float.scss","../node_modules/bootstrap/scss/utilities/_overflow.scss","../node_modules/bootstrap/scss/utilities/_position.scss","../node_modules/bootstrap/scss/utilities/_screenreaders.scss","../node_modules/bootstrap/scss/mixins/_screen-reader.scss","../node_modules/bootstrap/scss/utilities/_shadows.scss","../node_modules/bootstrap/scss/utilities/_sizing.scss","../node_modules/bootstrap/scss/utilities/_stretched-link.scss","../node_modules/bootstrap/scss/utilities/_spacing.scss","../node_modules/bootstrap/scss/utilities/_text.scss","../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../node_modules/bootstrap/scss/mixins/_text-emphasis.scss","../node_modules/bootstrap/scss/mixins/_text-hide.scss","../node_modules/bootstrap/scss/utilities/_visibility.scss","../node_modules/bootstrap/scss/_print.scss"],"names":[],"mappings":"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8Q4B;;;AEtQ9B;EC/EE;EACA;;;ADmFF;ECpFE;EACA;;;ADsFF;EACE;;AAEA;EACE,cFwP0B;;;AE9O9B;EHjCI;EGmCF;;;AAIF;EACE,eFwBO;EDTH,WAtCa;;;AG2BnB;EACE;EH7CE;EG+CF,OF1GS;;AE4GT;EACE;;;AEnHJ;ECIE;EAGA;;;ADDF;EACE,SJigCkC;EIhgClC,kBJRS;EIST;EEXE,eN6O0B;EKvO5B;EAGA;;;ADcF;EAEE;;;AAGF;EACE;EACA;;;AAGF;ELkCI;EKhCF,OJ3BS;;;AOZX;ERuEI;EQrEF,OPoCQ;EOnCR;;AAGA;EACE;;;AAKJ;EACE;ER0DE;EQxDF,OPTS;EOUT,kBPDS;EMXP,eN+O0B;;AO/N5B;EACE;ERkDA;EQhDA,aP4Q0B;;;AOtQ9B;EACE;ERyCE;EQvCF,OPjBS;;AOoBT;ERoCE;EQlCA;EACA;;;AAKJ;EACE,YP4jCkC;EO3jClC;;;ACxCA;ECDA;EACA;EACA;EACA;EACA;;ACmDE;EFtDF;ICWI,WToMiB;;;AUzJnB;EFtDF;ICWI,WToMiB;;;AUzJnB;EFtDF;ICWI,WToMiB;;;AUzJnB;EFtDF;ICWI,WToMiB;;;;AQzMrB;ECPA;EACA;EACA;EACA;EACA;;;ACmDE;EFrCE;IACE,WR6Le;;;AUzJnB;EFrCE;IACE,WR6Le;;;AUzJnB;EFrCE;IACE,WR6Le;;;AUzJnB;EFrCE;IACE,WR6Le;;;AQzKrB;ECrBA;EACA;EACA;EACA;;;ADwBA;EACE;EACA;;AAEA;AAAA;EAEE;EACA;;;AGlDJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;;AAmBE;EACE;EACA;EACA;;;AF+BN;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AExBE;EFMJ;EACA;EACA;;;AEHM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;AEGM;EFPN;EAIA;;;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AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;ACvF/B;AAAA;AAAA;AAAA;EAIE,cDmFyE;;;AXxF/E;EYiBM,kBAJe;;AAMf;AAAA;EAEE,kBARa;;;AAnBnB;AAAA;AAAA;EAGE,kBD2F+B;;AC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2D;EAgB3D,cAhBqG;EAqBnG;;AAKJ;EAEE;EACA,kBnB6CW;EmB5CX,cnB4CW;;AmBrCb;EAGE;EACA,kBAzC+I;EA6C/I,cA7CyL;;AA+CzL;EAKI;;;ADIN;ECvDA;EFAE,kBjByEW;EmBvEb,cnBuEa;;ACnEb;EkBAE;EFNA,kBED2D;EAS3D,cATqG;;AAYvG;EAEE;EFbA,kBED2D;EAgB3D,cAhBqG;EAqBnG;;AAKJ;EAEE;EACA,kBnB6CW;EmB5CX,cnB4CW;;AmBrCb;EAGE;EACA,kBAzC+I;EA6C/I,cA7CyL;;AA+CzL;EAKI;;;ADIN;ECvDA;EFAE,kBjByEW;EmBvEb,cnBuEa;;ACnEb;EkBAE;EFNA,kBED2D;EAS3D,cATqG;;AAYvG;EAEE;EFbA,kBED2D;EAgB3D,cAhBqG;EAqBnG;;AAKJ;EAEE;EACA,kBnB6CW;EmB5CX,cnB4CW;;AmBrCb;EAGE;EACA,kBAzC+I;EA6C/I,cA7CyL;;AA+CzL;EAKI;;;ADIN;ECvDA;EFAE,kBjByEW;EmBvEb,cnBuEa;;ACnEb;EkBAE;EFNA,kBED2D;EAS3D,cATqG;;AAYvG;EAEE;EFbA,kBED2D;EAgB3D,cAhBqG;EAqBnG;;AAKJ;EAEE;EACA,kBnB6CW;EmB5CX,cnB4CW;;AmBrCb;EAGE;EACA,kBAzC+I;EA6C/I,cA7CyL;;AA+CzL;EAKI;;;ADUN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;AD7BN;ECHA,OnBea;EmBdb,cnBca;;ACnEb;EkBwDE,OALgD;EAMhD,kBnBUW;EmBTX,cnBSW;;AmBNb;EAEE;;AAGF;EAEE,OnBDW;EmBEX;;AAGF;EAGE;EACA,kBnBTW;EmBUX,cnBVW;;AmBYX;EAKI;;;ADlBR;EACE,alBoN4B;EkBnN5B,OlBkGwC;EkBjGxC,iBlBkGwC;;ACvKxC;EiBwEE,OlBgGsC;EkB/FtC,iBlBgGsC;;AkB7FxC;EAEE,iBlB2FsC;EkB1FtC;;AAGF;EAEE,OlBnFO;EkBoFP;;;AAWJ;ECJE;EpBuBI,WAtCa;EoBiBjB,anBkI4B;EMvO1B,eN8O0B;;;AkBnI9B;ECRE;EpBuBI,WAtCa;EoBiBjB,anBmI4B;EMxO1B,eN+O0B;;;AkB3H9B;EACE;EACA;;AAGA;EACE,YlB6T0B;;;AkBrT5B;AAAA;AAAA;EACE;;;AExIJ;ELMM,YKLJ;;ALUE;EKXJ;ILYM;;;AKTJ;EACE;;;AAKF;EACE;;;AAIJ;EACE;EACA;EACA;ELXI,YKYJ;;ALPE;EKGJ;ILFM;;;;AMXN;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;;ACoBE;EACE;EACA,atBkOwB;EsBjOxB,gBtBgOwB;EsB/NxB;EAhCJ;EACA;EACA;EACA;;AAqDE;EACE;;;AD1CN;EACE;EA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QzBqWsC;;;AyBlWxC;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;E1B5BI,WAtCa;E0BoEjB,azBgF4B;EMxO1B,eN+O0B;;;AyBnF9B;AAAA;EAEE;;;AAWF;AAAA;AAAA;AAAA;AAAA;AAAA;EnBzJI,yBmB+J2B;EnB9J3B,4BmB8J2B;;;AAG/B;AAAA;AAAA;AAAA;AAAA;AAAA;EnBpJI,wBmB0J0B;EnBzJ1B,2BmByJ0B;;;ACpL9B;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA,c1B6fsC;;;A0B1fxC;EACE;EACA;EACA;EACA,O1ByfsC;E0BxftC;EACA;;AAEA;EACE,O1BvBO;E0BwBP,c1B8N0B;EiBvP1B,kBjBuP0B;;A0BzN5B;EAKI,Y1BoWwB;;A0BhW5B;EACE,c1B0boC;;A0BvbtC;EACE,O1B3CO;E0B4CP,kB1Bsf4C;E0Brf5C,c1Bqf4C;;A0B9e5C;EACE,O1B/CK;;A0BiDL;EACE,kB1BtDG;;;A0BgEX;EACE;EACA;EAEA;;AAIA;EACE;EACA;EACA;EACA;EACA,O1B4boC;E0B3bpC,Q1B2boC;E0B1bpC;EACA;EACA,kB1BnFO;E0BoFP;;AAKF;EACE;EACA;EACA;EACA;EACA,O1B6aoC;E0B5apC,Q1B4aoC;E0B3apC;EACA;;;AAUF;EpB7GE,eN6O0B;;A0B3H1B;EACE;;AAKF;EACE,c1B+HwB;EiBvP1B,kBjBuP0B;;A0B3H1B;EACE;;AAKF;EACE,kB1BwZ0C;;A0BtZ5C;EACE,kB1BqZ0C;;;A0B3Y9C;EAEE,e1B8Z4C;;A0B1Z5C;EACE;;AAKF;EACE,kB1B8X0C;;;A0BpXhD;EACE;;AAGE;EACE;EACA,O1BsY0C;E0BrY1C;EAEA,e1BoY0C;;A0BjY5C;EACE;EACA;EACA,O1B+X0C;E0B9X1C,Q1B8X0C;E0B7X1C,kB1BlLK;E0BoLL,e1B0X0C;EepjB1C,YW2LA;;AXtLF;EW8KA;IX7KE;;;AW0LF;EACE,kB1BhMK;E0BiML;;AAKF;EACE,kB1BmV0C;;;A0BvUhD;EACE;EACA;EACA,Q1ByRsC;E0BxRtC;E3B/FI,WAtCa;E2BwIjB,a1BkE4B;E0BjE5B,a1BsE4B;E0BrE5B,O1BrNS;E0BsNT;EACA;EACA;EpBjOE,eN6O0B;E0BT5B;;AAEA;EACE,c1B4PoC;E0B3PpC;EAIE,Y1BwW8B;;A0BrWhC;EAME,O1B5OK;E0B6OL,kB1BpPK;;A0BwPT;EAEE;EACA,e1BoI0B;E0BnI1B;;AAGF;EACE,O1B1PO;E0B2PP,kB1B/PO;;A0BmQT;EACE;;AAIF;EACE;EACA;;;AAIJ;EACE,Q1B+NsC;E0B9NtC,a1BsH4B;E0BrH5B,gB1BqH4B;E0BpH5B,c1BqH4B;EDjRxB,WAtCa;;;A2BsMnB;EACE,Q1BwNsC;E0BvNtC,a1BmH4B;E0BlH5B,gB1BkH4B;E0BjH5B,c1BkH4B;EDtRxB,WAtCa;;;A2BmNnB;EACE;EACA;EACA;EACA,Q1BsMsC;E0BrMtC;;;AAGF;EACE;EACA;EACA;EACA,Q1B8LsC;E0B7LtC;EACA;;AAEA;EACE,c1B2KoC;E0B1KpC,Y1B+E0B;;A0B3E5B;EAEE,kB1B3TO;;A0B+TP;EACE,S1BiUa;;A0B7TjB;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,Q1B8JsC;E0B7JtC;EAEA,a1BxD4B;E0ByD5B,a1BpD4B;E0BqD5B,O1B/US;E0BgVT,kB1BvVS;E0BwVT;EpB1VE,eN6O0B;;A0BiH5B;EACE;EACA;EACA;EACA;EACA;EACA;EACA,Q1BwIoC;E0BvIpC;EACA,a1BpE0B;E0BqE1B,O1B/VO;E0BgWP;ETxWA,kBjBGO;E0BuWP;EpB3WA,eoB4WuB;;;AAU3B;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EAA0B,Y1B2Oe;;A0B1OzC;EAA0B,Y1B0Oe;;A0BzOzC;EAA0B,Y1ByOe;;A0BtO3C;EACE;;AAGF;EACE,O1B2NyC;E0B1NzC,Q1B0NyC;E0BzNzC;ET7YA,kBjBuP0B;E0BwJ1B,Q1B0NyC;EM1mBzC,eN2mByC;Ee1mBvC,YWkZF;EACA;;AX9YA;EWqYF;IXpYI;;;AW+YF;ETrZA,kBjB8mByC;;A0BpN3C;EACE,O1BoMgC;E0BnMhC,Q1BoMgC;E0BnMhC;EACA,Q1BmMgC;E0BlMhC,kB1B3ZO;E0B4ZP;EpBjaA,eNomBgC;;A0B9LlC;EACE,O1BgMyC;E0B/LzC,Q1B+LyC;EiBtmBzC,kBjBuP0B;E0BkL1B,Q1BgMyC;EM1mBzC,eN2mByC;Ee1mBvC,YW4aF;EACA;;AXxaA;EWgaF;IX/ZI;;;AWyaF;ET/aA,kBjB8mByC;;A0B1L3C;EACE,O1B0KgC;E0BzKhC,Q1B0KgC;E0BzKhC;EACA,Q1ByKgC;E0BxKhC,kB1BrbO;E0BsbP;EpB3bA,eNomBgC;;A0BpKlC;EACE,O1BsKyC;E0BrKzC,Q1BqKyC;E0BpKzC;EACA,c1B9D0B;E0B+D1B,a1B/D0B;EiBrY1B,kBjBuP0B;E0B+M1B,Q1BmKyC;EM1mBzC,eN2mByC;Ee1mBvC,YWycF;EACA;;AXrcA;EW0bF;IXzbI;;;AWscF;ET5cA,kBjB8mByC;;A0B7J3C;EACE,O1B6IgC;E0B5IhC,Q1B6IgC;E0B5IhC;EACA,Q1B4IgC;E0B3IhC;EACA;EACA;;AAIF;EACE,kB1BzdO;EMLP,eNomBgC;;A0BlIlC;EACE;EACA,kB1B/dO;EMLP,eNomBgC;;A0B3HhC;EACE,kB1BneK;;A0BseP;EACE;;AAGF;EACE,kB1B3eK;;A0B8eP;EACE;;AAGF;EACE,kB1BnfK;;;A0BwfX;AAAA;AAAA;EX9fM,YWigBJ;;AX5fE;EWyfJ;AAAA;AAAA;IXxfM;;;;AYPN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;A1BCA;E0BEE;;AAIF;EACE,O3BVO;E2BWP;EACA;;;AAQJ;EACE;;AAEA;EACE;;AAGF;EACE;ErB3BA,wBNoO0B;EMnO1B,yBNmO0B;;AClO5B;E0B6BI,c3BqpB8B;;A2BlpBhC;EACE,O3BpCK;E2BqCL;EACA;;AAIJ;AAAA;EAEE,O3B3CO;E2B4CP,kB3BnDO;E2BoDP,c3B0oBgC;;A2BvoBlC;EAEE;ErBlDA,wBqBoD2B;ErBnD3B,yBqBmD2B;;;AAU7B;ErBvEE,eN6O0B;;A2BlK5B;AAAA;EAEE,O3B3EO;E2B4EP,kB3B0K0B;;;A2BhK5B;EACE;EACA;;;AAKF;EACE;EACA;EACA;;;AAUF;EACE;;AAEF;EACE;;;ACpGJ;EA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2BN8M0B;;A+B3M1B;EzBlBA,yBN6N0B;EM5N1B,4BN4N0B;;A+BtM5B;EACE;EACA,O/BvCO;E+BwCP,kB/B8M0B;E+B7M1B,c/B6M0B;;A+B1M5B;EACE,O/BvCO;E+BwCP;EAEA;EACA,kB/BjDO;E+BkDP,c/B/CO;;;AgCPT;EACE;EjC2HE,WAtCa;EiCnFf,ahCsO0B;;AgCjOxB;E1BwBF,wBNgN0B;EM/M1B,2BN+M0B;;AgCnOxB;E1BKF,yBN8N0B;EM7N1B,4BN6N0B;;;AgChP5B;EACE;EjC2HE,WAtCa;EiCnFf,ahCuO0B;;AgClOxB;E1BwBF,wBNiN0B;EMhN1B,2BNgN0B;;AgCpOxB;E1BKF,yBN+N0B;EM9N1B,4BN8N0B;;;AiC/O9B;EACE;EACA;ElCiEE;EkC/DF,ajC2R4B;EiC1R5B;EACA;EACA;EACA;E3BRE,eN6O0B;Ee5OxB,YkBSJ;;AlBJE;EkBNJ;IlBOM;;;AdIJ;EgCGI;;;AAKJ;EACE;;;AAKJ;EACE;EACA;;;AAOF;EACE,ejC63BkC;EiC53BlC,cjC43BkC;EMh6BhC,eNm6BgC;;;AiCt3BlC;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ADqCJ;ECjDA;EACA,kBlC6Ea;;AC/Db;EiCVI;EACA;;AAGF;EAEE;EACA;;;ACbN;EACE;EACA,enCqzBkC;EmCnzBlC,kBnCKS;EMJP,eN8O0B;;AUvL1B;EyB5DJ;IAQI;;;;AAIJ;EACE;EACA;E7BTE,e6BUqB;;;ACXzB;EACE;EACA;EACA,epCq9BkC;EoCp9BlC;E9BHE,eN6O0B;;;AoCrO9B;EAEE;;;AAIF;EACE,apCgR4B;;;AoCxQ9B;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;;;AAUF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ADqCF;EC9CA,OD+CqH;EnB1CnH,kBmB0CuB;EC7CzB,cD6CqE;;AC3CrE;EACE;;AAGF;EACE;;;ACRF;EACE;IAAO;;EACP;IAAK;;;AAIT;EACE;EACA,QtC89BkC;EsC79BlC;EvCoHI,WAtCa;EuC5EjB,kBtCJS;EMJP,eN6O0B;;;AsChO9B;EACE;EACA;EACA;EACA;EACA,OtChBS;EsCiBT;EACA;EACA,kBtCo9BkC;Eex+B9B,YuBqBJ;;AvBhBE;EuBOJ;IvBNM;;;;AuBkBN;ErBaE;EqBXA;;;AAIA;EACE;;AAGE;EAJJ;IAKM;;;;ACzCR;EACE;EACA;;;AAGF;EACE;;;ACFF;EACE;EACA;EAGA;EACA;;;AASF;EACE;EACA,OxCPS;EwCQT;;AvCNA;EuCUE;EACA,OxCbO;EwCcP;EACA,kBxCrBO;;AwCwBT;EACE,OxCjBO;EwCkBP,kBxCzBO;;;AwCkCX;EACE;EACA;EACA;EAEA,kBxCzCS;EwC0CT;;AAEA;ElCrCE,wBNoO0B;EMnO1B,yBNmO0B;;AwC3L5B;ElC3BE,4BNsN0B;EMrN1B,2BNqN0B;;AwCvL5B;EAEE,OxChDO;EwCiDP;EACA,kBxCxDO;;AwC4DT;EACE;EACA,OxC9DO;EwC+DP,kBxCuL0B;EwCtL1B,cxCsL0B;;AwCnL5B;EACE;;AAEA;EACE;EACA,kBxCgKwB;;;AwClJ1B;EACE;;AAGE;ElCrCJ,2BNsL0B;EMlM1B,yBkCmDuC;;AAGnC;ElCtDJ,yBNkM0B;EMtL1B,2BkC4CyC;;AAGrC;EACE;;AAGF;EACE,kBxC+HoB;EwC9HpB;;AAEA;EACE;EACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AUnL1B;E8BiCA;IACE;;EAGE;IlCrCJ,2BNsL0B;IMlM1B,yBkCmDuC;;EAGnC;IlCtDJ,yBNkM0B;IMtL1B,2BkC4CyC;;EAGrC;IACE;;EAGF;IACE,kBxC+HoB;IwC9HpB;;EAEA;IACE;IACA,mBxC0HkB;;;AwC3G5B;EACE;EACA;ElCjIA,ekCkIuB;;AAEvB;EACE;;AAKF;EACE;;;AC7IJ;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;ACzJxE;EACE,ODwJsE;ECvJtE,kBDuJuC;;AvC5IzC;EwCPM,ODmJkE;EClJlE;;AAGF;EACE,OzCPG;EyCQH,kBD6IkE;EC5IlE,cD4IkE;;;AE5J1E;EACE;E3C8HI,WAtCa;E2CtFjB,a1CiS4B;E0ChS5B;EACA,O1CYS;E0CXT,a1ColCkC;E0CnlClC;;AzCKA;EyCDE,O1CMO;E0CLP;;AzCIF;EyCCI;;;AAWN;EACE;EACA;EACA;EACA;;;AAMF;EACE;;;ACvCF;EACE,W3Cy4BkC;E2Cx4BlC;E5C6HI,WAtCa;E4CpFjB,kB3C04BkC;E2Cz4BlC;EACA;EACA,Y3C24BkC;E2C14BlC;EACA;ErCLE,eN64BgC;;A2Cr4BlC;EACE,e3C63BgC;;A2C13BlC;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA,O3CtBS;E2CuBT,kB3Ck3BkC;E2Cj3BlC;EACA;;;AAGF;EACE,S3Ci2BkC;;;A4Cr4BpC;EAEE;;AAEA;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,S5C+pBkC;E4C9pBlC;EACA;EACA;EACA;EAGA;;;AAOF;EACE;EACA;EACA,Q5C64BkC;E4C34BlC;;AAGA;E7BrCI,Y6BsCF;EACA,W5Cm6BgC;;Aer8BhC;E6BgCF;I7B/BI;;;A6BmCJ;EACE,W5Ci6BgC;;A4C75BlC;EACE,W5C85BgC;;;A4C15BpC;EACE;EACA;;AAEA;EACE;EACA;;AAGF;AAAA;EAEE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMN;EACE;EACA;EACA;EACA;EAGA;EACA,kB5C1GS;E4C2GT;EACA;EtC9GE,eN8O0B;E4C5H5B;;;AAIF;EACE;EACA;EACA;EACA,S5CojBkC;E4CnjBlC;EACA;EACA,kB5CjHS;;A4CoHT;EAAS;;AACT;EAAS,S5C4zByB;;;A4CvzBpC;EACE;EACA;EACA;EACA,S5C0zBkC;E4CzzBlC;EtClIE,wBN+6BgC;EM96BhC,yBN86BgC;;A4C1yBlC;EACE,S5CqzBgC;E4CnzBhC;;;AAKJ;EACE;EACA,a5C2I4B;;;A4CtI9B;EACE;EAGA;EACA,S5CuwBkC;;;A4CnwBpC;EACE;EACA;EACA;EACA;EACA;EACA;EtCrJE,4BNi6BgC;EMh6BhC,2BNg6BgC;;A4CrwBlC;EACE;;;AAKJ;EACE;EACA;EACA;EACA;EACA;;;AlCvIE;EkC6IF;IACE,W5CmwBgC;I4ClwBhC;;;EAGF;IACE;;EAEA;IACE;;;EAIJ;IACE;;EAEA;IACE;;;EAQJ;IAAY,W5C4uBsB;;;AUl5BhC;EkC0KF;AAAA;IAEE,W5CouBgC;;;AUh5BhC;EkCiLF;IAAY,W5C8tBsB;;;A6C18BpC;EACE;EACA,S7CmrBkC;E6ClrBlC;EACA,Q7Cy1BkC;E8C71BlC,anD8FuB;EmD5FvB;EACA,a9C+R4B;E8C9R5B,a9CmS4B;E8ClS5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E/CgHI,WAtCa;E8C9EjB;EACA;;AAEA;EAAS,S7C60ByB;;A6C30BlC;EACE;EACA;EACA,O7C60BgC;E6C50BhC,Q7C60BgC;;A6C30BhC;EACE;EACA;EACA;EACA;;;AAKN;EACE;;AAEA;EACE;;AAEA;EACE;EACA;EACA,kB7CvBK;;;A6C4BX;EACE;;AAEA;EACE;EACA,O7C+yBgC;E6C9yBhC,Q7C6yBgC;;A6C3yBhC;EACE;EACA;EACA,oB7CvCK;;;A6C4CX;EACE;;AAEA;EACE;;AAEA;EACE;EACA;EACA,qB7CrDK;;;A6C0DX;EACE;;AAEA;EACE;EACA,O7CixBgC;E6ChxBhC,Q7C+wBgC;;A6C7wBhC;EACE;EACA;EACA,mB7CrEK;;;A6C0FX;EACE,W7C2uBkC;E6C1uBlC;EACA,O7CvGS;E6CwGT;EACA,kB7C/FS;EMZP,eN6O0B;;;A+ClP9B;EACE;EACA;EACA;EACA,S/CirBkC;E+ChrBlC;EACA,W/C22BkC;E8Ch3BlC,anD8FuB;EmD5FvB;EACA,a9C+R4B;E8C9R5B,a9CmS4B;E8ClS5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E/CgHI,WAtCa;EgD7EjB;EACA,kB/CNS;E+COT;EACA;EzCVE,eN8O0B;;A+ChO5B;EACE;EACA;EACA,O/C22BgC;E+C12BhC,Q/C22BgC;E+C12BhC;;AAEA;EAEE;EACA;EACA;EACA;EACA;;;AAKN;EACE,e/C41BkC;;A+C11BlC;EACE;;AAEA;EACE;EACA;EACA,kB/Cu1B8B;;A+Cp1BhC;EACE,Q/C6LwB;E+C5LxB;EACA,kB/C7CK;;;A+CkDX;EACE,a/Cw0BkC;;A+Ct0BlC;EACE;EACA,O/Co0BgC;E+Cn0BhC,Q/Ck0BgC;E+Cj0BhC;;AAEA;EACE;EACA;EACA,oB/Cg0B8B;;A+C7zBhC;EACE,M/CsKwB;E+CrKxB;EACA,oB/CpEK;;;A+CyEX;EACE,Y/CizBkC;;A+C/yBlC;EACE;;AAEA;EACE;EACA;EACA,qB/C4yB8B;;A+CzyBhC;EACE,K/CkJwB;E+CjJxB;EACA,qB/CxFK;;A+C6FT;EACE;EACA;EACA;EACA;EACA,O/CwxBgC;E+CvxBhC;EACA;EACA;;;AAIJ;EACE,c/CixBkC;;A+C/wBlC;EACE;EACA,O/C6wBgC;E+C5wBhC,Q/C2wBgC;E+C1wBhC;;AAEA;EACE;EACA;EACA,mB/CywB8B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;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAgC;;;AAChC;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAQF;EAAwB;;;AACxB;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAwB;;;AACxB;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAwB;;;AACxB;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAEF;AAAA;EAEE;;;AAfF;EAAwB;;;AACx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;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAQF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAwB;;;EACxB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AC/DN;EAAkB;;;AAIlB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;ECTE;EACA;EACA;;;ADeE;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AzDqCxB;EyDvCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AAM5B;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AAInB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AAIvB;EAAc;;;AEvCZ;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AANN;EACE;;;ApEUF;EoELM;;;AFuCR;EAAa;;;AACb;EAAc;;;AAEd;EAAiB;;;AACjB;EAAiB;;;AAIjB;EGvDE;EACA;EACA;EACA;EACA;;;AHuDF;EAAwB;;;AAExB;EACE;EACA;;;AAKF;EAAc;;;AIjEd;EACE;;;AAGF;EACE;;;ACAA;EACE;AAAA;AAAA;IAKE;IAEA;;;EAIA;IACE;;;EASJ;IACE;;;EAcF;IACE;;;EAEF;AAAA;IAEE;IACA;;;EAQF;IACE;;;EAGF;AAAA;IAEE;;;EAGF;AAAA;AAAA;IAGE;IACA;;;EAGF;AAAA;IAEE;;;EAQF;IACE,MxE4hC8B;;EwE1hChC;IACE;;;EAEF;IACE;;;EAIF;IACE;;;EAEF;IACE;;;EAGF;IACE;;EAEA;AAAA;IAEE;;;EAKF;AAAA;IAEE;;;EAIJ;IACE;;EAEA;AAAA;AAAA;AAAA;IAIE,cxEvHG;;;EwE2HP;IACE;IACA,cxE7HK","file":"style.css"} \ No newline at end of file diff --git a/BeWoPlanerMobil/Content/style.scss b/BeWoPlanerMobil/Content/style.scss index d00b34d3b..5d86d4c42 100644 --- a/BeWoPlanerMobil/Content/style.scss +++ b/BeWoPlanerMobil/Content/style.scss @@ -1,4 +1,4 @@ -$theme-colors: ( "bewo-goal-rating": #0000ff,"bewo-dev": #00cf7c, "primary": #FF5A00, "bewo-customers": #3b7799, "bewo-service-records": #c80000, "bewo-calendar": #04b4d0, "bewo-is-about-to-expire": #FF0000, "bewo-expires-in-three-months": #FF9400, "bewo-group-booking": #f9e79f, "bewo-customer-card-header": #AB4A07, "bewo-employee": #45993B, "bewo-resource": #04B4D0, "bewo-task-red": #993B3B, "bewo-report": #995E3B); +$theme-colors: ("bewo-teams": #565999, "bewo-goal-rating": #0000ff,"bewo-dev": #00cf7c, "primary": #FF5A00, "bewo-customers": #3b7799, "bewo-service-records": #c80000, "bewo-calendar": #04b4d0, "bewo-is-about-to-expire": #FF0000, "bewo-expires-in-three-months": #FF9400, "bewo-group-booking": #f9e79f, "bewo-customer-card-header": #AB4A07, "bewo-employee": #45993B, "bewo-resource": #04B4D0, "bewo-task-red": #993B3B, "bewo-report": #995E3B); .no-underline { text-decoration: none !important diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index de51a7934..958d035b7 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -1,12 +1,10 @@ using System; using System.Collections.Generic; -using System.Collections.ObjectModel; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Web.Mvc; -using System.Web.Services.Description; using System.Windows.Forms; using BeWo.Service.ServiceImplementations; using BeWo.View.Navigation.Filter; @@ -101,35 +99,7 @@ namespace BeWoPlanerMobil.Controllers Model.ShowExpiredSupportConcepts = UserSettingsUtils.GetSettingValueAsBool(userSettings, SettingsKeys.ShowExpiredSupportConcepts); Model.ShowOnlyOwnSupportConcepts = UserSettingsUtils.GetSettingValueAsBool(userSettings, SettingsKeys.ShowOnlyMySupportConcepts); - if(Model.Zeitraum < 0) - { - int zeitraum; - var serviceRecordTimeInterval = MobileUserSettingsUtils.GetSettingValueAsEnum(userSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, ServiceRecordTimeInterval.LastWeek); - - switch(serviceRecordTimeInterval) - { - case ServiceRecordTimeInterval.LastWeek: - zeitraum = 7; - break; - case ServiceRecordTimeInterval.LastMonth: - zeitraum = 30; - break; - case ServiceRecordTimeInterval.Last3Month: - zeitraum = 7; - break; - case ServiceRecordTimeInterval.All: - zeitraum = 7; - break; - case ServiceRecordTimeInterval.ZeitraumWaehlen: - zeitraum = -1; - break; - default: - zeitraum = 7; - break; - } - - Model.Zeitraum = zeitraum; - } + InitializeInterval(userSettings); var customerFilter = MobileUserSettingsUtils.GetSettingValueAsEnum(userSettings, SettingsKeys.CustomerFilterInZeiterfassung, CustomerFilterEnum.MyCustomer); @@ -163,9 +133,9 @@ namespace BeWoPlanerMobil.Controllers Model.Dokutypes = Model.Dokutypes.OrderBy(s => s.ValueListEntryOid).ToArray(); } - if(MainModel.AllEmployees is null) + if(Model.AllEmployees is null) { - MainModel.AllEmployees = EmployeeService.GetAllActiveEmployeesCompact().OrderBy(e => e.LastName).ToList(); + Model.AllEmployees = EmployeeService.GetAllActiveEmployeesCompact().OrderBy(e => e.LastName).ToList(); } if (MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreationForOtherEmployees)) @@ -211,7 +181,11 @@ namespace BeWoPlanerMobil.Controllers { Model.SelectedConceptCostBearerRelations = new List(); } - + + if(Model.MultiBookingSelectedConceptCostBearerRelations is null) + { + Model.MultiBookingSelectedConceptCostBearerRelations = new List(); + } if(Model.SelectedEmployee is null) { @@ -249,7 +223,7 @@ namespace BeWoPlanerMobil.Controllers Model.HasAnyRatingTypes = OperationsService.GetAllRatingTypes().Any(); } - if(!(Model.CostBearer2SupportConceptOid is null)) + if(!(Model.CostBearer2SupportConceptOid is null) && Model.CostBearer2SupportConceptOid != -1) { LoadRecordsToModel(); } @@ -272,6 +246,31 @@ namespace BeWoPlanerMobil.Controllers return View(Model); } + [Authorize] + private void InitializeInterval(string userSettings) + { + Model.LastSelectedServiceRecordMonth = UserSettingsUtils.GetSettingValueAsDateTime(userSettings, SettingsKeys.LastSelectedServiceRecordMonth) ?? DateTime.Today; + + var serviceRecordTimeInterval = MobileUserSettingsUtils.GetSettingValueAsEnum(userSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, ServiceRecordTimeInterval.LastWeek); + + if(serviceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen && (Model.SelectedZeitraum?.StartDate is null || Model.SelectedZeitraum.EndDate is null)) + { + var today = DateTime.Today; + Model.SelectedZeitraum = new NullableDateTimeSpan(today.GetFirstOfMonth(), today); + } + + Model.LastSelectedServiceRecordTimeIntervalDays = UserSettingsUtils.GetSettingValueAsInteger(userSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays); + + Model.ServiceRecordTimeInterval = serviceRecordTimeInterval; + + if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl) + { + Model.SelectedZeitraum = new NullableDateTimeSpan(Model.LastSelectedServiceRecordMonth.Date.GetFirstOfMonth(), Model.LastSelectedServiceRecordMonth.Date.GetLastOfMonth()); + } + + CalculateSelectedDayCount(Model.LastSelectedServiceRecordTimeIntervalDays, Model.LastSelectedServiceRecordMonth, Model.SelectedZeitraum?.StartDate, Model.SelectedZeitraum?.EndDate); + } + [Authorize] public void LoadGoalRatings() { @@ -297,12 +296,14 @@ namespace BeWoPlanerMobil.Controllers { var rating = Model.GoalRatingTypes.FirstOrDefault(ratingType => ratingType.RatingTypeOid == ratingTypeOid); - var goal = Model.GetGoalByOid(goalOid.Value); + var allGoals = GetAllGoalsForSelectedSupportConcept(); - goal.RatingTypeOid = ratingTypeOid; - - if(Model.IsInEditingMode && Model.SelectedGoals.Any(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goal.ValueListEntryOid)) + var goal = allGoals.FirstOrDefault(g => g.ValueListEntryOid?.Equals(goalOid.Value) ?? false); + + if(!(goal is null) && Model.SelectedGoals.Any(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goal.ValueListEntryOid)) { + goal.RatingTypeOid = ratingTypeOid; + var selectedGoal = Model.SelectedGoals.FirstOrDefault(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goal.ValueListEntryOid); if(!(selectedGoal is null)) { @@ -310,12 +311,46 @@ namespace BeWoPlanerMobil.Controllers } } - return SerializeObject(new GoalRating(rating?.DisplayName ?? string.Empty, goal.ValueListEntryOid ?? 0)); + return SerializeObject(new GoalRating(rating?.DisplayName ?? string.Empty, goal?.ValueListEntryOid ?? 0)); } return null; } + private List _AllGoals; + private List GetAllGoalsForSelectedSupportConcept() + { + if(Model?.SelectedSupportConcept?.Goals is null) + { + return new List(); + } + + if(_AllGoals is null) + { + _AllGoals = new List(Model.SelectedSupportConcept.Goals); + } + + LoadParentGoals(Model.SelectedSupportConcept.Goals); + + return _AllGoals; + } + + private void LoadParentGoals(IEnumerable goals) + { + var parentGoalOids = goals.Where(goal => goal.ParentOid.HasValue).Select(goal => goal.ParentOid.Value).Distinct().ToList(); + + var parentGoals = CustomerService.GetSupportConceptGoalParents(parentGoalOids); + + _AllGoals.AddRangeIfElementsNotIn(parentGoals); + + var nextParentGoalOids = parentGoals.Where(goal => goal.ParentOid.HasValue).Select(goal => goal.ParentOid.Value).Distinct().ToList(); + + if(nextParentGoalOids.Any()) + { + LoadParentGoals(parentGoals); + } + } + [HttpPost] [Authorize] public ActionResult SetShowExpiredSupportConcepts(FormCollection pCollection) @@ -979,10 +1014,15 @@ namespace BeWoPlanerMobil.Controllers } } - Model.NewServiceRecord.DurationInStunden = ZeiterfassungsDauer.Minuten; + Model.NewServiceRecord.DurationInStunden = Model.IsShowingDurationInHours ? ZeiterfassungsDauer.Stunden : ZeiterfassungsDauer.Minuten; Model.NewServiceRecord.ServiceRecordFormat = ServiceRecordFormate.OriginaleZeiterfassung; + if(Model.IsEndDateVisible) + { + Model.NewServiceRecord.ServiceRecordFormat = ServiceRecordFormate.ZeiterfassungMitEndDatum; + } + Model.NewServiceRecord.Notice = string.IsNullOrEmpty(doku1) ? null : doku1; Model.NewServiceRecord.Notice2 = string.IsNullOrEmpty(doku2) ? null : doku2; @@ -1016,7 +1056,7 @@ namespace BeWoPlanerMobil.Controllers Model.NewServiceRecord.InsUser = $"{MobileSessionFacade.LoggedInEmployee.FirstName} {MobileSessionFacade.LoggedInEmployee.LastName}"; Model.NewServiceRecord.IsCreatedInMobileClient = true; - if(Model.IsInGroupBookingMode && Model.SelectedSupportConcepts.Count > 1) + if(Model.IsInGroupBookingMode && Model.GroupBookingSelectedSupportConcepts.Count > 1) { return Model.NewServiceRecord.ServiceRecordOid.HasValue ? SaveGroupBooking() : UpdateGroupBooking(); } @@ -1052,18 +1092,13 @@ namespace BeWoPlanerMobil.Controllers } Model.NewServiceRecord = new ServiceRecordDC(); - - if(selectedCostbearerSCRelOid.HasValue) - { - Model.ServiceRecords = OperationsService.FindServiceRecordsForLastDays(selectedCostbearerSCRelOid, Model.Zeitraum, Model.Employee.EmployeeOid).ToList(); - } } catch (Exception e) { Log.Error(e.Message, e); } - ResetGroupBookingMode(Model.IsInGroupBookingMode); + ResetBookingMode(Model.IsInGroupBookingMode ? BookingMode.GroupBookingMode : BookingMode.SingleBookingMode); return ResetEditingMode(); } @@ -1071,10 +1106,10 @@ namespace BeWoPlanerMobil.Controllers [Authorize] private ActionResult SaveGroupBooking() { - var employeeCount = Model.SelectedEmployees.Count; - var personCount = Model.SelectedSupportConcepts.Count; + var employeeCount = Model.GroupBookingSelectedEmployees.Count; + var personCount = Model.GroupBookingSelectedSupportConcepts.Count; - var cb2ScOids = (from scDc in Model.SelectedSupportConcepts + var cb2ScOids = (from scDc in Model.GroupBookingSelectedSupportConcepts where scDc.CostBearerRelations != null && scDc.CostBearerRelations.Count > 0 let costBearer2SupportConceptOid = scDc.CostBearerRelations[0].CostBearer2SupportConceptOid where costBearer2SupportConceptOid != null select costBearer2SupportConceptOid.Value).ToList(); @@ -1084,9 +1119,9 @@ namespace BeWoPlanerMobil.Controllers foreach(var dc in list) { - foreach(var emp in Model.SelectedEmployees) + foreach(var emp in Model.GroupBookingSelectedEmployees) { - var newDC = CloneServiceRecordForGroupBooking(dc); + var newDC = CloneServiceRecord(dc); newDC.Employee = emp; newDC.InsertedOn = DateTime.Now; @@ -1136,8 +1171,8 @@ namespace BeWoPlanerMobil.Controllers var group = OperationsService.GetServiceRecordGroup(dc.GroupOid.Value); UpdateServiceRecordGroup(group); - var employeeCount = Model.SelectedEmployees.Count; - var customerCount = Model.SelectedSupportConcepts.Count; + var employeeCount = Model.GroupBookingSelectedEmployees.Count; + var customerCount = Model.GroupBookingSelectedSupportConcepts.Count; group.EmployeeCount = employeeCount; group.CustomerCount = customerCount; @@ -1149,7 +1184,7 @@ namespace BeWoPlanerMobil.Controllers var cb2ScOids = new List(); - foreach(var scdc in Model.SelectedSupportConcepts) + foreach(var scdc in Model.GroupBookingSelectedSupportConcepts) { if(scdc.CostBearerRelations.Count > 0) { @@ -1194,7 +1229,7 @@ namespace BeWoPlanerMobil.Controllers } groupDuration = lRoundedDuration; - roundedDuration = Math.Round(groupDuration / Model.SelectedSupportConcepts.Count, 0 , MidpointRounding.AwayFromZero); + roundedDuration = Math.Round(groupDuration / Model.GroupBookingSelectedSupportConcepts.Count, 0 , MidpointRounding.AwayFromZero); } Model.NewServiceRecord.RoundedDuration = roundedDuration; @@ -1245,10 +1280,10 @@ namespace BeWoPlanerMobil.Controllers Model.NewServiceRecord = null; Model.SelectedServiceRecord = null; - Model.SelectedSupportConcepts = new List(); - Model.SelectedEmployees = new List(); + Model.GroupBookingSelectedSupportConcepts = new List(); + Model.GroupBookingSelectedEmployees = new List(); - ResetGroupBookingMode(false); + ResetBookingMode(BookingMode.SingleBookingMode); Model.IsInEditingMode = false; return ResetEditingMode(); @@ -1257,14 +1292,14 @@ namespace BeWoPlanerMobil.Controllers [Authorize] private IEnumerable CalculateGroupBookingDuration(int pEmployeeCount, int pCustomerCount, ICollection cb2ScOids) { - var compactSupportConcepts = CustomerServiceImp.GetCompactSupportConcepts((from sc in Model.SelectedSupportConcepts where sc.SupportConceptOid != null select sc.SupportConceptOid.Value).ToList(), GetUser().Employee.EmployeeOid); + var compactSupportConcepts = CustomerServiceImp.GetCompactSupportConcepts((from sc in Model.GroupBookingSelectedSupportConcepts where sc.SupportConceptOid != null select sc.SupportConceptOid.Value).ToList(), GetUser().Employee.EmployeeOid); - var nodes = (from supportConcept in Model.SelectedSupportConcepts let cb = supportConcept.CostBearerRelations.FirstOrDefault(f => cb2ScOids.Contains(f.CostBearer2SupportConceptOid.Value)) let sc = compactSupportConcepts.FirstOrDefault(f => f.SupportConceptOid == supportConcept.SupportConceptOid) where cb != null && sc != null select SupportConceptService.CreateFlatSupportConceptItem(sc, CustomerService.LoadOrganisationCompact(cb.CostBearer.OrganisationOid))).ToList(); + var nodes = (from supportConcept in Model.GroupBookingSelectedSupportConcepts let cb = supportConcept.CostBearerRelations.FirstOrDefault(f => cb2ScOids.Contains(f.CostBearer2SupportConceptOid.Value)) let sc = compactSupportConcepts.FirstOrDefault(f => f.SupportConceptOid == supportConcept.SupportConceptOid) where cb != null && sc != null select SupportConceptService.CreateFlatSupportConceptItem(sc, CustomerService.LoadOrganisationCompact(cb.CostBearer.OrganisationOid))).ToList(); var list = new List(); foreach(var node in nodes) { - var sc = CloneServiceRecordForGroupBooking(Model.NewServiceRecord); + var sc = CloneServiceRecord(Model.NewServiceRecord); if(Model.NewServiceRecord.RoundedDuration == 0) { @@ -1302,7 +1337,7 @@ namespace BeWoPlanerMobil.Controllers { roundDuration = true; - foreach(var org in from dc in Model.SelectedSupportConcepts where dc.CostBearerRelations.Count > 0 select dc.CostBearerRelations.First().CostBearer) + foreach(var org in from dc in Model.GroupBookingSelectedSupportConcepts where dc.CostBearerRelations.Count > 0 select dc.CostBearerRelations.First().CostBearer) { if(org != null) { @@ -1376,9 +1411,9 @@ namespace BeWoPlanerMobil.Controllers var oldEmps = new Dictionary(); var newKeys = new Dictionary(); - foreach(var sc in Model.SelectedSupportConcepts) + foreach(var sc in Model.GroupBookingSelectedSupportConcepts) { - foreach(var emp in Model.SelectedEmployees) + foreach(var emp in Model.GroupBookingSelectedEmployees) { var key = emp.EmployeeOid + "_" + sc.SupportConceptOid; if(sc.CostBearerRelations != null && sc.CostBearerRelations.Count > 0) @@ -1426,9 +1461,9 @@ namespace BeWoPlanerMobil.Controllers { if(newKeys.Count > 0) { - foreach(var sc in Model.SelectedSupportConcepts) + foreach(var sc in Model.GroupBookingSelectedSupportConcepts) { - foreach(var emp in Model.SelectedEmployees) + foreach(var emp in Model.GroupBookingSelectedEmployees) { var key = emp.EmployeeOid + "_" + sc.SupportConceptOid; @@ -1450,7 +1485,7 @@ namespace BeWoPlanerMobil.Controllers } else { - newServiceRecord = CloneServiceRecordForGroupBooking(Model.NewServiceRecord); + newServiceRecord = CloneServiceRecord(Model.NewServiceRecord); pGroupDC.ServiceRecordList.Add(newServiceRecord); } @@ -1621,7 +1656,13 @@ namespace BeWoPlanerMobil.Controllers var splitOids = pGoalOids.Trim(';').Split(';'); var selectedGoalOids = splitOids.Select(long.Parse).ToList(); - var goals = sc.Goals.Where(w => w.ValueListEntryOid.HasValue && selectedGoalOids.Contains(w.ValueListEntryOid.Value)).ToList(); + var allGoals = sc.Goals; + var parents = CustomerService.GetSupportConceptGoalParents(allGoals.Where(w => w.ParentOid.HasValue).Select(s => s.ParentOid.Value).ToList()); + + allGoals.AddRangeIfElementsNotIn(parents); + + var goals = allGoals.Where(w => w.ValueListEntryOid.HasValue && selectedGoalOids.Contains(w.ValueListEntryOid.Value)).ToList(); + // ToDo: Hier liegt der Bug! // ToDo: vorhandene Bewertungen beachten! @@ -1652,27 +1693,102 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public ActionResult LoadServiceRecords(FormCollection formCollection) { - if (Model is null) + if(Model is null) { return Logout(); } - var zeitraum = int.Parse(formCollection[FormCollectionConstants.RecordsKey]); - if (zeitraum < 0) - { - zeitraum = 7; - } + int.TryParse(formCollection["day-count-number"], out var dayCountNumber); + var successfullStartParsing = DateTime.TryParse(formCollection["von"], out var parsedVon); + var successfullEndParsing = DateTime.TryParse(formCollection["bis"], out var parsedBis); + int.TryParse(formCollection["month-select"], out var month); + int.TryParse(formCollection["year-select"], out var year); - Model.Zeitraum = zeitraum; + var lastSelectedServiceRecordMonth = new DateTime(year, month, 1); + + if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen) + { + if(!successfullStartParsing) + { + parsedVon = DateTime.Today.GetFirstOfMonth(); + } + + if(!successfullEndParsing) + { + parsedBis = DateTime.Today; + } + + if(parsedVon > parsedBis) + { + (parsedVon, parsedBis) = (parsedBis, parsedVon); + } + + Model.SelectedZeitraum = new NullableDateTimeSpan(parsedVon, parsedBis); + } + + var serviceRecordTimeInterval = (ServiceRecordTimeInterval) int.Parse(formCollection[FormCollectionConstants.RecordsKey]); + + Model.ServiceRecordTimeInterval = serviceRecordTimeInterval; + + CalculateSelectedDayCount(dayCountNumber, lastSelectedServiceRecordMonth, parsedVon, parsedBis); + + UpdateUserSettingsWithoutReload(SettingsKeys.LastSelectedServiceRecordTimeInterval, ((int) serviceRecordTimeInterval).ToString()); LoadRecordsToModel(); return RedirectToActionPermanent("Main"); } + private void CalculateSelectedDayCount(int? dayCountNumber, DateTime? lastSelectedServiceRecordMonth, DateTime? von, DateTime? bis) + { + if(dayCountNumber is null) + { + dayCountNumber = 0; + } + + if(lastSelectedServiceRecordMonth is null) + { + lastSelectedServiceRecordMonth = DateTime.Today.AddMonths(-1); + } + + if(von is null || bis is null) + { + von = DateTime.Today.GetFirstOfMonth(); + bis = DateTime.Today; + } + + Model.SelectedDayCount = 0; + + switch(Model.ServiceRecordTimeInterval) + { + case ServiceRecordTimeInterval.LastWeek: + Model.SelectedDayCount = 7; + break; + case ServiceRecordTimeInterval.LastMonth: + Model.SelectedDayCount = 30; + break; + case ServiceRecordTimeInterval.Last3Month: + Model.SelectedDayCount = 90; + break; + case ServiceRecordTimeInterval.XTage: + Model.SelectedDayCount = dayCountNumber.Value; + Model.LastSelectedServiceRecordTimeIntervalDays = dayCountNumber.Value; + UpdateUserSettingsWithoutReload(SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, dayCountNumber.ToString()); + break; + case ServiceRecordTimeInterval.Monatsauswahl: + Model.LastSelectedServiceRecordMonth = lastSelectedServiceRecordMonth.Value; + Model.SelectedDayCount = lastSelectedServiceRecordMonth.Value.Date.GetDaysInMonth(); + UpdateUserSettingsWithoutReload(SettingsKeys.LastSelectedServiceRecordMonth, lastSelectedServiceRecordMonth.Value.ToString("dd.MM.yyyy HH:mm:ss")); + break; + case ServiceRecordTimeInterval.ZeitraumWaehlen: + Model.SelectedZeitraum = new NullableDateTimeSpan(von.Value, bis.Value); + break; + } + } + private void LoadRecordsToModel() { - if (Model is null) + if(Model?.Employee?.EmployeeOid is null) { Logout(); return; @@ -1680,12 +1796,35 @@ namespace BeWoPlanerMobil.Controllers Model.ServiceRecords = new List(); - if (Model.Zeitraum < 0 || Model.CostBearer2SupportConceptOid.HasValue && Model.CostBearer2SupportConceptOid.Value == -1) + if(Model.CostBearer2SupportConceptOid.HasValue && Model.CostBearer2SupportConceptOid.Value == -1) { return; } - var records = OperationsService.FindServiceRecordsForLastDays(Model.CostBearer2SupportConceptOid < 1 ? null : Model.CostBearer2SupportConceptOid, Model.Zeitraum, Model.Employee.EmployeeOid); + var records = new List(); + + if(Model.SelectedZeitraum?.StartDate is null || Model.SelectedZeitraum.EndDate is null) + { + Model.SelectedZeitraum = new NullableDateTimeSpan(DateTime.Today.GetFirstOfMonth(), DateTime.Today); + } + + var selectedDayCount = (long?) (Model.SelectedDayCount == 0 ? null : (int?) Model.SelectedDayCount); + + // Ohne Hilfeplan + if(Model.CostBearer2SupportConceptOid is null || Model.CostBearer2SupportConceptOid < 1) + { + records = Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen || Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl ? + OperationsService.GetEmployeesServiceRecordsWithStartEndDate(Model.Employee.EmployeeOid.Value, Model.SelectedZeitraum.StartDate.Value, Model.SelectedZeitraum.EndDate.Value).ToList() : + OperationsService.GetEmployeesServiceRecords2(Model.Employee.EmployeeOid.Value, selectedDayCount).ToList(); + } + else + { + records = Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen || Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl ? + OperationsService.GetCustomerServiceRecordsWithStartEndDate(Model.SelectedSupportConcept.Customer.CustomerOid, Model.CostBearer2SupportConceptOid.Value, Model.SelectedZeitraum.StartDate.Value, Model.SelectedZeitraum.EndDate.Value) : + OperationsService.FindServiceRecordsForLastDays(Model.CostBearer2SupportConceptOid, Model.SelectedDayCount, Model.Employee.EmployeeOid.Value).ToList(); + } + + //records = OperationsService.FindServiceRecordsForLastDays(Model.CostBearer2SupportConceptOid < 1 ? null : Model.CostBearer2SupportConceptOid, dayCount, Model.Employee.EmployeeOid).ToList(); var recordsOhneDuplikate = new List(); foreach(var r in records.Where(r => !recordsOhneDuplikate.Any(a => a.GroupOid.HasValue && a.GroupOid.Value.Equals(r.GroupOid)))) @@ -1756,7 +1895,7 @@ namespace BeWoPlanerMobil.Controllers var employees = group.ServiceRecordList.Select(serviceRecord => serviceRecord.Employee).Distinct().ToList(); - Model.SelectedEmployees = employees; + Model.GroupBookingSelectedEmployees = employees; var cb2ScOids = group.ServiceRecordList.Where(w => w.CostBearer2SupportConceptOid.HasValue).Select(s => s.CostBearer2SupportConceptOid.Value).ToList(); Model.SelectedConceptCostBearerRelations.AddRangeIfElementsNotIn(OperationsService.GetSupportConceptCostBearerRelDCsByOids(cb2ScOids)); @@ -1764,7 +1903,7 @@ namespace BeWoPlanerMobil.Controllers var selectedSupportConcepts = new List(); selectedSupportConcepts.AddRangeIfElementsNotIn(OperationsService.GetSupportConceptsById(group.ServiceRecordList.Select(s => s.SupportConcept.SupportConceptOid))); - Model.SelectedSupportConcepts = selectedSupportConcepts; + Model.GroupBookingSelectedSupportConcepts = selectedSupportConcepts; } return RedirectToActionPermanent("Main"); @@ -1864,7 +2003,7 @@ namespace BeWoPlanerMobil.Controllers checkServiceRecord.Employee = Model.SelectedEmployee ?? MobileSessionFacade.LoggedInCompactEmployee; - if (Model.SelectedEmployee != null && !Model.IsInGroupBookingMode) + if (Model.SelectedEmployee != null && !Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode) { var sc = Model.SupportConcepts.FirstOrDefault(fod => fod.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid.HasValue && a.CostBearer2SupportConceptOid.Value.Equals(Model.CostBearer2SupportConceptOid))); @@ -1916,12 +2055,18 @@ namespace BeWoPlanerMobil.Controllers stats = OperationsService.CreateSupportConceptStatistics(Model.CostBearer2SupportConceptOid.Value, DateTime.Now); } - var employees = new List {checkServiceRecord.Employee.EmployeeOid}; + var employeeOids = new List {checkServiceRecord.Employee.EmployeeOid}; var validationResults = new List(); checkServiceRecord.ServiceRecordFormat = ServiceRecordFormate.OriginaleZeiterfassung; - checkServiceRecord.DurationInStunden = ZeiterfassungsDauer.Minuten; + + if(Model.IsEndDateVisible) + { + checkServiceRecord.ServiceRecordFormat = ServiceRecordFormate.ZeiterfassungMitEndDatum; + } + + checkServiceRecord.DurationInStunden = Model.IsShowingDurationInHours ? ZeiterfassungsDauer.Stunden : ZeiterfassungsDauer.Minuten; string dateRangeString = null; @@ -1931,11 +2076,11 @@ namespace BeWoPlanerMobil.Controllers { var serviceRecordGroup = OperationsService.GetServiceRecordGroup(checkServiceRecord.GroupOid.Value); - serviceRecordGroup.ServiceRecordList.DoForEach(sr => employees.AddIfNotIn(sr.Employee.EmployeeOid)); + serviceRecordGroup.ServiceRecordList.DoForEach(sr => employeeOids.AddIfNotIn(sr.Employee.EmployeeOid)); } else { - Model.SelectedEmployees.DoForEach(e => employees.AddIfNotIn(e.EmployeeOid)); + Model.GroupBookingSelectedEmployees.DoForEach(e => employeeOids.AddIfNotIn(e.EmployeeOid)); } var cb2ScOids = Model.SelectedConceptCostBearerRelations.Where(w => w.CostBearer2SupportConceptOid.HasValue).Select(s => s.CostBearer2SupportConceptOid.Value).ToList(); @@ -1944,20 +2089,19 @@ namespace BeWoPlanerMobil.Controllers foreach (var rel in relations) { - var sr = CloneServiceRecordForGroupBooking(checkServiceRecord); + var sr = CloneServiceRecord(checkServiceRecord); sr.SupportConcept = rel.SupportConcept; sr.CostBearer = rel.CostBearer; sr.CostBearer2SupportConceptOid = rel.CostBearer2SupportConceptOid; - - var result = OperationsService.ValidateServiceRecord(sr, null, maxDaysEditSRsAllowed, employees, cb2ScOids); + var result = OperationsService.ValidateServiceRecord(sr, null, maxDaysEditSRsAllowed, employeeOids, cb2ScOids); dateRangeString = rel.DateRangeString; validationResults.Add(new ServiceRecord2Validation(sr, result, dateRangeString)); } } - else + else if(!Model.IsInMultiBookingMode) { if (Model.SelectedSupportConcept != null) { @@ -1965,9 +2109,37 @@ namespace BeWoPlanerMobil.Controllers dateRangeString = node?.SupportConceptTreeNodeDC != null ? node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC.DateRangeString : ""; } - var result = OperationsService.ValidateServiceRecordEntry(checkServiceRecord, stats, maxDaysEditSRsAllowed, checkServiceRecord.GroupOid.HasValue, employees); + var result = OperationsService.ValidateServiceRecordEntry(checkServiceRecord, stats, maxDaysEditSRsAllowed, checkServiceRecord.GroupOid.HasValue, employeeOids); validationResults.Add(new ServiceRecord2Validation(checkServiceRecord, result, dateRangeString ?? "")); } + else if(Model.IsInMultiBookingMode && !Model.IsInGroupBookingMode) + { + employeeOids.AddRangeIfElementsNotIn(Model.MultiBookingSelectedEmployees.Select(e => e.EmployeeOid)); + + var cb2ScOids = Model.MultiBookingSelectedConceptCostBearerRelations.Where(w => w.CostBearer2SupportConceptOid.HasValue).Select(s => s.CostBearer2SupportConceptOid.Value).ToList(); + var relations = CustomerService.GetSupportConceptCostBearerRelationsById(cb2ScOids); + + foreach(var costBearer2SupportConceptRel in relations) + { + dateRangeString = costBearer2SupportConceptRel.DateRangeString ?? string.Empty; + var prototype = CloneServiceRecord(checkServiceRecord); + prototype.Customer = costBearer2SupportConceptRel.SupportConcept.Customer; + prototype.SupportConcept = costBearer2SupportConceptRel.SupportConcept; + prototype.CostBearer = costBearer2SupportConceptRel.CostBearer; + prototype.CostBearer2SupportConceptOid = costBearer2SupportConceptRel.CostBearer2SupportConceptOid; + + var organisation = CustomerService.LoadOrganisationCompact(costBearer2SupportConceptRel.CostBearer.OrganisationOid); + if(!(organisation is null)) + { + var calculations = Calculations.GetInstance(organisation.CostBearerID); + prototype.RoundedDuration = calculations.GetRoundedDuration(organisation, dauer); + } + + var multiBookingValidationResults = OperationsService.ValidateServiceRecord(prototype, null, maxDaysEditSRsAllowed, employeeOids, cb2ScOids); + + validationResults.Add(new ServiceRecord2Validation(prototype, multiBookingValidationResults, dateRangeString)); + } + } var allowOverlappingFLS = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLS); var allowOverlappingFLSForEmployee = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLSForEmployee); @@ -2175,7 +2347,7 @@ namespace BeWoPlanerMobil.Controllers return _LeerzeichenFuerGetMethoden; } - Model.SelectedEmployee = MainModel.AllEmployees.First(f => f.EmployeeOid.Equals(employeeOid)); + Model.SelectedEmployee = Model.AllEmployees.First(f => f.EmployeeOid.Equals(employeeOid)); return _LeerzeichenFuerGetMethoden; } catch (Exception e) @@ -2183,15 +2355,15 @@ namespace BeWoPlanerMobil.Controllers Log.Info("Error in SetServiceRecordEmployee:"); Log.Error(e.Message, e); - if (MainModel.AllEmployees is null) + if (Model.AllEmployees is null) { Log.Info("Weitere Infos: AllEmployees = null!"); } else { - Log.Info($"Weitere Infos: AllEmployees enthält {MainModel.AllEmployees.Count} Elemente: "); + Log.Info($"Weitere Infos: AllEmployees enthält {Model.AllEmployees.Count} Elemente: "); var stringBuilder = new StringBuilder(); - foreach (var ce in MainModel.AllEmployees) + foreach (var ce in Model.AllEmployees) { if (stringBuilder.Length > 0) { @@ -2276,9 +2448,9 @@ namespace BeWoPlanerMobil.Controllers return Logout(); } - var isInGroupBookingMode = "true,false" == pFormCollection[FormCollectionConstants.IsInGroupBookingModeKey]; + var bookingMode = "true,false" == pFormCollection[FormCollectionConstants.IsInGroupBookingModeKey] ? BookingMode.GroupBookingMode : BookingMode.SingleBookingMode; - ResetGroupBookingMode(isInGroupBookingMode); + ResetBookingMode(bookingMode); return RedirectToAction("Main"); } @@ -2289,7 +2461,7 @@ namespace BeWoPlanerMobil.Controllers /// /// Wenn true, wird davon ausgegangen, dass man von der Einzelbuchung in eine Gruppenbuchung wechselt und es wird sich der vorher ausgewählte Mitarbeiter und Hilfeplan gemerkt. /// Bei false wird davon ausgegangen, dass man von der Gruppenbuchung in eine Einzelbuchung wechselt und der vorher ausgewählte Mitarbeiter und Hilfeplan wird automatisch ausgewählt. - private void ResetGroupBookingMode(bool pIsInGroupBookingMode) + private void ResetBookingMode(BookingMode bookingMode) { if (Model is null) { @@ -2297,10 +2469,13 @@ namespace BeWoPlanerMobil.Controllers return; } - Model.IsInGroupBookingMode = pIsInGroupBookingMode; + Model.IsInGroupBookingMode = bookingMode == BookingMode.GroupBookingMode; + Model.IsInMultiBookingMode = bookingMode == BookingMode.MultiBookingMode; - if (pIsInGroupBookingMode) + if(bookingMode == BookingMode.GroupBookingMode) { + ResetMultiBookingMode(); + Model.PreviouslySelectedEmployee = Model.SelectedEmployee; Model.PreviouslySelectedSupportConcept = Model.SelectedSupportConcept; @@ -2309,23 +2484,43 @@ namespace BeWoPlanerMobil.Controllers Model.ServiceCategories = CreateServiceCategoryModels(OperationsService.GetAllServiceDescriptions()); - Model.SelectedEmployees.AddIfNotIn(MobileSessionFacade.LoggedInCompactEmployee); + Model.GroupBookingSelectedEmployees.AddIfNotIn(MobileSessionFacade.LoggedInCompactEmployee); Model.IsInEditingMode = false; Model.SelectedServiceRecord = null; } - else + + if(bookingMode == BookingMode.MultiBookingMode) { - Model.SelectedEmployee = Model.PreviouslySelectedEmployee; + ResetGroupBookingMode(); + + Model.PreviouslySelectedEmployee = Model.SelectedEmployee; + Model.PreviouslySelectedSupportConcept = Model.SelectedSupportConcept; + + Model.SelectedSupportConcept = null; + Model.SelectedEmployee = null; + + Model.ServiceCategories = CreateServiceCategoryModels(OperationsService.GetAllServiceDescriptions()); + + Model.MultiBookingSelectedEmployees.AddIfNotIn(MobileSessionFacade.LoggedInCompactEmployee); + + Model.IsInEditingMode = false; + Model.SelectedServiceRecord = null; + + Model.GroupBookingSelectedCostbearerRelOids.Clear(); + Model.GroupBookingSelectedEmployees.Clear(); + Model.GroupBookingSelectedSupportConcepts.Clear(); + Model.SelectedConceptCostBearerRelations.Clear(); + } + + if(bookingMode == BookingMode.SingleBookingMode) + { + ResetMultiBookingMode(); + + Model.SelectedEmployee = Model.PreviouslySelectedEmployee ?? MobileSessionFacade.LoggedInCompactEmployee; Model.SelectedSupportConcept = Model.PreviouslySelectedSupportConcept; - Model.ServiceCategories.Clear(); - Model.SelectedCostbearerRelOids.Clear(); - Model.SelectedEmployees.Clear(); - Model.SelectedSupportConcepts.Clear(); - Model.SelectedConceptCostBearerRelations.Clear(); - - Model.SelectedEmployee = MobileSessionFacade.LoggedInCompactEmployee; + ResetGroupBookingMode(); if (Model.SelectedSupportConcept != null) { @@ -2345,6 +2540,26 @@ namespace BeWoPlanerMobil.Controllers } } + private void ResetMultiBookingMode() + { + Model.ServiceCategories.Clear(); + Model.MultiBookingSelectedConceptCostBearerRelations.Clear(); + Model.MultiBookingSelectedEmployees.Clear(); + Model.MultiBookingSelectedGroupOfPeopleOids.Clear(); + Model.MultiBookingSelectedCostbearerRelOids.Clear(); + Model.MultiBookingSelectedSupportConcepts.Clear(); + Model.MultiBookingSupportConceptListObjects.Clear(); + } + + private void ResetGroupBookingMode() + { + Model.ServiceCategories.Clear(); + Model.GroupBookingSelectedCostbearerRelOids.Clear(); + Model.GroupBookingSelectedEmployees.Clear(); + Model.GroupBookingSelectedSupportConcepts.Clear(); + Model.SelectedConceptCostBearerRelations.Clear(); + } + [HttpPost] [Authorize] public ActionResult ResetEditingMode() @@ -2357,12 +2572,15 @@ namespace BeWoPlanerMobil.Controllers Model.NewServiceRecord = new ServiceRecordDC(); Model.SelectedServiceRecord = null; Model.IsInEditingMode = false; - Model.SelectedSupportConcepts.Clear(); + Model.GroupBookingSelectedSupportConcepts.Clear(); Model.SelectedConceptCostBearerRelations.Clear(); - Model.SelectedCostbearerRelOids.Clear(); - Model.SelectedGroupOfPeopleOids.Clear(); - Model.SelectedEmployees = new List { MobileSessionFacade.LoggedInCompactEmployee }; + Model.GroupBookingSelectedCostbearerRelOids.Clear(); + Model.GroupBookingSelectedGroupOfPeopleOids.Clear(); + Model.GroupBookingSelectedEmployees = new List { MobileSessionFacade.LoggedInCompactEmployee }; Model.SelectedEmployee = MobileSessionFacade.LoggedInCompactEmployee; + Model.IsInMultiBookingMode = false; + Model.MultiBookingSelectedCostbearerRelOids.Clear(); + Model.MultiBookingSelectedEmployees.Clear(); LoadServiceCategoriesToModel(Model.CostBearer2SupportConceptOid); @@ -2398,7 +2616,7 @@ namespace BeWoPlanerMobil.Controllers rawRelOids.DoForEach(s => relOids.AddIfNotIn(long.Parse(s))); - Model.SelectedGroupOfPeopleOids.Clear(); + Model.GroupBookingSelectedGroupOfPeopleOids.Clear(); rawGroupOids.DoForEach(s => { @@ -2412,10 +2630,10 @@ namespace BeWoPlanerMobil.Controllers group.SupportConceptList.DoForEach(f => relOids.AddRangeIfElementsNotIn(f.CostBearerRelOids)); }); - Model.SelectedSupportConcepts.Clear(); + Model.GroupBookingSelectedSupportConcepts.Clear(); - Model.SelectedCostbearerRelOids.Clear(); - Model.SelectedCostbearerRelOids.AddRangeIfElementsNotIn(relOids); + Model.GroupBookingSelectedCostbearerRelOids.Clear(); + Model.GroupBookingSelectedCostbearerRelOids.AddRangeIfElementsNotIn(relOids); var selectedSupportConcepts = Model.SupportConcepts.Where(w => w != null && w.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid.HasValue && relOids.Contains(a.CostBearer2SupportConceptOid.Value))).ToList(); @@ -2424,7 +2642,7 @@ namespace BeWoPlanerMobil.Controllers Model.SelectedConceptCostBearerRelations.Clear(); Model.SelectedConceptCostBearerRelations.AddRangeIfElementsNotIn(groupCostBearerRelations); - Model.SelectedSupportConcepts.AddRangeIfElementsNotIn(selectedSupportConcepts); + Model.GroupBookingSelectedSupportConcepts.AddRangeIfElementsNotIn(selectedSupportConcepts); foreach (var gruppe in groups.Where(g => g.GroupOfPeopleOid.HasValue)) { @@ -2440,11 +2658,11 @@ namespace BeWoPlanerMobil.Controllers if (relOids.ContainsItems(groupRelOids)) { - Model.SelectedGroupOfPeopleOids.AddIfNotIn(groupOid); + Model.GroupBookingSelectedGroupOfPeopleOids.AddIfNotIn(groupOid); } - else if (Model.SelectedGroupOfPeopleOids.Contains(groupOid)) + else if (Model.GroupBookingSelectedGroupOfPeopleOids.Contains(groupOid)) { - Model.SelectedGroupOfPeopleOids.Remove(groupOid); + Model.GroupBookingSelectedGroupOfPeopleOids.Remove(groupOid); } } @@ -2462,18 +2680,18 @@ namespace BeWoPlanerMobil.Controllers long.TryParse(pRelOid, out var supportConceptCostBearerRelationOid); - var supportConcept = Model.SelectedSupportConcepts.FirstOrDefault(f => f.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid)); + var supportConcept = Model.GroupBookingSelectedSupportConcepts.FirstOrDefault(f => f.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid)); var relation = Model.SelectedConceptCostBearerRelations.FirstOrDefault(f => f.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid); - Model.SelectedSupportConcepts.Remove(supportConcept); + Model.GroupBookingSelectedSupportConcepts.Remove(supportConcept); Model.SelectedConceptCostBearerRelations.Remove(relation); - var selectedGroups = Model.GroupsOfPeople.Where(group => group.GroupOfPeopleOid.HasValue && Model.SelectedGroupOfPeopleOids.Contains(group.GroupOfPeopleOid.Value)).ToList(); + var selectedGroups = Model.GroupsOfPeople.Where(group => group.GroupOfPeopleOid.HasValue && Model.GroupBookingSelectedGroupOfPeopleOids.Contains(group.GroupOfPeopleOid.Value)).ToList(); - var groups = selectedGroups.Where(group => group.SupportConceptList.All(a => Model.SelectedSupportConcepts.Where(w => w.SupportConceptOid.HasValue).Select(s => s.SupportConceptOid.Value).Contains(a.SupportConceptOid))); + var groups = selectedGroups.Where(group => group.SupportConceptList.All(a => Model.GroupBookingSelectedSupportConcepts.Where(w => w.SupportConceptOid.HasValue).Select(s => s.SupportConceptOid.Value).Contains(a.SupportConceptOid))); - Model.SelectedGroupOfPeopleOids = groups.Where(group => group.GroupOfPeopleOid.HasValue).Select(group => group.GroupOfPeopleOid.Value).ToList(); + Model.GroupBookingSelectedGroupOfPeopleOids = groups.Where(group => group.GroupOfPeopleOid.HasValue).Select(group => group.GroupOfPeopleOid.Value).ToList(); return SerializeObject(Model.GroupBookingSelectionObject); } @@ -2489,8 +2707,8 @@ namespace BeWoPlanerMobil.Controllers if(string.IsNullOrEmpty(pEmployeeOids)) { - Model.SelectedEmployees.Clear(); - return JsonConvert.SerializeObject(Model.SelectedEmployees.Count); + Model.GroupBookingSelectedEmployees.Clear(); + return JsonConvert.SerializeObject(Model.GroupBookingSelectedEmployees.Count); } var rawEmployeeOids = pEmployeeOids.Split(','); @@ -2500,10 +2718,10 @@ namespace BeWoPlanerMobil.Controllers var employees = Model.Employees.Where(w => oids.Contains(w.EmployeeOid)); - Model.SelectedEmployees.Clear(); - Model.SelectedEmployees.AddRangeIfElementsNotIn(employees); + Model.GroupBookingSelectedEmployees.Clear(); + Model.GroupBookingSelectedEmployees.AddRangeIfElementsNotIn(employees); - return JsonConvert.SerializeObject(Model.SelectedEmployees.Count); + return JsonConvert.SerializeObject(Model.GroupBookingSelectedEmployees.Count); } [Authorize] @@ -2567,7 +2785,7 @@ namespace BeWoPlanerMobil.Controllers { if(Model.SelectedConceptCostBearerRelations.Count == 1) { - var cb2ScOids = (from scDc in Model.SelectedSupportConcepts + var cb2ScOids = (from scDc in Model.GroupBookingSelectedSupportConcepts where scDc.CostBearerRelations != null && scDc.CostBearerRelations.Count > 0 let costBearer2SupportConceptOid = scDc.CostBearerRelations[0].CostBearer2SupportConceptOid where costBearer2SupportConceptOid != null @@ -2728,10 +2946,15 @@ namespace BeWoPlanerMobil.Controllers } } - Model.NewServiceRecord.DurationInStunden = ZeiterfassungsDauer.Minuten; + Model.NewServiceRecord.DurationInStunden = Model.IsZeiterfassungInStdMin ? ZeiterfassungsDauer.Stunden : ZeiterfassungsDauer.Minuten; Model.NewServiceRecord.ServiceRecordFormat = ServiceRecordFormate.OriginaleZeiterfassung; + if(Model.IsEndDateVisible) + { + Model.NewServiceRecord.ServiceRecordFormat = ServiceRecordFormate.ZeiterfassungMitEndDatum; + } + Model.NewServiceRecord.Notice = string.IsNullOrEmpty(doku1) ? null : doku1; Model.NewServiceRecord.Notice2 = string.IsNullOrEmpty(doku2) ? null : doku2; @@ -2803,5 +3026,350 @@ namespace BeWoPlanerMobil.Controllers return _LeerzeichenFuerGetMethoden; } + + + + #region Mehrfachbuchung + + [Authorize] + [HttpPost] + public ActionResult SetMultiBookingMode(FormCollection formCollection) + { + if(Model is null) + { + return Logout(); + } + + try + { + var isInMultiBookingMode = "true,false" == formCollection[FormCollectionConstants.IsInMultiBookingModeKey]; + + Model.IsInMultiBookingMode = isInMultiBookingMode; + + ResetBookingMode(isInMultiBookingMode ? BookingMode.MultiBookingMode : BookingMode.SingleBookingMode); + } + catch(Exception exception) + { + Log.Error(exception.Message, exception); + } + + return RedirectToAction("Main"); + } + + [Authorize] + [HttpPost] + public ActionResult CreateMultiBooking(FormCollection formCollection) + { + if(Model is null) + { + return Logout(); + } + + try + { + string doku1; + + if(Model.Dokutypes != null && Model.Dokutypes.Length > 0) + { + doku1 = formCollection[FormCollectionConstants.Dokumentation1Key]; + } + else + { + doku1 = formCollection[FormCollectionConstants.Dokumentation6Key]; + } + + // Wenn kein Datum angegeben wurde, wird die Main-Seite geladen und abgebrochen + if(string.IsNullOrEmpty(formCollection[FormCollectionConstants.DateKey])) + { + return View("Main", Model); + } + + var distanz = formCollection[FormCollectionConstants.DistanceKey]; + var distanceInMeters = 0; + + if(!string.IsNullOrEmpty(distanz)) + { + if(int.TryParse(distanz, out var parsedDistance)) + { + distanceInMeters = parsedDistance; + } + } + + var selectedCostbearer2SupportConceptRelOid = Model.CostBearer2SupportConceptOid < 1 ? null : Model.CostBearer2SupportConceptOid; + var datum = Convert.ToDateTime(formCollection[FormCollectionConstants.DateKey]); + + var enddatum = datum; + + var endDateString = formCollection[FormCollectionConstants.EndDateKey]; + if(endDateString != null) + { + enddatum = Convert.ToDateTime(endDateString); + } + + var start = formCollection[FormCollectionConstants.StartKey]; + var ende = formCollection[FormCollectionConstants.EndKey]; + var dauer = 0; + + if(datum > enddatum) + { + enddatum = datum; + } + + if(!string.IsNullOrEmpty(formCollection[FormCollectionConstants.DurationKey])) + { + int.TryParse(formCollection[FormCollectionConstants.DurationKey], out dauer); + } + + var doku2 = formCollection[FormCollectionConstants.Dokumentation2Key]; + var doku3 = formCollection[FormCollectionConstants.Dokumentation3Key]; + var doku4 = formCollection[FormCollectionConstants.Dokumentation4Key]; + var doku5 = formCollection[FormCollectionConstants.Dokumentation5Key]; + + var zeitenFeld = new DateTime[2]; + + if(start == string.Empty && ende == string.Empty) + { + zeitenFeld[0] = new DateTime(datum.Year, datum.Month, datum.Day, 0, 0, 1); + + if(enddatum == datum) + { + zeitenFeld[1] = new DateTime(datum.Year, datum.Month, datum.Day, 0, 0, 1).AddMinutes(dauer); + } + else + { + zeitenFeld[1] = new DateTime(enddatum.Year, enddatum.Month, enddatum.Day, 0, 0, 1).AddMinutes(dauer); + } + } + else + { + zeitenFeld = enddatum == datum ? ConvertRecordTimes(start, ende, datum, dauer) : ConvertRecordTimesWithEndDate(start, ende, datum, enddatum, dauer); + } + + if(dauer == 0 || zeitenFeld[1] != zeitenFeld[0]) + { + dauer = (int)(zeitenFeld[1] - zeitenFeld[0]).TotalMinutes; + } + + var serviceRecordsToInsert = new List(); + + if(Model.MultiBookingSelectedConceptCostBearerRelations.Any() && Model.MultiBookingSelectedEmployees.Any()) + { + foreach(var sc2cbRel in Model.MultiBookingSelectedConceptCostBearerRelations) + { + var roundedDuration = dauer; + + var organisation = CustomerService.LoadOrganisationCompact(sc2cbRel.CostBearer.OrganisationOid); + if(!(organisation is null)) + { + var calculations = Calculations.GetInstance(organisation.CostBearerID); + roundedDuration = calculations.GetRoundedDuration(organisation, dauer); + } + + // ToDo: Leere Dokufelder werden als Leerstring gespeichert + // ToDo: Validierungsergebnisse treten mehrfach auf + + foreach(var employee in Model.MultiBookingSelectedEmployees) + { + var newServiceRecord = new ServiceRecordDC + { + IP = Request.UserHostAddress, + Start = zeitenFeld[0], + End = zeitenFeld[1], + DistanceInMeter = distanceInMeters, + RoundedDuration = roundedDuration, + SupportConcept = sc2cbRel.SupportConcept, + CostBearer2SupportConceptOid = sc2cbRel.CostBearer2SupportConceptOid, + CostBearer = sc2cbRel.CostBearer, + DurationInStunden = Model.IsShowingDurationInHours ? ZeiterfassungsDauer.Stunden : ZeiterfassungsDauer.Minuten, + Customer = sc2cbRel.SupportConcept.Customer, + Notice = doku1, + Notice2 = doku2, + Notice3 = doku3, + Notice4 = doku4, + Notice5 = doku5, + InsertedOn = DateTime.Now, + InsUser = $"{MobileSessionFacade.LoggedInEmployee.FirstName} {MobileSessionFacade.LoggedInEmployee.LastName}", + IsCreatedInMobileClient = true, + Employee = employee, + ServiceRecordFormat = ServiceRecordFormate.OriginaleZeiterfassung, + ServiceDescription = OperationsService.GetServiceDescription(Model.SelectedServiceDescriptionOid.Value) + }; + + if(Model.IsEndDateVisible) + { + newServiceRecord.ServiceRecordFormat = ServiceRecordFormate.ZeiterfassungMitEndDatum; + } + + serviceRecordsToInsert.Add(newServiceRecord); + } + } + + OperationsService.InsertNewServiceRecords(serviceRecordsToInsert); + } + } + catch(Exception exception) + { + Log.Error(exception.Message, exception); + } + + return ResetEditingMode(); + } + + [Authorize] + public string AddSupportConceptCostBearerRelationsToMultiBooking(string pRelOids, string pGroupOids) + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + var rawRelOids = string.IsNullOrEmpty(pRelOids) ? Array.Empty() : pRelOids.Split(','); + var rawGroupOids = string.IsNullOrEmpty(pGroupOids) ? Array.Empty() : pGroupOids.Split(','); + + var relOids = new List(); + var groups = new List(); + + rawRelOids.DoForEach(s => relOids.AddIfNotIn(long.Parse(s))); + + Model.MultiBookingSelectedGroupOfPeopleOids.Clear(); + + rawGroupOids.DoForEach(s => + { + var group = Model.GroupsOfPeople.FirstOrDefault(f => f.GroupOfPeopleOid.HasValue && f.GroupOfPeopleOid.Value.Equals(long.Parse(s))); + if(group is null) + { + return; + } + + groups.AddIfNotIn(group); + group.SupportConceptList.DoForEach(f => relOids.AddRangeIfElementsNotIn(f.CostBearerRelOids)); + }); + + Model.MultiBookingSelectedSupportConcepts.Clear(); + + Model.MultiBookingSelectedCostbearerRelOids.Clear(); + Model.MultiBookingSelectedCostbearerRelOids.AddRangeIfElementsNotIn(relOids); + + var selectedSupportConcepts = Model.SupportConcepts.Where(w => w != null && w.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid.HasValue && relOids.Contains(a.CostBearer2SupportConceptOid.Value))).ToList(); + + var multiBookingCostBearerRelations = CustomerService.GetSupportConceptCostBearerRelationsById(relOids); + + Model.MultiBookingSelectedConceptCostBearerRelations.Clear(); + Model.MultiBookingSelectedConceptCostBearerRelations.AddRangeIfElementsNotIn(multiBookingCostBearerRelations); + + Model.MultiBookingSelectedSupportConcepts.AddRangeIfElementsNotIn(selectedSupportConcepts); + + foreach(var gruppe in groups.Where(g => g.GroupOfPeopleOid.HasValue)) + { + var groupRelOids = new List(); + gruppe.SupportConceptList.ForEach(f => groupRelOids.AddRange(f.CostBearerRelOids)); + + if(!gruppe.GroupOfPeopleOid.HasValue) + { + continue; + } + + var groupOid = gruppe.GroupOfPeopleOid.Value; + + if(relOids.ContainsItems(groupRelOids)) + { + Model.MultiBookingSelectedGroupOfPeopleOids.AddIfNotIn(groupOid); + } + else if(Model.MultiBookingSelectedGroupOfPeopleOids.Contains(groupOid)) + { + Model.MultiBookingSelectedGroupOfPeopleOids.Remove(groupOid); + } + } + + return SerializeObject(Model.MultiBookingSelectionObject); + } + + [Authorize] + public string RemoveSupportConceptCostBearerRelationFromMultiBooking(string pRelOid) + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + long.TryParse(pRelOid, out var supportConceptCostBearerRelationOid); + + var supportConcept = Model.MultiBookingSelectedSupportConcepts.FirstOrDefault(f => f.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid)); + + var relation = Model.MultiBookingSelectedConceptCostBearerRelations.FirstOrDefault(f => f.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid); + + Model.MultiBookingSelectedSupportConcepts.Remove(supportConcept); + Model.MultiBookingSelectedConceptCostBearerRelations.Remove(relation); + + var selectedGroups = Model.GroupsOfPeople.Where(group => group.GroupOfPeopleOid.HasValue && Model.MultiBookingSelectedGroupOfPeopleOids.Contains(group.GroupOfPeopleOid.Value)).ToList(); + + var groups = selectedGroups.Where(group => group.SupportConceptList.All(a => Model.MultiBookingSelectedSupportConcepts.Where(w => w.SupportConceptOid.HasValue).Select(s => s.SupportConceptOid.Value).Contains(a.SupportConceptOid))); + + Model.MultiBookingSelectedGroupOfPeopleOids = groups.Where(group => group.GroupOfPeopleOid.HasValue).Select(group => group.GroupOfPeopleOid.Value).ToList(); + + return SerializeObject(Model.MultiBookingSelectionObject); + } + + [Authorize] + public string AddEmployeesToMultiBooking(string pEmployeeOids) + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + if(string.IsNullOrEmpty(pEmployeeOids)) + { + Model.MultiBookingSelectedEmployees.Clear(); + return JsonConvert.SerializeObject(Model.MultiBookingSelectedEmployees.Count); + } + + var rawEmployeeOids = pEmployeeOids.Split(','); + var oids = new List(); + + rawEmployeeOids.DoForEach(s => oids.AddIfNotIn(long.Parse(s))); + + var employees = Model.Employees.Where(w => oids.Contains(w.EmployeeOid)); + + Model.MultiBookingSelectedEmployees.Clear(); + Model.MultiBookingSelectedEmployees.AddRangeIfElementsNotIn(employees); + + return JsonConvert.SerializeObject(Model.MultiBookingSelectedEmployees.Count); + } + + [Authorize] + public string MultiBookingHasSelectedSupportConcepts() + { + try + { + return JsonConvert.SerializeObject(Model.MultiBookingSelectedConceptCostBearerRelations.Any()); + } + catch(Exception exception) + { + Log.Error(exception.Message, exception); + } + + return JsonConvert.SerializeObject(false); + } + + [Authorize] + public string MultiBookingHasSelectedEmployees() + { + try + { + return JsonConvert.SerializeObject(Model.MultiBookingSelectedEmployees.Any()); + } + catch(Exception exception) + { + Log.Error(exception.Message, exception); + } + + return JsonConvert.SerializeObject(false); + } + + #endregion } } diff --git a/BeWoPlanerMobil/Controllers/SchedulerController.cs b/BeWoPlanerMobil/Controllers/SchedulerController.cs index 0b8ac6d66..6f0972bef 100644 --- a/BeWoPlanerMobil/Controllers/SchedulerController.cs +++ b/BeWoPlanerMobil/Controllers/SchedulerController.cs @@ -49,7 +49,7 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public ActionResult Scheduler() { - if (!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeScheduler) + if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeScheduler) { return Logout(); } @@ -68,6 +68,22 @@ namespace BeWoPlanerMobil.Controllers Model.ResourceCategories2Resources = categories2Resources; } + if(Model?.Employee?.EmployeeOid.HasValue ?? false) + { + var compactEmployee = EmployeeService.GetActiveCompactEmployeeWithOid(Model.Employee.EmployeeOid.Value); + + Model.MyTeamEmployees = EmployeeService.GetAllTeamMember(compactEmployee); + } + else if(!(Model is null)) + { + Model.MyTeamEmployees = new List(); + } + + if(AbstractModel.HasRightToViewTeams && (Model?.Employee?.EmployeeOid.HasValue ?? false)) + { + Model.MyTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(Model.Employee.EmployeeOid.Value); + } + LoadAppointmentsForDate(); return View(Model); @@ -98,23 +114,21 @@ namespace BeWoPlanerMobil.Controllers end = sunday; } - var selectedCustomers = Model.SelectedCustomers?.Select(s => s.CustomerOid).ToList() ?? new List(); - var selectedEmployees = Model.SelectedEmployees?.Select(s => s.EmployeeOid).ToList() ?? new List(); - var selectedResources = Model.SelectedResources?.Where(w => w.ResourceOid.HasValue).Select(s => s.ResourceOid.Value).ToList() ?? new List(); + var selectedCustomers = Model.SelectedCustomersForFiltering?.Select(s => s.CustomerOid).ToList() ?? new List(); + var selectedEmployees = Model.SelectedEmployeesForFiltering?.Select(s => s.EmployeeOid).ToList() ?? new List(); + var selectedResources = Model.SelectedResourcesForFiltering?.Where(w => w.ResourceOid.HasValue).Select(s => s.ResourceOid.Value).ToList() ?? new List(); - var appointments = KalenderService.LoadFilteredAppointmentsMitAufgaben(AbstractModel.HasRightToSeeAllEmployeeAppointments, Model.Employee.EmployeeOid.Value, start.Date, end, selectedEmployees, selectedCustomers, selectedResources, false, false, false, false, true, true).ToList(); + var appointments = KalenderService.LoadFilteredAppointmentsMitAufgaben(AbstractModel.HasRightToViewEmployeeAppointments, Model.Employee.EmployeeOid.Value, start.Date, end, selectedEmployees, selectedCustomers, selectedResources, false, false, false, false, true, true).ToList(); - var tasks = appointments.Where(w => w.IsTask).ToList(); - - var zuErledigen = tasks.Where(t => t.DueDate.HasValue && t.DueDate.Value.Date >= DateTime.Today && !t.CompletedDate.HasValue); + var tasks = appointments.Where(w => w.IsTask && w.CompletedDate is null).ToList(); // Nur eigene Kliententermine ansehen - if(!AbstractModel.HasRightToSeeAllCustomerAppointments) + if(!AbstractModel.HasRightToViewCustomerAppointments) { appointments = appointments.Where(a => a.CustomerList.All(c => MobileSessionFacade.LoggedInEmployee.RelatedCustomers.Any(rc => rc.Customer.Equals(c)))).ToList(); } - if(!AbstractModel.HasRightToSeeAllResourceAppointments) + if(!AbstractModel.HasRightToViewAllResourceAppointments) { appointments = appointments.Where(a => a.ResourceList.Count == 0).ToList(); } @@ -141,7 +155,7 @@ namespace BeWoPlanerMobil.Controllers holySweetFlyingFuck.AddRangeIfElementsNotIn(CalculateRecurrences(appointments, start, end, changedOccurrences, deletedOccurrences)); - holySweetFlyingFuck.AddRange(zuErledigen); + holySweetFlyingFuck.AddRange(tasks); // Wenn es ein ganztägiger Termin ist, eine Sekunde abziehen und beim Speichern wieder draufaddieren? foreach(var app in holySweetFlyingFuck.Where(a => a.AllDay)) @@ -149,17 +163,16 @@ namespace BeWoPlanerMobil.Controllers app.EndDate = app.EndDate.Value.AddMinutes(-1); } - - Model.Appointments = holySweetFlyingFuck.OrderBy(appointment => appointment.StartDate).ToList(); + Model.Appointments = holySweetFlyingFuck.Where(w => w.IsTask == Model.ShouldLoadTasks).OrderBy(appointment => appointment.StartDate).ToList(); Model.WeekViewObject = new WeekViewObject(Model.Appointments, Model.SelectedDate.GetInSameCalendarWeek(DayOfWeek.Monday)); - if(AbstractModel.HasRightToInsertEmployeeAppointments) + if(AbstractModel.HasRightToViewCustomerSelectionInScheduler) { Model.AllCustomers = EmployeeService.GetActiveCompactCustomersForEmployee(Model.Employee.EmployeeOid).OrderBy(o => o.DetailDescription).ToList(); } - if(AbstractModel.HasRightToInsertCustomerAppointments) + if(AbstractModel.HasRightToViewEmployeeAppointments) { Model.AllEmployees = EmployeeService.GetActiveCompactEmployeesForEmployee(Model.Employee.EmployeeOid.Value).OrderBy(o => o.DetailDescription).ToList(); } @@ -319,13 +332,17 @@ namespace BeWoPlanerMobil.Controllers appointmentToInsert.EndDate = endDate.AddMinutes(1); } - if (!isNew) + // ToDo: Rechte beachten! + if(appointmentToInsert.CanBeEdited) { - KalenderService.UpdateSchedulerAppointments(new List {appointmentToInsert}); - } - else - { - KalenderService.InsertSchedulerAppointments(new List {appointmentToInsert}); + if(!isNew) + { + KalenderService.UpdateSchedulerAppointments(new List {appointmentToInsert}); + } + else + { + KalenderService.InsertSchedulerAppointments(new List {appointmentToInsert}); + } } } } @@ -376,7 +393,7 @@ namespace BeWoPlanerMobil.Controllers Model.SelectedDate = Model.SelectedDate.AddDays(1); - if(Model != null) + if(!(Model is null)) { Model.SelectedAppointment = null; //Model.SelectedResources.Clear(); @@ -776,5 +793,185 @@ namespace BeWoPlanerMobil.Controllers return PartialView("OneDaySchedulerPartial", Model); } + + [Authorize] + public string SelectResourcesForAppointmentFiltering(string resourceOids) + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + var oidList = ConvertOidStringToList(resourceOids); + + var list = new List(); + + Model.ResourceCategories2Resources.Values.DoForEach(l => l.DoForEach(s => list.AddIfNotIn(s))); + + Model.SelectedResourcesForFiltering = list.Where(resource => resource.ResourceOid.HasValue && oidList.Contains(resource.ResourceOid.Value)).ToList(); + + return JsonConvert.SerializeObject(Model.SelectedResourcesForFiltering); + } + + [Authorize] + public string SelectEmployeesForAppointmentFiltering(string oidString) + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + var oidList = ConvertOidStringToList(oidString); + + Model.SelectedEmployeesForFiltering = Model.AllEmployees.Where(employee => oidList.Contains(employee.EmployeeOid)).ToList(); + + return Model.SelectedEmployeesForFiltering.Count.ToString(); + } + + [Authorize] + public string SelectCustomersForAppointmentFiltering(string oidString) + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + var oidList = ConvertOidStringToList(oidString); + + Model.SelectedCustomersForFiltering = Model.AllCustomers.Where(customer => oidList.Contains(customer.CustomerOid)).ToList(); + + return Model.SelectedCustomersForFiltering.Count.ToString(); + } + + [Authorize] + public ActionResult FetchSelectedEmployeesForPopup() + { + return PartialView("EmployeeForFilteringPartial", Model); + } + + [Authorize] + public ActionResult FetchEmployeeFilteringModalBody() + { + return PartialView("EmployeeFilteringModalContentPartial", Model); + } + + [Authorize] + public string SelectTeamForFiltering(string teamOidString) + { + if(Model?.Employee?.EmployeeOid is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + if(long.TryParse(teamOidString, out var teamOid)) + { + var team = EmployeeService.FindTeamByOid(teamOid, Model.Employee.EmployeeOid.Value); + if(!(team is null)) + { + Model.SelectedEmployeesForFiltering.AddRangeIfElementsNotIn(team.Member); + } + } + + return _LeerzeichenFuerGetMethoden; + } + + [Authorize] + public string SelectTeamForAppointment(string teamOidString) + { + if(Model?.Employee?.EmployeeOid is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + var teamMemberOids = new List(); + + if(long.TryParse(teamOidString, out var teamOid)) + { + var team = EmployeeService.FindTeamByOid(teamOid, Model.Employee.EmployeeOid.Value); + if(!(team is null)) + { + Model.SelectedEmployees.AddRangeIfElementsNotIn(team.Member); + teamMemberOids.AddRangeIfElementsNotIn(team.Member.Select(member => member.EmployeeOid)); + } + } + + return JsonConvert.SerializeObject(teamMemberOids); + } + + [Authorize] + public ActionResult FetchCustomersForFiltering() + { + return PartialView("CustomerFilterSelectionPartial", Model); + } + + [Authorize] + public ActionResult FetchCustomerFilteringModalBody() + { + return PartialView("CustomerFilteringModalContentPartial", Model); + } + + [Authorize] + public string SetShouldLoadTasks(bool isChecked) + { + try + { + if(Model is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + Model.ShouldLoadTasks = isChecked; + + return _LeerzeichenFuerGetMethoden; + } + catch(Exception exception) + { + Log.Error(exception.Message, exception); + } + + return _LeerzeichenFuerGetMethoden; + } + + [Authorize] + public string DeleteAppointment(long appointmentOid) + { + if(Model?.Employee?.EmployeeOid is null) + { + Logout(); + return _LeerzeichenFuerGetMethoden; + } + + var appointment = Model.Appointments.FirstOrDefault(app => app.SchedulerAppointmentOid?.Equals(appointmentOid) ?? false); + + if(!(appointment is null)) + { + var teamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(Model.Employee.EmployeeOid.Value); + + var customerList = appointment.CustomerList; + var employeeList = appointment.EmployeeList; + var resourceList = appointment.ResourceList; + var originator = appointment.Originator; + var isNew = false; + var checkType = SchedulerRightsCheckType.Edit; + var loggedOnUser = MobileSessionFacade.LoggedInUserDC; + + var isAllowedToDelete = BS.Shared.Core.Utils.CheckSchedulerRights(customerList, resourceList, employeeList, originator, isNew, checkType, loggedOnUser, teamMemberCustomerOids); + + if(isAllowedToDelete && appointment.SchedulerAppointmentOid.HasValue && appointment.NewSchedulerAppointmentVersion.HasValue) + { + var oid2Version = new Dictionary {{appointment.SchedulerAppointmentOid.Value, appointment.NewSchedulerAppointmentVersion.Value}}; + + KalenderService.DeactivateSchedulerAppointments(oid2Version); + } + } + + return _LeerzeichenFuerGetMethoden; + } } } diff --git a/BeWoPlanerMobil/Models/AbstractModel.cs b/BeWoPlanerMobil/Models/AbstractModel.cs index faae2a311..58830eec8 100644 --- a/BeWoPlanerMobil/Models/AbstractModel.cs +++ b/BeWoPlanerMobil/Models/AbstractModel.cs @@ -10,33 +10,33 @@ namespace BeWoPlanerMobil.Models { public class AbstractModel { - public static bool IsDeleteBtnVisible => MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecordView_Delete); + public static bool IsDeleteBtnVisible => CheckRight(UserRightType.ServiceRecordView_Delete); - public static bool IsAllowedToSeeScheduler => MobileSessionFacade.LoggedInUser != null && MobileSessionFacade.CheckForUserRight(UserRightType.KalenderAnsehen) || MobileSessionFacade.CheckForUserRight(UserRightType.ViewAll); + public static bool IsAllowedToSeeScheduler => MobileSessionFacade.LoggedInUser != null && CheckRight(UserRightType.KalenderAnsehen) || CheckRight(UserRightType.ViewAll); - public static bool IsAllowedToSeeCustomers => MobileSessionFacade.CheckForUserRight(UserRightType.ViewAll) || MobileSessionFacade.CheckForUserRight(UserRightType.CustomerView_View) || MobileSessionFacade.CheckForUserRight(UserRightType.Customer_ViewMyCustomers); + public static bool IsAllowedToSeeCustomers => CheckRight(UserRightType.ViewAll) || CheckRight(UserRightType.CustomerView_View) || CheckRight(UserRightType.Customer_ViewMyCustomers); - public static bool IsEmployeeSelectionVisible => MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreationForOtherEmployees) || MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreationForOtherTeamMember); + public static bool IsEmployeeSelectionVisible => CheckRight(UserRightType.ServiceRecord_AllowCreationForOtherEmployees) || CheckRight(UserRightType.ServiceRecord_AllowCreationForOtherTeamMember); - public static bool HasRightForGroupBookings => MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreatingGroupBooking); + public static bool HasRightForGroupBookings => CheckRight(UserRightType.ServiceRecord_AllowCreatingGroupBooking); - public static bool HasRightToSeeAllCustomerAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderKliententermineAlleAnsehen) && MobileSessionFacade.CheckForUserRight(UserRightType.CustomerView_View) || MobileSessionFacade.CheckForUserRight(UserRightType.ViewAll); - public static bool HasRightToSeeAllEmployeeAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderMitarbeitertermineAnsehen) || MobileSessionFacade.CheckForUserRight(UserRightType.ViewAll); - public static bool HasRightToSeeAllResourceAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderRessourcentermineAnsehen) || MobileSessionFacade.CheckForUserRight(UserRightType.ViewAll); + public static bool HasRightToViewCustomerAppointments => CheckRight(UserRightType.KalenderKliententermineAlleAnsehen) && CheckRight(UserRightType.CustomerView_View) || CheckRight(UserRightType.ViewAll); + public static bool HasRightToViewEmployeeAppointments => CheckRight(UserRightType.KalenderMitarbeitertermineAnsehen) || CheckRight(UserRightType.ViewAll); + public static bool HasRightToViewAllResourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnsehen) || CheckRight(UserRightType.ViewAll); public EmployeeDC Employee { get; set; } public string LoggedInEmplyeeFirstNameLastName => Employee != null ? $"{Employee.FirstName} {Employee.LastName}" : "BeWoPlaner"; - public static bool HasRightToSeeAllSupportConcepts => MobileSessionFacade.CheckForUserRight(UserRightType.SupportConcept_ViewAllSupportConcepts) || MobileSessionFacade.CheckForUserRight(UserRightType.ViewAll); + public static bool HasRightToSeeAllSupportConcepts => CheckRight(UserRightType.SupportConcept_ViewAllSupportConcepts) || CheckRight(UserRightType.ViewAll); - public static bool HasRightToSeeTextModules => MobileSessionFacade.CheckForUserRight(UserRightType.TextbausteineNurEigeneAnsehen) || MobileSessionFacade.CheckForUserRight(UserRightType.TextbausteineAlleAnsehen); + public static bool HasRightToSeeTextModules => CheckRight(UserRightType.TextbausteineNurEigeneAnsehen) || CheckRight(UserRightType.TextbausteineAlleAnsehen); - public static bool HasRightToSeeServiceRecords => MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecordView_View) && MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecordView_Create); + public static bool HasRightToSeeServiceRecords => CheckRight(UserRightType.ServiceRecordView_View) && CheckRight(UserRightType.ServiceRecordView_Create); public static string TimeOfLastAction { get; set; } - public static bool HasRightToInsertRessourceAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderRessourcentermineAnlegen) || MobileSessionFacade.CheckForUserRight(UserRightType.CreateAll); + public static bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll); public static bool IsAllowedToSeeBills { @@ -46,7 +46,7 @@ namespace BeWoPlanerMobil.Models var showEmployeeSignatureSetting = MobileUtils.GetSettingValue(mandator.Settings, SettingsKeys.ShowEmployeeSignature); - return MobileSessionFacade.CheckForUserRight(UserRightType.Analysis_ServiceOverview_View) && showEmployeeSignatureSetting != null && showEmployeeSignatureSetting.Equals("1"); + return CheckRight(UserRightType.Analysis_ServiceOverview_View) && showEmployeeSignatureSetting != null && showEmployeeSignatureSetting.Equals("1"); } } @@ -103,22 +103,38 @@ namespace BeWoPlanerMobil.Models var hasSetting = MobileUtils.GetSettingValue(mandator.Settings, SettingsKeys.ShowMedication) == "1"; - var hasRight = MobileSessionFacade.CheckForUserRight(UserRightType.Customer_ViewMedication); + var hasRight = CheckRight(UserRightType.Customer_ViewMedication); return hasSetting && hasRight; } } - public static bool HasRightToInsertEmployeeAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderMitarbeitertermineAnlegen) || MobileSessionFacade.CheckForUserRight(UserRightType.CreateAll); + public static bool CheckRight(UserRightType userRightType) + { + return MobileSessionFacade.CheckForUserRight(userRightType); + } - public static bool HasRightToEditEmployeeAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderMitarbeitertermineAendern) || MobileSessionFacade.CheckForUserRight(UserRightType.EditAll); + public static bool HasRightToInsertEmployeeAppointments => CheckRight(UserRightType.KalenderMitarbeitertermineAnlegen) || + CheckRight(UserRightType.CreateAll); - public static bool HasRightToEditResourceAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderRessourcentermineAendern) || MobileSessionFacade.CheckForUserRight(UserRightType.EditAll); - public static bool HasRightToEditOthersResourceAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderRessourcentermineAndererAendern) || MobileSessionFacade.CheckForUserRight(UserRightType.EditAll); + public static bool HasRightToEditEmployeeAppointments => CheckRight(UserRightType.KalenderMitarbeitertermineAendern) || CheckRight(UserRightType.EditAll); - public static bool HasRightToInsertCustomerAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderKliententermineAnlegen) || MobileSessionFacade.CheckForUserRight(UserRightType.CreateAll); - public static bool HasRightToEditCustomerAppointments => MobileSessionFacade.CheckForUserRight(UserRightType.KalenderKliententermineAendern) || MobileSessionFacade.CheckForUserRight(UserRightType.EditAll); + public static bool HasRightToEditResourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAendern) || CheckRight(UserRightType.EditAll); + public static bool HasRightToEditOthersResourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAndererAendern) || CheckRight(UserRightType.EditAll); + + public static bool HasRightToInsertCustomerAppointments => CheckRight(UserRightType.KalenderKliententermineAnlegen) && + (CheckRight(UserRightType.CustomerView_View) || + CheckRight(UserRightType.Customer_ViewMyCustomers) || + CheckRight(UserRightType.Customer_ViewMyTeams)) || + CheckRight(UserRightType.CreateAll); + public static bool HasRightToEditCustomerAppointments => CheckRight(UserRightType.KalenderKliententermineAendern) || CheckRight(UserRightType.EditAll); public static bool ShowServiceRecordInsertedOn { get; set; } + + public static bool HasRightToViewCustomerSelectionInScheduler => CheckRight(UserRightType.CustomerView_View) || CheckRight(UserRightType.Customer_ViewMyCustomers) || CheckRight(UserRightType.Customer_ViewMyTeams); + + public static bool HasRightToViewTeams => CheckRight(UserRightType.TeamView_ViewMyTeams) || CheckRight(UserRightType.TeamView_ViewAll); + + public static bool HasRightForMultiBooking => CheckRight(UserRightType.ServiceRecord_AllowCreatingMultiBooking); } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/MainModel.cs b/BeWoPlanerMobil/Models/MainModel.cs index 68ccfebce..8a32a47b5 100644 --- a/BeWoPlanerMobil/Models/MainModel.cs +++ b/BeWoPlanerMobil/Models/MainModel.cs @@ -6,10 +6,12 @@ using System.ComponentModel.DataAnnotations; using System.Diagnostics; using System.Linq; using System.Web.Mvc; +using BeWo.Service.Plugins; using BeWo.View.Navigation.Filter; using BeWoPlanerMobil.Service; using BeWoPlanerMobil.Util; using BS.Shared; +using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; @@ -234,7 +236,6 @@ namespace BeWoPlanerMobil.Models { NewServiceRecord = new ServiceRecordDC(); ShowOnlyOwnSupportConcepts = true; - Zeitraum = -1; ErrorWert = 1; } @@ -288,7 +289,7 @@ namespace BeWoPlanerMobil.Models public List SelectedConceptCostBearerRelations { get; set; } - public GroupBookingSelectionObject GroupBookingSelectionObject => new GroupBookingSelectionObject(SelectedConceptCostBearerRelations, SelectedGroupOfPeopleOids); + public GroupBookingSelectionObject GroupBookingSelectionObject => new GroupBookingSelectionObject(SelectedConceptCostBearerRelations, GroupBookingSelectedGroupOfPeopleOids); public IEnumerable SupportConceptListObjectsForGroupBooking { @@ -333,7 +334,7 @@ namespace BeWoPlanerMobil.Models public List Employees { get; set; } - public static List AllEmployees { get; set; } + public List AllEmployees { get; set; } [Display(Name = "Mitarbeiter")] public long? SelectedEmployeeOid => SelectedEmployee?.EmployeeOid; @@ -342,7 +343,7 @@ namespace BeWoPlanerMobil.Models public List GroupsOfPeople { get; set; } = new List(); - public List SelectedGroupOfPeopleOids { get; set; } = new List(); + public List GroupBookingSelectedGroupOfPeopleOids { get; set; } = new List(); public IEnumerable EmployeeListItems { @@ -376,11 +377,11 @@ namespace BeWoPlanerMobil.Models return maxDate; } - public List SelectedSupportConcepts { get; set; } = new List(); + public List GroupBookingSelectedSupportConcepts { get; set; } = new List(); - public List SelectedCostbearerRelOids { get; set; } = new List(); + public List GroupBookingSelectedCostbearerRelOids { get; set; } = new List(); - public List SelectedEmployees { get; set; } = new List(); + public List GroupBookingSelectedEmployees { get; set; } = new List(); [Display(Name = "Gruppenbuchung")] public bool IsInGroupBookingMode @@ -393,14 +394,16 @@ namespace BeWoPlanerMobil.Models if(!_IsInGroupBookingMode) { - SelectedSupportConcepts?.Clear(); - SelectedEmployees?.Clear(); + GroupBookingSelectedSupportConcepts?.Clear(); + GroupBookingSelectedEmployees?.Clear(); } } } private bool _IsInGroupBookingMode; + + public bool IsInEditingMode { get; set; } public List GetServiceDesctiptions() @@ -640,6 +643,69 @@ namespace BeWoPlanerMobil.Models public bool IsShowingDurationInHours { get; set; } public string SelectedDurationUnit => IsShowingDurationInHours ? "Stunden" : "Minuten"; + + public DateTime LastSelectedServiceRecordMonth { get; set; } + public int LastSelectedServiceRecordTimeIntervalDays { get; set; } + + public ServiceRecordTimeInterval ServiceRecordTimeInterval { get; set; } + public int SelectedDayCount { get; set; } + public NullableDateTimeSpan SelectedZeitraum { get; set; } + + + #region Mehrfachbuchung + + private bool _IsInMultiBookingMode; + + [Display(Name = "Mehrfachbuchung")] + public bool IsInMultiBookingMode + { + get => _IsInMultiBookingMode; + + set + { + _IsInMultiBookingMode = value; + + if(!_IsInMultiBookingMode) + { + + } + } + } + + public List MultiBookingSelectedSupportConcepts { get; set; } = new List(); + + public List MultiBookingSelectedGroupOfPeopleOids { get; set; } = new List(); + + public List MultiBookingSelectedConceptCostBearerRelations { get; set; } + + public GroupBookingSelectionObject MultiBookingSelectionObject => new GroupBookingSelectionObject(MultiBookingSelectedConceptCostBearerRelations, MultiBookingSelectedGroupOfPeopleOids); + + public List MultiBookingSelectedCostbearerRelOids { get; set; } = new List(); + public List MultiBookingSelectedEmployees { get; set; } = new List(); + + public List MultiBookingSupportConceptListObjects + { + get + { + var allCostbearerRelations = new List(); + + foreach(var sc in SupportConcepts.OrderBy(sc => sc.Customer.LastName)) + { + allCostbearerRelations.AddRange(sc.CostBearerRelations.Where(w => ShowExpiredSupportConcepts || w.EndDate == null || w.EndDate.Value >= DateTime.Now).Select( + cb => new SupportConceptListObject( + $"{sc.Customer.LastNameFirstName} {(sc.Customer.DateOfBirth.HasValue ? "*" + sc.Customer.DateOfBirth.Value.ToString("dd.MM.yyyy") : string.Empty)}", + $"{cb.StartDate?.ToShortDateString().Remove(6, 2) ?? string.Empty}-{cb.EndDate?.ToShortDateString().Remove(6, 2) ?? string.Empty} {cb.CostBearer.Name}", + cb.CostBearer2SupportConceptOid.ToString(), + cb.SupportConcept.IsAboutToExpire, + cb.SupportConcept.ExpiresIn3MonthOrLess)) + ); + } + + return allCostbearerRelations; + } + } + + #endregion } public class CustomSelectListItem diff --git a/BeWoPlanerMobil/Models/SchedulerModel.cs b/BeWoPlanerMobil/Models/SchedulerModel.cs index c35f3fca6..9fde270a1 100644 --- a/BeWoPlanerMobil/Models/SchedulerModel.cs +++ b/BeWoPlanerMobil/Models/SchedulerModel.cs @@ -97,7 +97,20 @@ namespace BeWoPlanerMobil.Models public string LocationToEdit => SelectedAppointment?.Location ?? string.Empty; - public List AllResources { get; set; } = new List(); + public List AllResources + { + get + { + var allResources = new List(); + + foreach(var cat2res in ResourceCategories2Resources) + { + allResources.AddRangeIfElementsNotIn(cat2res.Value); + } + + return allResources; + } + } public List SelectedResources { get; set; } = new List(); @@ -134,6 +147,7 @@ namespace BeWoPlanerMobil.Models public bool IsInEditMode => SelectedAppointment != null; + // ToDo: Überarbeiten? Es kam das Ansehen hinzu public bool HasResourcesEmployeesOrCustomers { get @@ -183,6 +197,16 @@ namespace BeWoPlanerMobil.Models [Display(Name = "Privat")] public bool IsPrivate { get; set; } + + public List MyTeamEmployees { get; set; } + + public List SelectedResourcesForFiltering { get; set; } = new List(); + public List SelectedEmployeesForFiltering { get; set; } = new List(); + public List SelectedCustomersForFiltering { get; set; } = new List(); + + public List MyTeams { get; set; } = new List(); + + public bool ShouldLoadTasks { get; set; } } public class WeekViewObject diff --git a/BeWoPlanerMobil/Scripts/mobileUtils.js b/BeWoPlanerMobil/Scripts/mobileUtils.js index 1bbfe1e2d..7f5adb7e9 100644 --- a/BeWoPlanerMobil/Scripts/mobileUtils.js +++ b/BeWoPlanerMobil/Scripts/mobileUtils.js @@ -81,34 +81,6 @@ function submitForm(submitButton) { submitButton.form.submit(); } -function isEmptyOrSpaces(str) { - return str === null || str === undefined || str.match(/^ *$/) !== null; -} - -function isInArray(value, array) { - if(value === undefined || value === null || array === undefined || array === null) { - return false; - } - - if(!Array.isArray(array)) { - return false; - } - - var intValue = parseInt(value, 10); - - if(isNaN(intValue)) { - return false; - } - - for (var i = 0; i < array.length; i++) { - if (array[i] === intValue) { - return true; - } - } - - return false; -} - function showMessagePopupWithHtml(title, html) { $("#popupTitle").text(title); @@ -175,6 +147,24 @@ function cloneCanvas(oldCanvas) { return newCanvas; } +function showAlertMessageBoxWithoutCallback(title, message) { + $("#popupTitle").text(title); + + $("#messagePopup .modal-body").html('"); + + $("#popupMessage").text(message); + + $("#message-popup-ok-btn").off("click"); + $("#message-popup-close-btn").off("click"); + + $("#messagePopup").modal( + { + backdrop: "static", + keyboard: false + } + ); +} + function showAlertMessageBox(title, message, callback, executeCallbackByBothButtons) { $("#popupTitle").text(title); @@ -225,26 +215,6 @@ function showWarningMessageBox(title, message, callback, executeCallbackByBothBu ); } -function logInfo(message) { - logColorfulMessage(message, "purple"); -} - -function logWarning(message) { - logColorfulMessage(message, "darkorange"); -} - -function logError(message) { - logColorfulMessage(message, "red"); -} - -function logDebug(message) { - logColorfulMessage(message, "darkgreen"); -} - -function logColorfulMessage(message, color) { - console.log("%c" + message, "font-size: 12px; font-weight: bold; color: " + color); -} - function isUndefinedOrNull(obj) { return obj == null; } @@ -349,7 +319,7 @@ function treeSearchOnChange(searchInputId, textClass, cardClass, nameLabelClass, $.each(entries, function (index, entry) { var checkbox = $(entry); var treeCard = checkbox.closest("." + cardClass); - var header = treeCard.find("h5"); + var header = treeCard.find(".goal-card-header"); var list = treeCard.find(".collapse"); var treeItemName = checkbox.find("." + nameLabelClass).text().toLowerCase(); var includesText = treeItemName.includes(text) || header.html().toLowerCase().includes(text); diff --git a/BeWoPlanerMobil/Scripts/utils/js-helper.js b/BeWoPlanerMobil/Scripts/utils/js-helper.js new file mode 100644 index 000000000..f5bba4118 --- /dev/null +++ b/BeWoPlanerMobil/Scripts/utils/js-helper.js @@ -0,0 +1,70 @@ +function arrayContainsAllItems(a1, a2) { + var result = true; + + if (a1 !== null && a2 !== null && Array.isArray(a1) && Array.isArray(a2)) { + for (var i = 0; i < a2.length; i++) { + if (!a1.includes(a2[i])) { + result = false; + break; + } + } + } else { + result = false; + } + + return result; +} + +function isEmptyOrSpaces(str) { + return str === null || str === undefined || str.match(/^ *$/) !== null; +} + +function isInArray(value, array) { + if (value === undefined || value === null || array === undefined || array === null) { + return false; + } + + if (!Array.isArray(array)) { + return false; + } + + var intValue = parseInt(value, 10); + + if (isNaN(intValue)) { + return false; + } + + for (var i = 0; i < array.length; i++) { + if (array[i] === intValue) { + return true; + } + } + + return false; +} + +function checkArraysForEquality(a1, a2) { + try { + if (Array.isArray(a1) && Array.isArray(a2) && a1.length === a2.length) { + a1 = a1.sort(); + a2 = a2.sort(); + + for(var i = 0; i < a1.length; i++) { + var obj1 = a1[i]; + var obj2 = a2[i]; + + if(typeof obj1 !== typeof obj2 || obj1 !== obj2) { + return false; + } + } + + return true; + } + + return false; + } catch(error) { + logError(error); + } finally { + return false; + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Scripts/utils/list-utils.js b/BeWoPlanerMobil/Scripts/utils/list-utils.js index 1350c6ca7..070dd96c9 100644 --- a/BeWoPlanerMobil/Scripts/utils/list-utils.js +++ b/BeWoPlanerMobil/Scripts/utils/list-utils.js @@ -1,18 +1,42 @@ -function changeItemListSelection(url, popupId, listId, itemIdPrefix, isCustomer, checkBoxIdSuffix, filterAppointmentsUrl) { +// Wird aufgerufen, wenn sich der Wert der CheckBox ändert. +function changeItemListSelection(url, popupId, listId, itemIdPrefix, isCustomer, checkBoxIdSuffix, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids) { try { if (url === undefined || url === null) { + logError("url ist undefined oder null"); return; } var oidStr = ""; + var oids = []; + var allChecked = true; - $("#" + popupId + " input:checked").each(function() { + $("#" + popupId + " input[type=checkbox]").each(function () { var id = $(this).attr("id").split("-")[1]; - oidStr += id + ","; + + if($.isNumeric(id) === false) { + return; + } + + if ($(this).prop("checked")) { + oids.push(id); + oidStr += id + ","; + } else { + allChecked = false; + } }); + if(!isCustomer) { + $("#my-teams-checkbox" + allItemsCheckBoxSuffix).prop("checked", arrayContainsAllItems(oids, teamMemberOids)); + } + + if (allChecked === true) { + $("#all-" + (isCustomer ? "customers" : "employees") + "-checkbox" + allItemsCheckBoxSuffix).prop("checked", true); + } else { + $("#all-" + (isCustomer ? "customers" : "employees") + "-checkbox" + allItemsCheckBoxSuffix).prop("checked", false); + } + $.get(url, { oidString: oidStr }).done(function (jsonResult) { - updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupId, checkBoxIdSuffix, url, filterAppointmentsUrl); + updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupId, checkBoxIdSuffix, url, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids); $("#one-day-scheduler-partial-container").load(filterAppointmentsUrl); }); @@ -21,10 +45,10 @@ } } -// Col-Value berechnen -function updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupId, checkBoxIdSuffix, url, filterAppointmentsUrl) { +// Wird aufgerufen, um die Liste mit den ausgewählten Objekten zu aktualisieren +function updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupId, checkBoxIdSuffix, url, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids) { try { - if(isEmptyOrSpaces(jsonResult)) { + if (isEmptyOrSpaces(jsonResult)) { return; } @@ -50,7 +74,7 @@ function updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupI var id = itemIdPrefix + oid; - var removeParams = oid + ", '" + checkBoxIdSuffix + "', " + isCustomer + ", '" + url + "', '" + popupId + "', '" + listId + "', '" + itemIdPrefix + "', '" + filterAppointmentsUrl + "'"; + var removeParams = oid + ", '" + checkBoxIdSuffix + "', " + isCustomer + ", '" + url + "', '" + popupId + "', '" + listId + "', '" + itemIdPrefix + "', '" + filterAppointmentsUrl + "', '" + allItemsCheckBoxSuffix + "', " + teamMemberOids; var html = "
" + @@ -78,17 +102,17 @@ function updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupI } } -function removeSelectedItem(itemOid, itemSuffix, isCustomer, url, popupId, listId, itemIdPrefix, filterAppointmentsUrl) { +function removeSelectedItem(itemOid, itemSuffix, isCustomer, url, popupId, listId, itemIdPrefix, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids) { try { var prefix = isCustomer ? "customer-" : "employee-"; - var checkBox = $("#" + prefix + itemOid + itemSuffix).remove(); + var checkBox = $("#" + prefix + itemOid + itemSuffix); if(checkBox.length) { checkBox.prop("checked", false); } - changeItemListSelection(url, popupId, listId, itemIdPrefix, isCustomer, itemSuffix, filterAppointmentsUrl); + changeItemListSelection(url, popupId, listId, itemIdPrefix, isCustomer, itemSuffix, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids); } catch(error) { logError(error); } diff --git a/BeWoPlanerMobil/Scripts/utils/logging.js b/BeWoPlanerMobil/Scripts/utils/logging.js new file mode 100644 index 000000000..91aa1ded6 --- /dev/null +++ b/BeWoPlanerMobil/Scripts/utils/logging.js @@ -0,0 +1,27 @@ +function logInfo(message) { + logColorfulMessage(message, "purple"); +} + +function logWarning(message) { + logColorfulMessage(message, "darkorange"); +} + +function logError(message) { + logColorfulMessage(message, "red"); +} + +function logDebug(message) { + logColorfulMessage(message, "green"); +} + +function logColorfulMessage(message, color) { + console.log("%c" + message, "font-size: 16px; font-weight: bold; color: " + color); +} + +function logInfo2(message) { + logColorfulMessage(message, "#DBFF8C"); +} + +function logInfo3(message) { + logColorfulMessage(message, "#00F2FF"); +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Scripts/utils/resources-list-utils.js b/BeWoPlanerMobil/Scripts/utils/resources-list-utils.js index c87864adc..01205c437 100644 --- a/BeWoPlanerMobil/Scripts/utils/resources-list-utils.js +++ b/BeWoPlanerMobil/Scripts/utils/resources-list-utils.js @@ -15,6 +15,12 @@ $.get(url, { resourceOids: oidString }).done(function (jsonResult) { updateSelectedResourceList(jsonResult, listId, listItemIdPrefix, popupId, checkBoxIdPrefix, url, filterAppointmentsUrl); + if(popupId === "resources-popup2") { + var selectedResources = $.parseJSON(jsonResult); + + $("#resource-count2").text(selectedResources.length); + } + $("#one-day-scheduler-partial-container").load(filterAppointmentsUrl); }); } @@ -53,7 +59,6 @@ function updateSelectedResourceList(jsonResult, listId, listItemIdPrefix, popupI }); } -// ToDo: FetchAppointments-Url hinzufügen function removeSelectedResource(listItemId, checkBoxId, popupId, url, listId, fetchAppointmentsUrl) { $("#" + listItemId).remove(); diff --git a/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js b/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js index 5dde47dcd..bb2a61a30 100644 --- a/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js +++ b/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js @@ -1,4 +1,4 @@ -function calculateTimeWithDuration(timeInputValue, timeElement, startDate, duration) { +function calculateTimeWithDuration(timeInputValue, timeElement, startDate, duration, hoursMinutesDropdownBtnId) { var hoursToMinutes = parseTimeInputToIntegerArray(timeInputValue); var hours = parseInt(hoursToMinutes[0]); var minutes = parseInt(hoursToMinutes[1]); @@ -6,7 +6,7 @@ startDate.hours(hours); startDate.minutes(minutes); - var durationFormat = $("#hours-minutes-dropdown-btn").length && $("#hours-minutes-dropdown-btn").text().replaceAll(/\s/g, "") === "Stunden" ? "h" : "m"; + var durationFormat = $("#" + hoursMinutesDropdownBtnId).length && $("#" + hoursMinutesDropdownBtnId).text().replaceAll(/\s/g, "") === "Stunden" ? "h" : "m"; startDate.add(duration, durationFormat); @@ -15,66 +15,71 @@ timeElement.val(timeInputValue); } -function onDurationChange() { - var startTime = $("#start-time").val(); - var endTime = $("#end-time").val(); - var duration = $("#duration").val(); +function onDurationChange(startTimeId, endTimeId, startDateId, endDateId, durationId, hoursMinutesDropdownBtnId, startDatePickerId, endDatePickerId) { + try { + var startTime = $("#" + startTimeId).val(); + var endTime = $("#" + endTimeId).val(); + var duration = $("#" + durationId).val(); + var hoursMinutesDropdownButton = $("#" + hoursMinutesDropdownBtnId); - var hoursMinutesDropdownButton = $("#hours-minutes-dropdown-btn"); - var hoursMinutesText = hoursMinutesDropdownButton.length ? hoursMinutesDropdownButton.text().replaceAll(/\s/g, "") : ""; - var startTimeCondition = startTime !== undefined && startTime !== null && startTime.length > 0; - var endTimeCondition = endTime !== undefined && endTime !== null && endTime.length > 0; - var durationNumber = parseFloat(duration.replace(",", ".")); - var durationCondition = !isNaN(durationNumber); + var hoursMinutesText = hoursMinutesDropdownButton.length ? hoursMinutesDropdownButton.text().replaceAll(/\s/g, "") : ""; - if ((false === startTimeCondition && false === endTimeCondition) || durationCondition === false) { - return; - } + var startTimeCondition = startTime !== undefined && startTime !== null && startTime.length > 0; + var endTimeCondition = endTime !== undefined && endTime !== null && endTime.length > 0; + var durationNumber = parseFloat(duration.replace(",", ".")); + var durationCondition = !isNaN(durationNumber); - var startDateString = $("#start-date-picker").datetimepicker("date"); - var endDate = moment(new Date()); - var startDate = moment(new Date()); + if ((false === startTimeCondition && false === endTimeCondition) || durationCondition === false) { + return; + } - if (startDateString.length !== 0) { - startDate = moment(startDateString); - endDate = startDate.clone(); - } + var startDateString = $("#" + startDatePickerId).datetimepicker("date"); + var endDate = moment(new Date()); + var startDate = moment(new Date()); - if ($("#end-date-picker").length !== 0) { - var endDateString = $("#end-date-picker").datetimepicker("date"); - endDate = moment(endDateString); - } + if (startDateString.length !== 0) { + startDate = moment(startDateString); + endDate = startDate.clone(); + } - var h2m = [0, 0]; + if ($("#" + endDatePickerId).length !== 0) { + var endDateString = $("#" + endDatePickerId).datetimepicker("date"); + endDate = moment(endDateString); + } - var durationFormat = hoursMinutesText === "Stunden" ? "h" : "m"; + var h2m = [0, 0]; - if (startTimeCondition === true) { - h2m = parseTimeInputToIntegerArray(startTime); + var durationFormat = hoursMinutesText === "Stunden" ? "h" : "m"; - startDate = startDate.hours(h2m[0]).minutes(h2m[1]); - endDate = startDate.clone().add(durationNumber, durationFormat); + if (startTimeCondition === true) { + h2m = parseTimeInputToIntegerArray(startTime); - $("#end-time").val(endDate.format("HH:mm")); - $("#end-date").val(endDate.format("DD.MM.yyyy")); - } else { - h2m = parseTimeInputToIntegerArray(endTime); + startDate = startDate.hours(h2m[0]).minutes(h2m[1]); + endDate = startDate.clone().add(durationNumber, durationFormat); - endDate = endDate.hours(h2m[0]).minutes(h2m[1]); - startDate = endDate.clone().add(durationNumber * -1, durationFormat); + $("#" + endTimeId).val(endDate.format("HH:mm")); + $("#" + endDateId).val(endDate.format("DD.MM.yyyy")); + } else { + h2m = parseTimeInputToIntegerArray(endTime); - $("#start-time").val(startDate.format("HH:mm")); - $("#start-date").val(startDate.format("DD.MM.yyyy")); + endDate = endDate.hours(h2m[0]).minutes(h2m[1]); + startDate = endDate.clone().add(durationNumber * -1, durationFormat); + + $("#" + startTimeId).val(startDate.format("HH:mm")); + $("#" + startDateId).val(startDate.format("DD.MM.yyyy")); + } + } catch(error) { + logError(error); } } -function calculateDuration(isInvocatedByHoursMinutesButton) { - var startTime = $("#start-time").val(); - var endTime = $("#end-time").val(); - var duration = $("#duration").val(); +function calculateDuration(isInvocatedByHoursMinutesButton, startTimeId, endTimeId, durationId, hoursMinutesDropdownBtnId, startDatePickerId, endDatePickerId) { + var startTime = $("#" + startTimeId).val(); + var endTime = $("#" + endTimeId).val(); + var duration = $("#" + durationId).val(); - var hoursMinutesDropdownButton = $("#hours-minutes-dropdown-btn"); + var hoursMinutesDropdownButton = $("#" + hoursMinutesDropdownBtnId); var hoursMinutesText = hoursMinutesDropdownButton.length ? hoursMinutesDropdownButton.text().replaceAll(/\s/g, "") : ""; @@ -87,7 +92,7 @@ function calculateDuration(isInvocatedByHoursMinutesButton) { var endTimeCondition = endTime !== undefined && endTime !== null && endTime.length > 0; var durationNumber = parseFloat(duration.replace(",", ".")); var durationCondition = !isNaN(durationNumber); - var startDateString = $("#start-date-picker").datetimepicker("date"); + var startDateString = $("#" + startDatePickerId).datetimepicker("date"); var endDate = moment(new Date()); var startDate = moment(new Date()); @@ -97,8 +102,8 @@ function calculateDuration(isInvocatedByHoursMinutesButton) { } // Es gibt ein Enddatumsfeld - if ($("#end-date-picker").length !== 0) { - var endDateString = $("#end-date-picker").datetimepicker("date"); + if ($("#" + endDatePickerId).length !== 0) { + var endDateString = $("#" + endDatePickerId).datetimepicker("date"); if (endDateString !== null && endDateString.length !== 0) { endDate = moment(endDateString); @@ -107,6 +112,7 @@ function calculateDuration(isInvocatedByHoursMinutesButton) { var newDurationValue = 0; + // Start- und Enddatum sind vorhanden und das Event wurde nicht vom Stunden/Minuten-Dropdown aufgerufen if (startTimeCondition && endTimeCondition && isInvocatedByHoursMinutesButton === false) { var startHHmm = parseTimeInputToIntegerArray(startTime); var endHHmm = parseTimeInputToIntegerArray(endTime); @@ -124,7 +130,8 @@ function calculateDuration(isInvocatedByHoursMinutesButton) { newDurationValue = momentDuration.asMinutes(); } - $("#duration").val(newDurationValue); + $("#" + durationId).val(newDurationValue); + // Startdatum und Dauer sind vorhanden } else if (startTimeCondition && durationCondition) { if (hoursMinutesDropdownButton.length) { if (hoursMinutesText === "Stunden") { @@ -133,10 +140,11 @@ function calculateDuration(isInvocatedByHoursMinutesButton) { durationNumber *= 60; } - $("#duration").val(durationNumber); + $("#" + durationId).val(durationNumber); } - calculateTimeWithDuration(startTime, $("#end-time"), startDate, durationNumber); + calculateTimeWithDuration(startTime, $("#" + endTimeId), startDate, durationNumber, hoursMinutesDropdownBtnId); + // Enddatum und Dauer sind vorhanden } else if (endTimeCondition && durationCondition) { if (hoursMinutesDropdownButton.length) { if (hoursMinutesText === "Stunden") { @@ -145,9 +153,9 @@ function calculateDuration(isInvocatedByHoursMinutesButton) { durationNumber *= 60; } - $("#duration").val(durationNumber); + $("#" + durationId).val(durationNumber); } - calculateTimeWithDuration(endTime, $("#start-time"), startDate, durationNumber * -1); + calculateTimeWithDuration(endTime, $("#" + startTimeId), startDate, durationNumber * -1, hoursMinutesDropdownBtnId); } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Scripts/view-scripts/main.js b/BeWoPlanerMobil/Scripts/view-scripts/main.js index 030d8711a..8f4d94e87 100644 --- a/BeWoPlanerMobil/Scripts/view-scripts/main.js +++ b/BeWoPlanerMobil/Scripts/view-scripts/main.js @@ -25,9 +25,9 @@ function checkJson(str) return true; } -function serviceDescriptionSelectOnReset() { +function serviceDescriptionSelectOnReset(categorySelectId, leistungSelectId, textmoduleContainerId, treeId) { setTimeout(function () { - loadServiceDescriptions(); + loadServiceDescriptions(categorySelectId, leistungSelectId, textmoduleContainerId, treeId); }, 100); } @@ -63,19 +63,19 @@ function resetSingleBookingForm() { function submitSingleBookingForm() { showSpinner(); - validateForm($("#singleBookingForm")); + validateForm($("#singleBookingForm"), null); } function submitCreateForm() { showSpinner(); - validateForm($("#serviceRecordCreationForm")); + validateForm($("#serviceRecordCreationForm"), null); } function submitEditForm() { showSpinner(); - validateForm($("#serviceRecordEditForm")); + validateForm($("#serviceRecordEditForm"), null); } function resetGroupBookingForm() { @@ -85,19 +85,19 @@ function resetGroupBookingForm() { function submitGroupBookingForm() { showSpinner(); - validateForm($("#groupBookingCreationForm")); + validateForm($("#groupBookingCreationForm"), null); } function submitGroupBookingEditForm() { showSpinner(); - validateForm($("#groupBookingEditingForm")); + validateForm($("#groupBookingEditingForm"), null); } function submitGroupBookingForm() { showSpinner(); - validateForm($("#groupBookingForm")); + validateForm($("#groupBookingForm"), null); } function deactivateGroupBookingForm() { @@ -164,12 +164,16 @@ function deleteServiceRecord(serviceRecordOid) { }, false); } -function validateForm(form) { +function validateForm(form, prefix) { if (form === undefined || form === null) { hideSpinner(); return; } - + + if(prefix === undefined || prefix === null) { + prefix = ""; + } + var errorMessage = ""; var isNoticeMandatory = getIsDocumentationMandatory(); var numberOfNoticeTextareas = getNumberOfDokutypes(); @@ -178,12 +182,12 @@ function validateForm(form) { if (isNoticeMandatory) { if (numberOfNoticeTextareas === 0) { - var doku = $("#dokufeld").val(); + var doku = $("#" + prefix + "dokufeld").val(); isValid = doku.length > 0; } else { for (var i = 0; i < numberOfNoticeTextareas; i++) { - var d = $("#doku-textarea-" + i).val(); + var d = $("#" + prefix + "doku-textarea-" + i).val(); isValid = d.length > 0; @@ -198,7 +202,7 @@ function validateForm(form) { } } - var startAndEndDates = getStartAndEndDate(); + var startAndEndDates = getStartAndEndDate(prefix); if (startAndEndDates === null && isValid) { isValid = false; @@ -220,21 +224,28 @@ function validateForm(form) { return; } + logDebug("startAndEndDates !== null && isValid: " + (startAndEndDates !== null && isValid)); + if(startAndEndDates !== null && isValid) { var start = startAndEndDates[0]; var end = startAndEndDates[1]; - $.get(getCheckRightsUrl(), { von: start.format("DD.MM.YYYY"), bis: end.format("DD.MM.YYYY"), inEditMode: isInEditingMode, dateString: start.format("DD.MM.YYYY"), startString: start.format("HH:mm"), endString: end.format("HH:mm") }).done(function(result) { + logDebug("Validiere Eingaben auf dem Server"); + $.get(getCheckRightsUrl(), { von: start.format("DD.MM.YYYY"), bis: end.format("DD.MM.YYYY"), inEditMode: isInEditingMode, dateString: start.format("DD.MM.YYYY"), startString: start.format("HH:mm"), endString: end.format("HH:mm") }).done(function (result) { + logDebug("Eingaben auf dem Server validiert"); var message = $.parseJSON(result); - if(message.Message === null) { + if (message.Message === null) { + logDebug("Message-Eigenschaft der Serverantwort ist null. Schicke Formular zum Server"); form.submit(); } else { + logDebug("Message-Eigenschaft der Serverantwort hat einen Wert. Beende Warteanimation"); hideSpinner(); var kannTrotzdemGespeichertWerden = message.KannTrotzdemGespeichertWerden; - var testCallback = function() { + var testCallback = function () { + logDebug("Kann trotzdem gespeichert werden: " + kannTrotzdemGespeichertWerden); $("#messagePopup .modal-body").html(); if(kannTrotzdemGespeichertWerden) { showSpinner(); @@ -343,15 +354,19 @@ function checkNumberInput(inputId) { } // Wird bei der Validierung des Formulars benutzt -function getStartAndEndDate() { - var startTimePicker = $("#start-time-picker"); - var endTimePicker = $("#end-time-picker"); - var startDatePicker = $("#start-date-picker"); - var endDatePicker = $("#end-date-picker"); +function getStartAndEndDate(prefix) { + if (prefix === undefined || prefix === null) { + prefix = ""; + } + + var startTimePicker = $("#" + prefix + "start-time-picker"); + var endTimePicker = $("#" + prefix + "end-time-picker"); + var startDatePicker = $("#" + prefix + "start-date-picker"); + var endDatePicker = $("#" + prefix + "end-date-picker"); // Bei leeren Start- und Endfeldern. Muss ein Dummydate zurückgeben, // damit das Speichern ohne Angabe der Start- und Endzeit möglich ist. - if($("#start-time").val().length === 0 || $("#end-time").val().length === 0) { + if ($("#" + prefix + "start-time").val().length === 0 || $("#" + prefix + "end-time").val().length === 0) { var bareDate = new Date(); bareDate.setHours(0); @@ -421,36 +436,6 @@ function textCategoryOnClick(categoryId) { childrenContainer.toggle(); } -function textModuleOnClick(textModuleOid) { - var focusedDokuFeld; - - $.get(getLoadCompleteTextbausteinByOidUrl(), { pTextbausteinOid: textModuleOid }).done(function(textModuleText) { - if ($("#dokufeld").length > 0) { - focusedDokuFeld = $("#dokufeld"); - } else { - var numberOfDokutypes = getNumberOfDokutypes(); - - for (var i = 0; i < numberOfDokutypes; i++) { - var currentElement = $("#doku_" + i); - - if (currentElement.css("display") !== "none") { - focusedDokuFeld = $("#doku-textarea-" + i); - break; - } - } - } - - var cursorPosition = focusedDokuFeld.prop("selectionStart"); - var v = focusedDokuFeld.val(); - var textBefore = v.substring(0, cursorPosition); - var textAfter = v.substring(cursorPosition, v.length); - - focusedDokuFeld.val(textBefore + textModuleText + textAfter); - - $("#textbausteine-popup").modal("hide"); - }); -} - function supportConceptSearchOnChange() { try { var text = $("#support-concept-search-input").val().toLowerCase(); diff --git a/BeWoPlanerMobil/Service/ASPHibernateSessionManager.cs b/BeWoPlanerMobil/Service/ASPHibernateSessionManager.cs index f4df999c9..e6a7a5ec2 100644 --- a/BeWoPlanerMobil/Service/ASPHibernateSessionManager.cs +++ b/BeWoPlanerMobil/Service/ASPHibernateSessionManager.cs @@ -40,10 +40,10 @@ namespace BeWoPlanerMobil.Service if (!_SessionFactories.ContainsKey(MobileSessionFacade.Tenant)) { #if DEBUG - var hierarchy = (Hierarchy)LogManager.GetRepository(); - var logger = (Logger)hierarchy.GetLogger("NHibernate.SQL"); - logger.AddAppender(new TraceAppender { Layout = new SimpleLayout() }); - hierarchy.Configured = true; + //var hierarchy = (Hierarchy)LogManager.GetRepository(); + //var logger = (Logger)hierarchy.GetLogger("NHibernate.SQL"); + //logger.AddAppender(new TraceAppender { Layout = new SimpleLayout() }); + //hierarchy.Configured = true; #endif var serverPath = HttpContext.Current.Server.MapPath(""); diff --git a/BeWoPlanerMobil/Util/AppointmentListItem.cs b/BeWoPlanerMobil/Util/AppointmentListItem.cs index 898cfd111..90a03d4be 100644 --- a/BeWoPlanerMobil/Util/AppointmentListItem.cs +++ b/BeWoPlanerMobil/Util/AppointmentListItem.cs @@ -28,6 +28,8 @@ namespace BeWoPlanerMobil.Util public bool IsException { get; } + public bool CanBeEdited { get; } + public int ColSize { get @@ -64,6 +66,8 @@ namespace BeWoPlanerMobil.Util { Identifier = Guid.NewGuid(); + CanBeEdited = schedulerAppointment.CanBeEdited; + Oid = schedulerAppointment.SchedulerAppointmentOid; AllDay = schedulerAppointment.AllDay; IsTask = schedulerAppointment.IsTask; diff --git a/BeWoPlanerMobil/Util/FormCollectionConstants.cs b/BeWoPlanerMobil/Util/FormCollectionConstants.cs index 1827b2dbb..3119a9bc0 100644 --- a/BeWoPlanerMobil/Util/FormCollectionConstants.cs +++ b/BeWoPlanerMobil/Util/FormCollectionConstants.cs @@ -25,6 +25,8 @@ public static string ServiceRecordOidHolder2Key => "service-record-oid-holder"; public static string IsInGroupBookingModeKey => "IsInGroupBookingMode"; + public static string IsInMultiBookingModeKey => "IsInMultiBookingMode"; + // Kalender public static string AppointmentStartDateKey => "StartDate"; diff --git a/BeWoPlanerMobil/Util/MobileUtils.cs b/BeWoPlanerMobil/Util/MobileUtils.cs index 8b2554627..60d204919 100644 --- a/BeWoPlanerMobil/Util/MobileUtils.cs +++ b/BeWoPlanerMobil/Util/MobileUtils.cs @@ -302,7 +302,7 @@ namespace BeWoPlanerMobil.Util return flatNode; } - public static ServiceRecordDC CloneServiceRecordForGroupBooking(ServiceRecordDC pOriginal) + public static ServiceRecordDC CloneServiceRecord(ServiceRecordDC pOriginal) { var m = pOriginal; diff --git a/BeWoPlanerMobil/Util/NullableDateTimeSpan.cs b/BeWoPlanerMobil/Util/NullableDateTimeSpan.cs new file mode 100644 index 000000000..2accc5f16 --- /dev/null +++ b/BeWoPlanerMobil/Util/NullableDateTimeSpan.cs @@ -0,0 +1,23 @@ +using System; +using System.Diagnostics; + +namespace BeWoPlanerMobil.Util +{ + [DebuggerDisplay("{StartDate} - {EndDate}")] + public class NullableDateTimeSpan + { + public DateTime? StartDate { get; set; } + public DateTime? EndDate { get; set; } + + public NullableDateTimeSpan() + { + + } + + public NullableDateTimeSpan(DateTime startDate, DateTime endDate) + { + StartDate = startDate; + EndDate = endDate; + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/ServiceRecord2Validation.cs b/BeWoPlanerMobil/Util/ServiceRecord2Validation.cs index 64d7e3498..d99ba4b71 100644 --- a/BeWoPlanerMobil/Util/ServiceRecord2Validation.cs +++ b/BeWoPlanerMobil/Util/ServiceRecord2Validation.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using BS.Shared.DataContracts; +using BS.Shared.Extensions; namespace BeWoPlanerMobil.Util { @@ -16,5 +17,47 @@ namespace BeWoPlanerMobil.Util ValidationResults = pValidationResults; HilfePlanZeitraum = pHilfePlanZeitraum; } + + public override bool Equals(object obj) + { + if(obj is ServiceRecord2Validation serviceRecord2Validation) + { + var listEquals = false; + + if(ValidationResults is null && serviceRecord2Validation.ValidationResults is null) + { + listEquals = true; + } + else if(!(ValidationResults is null)) + { + listEquals = ValidationResults.AreListEqual(serviceRecord2Validation.ValidationResults); + } + + var sr2 = serviceRecord2Validation.ServiceRecord; + + var srEqual = ServiceRecord.Employee.Equals(sr2.Employee) && + ServiceRecord.CostBearer.Equals(sr2.CostBearer) && + ServiceRecord.CostBearer2SupportConceptOid.Equals(sr2.CostBearer2SupportConceptOid) && + ServiceRecord.SupportConcept.Equals(sr2.SupportConcept) && + ServiceRecord.Customer.Equals(sr2.Customer) && + ServiceRecord.DistanceInMeter.Equals(sr2.DistanceInMeter) && + (ServiceRecord.Goals is null && sr2.Goals is null || (!(ServiceRecord.Goals is null) && ServiceRecord.Goals.AreListEqual(sr2.Goals))) && + ServiceRecord.RoundedDuration.Equals(sr2.RoundedDuration) && + ServiceRecord.Notice.Equals(sr2.Notice) && + ServiceRecord.Notice2.Equals(sr2.Notice2) && + ServiceRecord.Notice3.Equals(sr2.Notice3) && + ServiceRecord.Notice4.Equals(sr2.Notice4) && + ServiceRecord.Notice5.Equals(sr2.Notice5) && + ServiceRecord.ServiceDescription.Equals(sr2.ServiceDescription) && + ServiceRecord.ServiceRecordType.Equals(sr2.ServiceRecordType) && + ServiceRecord.ServiceRecordFormat.Equals(sr2.ServiceRecordFormat) && + (ServiceRecord.End?.Equals(sr2.End) ?? false) && + (ServiceRecord.Start?.Equals(sr2.Start) ?? false); + + return listEquals;// && srEqual && (HilfePlanZeitraum?.Equals(serviceRecord2Validation.HilfePlanZeitraum) ?? false); + } + + return false; + } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Main/GoalTreePartial.cshtml b/BeWoPlanerMobil/Views/Main/GoalTreePartial.cshtml index b83df0a27..cd5cd57b4 100644 --- a/BeWoPlanerMobil/Views/Main/GoalTreePartial.cshtml +++ b/BeWoPlanerMobil/Views/Main/GoalTreePartial.cshtml @@ -3,16 +3,128 @@ @using BS.Shared.DataContracts @model MainModel + + @helper BuildGoalTreeBranch(GoalTreeItem goalTreeItem) { + var isChecked = Model.SelectedGoals.Any(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goalTreeItem.ValueListEntryOid); + var isCheckedValue = isChecked ? "checked" : string.Empty; + + RatingTypeDC ratingType = null; + + if(isChecked) + { + var selectedGoal = Model.SelectedGoals.FirstOrDefault(f => f.ValueListEntryOid.HasValue && f.ValueListEntryOid.Value == goalTreeItem.ValueListEntryOid); + + if(!(selectedGoal is null)) + { + ratingType = Model.GoalRatingTypes.FirstOrDefault(f => f.RatingTypeOid.HasValue && f.RatingTypeOid.Value == selectedGoal.RatingTypeOid); + } + } + if(!goalTreeItem.IsLeaf) // Ziel {
-
-
-
@goalTreeItem.Header
-
- +
+
+
+ + + + @(ratingType?.DisplayName ?? goalTreeItem.RatingName) + +
+
+
@@ -28,21 +140,6 @@ } else // Maßnahme { - var isChecked = Model.SelectedGoals.Any(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goalTreeItem.ValueListEntryOid); - var isCheckedValue = isChecked ? "checked" : string.Empty; - - RatingTypeDC ratingType = null; - - if(isChecked) - { - var selectedGoal = Model.SelectedGoals.FirstOrDefault(f => f.ValueListEntryOid.HasValue && f.ValueListEntryOid.Value == goalTreeItem.ValueListEntryOid); - - if(!(selectedGoal is null)) - { - ratingType = Model.GoalRatingTypes.FirstOrDefault(f => f.RatingTypeOid.HasValue && f.RatingTypeOid.Value == selectedGoal.RatingTypeOid); - } - } -
diff --git a/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml b/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml index 821ebcb10..9399d7f3e 100644 --- a/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml +++ b/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml @@ -18,11 +18,11 @@ var buttonText = $(this).text(); $("#hours-minutes-dropdown-btn").text(buttonText); - setInputFilter(); + setInputFilter('duration', 'distance', 'hours-minutes-dropdown-btn'); $.get('@Url.Action("ToggleDurationUnit")', { isInHoursMode: buttonText === "Stunden" }); - calculateDuration(true); + calculateDuration(true, 'start-time', 'end-time', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker'); }); }); @@ -33,7 +33,7 @@ { var submitButtonText = Model.IsInEditingMode ? "Speichern" : "Anlegen"; - using(Html.BeginForm("CreateOrUpdateGroupBooking", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset()", id = "groupBookingForm" })) + using(Html.BeginForm("CreateOrUpdateGroupBooking", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset('category-select', 'leistung-select', 'textmodule-container', 'tree')", id = "groupBookingForm" })) { var startDate = Model.SelectedServiceRecord?.Start?.ToShortDateString() ?? DateTime.Today.ToShortDateString(); var endDate = Model.SelectedServiceRecord?.End?.ToShortDateString() ?? DateTime.Today.ToShortDateString(); @@ -105,7 +105,7 @@
@@ -115,7 +115,7 @@
@Html.LabelFor(m => m.SelectedServiceCategoryOid) - @Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", @class = "custom-select", Id = "category-select" }) + @Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions('category-select', 'leistung-select', 'textmodule-container', 'tree')", @class = "custom-select", Id = "category-select" })
@@ -211,7 +211,7 @@
- +
@if (Model.IsZeiterfassungInStdMin) @@ -367,7 +367,7 @@ long groupOid; var wasSuccessful = long.TryParse(group.Value, out groupOid); - var shouldBeChecked = wasSuccessful ? Model.SelectedGroupOfPeopleOids.Contains(groupOid) : wasSuccessful; + var shouldBeChecked = wasSuccessful ? Model.GroupBookingSelectedGroupOfPeopleOids.Contains(groupOid) : wasSuccessful; var attribute = shouldBeChecked ? "checked=\"checked\"" : string.Empty; } @@ -409,7 +409,7 @@ @foreach (var employee in Model.Employees) { - var checkedValue = Model.SelectedEmployees.Contains(employee) ? "checked=\"checked\"" : string.Empty; + var checkedValue = Model.GroupBookingSelectedEmployees.Contains(employee) ? "checked=\"checked\"" : string.Empty;
diff --git a/BeWoPlanerMobil/Views/Main/Main.cshtml b/BeWoPlanerMobil/Views/Main/Main.cshtml index 33e3cdaf4..b3cea6585 100644 --- a/BeWoPlanerMobil/Views/Main/Main.cshtml +++ b/BeWoPlanerMobil/Views/Main/Main.cshtml @@ -16,53 +16,93 @@ } + + + +
+
+ @if(!(Model is null)) + { + using(Html.BeginForm("CreateMultiBooking", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset('mb-category-select', 'mb-leistung-select', 'textmodule-container', 'tree')", id = "multiBookingForm" })) + { +
+ +
+
+ +
+
+ + +
+
+
+
+ @foreach(var selectedCb2ScRelation in Model.MultiBookingSelectionObject.SelectedRelations) + { +
+
+
+ + @selectedCb2ScRelation.Text1 +
+ + @selectedCb2ScRelation.Text2 + +
+
+
+ +
+
+
+ } +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
Kategorie
+
+ @Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions('mb-category-select', 'mb-leistung-select', 'textmodule-container', 'tree')", @class = "custom-select", Id = "mb-category-select" }) +
+
+
+
+ + +
+
+
+
+
+
Leistung
+
+ +
+ + @**@ + +
+
+
+ + +
+
+
+
+
+
Startdatum
+
+ +
+
+
+
+
+
+ + @if(Model.IsEndDateVisible) + { +
+
+ @**@ +
+
+
Enddatum
+
+ +
+
+
+
+
+
+ } +
+ + +
+ @{ + var startTimeValue = Model.StartTimeToEdit; + var endTimeValue = Model.EndTimeToEdit; + + var divisor = Model.SelectedDurationUnit == "Stunden" ? 60 : 1; + + var durationValue = string.Empty; + + if(Model.SetStartTimeToEndTimeAfterSave && !Model.IsInEditingMode) + { + startTimeValue = Model.NewStartTime; + endTimeValue = Model.NewEndTime; + if(Model.NewDuration.HasValue) + { + durationValue = (Model.NewDuration / divisor).ToString(); + } + } + } +
+
+ @**@ +
+
+
Von
+
+ +
+
+
+
+
+
+
+
+ @**@ +
+
+
Bis
+
+ +
+
+
+
+
+
+
+ + +
+
+
+ @**@ +
+
+
Dauer
+
+ + @if(Model.IsZeiterfassungInStdMin) + { +
+ + +
+ } +
+ +
+
+ +
+ + + @if(Model.ShowDistanceField) + { +
+
+
+ @**@ +
+
+
Gefahrene Kilometer
+
+ +
+
+
+
+ } + + + @if(AbstractModel.HasRightToSeeTextModules) + { +
+
+ +
+
+ } + + +
+
+ @if(Model.NumberOfDokuTypes == 0) + { +
+ + +
+ } + else + { + +
+ @for(var i = 0; i < Model.Dokutypes.Length; i++) + { + var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1); + +
+ +
+ } +
+ } +
+
+
+ } +
+
+ +
+
+ @using(Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post)) + { + + } +
+
+ +
+
+ } +
+
+ + + + + + \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Main/SingleBookingPartial.cshtml b/BeWoPlanerMobil/Views/Main/SingleBookingPartial.cshtml index 45bfa35bb..1a9934c21 100644 --- a/BeWoPlanerMobil/Views/Main/SingleBookingPartial.cshtml +++ b/BeWoPlanerMobil/Views/Main/SingleBookingPartial.cshtml @@ -1,5 +1,7 @@ @using BeWoPlanerMobil.Models @using BeWoPlanerMobil.Util +@using BS.Shared +@using BS.Shared.Extensions @model MainModel @@ -113,7 +115,7 @@ } - using(Html.BeginForm("CreateOrUpdateServiceRecord", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset()", id = "singleBookingForm" })) + using(Html.BeginForm("CreateOrUpdateServiceRecord", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset('category-select', 'leistung-select', 'textmodule-container', 'tree')", id = "singleBookingForm" })) {
@@ -146,7 +148,7 @@
@Html.LabelFor(m => m.SelectedServiceCategoryOid) - @Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", @class = "custom-select", Id = "category-select" }) + @Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions('category-select', 'leistung-select', 'textmodule-container', 'tree')", @class = "custom-select", Id = "category-select" })
@@ -240,7 +242,7 @@
- +
@if(Model.IsZeiterfassungInStdMin) @@ -360,29 +362,291 @@
@using(Html.BeginForm("LoadServiceRecords", "Main", FormMethod.Post, new { id = "selectServiceRecordForm" })) { - +
+
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+ Anzahl Tage: +
+ +
+
+
+
+ + + + var defaultStartDate = DateTime.Now.GetFirstOfMonth().ToShortDateString(); + var defaultEndDate = DateTime.Today.ToShortDateString(); +
+
+
+
+
+
+
+
+ Von +
+ +
+
+
+
+
+
+
+
+
+
+ Bis +
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ Monat +
+ +
+
+
+
+
+
+
+ Jahr +
+ +
+
+
+
}
} + +
@{ @@ -620,22 +884,23 @@ }
- + +