Diverse Bugfixes und Verbesserungen im MoK
Dateien Hochladen im MoK
This commit is contained in:
@@ -160,11 +160,12 @@
|
|||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Rectangle Fill="{StaticResource CustomerContentBrush}" Height="6" />
|
<Rectangle Fill="{StaticResource CustomerContentBrush}" Height="6" />
|
||||||
<TabControl x:Name="tabroot" Grid.Row="1" Style="{StaticResource ObjectEditTabControl}" BorderThickness="0,0,0,0" Padding="4,4,4,4">
|
<TabControl x:Name="tabroot" Grid.Row="1" Style="{StaticResource ObjectEditTabControl}" BorderThickness="0,0,0,0" Padding="4,4,4,4">
|
||||||
<TabItem Header="Details" IsSelected="True" Name="tabitem_details">
|
<!-- Details -->
|
||||||
|
<TabItem Header="Details" IsSelected="True" Name="tabitem_details">
|
||||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
<Grid x:Name="grid_details">
|
<Grid x:Name="grid_details">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -176,13 +177,12 @@
|
|||||||
<RowDefinition Height="Auto" MinHeight="136" />
|
<RowDefinition Height="Auto" MinHeight="136" />
|
||||||
<RowDefinition Height="*" MinHeight="165" />
|
<RowDefinition Height="*" MinHeight="165" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
<!-- Eigenschaften -->
|
||||||
<GroupBox Grid.ColumnSpan="3" Header="Eigenschaften" Style="{StaticResource ObjectEditGroupBox}">
|
<GroupBox Grid.ColumnSpan="3" Header="Eigenschaften" Style="{StaticResource ObjectEditGroupBox}">
|
||||||
<Grid>
|
<Grid>
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
@@ -201,18 +201,18 @@
|
|||||||
<Label Grid.Column="0" Grid.Row="0" Content="Vorname" />
|
<Label Grid.Column="0" Grid.Row="0" Content="Vorname" />
|
||||||
<Label Grid.Column="0" Grid.Row="1" Content="Nachname" />
|
<Label Grid.Column="0" Grid.Row="1" Content="Nachname" />
|
||||||
<!--<Label x:Name="lblAktenzeichen" Grid.Column="0" Grid.Row="2" Content="Aktenzeichen" />-->
|
<!--<Label x:Name="lblAktenzeichen" Grid.Column="0" Grid.Row="2" Content="Aktenzeichen" />-->
|
||||||
<Grid x:Name="panelDebitor" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" >
|
<Grid x:Name="panelDebitor" Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" >
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label x:Name="lblDebitorNumber" Content="Debitor Nr." />
|
<Label x:Name="lblDebitorNumber" Content="Debitor Nr." />
|
||||||
<TextBox x:Name="txtDebitorNumber" Grid.Column="1" Margin="7,3,3,3" Height="23" Text="{val:ValidationBinding Path=DebitorNumber, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox x:Name="txtDebitorNumber" Grid.Column="1" Margin="7,3,3,3" Height="23" Text="{val:ValidationBinding Path=DebitorNumber, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<Label x:Name="lblCostCenter" Grid.Column="2" Content="Kostenstelle" />
|
<Label x:Name="lblCostCenter" Grid.Column="2" Content="Kostenstelle" />
|
||||||
<TextBox x:Name="txtCostCenter" Grid.Column="3" Margin="7,3,3,3" Height="23" Text="{val:ValidationBinding Path=CostCenter, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox x:Name="txtCostCenter" Grid.Column="3" Margin="7,3,3,3" Height="23" Text="{val:ValidationBinding Path=CostCenter, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Label Grid.Column="0" Grid.Row="2" Content="Geburtstag" />
|
<Label Grid.Column="0" Grid.Row="2" Content="Geburtstag" />
|
||||||
<Label Grid.Column="0" Grid.Row="3" Content="Geschlecht" />
|
<Label Grid.Column="0" Grid.Row="3" Content="Geschlecht" />
|
||||||
@@ -222,8 +222,8 @@
|
|||||||
|
|
||||||
<TextBox x:Name="textbox_first" Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Text="{val:ValidationBinding Path=FirstName, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox x:Name="textbox_first" Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Text="{val:ValidationBinding Path=FirstName, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<TextBox Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Text="{val:ValidationBinding Path=LastName, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Text="{val:ValidationBinding Path=LastName, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<dxe:DateEdit AllowNullInput="True" Grid.Column="1" Grid.Row="2" Height="23" Margin="3" EditValue="{Binding Path=DateOfBirth, UpdateSourceTrigger=PropertyChanged}" Width="100" HorizontalAlignment="Left"/>
|
<dxe:DateEdit AllowNullInput="True" Grid.Column="1" Grid.Row="2" Height="23" Margin="3" EditValue="{Binding Path=DateOfBirth, UpdateSourceTrigger=PropertyChanged}" Width="100" HorizontalAlignment="Left"/>
|
||||||
<Grid Grid.Column="1" Grid.Row="3" Height="23" Margin="0,3,0,3">
|
<Grid Grid.Column="1" Grid.Row="3" Height="23" Margin="0,3,0,3">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" SharedSizeGroup="RB1" />
|
<ColumnDefinition Width="Auto" SharedSizeGroup="RB1" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
<RadioButton Grid.Column="1" Margin="3" VerticalAlignment="Center" HorizontalAlignment="Left" IsChecked="{Binding Path=IsFemale, UpdateSourceTrigger=PropertyChanged}" Content="weiblich" />
|
<RadioButton Grid.Column="1" Margin="3" VerticalAlignment="Center" HorizontalAlignment="Left" IsChecked="{Binding Path=IsFemale, UpdateSourceTrigger=PropertyChanged}" Content="weiblich" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<TextBox Grid.Column="3" Grid.Row="0" Margin="3" Height="23" Text="{Binding Path=Childs, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox Grid.Column="3" Grid.Row="0" Margin="3" Height="23" Text="{Binding Path=Childs, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<CheckBox x:Name="chkArchiviert" Grid.Column="3" Grid.Row="1" Margin="3" Height="23" IsChecked="{Binding Path=IsArchived, UpdateSourceTrigger=PropertyChanged}" />
|
<CheckBox x:Name="chkArchiviert" Grid.Column="3" Grid.Row="1" Margin="3" Height="23" IsChecked="{Binding Path=IsArchived, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<TextBox Margin="3" Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="5" Text="{Binding Path=Notice, UpdateSourceTrigger=PropertyChanged}" Height="60" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Left" ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" />
|
<TextBox Margin="3" Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="5" Text="{Binding Path=Notice, UpdateSourceTrigger=PropertyChanged}" Height="60" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Left" ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
@@ -242,7 +242,8 @@
|
|||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<GroupBox Grid.Column="0" Margin="0 8 0 0" Header="Adresse" Style="{StaticResource ObjectEditGroupBox}">
|
<!-- Adresse -->
|
||||||
|
<GroupBox Grid.Column="0" Margin="0 8 0 0" Header="Adresse" Style="{StaticResource ObjectEditGroupBox}">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@@ -263,8 +264,8 @@
|
|||||||
<TextBox Grid.Column="1" Grid.Row="2" Margin="3" Height="23" Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox Grid.Column="1" Grid.Row="2" Margin="3" Height="23" Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
<!-- Kontakt -->
|
||||||
<GroupBox Grid.Column="1" Header="Kontakt" Grid.ColumnSpan="2" Style="{StaticResource ObjectEditGroupBox}" Margin="8,8,0,0">
|
<GroupBox Grid.Column="1" Header="Kontakt" Grid.ColumnSpan="2" Style="{StaticResource ObjectEditGroupBox}" Margin="8,8,0,0">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@@ -289,7 +290,8 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
<GroupBox Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" Header="Familie" Style="{StaticResource ObjectEditGroupBox}">
|
<!-- Familie -->
|
||||||
|
<GroupBox Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" Header="Familie" Style="{StaticResource ObjectEditGroupBox}">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
@@ -312,7 +314,8 @@
|
|||||||
<TextBox Grid.Column="3" Grid.Row="1" Margin="3" Height="80" Text="{Binding Path=Vormund, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" />
|
<TextBox Grid.Column="3" Grid.Row="1" Margin="3" Height="80" Text="{Binding Path=Vormund, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<Grid x:Name="grid_jugendamt" Grid.Row="3" Grid.ColumnSpan="3">
|
<!-- Jugendamt -->
|
||||||
|
<Grid x:Name="grid_jugendamt" Grid.Row="3" Grid.ColumnSpan="3" Grid.Column="0">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -350,17 +353,17 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Dokumentation" Name="tabitem_notice">
|
<TabItem Header="Dokumentation" Name="tabitem_notice">
|
||||||
<GroupBox Header="Dokumentation" Style="{StaticResource ObjectEditGroupBox}">
|
<GroupBox Header="Dokumentation" Style="{StaticResource ObjectEditGroupBox}">
|
||||||
<TextBox Margin="3" Text="{Binding Path=Notice, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Left" ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" />
|
<TextBox Margin="3" Text="{Binding Path=Notice, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Left" ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" />
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Weitere Eigenschaften" Name="tabitem_varFields">
|
<TabItem Header="Weitere Eigenschaften" Name="tabitem_varFields">
|
||||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
<localView:VarFieldView VarFieldList="{Binding VarFields}" />
|
<localView:VarFieldView VarFieldList="{Binding VarFields}" />
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Aktenzeichen" Selector.Selected="TabItemCostBearer_Selected">
|
<TabItem Header="Aktenzeichen" Selector.Selected="TabItemCostBearer_Selected">
|
||||||
<Grid x:Name="grid_costBearerRel">
|
<Grid x:Name="grid_costBearerRel">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@@ -505,7 +508,7 @@
|
|||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Dokumente" Name="tabitem_documents" Selector.Selected="tabitem_documents_Selected" />
|
<TabItem Header="Dokumente" Name="tabitem_documents" Selector.Selected="tabitem_documents_Selected" />
|
||||||
<TabItem Header="Log" Name="tabitem_log" Selector.Selected="tabitem_log_Selected" />
|
<TabItem Header="Log" Name="tabitem_log" Selector.Selected="tabitem_log_Selected" />
|
||||||
</TabControl>
|
</TabControl>
|
||||||
<Border Grid.Row="3" Grid.ColumnSpan="3" Height="40" Margin="0,10,0,0" VerticalAlignment="Stretch" Background="#FF000000">
|
<Border Grid.Row="3" Grid.ColumnSpan="3" Height="40" Margin="0,10,0,0" VerticalAlignment="Stretch" Background="#FF000000">
|
||||||
<Border.OpacityMask>
|
<Border.OpacityMask>
|
||||||
|
|||||||
@@ -754,7 +754,7 @@ namespace BeWo.View.Detail.Report
|
|||||||
},
|
},
|
||||||
rstr => this.Dispatch(delegate
|
rstr => this.Dispatch(delegate
|
||||||
{
|
{
|
||||||
DataTable table = BS.Shared.Core.Utils.XMLDeserializeFromString<DataTable>(rstr);
|
var table = Utils.XMLDeserializeFromString<DataTable>(rstr);
|
||||||
|
|
||||||
datagrid_result.ItemsSource = table;
|
datagrid_result.ItemsSource = table;
|
||||||
SetOidColumnsInvisible();
|
SetOidColumnsInvisible();
|
||||||
|
|||||||
@@ -198,7 +198,6 @@
|
|||||||
<Button Content="🠞" x:Name="TimeIntervalForwardsButton" Click="TimeIntervalForwardsButtonOnClick" />
|
<Button Content="🠞" x:Name="TimeIntervalForwardsButton" Click="TimeIntervalForwardsButtonOnClick" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- ToDo: ServiceRecord-Icon einbauen -->
|
|
||||||
<ListBox Grid.Row="2" ScrollViewer.CanContentScroll="True" IsSynchronizedWithCurrentItem="True" x:Name="listboxTasks"
|
<ListBox Grid.Row="2" ScrollViewer.CanContentScroll="True" IsSynchronizedWithCurrentItem="True" x:Name="listboxTasks"
|
||||||
Margin="0,3,0,0" Padding="0,0,0,0" Width="Auto" HorizontalAlignment="Stretch" MinWidth="0"
|
Margin="0,3,0,0" Padding="0,0,0,0" Width="Auto" HorizontalAlignment="Stretch" MinWidth="0"
|
||||||
HorizontalContentAlignment="Stretch" Style="{DynamicResource HomeViewListStyle}" ItemContainerStyle="{DynamicResource HomeViewListBoxItemStyle}"
|
HorizontalContentAlignment="Stretch" Style="{DynamicResource HomeViewListStyle}" ItemContainerStyle="{DynamicResource HomeViewListBoxItemStyle}"
|
||||||
|
|||||||
@@ -7,12 +7,10 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Security;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Controls.Primitives;
|
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
using System.Windows.Documents;
|
using System.Windows.Documents;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
@@ -35,15 +33,12 @@ using BS.Shared.Extensions;
|
|||||||
using BS.Shared.RSS;
|
using BS.Shared.RSS;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Windows.Markup;
|
using System.Windows.Markup;
|
||||||
using System.Xml;
|
|
||||||
using BeWo.Annotations;
|
using BeWo.Annotations;
|
||||||
using BeWo.ownChat;
|
using BeWo.ownChat;
|
||||||
using BeWo.Scheduler.Utils;
|
using BeWo.Scheduler.Utils;
|
||||||
using BeWo.Scheduler.View;
|
using BeWo.Scheduler.View;
|
||||||
using BeWo.View.Master;
|
using BeWo.View.Master;
|
||||||
using ChatController.HauptKlassen;
|
using ChatController.HauptKlassen;
|
||||||
using DevExpress.Data.Helpers;
|
|
||||||
using DevExpress.Xpf.Docking.VisualElements;
|
|
||||||
using DevExpress.Xpf.DocumentViewer;
|
using DevExpress.Xpf.DocumentViewer;
|
||||||
using DevExpress.Xpf.Printing;
|
using DevExpress.Xpf.Printing;
|
||||||
using DevExpress.XtraScheduler;
|
using DevExpress.XtraScheduler;
|
||||||
@@ -999,13 +994,13 @@ namespace BeWo.View
|
|||||||
{
|
{
|
||||||
var test = 0;
|
var test = 0;
|
||||||
|
|
||||||
while (BeWoApp.LoggedOnEmployee == null && test < 50)
|
while(BeWoApp.LoggedOnEmployee == null && test < 50)
|
||||||
{
|
{
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
test++;
|
test++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BeWoApp.LoggedOnEmployee != null)
|
if(BeWoApp.LoggedOnEmployee != null)
|
||||||
{
|
{
|
||||||
var rights = new List<UserRightType> { UserRightType.KalenderAnsehen };
|
var rights = new List<UserRightType> { UserRightType.KalenderAnsehen };
|
||||||
|
|
||||||
|
|||||||
@@ -352,6 +352,7 @@
|
|||||||
<Content Include="Content\dx.light.css" />
|
<Content Include="Content\dx.light.css" />
|
||||||
<Content Include="Scripts\bootstrap\bootstrap.bundle.min.js" />
|
<Content Include="Scripts\bootstrap\bootstrap.bundle.min.js" />
|
||||||
<Content Include="Scripts\bootstrap\bootstrap4-modal-fullscreen.min.css" />
|
<Content Include="Scripts\bootstrap\bootstrap4-modal-fullscreen.min.css" />
|
||||||
|
<Content Include="Scripts\bs-custom-file-input.min.js" />
|
||||||
<Content Include="Scripts\devexpress-dependencies\ace\ace.min.js" />
|
<Content Include="Scripts\devexpress-dependencies\ace\ace.min.js" />
|
||||||
<Content Include="Scripts\devexpress-dependencies\cldr\cldr.min.js" />
|
<Content Include="Scripts\devexpress-dependencies\cldr\cldr.min.js" />
|
||||||
<Content Include="Scripts\devexpress-dependencies\cldr\event.min.js" />
|
<Content Include="Scripts\devexpress-dependencies\cldr\event.min.js" />
|
||||||
|
|||||||
@@ -114,6 +114,51 @@ textarea {
|
|||||||
transition: none !important;
|
transition: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.wide-dropdown {
|
||||||
|
position: relative;
|
||||||
|
flex: 1 1 0%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pointer-element {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-focus-outline:focus {
|
||||||
|
outline: none !important;
|
||||||
|
-webkit-box-shadow: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-description {
|
||||||
|
min-height: 50px !important;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-selection {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white-space-normal {
|
||||||
|
white-space: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-append {
|
||||||
|
flex: 1 0 0 !important;
|
||||||
|
display: flex !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor-pointer {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-max-height {
|
||||||
|
max-height: 80vh !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Bootstrap v4.4.1 (https://getbootstrap.com/)
|
* Bootstrap v4.4.1 (https://getbootstrap.com/)
|
||||||
* Copyright 2011-2019 The Bootstrap Authors
|
* Copyright 2011-2019 The Bootstrap Authors
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -142,4 +142,49 @@ $font-family-sans-serif: 'Signika Negative', sans-serif;
|
|||||||
transition: none !important;
|
transition: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.wide-dropdown {
|
||||||
|
position: relative;
|
||||||
|
flex: 1 1 0%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pointer-element {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-focus-outline:focus {
|
||||||
|
outline: none !important;
|
||||||
|
-webkit-box-shadow: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-description {
|
||||||
|
min-height: 50px !important;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-selection {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white-space-normal {
|
||||||
|
white-space: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-append {
|
||||||
|
flex: 1 0 0 !important;
|
||||||
|
display: flex !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor-pointer {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-max-height {
|
||||||
|
max-height: 80vh !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
@import "bootstrap/scss/bootstrap";
|
@import "bootstrap/scss/bootstrap";
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using BeWo.Report.DefaultReports;
|
using BeWo.Report.DefaultReports;
|
||||||
@@ -106,20 +107,37 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
|
|
||||||
private void LoadCustomerToModel(long? customerOid)
|
private void LoadCustomerToModel(long? customerOid)
|
||||||
{
|
{
|
||||||
if(!(customerOid > 0) || !Model.Customers.Any(c => c.CustomerOid.Equals(customerOid.Value))) return;
|
if(customerOid is null || (customerOid.Value > 0 && !Model.Customers.Any(c => c.CustomerOid.Equals(customerOid.Value))))
|
||||||
|
|
||||||
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, customerOid.Value);
|
|
||||||
Model.SelectedCustomerOid = customerOid;
|
|
||||||
var customer = CustomerService.LoadCustomer(customerOid.Value);
|
|
||||||
|
|
||||||
if(!(customer is null))
|
|
||||||
{
|
{
|
||||||
Model.ICD10Diagnosen = OperationsService.GetDiagiosisStringsForICD10Codes(customer.ICD10DiagnosisCodes);
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Model.SelectedCustomer = customer;
|
if(customerOid == -1)
|
||||||
|
{
|
||||||
|
Model.SelectedCustomer = null;
|
||||||
|
Model.SelectedCustomerOid = null;
|
||||||
|
Model.FolderTree = null;
|
||||||
|
Model.ICD10Diagnosen = null;
|
||||||
|
Model.Bargeldkassen = new List<BargeldkassenDC>();
|
||||||
|
Model.BargeldtransaktionshistoryEntries = new List<BargeldtransaktionshistoryDC>();
|
||||||
|
Model.TransaktionsOid2HasHistoryEntries = new Dictionary<long, bool>();
|
||||||
|
Model.SelectedBargeldtransaktion = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, customerOid.Value);
|
||||||
|
Model.SelectedCustomerOid = customerOid;
|
||||||
|
var customer = CustomerService.LoadCustomer(customerOid.Value);
|
||||||
|
|
||||||
ReloadBargeldkassen();
|
if(!(customer is null))
|
||||||
|
{
|
||||||
|
Model.ICD10Diagnosen = OperationsService.GetDiagiosisStringsForICD10Codes(customer.ICD10DiagnosisCodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.SelectedCustomer = customer;
|
||||||
|
|
||||||
|
ReloadBargeldkassen();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
@@ -135,7 +153,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
var selectedCustomerOidString = formCollection[FormCollectionConstants.SelectedCustomerOidKey];
|
var selectedCustomerOidString = formCollection[FormCollectionConstants.SelectedCustomerOidKey];
|
||||||
if (long.TryParse(selectedCustomerOidString, out var selectedCustomerOid))
|
if(long.TryParse(selectedCustomerOidString, out var selectedCustomerOid))
|
||||||
{
|
{
|
||||||
LoadCustomerToModel(selectedCustomerOid);
|
LoadCustomerToModel(selectedCustomerOid);
|
||||||
}
|
}
|
||||||
@@ -172,20 +190,216 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
return RedirectToActionPermanent("Customer");
|
return RedirectToActionPermanent("Customer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Dokumente
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult SaveDescriptionChange(string descriptionText, long? fileOid)
|
||||||
|
{
|
||||||
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn())
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("DocumentPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Model.SelectedCustomerOid is null || fileOid is null)
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.ErrorAlertPopupMessage] = "Es ist leider ein unbekannter Fehler aufgetreten.<br/><br/>Bitte kontaktieren Sie einen Administrator.";
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
var file = DownloadService.GetFileAttachmentForMobile(fileOid.Value, MobileSessionFacade.Tenant);
|
||||||
|
|
||||||
|
if(file != null)
|
||||||
|
{
|
||||||
|
file.Description = descriptionText;
|
||||||
|
|
||||||
|
OperationsService.UpdateFileAttachment(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, Model.SelectedCustomerOid.Value);
|
||||||
|
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public FileResult DownloadFile(long fileOid)
|
public FileResult DownloadFile(long fileOid)
|
||||||
{
|
{
|
||||||
if (Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
||||||
{
|
{
|
||||||
TempData[TempDataConstants.DoLogoutKey] = true;
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileAttachment = DownloadService.GetFileAttachmentForMobile(fileOid, MobileSessionFacade.Tenant);
|
var fileAttachment = DownloadService.GetFileAttachmentForMobile(fileOid, MobileSessionFacade.Tenant);
|
||||||
|
|
||||||
return File(fileAttachment.BinaryData, "application/octet-stream", fileAttachment.FileName);
|
return File(fileAttachment.BinaryData, "application/octet-stream", fileAttachment.FileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult DeleteFile(long? fileOid, long? fileVersion)
|
||||||
|
{
|
||||||
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn())
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("DocumentPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fileOid is null || fileVersion is null || Model.SelectedCustomerOid is null)
|
||||||
|
{
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
OperationsService.DeleteFileAttachment(fileOid.Value, fileVersion.Value);
|
||||||
|
|
||||||
|
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, Model.SelectedCustomerOid.Value);
|
||||||
|
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
[HttpPost]
|
||||||
|
public ActionResult UploadFile(FormCollection formCollection)
|
||||||
|
{
|
||||||
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("DocumentPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Request.Files.Count > 0)
|
||||||
|
{
|
||||||
|
var folderOidAsString = formCollection["folder-oid-input"];
|
||||||
|
var description = formCollection["file-description-input"];
|
||||||
|
|
||||||
|
var folderOid = string.IsNullOrWhiteSpace(folderOidAsString) ? null : (long?) long.Parse(folderOidAsString);
|
||||||
|
|
||||||
|
var file = Request.Files[0];
|
||||||
|
|
||||||
|
if(file != null && file.ContentLength > 0)
|
||||||
|
{
|
||||||
|
var fileName = Path.GetFileName(file.FileName);
|
||||||
|
|
||||||
|
byte[] fileData;
|
||||||
|
|
||||||
|
using(var binaryReader = new BinaryReader(file.InputStream))
|
||||||
|
{
|
||||||
|
fileData = binaryReader.ReadBytes(file.ContentLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileAttachment = new FileAttachmentDC
|
||||||
|
{
|
||||||
|
BeWoFolderOid = folderOid,
|
||||||
|
Description = description,
|
||||||
|
FileName = fileName,
|
||||||
|
ObjectTid = TableID.Customer,
|
||||||
|
ObjectOid = Model.SelectedCustomerOid,
|
||||||
|
BinaryData = fileData,
|
||||||
|
FileAttachmentType = FileAttachmentType.NotSpecified,
|
||||||
|
InsertedBy = $"{Model.Employee.FirstName} {Model.Employee.LastName}",
|
||||||
|
InsertedOn = DateTime.Now
|
||||||
|
};
|
||||||
|
|
||||||
|
OperationsService.InsertFileAttachment(fileAttachment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return RedirectToActionPermanent("Customer", new { id = Model.SelectedCustomerOid, model = Model });
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult DeleteFolder(long? folderOid)
|
||||||
|
{
|
||||||
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("DocumentPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(folderOid is null)
|
||||||
|
{
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
var folder = OperationsService.GetFolderById(folderOid.Value);
|
||||||
|
|
||||||
|
if(folder?.BeWoFolderOid != null && folder.BeWoFolderVersion.HasValue && Model.SelectedCustomerOid.HasValue && folder.ObjectOid.Equals(Model.SelectedCustomerOid.Value) && folder.ObjectTid == TableID.Customer)
|
||||||
|
{
|
||||||
|
OperationsService.DeleteFolder(folder.BeWoFolderOid.Value, folder.BeWoFolderVersion.Value);
|
||||||
|
|
||||||
|
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, Model.SelectedCustomerOid.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult RenameFolder(string newName, long folderOid)
|
||||||
|
{
|
||||||
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("DocumentPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(string.IsNullOrWhiteSpace(newName))
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.ErrorMessageKey] = "Ungültiger Name";
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
var folder2Rename = OperationsService.GetFolderById(folderOid);
|
||||||
|
|
||||||
|
if(folder2Rename != null && Model.SelectedCustomerOid.HasValue && folder2Rename.ObjectTid == TableID.Customer && folder2Rename.ObjectOid == Model.SelectedCustomerOid.Value)
|
||||||
|
{
|
||||||
|
folder2Rename.Name = newName;
|
||||||
|
|
||||||
|
OperationsService.UpdateFolder(folder2Rename);
|
||||||
|
|
||||||
|
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, Model.SelectedCustomerOid.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult AddNewFolder(string folderName, long? parentFolderOid)
|
||||||
|
{
|
||||||
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("DocumentPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Model.SelectedCustomerOid is null)
|
||||||
|
{
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(string.IsNullOrWhiteSpace(folderName))
|
||||||
|
{
|
||||||
|
folderName = "Neuer Ordner";
|
||||||
|
}
|
||||||
|
|
||||||
|
var folder = new BeWoFolderDC
|
||||||
|
{
|
||||||
|
Name = folderName,
|
||||||
|
ObjectTid = TableID.Customer,
|
||||||
|
ObjectOid = Model.SelectedCustomerOid,
|
||||||
|
ParentBeWoFolderOid = parentFolderOid
|
||||||
|
};
|
||||||
|
|
||||||
|
OperationsService.InsertNewFolder(folder);
|
||||||
|
|
||||||
|
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, Model.SelectedCustomerOid.Value);
|
||||||
|
|
||||||
|
return PartialView("DocumentPartial", Model);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public string SaveEditedNotice(string newNotice)
|
public string SaveEditedNotice(string newNotice)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,6 +31,11 @@ using GoalRating = BeWoPlanerMobil.Util.GoalRating;
|
|||||||
using Image = System.Drawing.Image;
|
using Image = System.Drawing.Image;
|
||||||
using ServiceRecordDC = BS.Shared.DataContracts.ServiceRecordDC;
|
using ServiceRecordDC = BS.Shared.DataContracts.ServiceRecordDC;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ToDo für Montag, den 26.08.2024: Klickt man auf "bearbeiten" bei einem Eintrag, wird die Leistung nicht geladen
|
||||||
|
* ToDo: Hat man vor dem Anlegen einer Mehrfachbuchung einen Hilfeplan ausgewählt, wird der nicht richtig nach dem Anlegen geladen und die Intervallauswahl ist nicht sichtbar.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace BeWoPlanerMobil.Controllers
|
namespace BeWoPlanerMobil.Controllers
|
||||||
{
|
{
|
||||||
public class MainController : AbstractBaseController
|
public class MainController : AbstractBaseController
|
||||||
@@ -127,6 +132,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model.ShowBetrag = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowBetrag);
|
||||||
|
|
||||||
Model.ShowMarker = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowMarker);
|
Model.ShowMarker = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowMarker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,6 +348,32 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
UserService.UpdateUserSettings(loggedInUser.UserOid.Value, userSettings);
|
UserService.UpdateUserSettings(loggedInUser.UserOid.Value, userSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult SetShowExpiredSupportConcepts(FormCollection pCollection)
|
||||||
|
{
|
||||||
|
if(Model is null)
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return Logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
var newValue = "true,false" == pCollection[FormCollectionConstants.ShowExpiredSupportConceptsKey];
|
||||||
|
|
||||||
|
Model.ShowExpiredSupportConcepts = newValue;
|
||||||
|
|
||||||
|
return UpdateApplicationSettings(SettingsKeys.ShowExpiredSupportConcepts, newValue ? "1" : "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public new ActionResult Logout()
|
||||||
|
{
|
||||||
|
return base.Logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Ziele und Maßnahmen
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public void LoadGoalRatings()
|
public void LoadGoalRatings()
|
||||||
{
|
{
|
||||||
@@ -378,7 +411,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
var goal = allGoals.FirstOrDefault(g => g.ValueListEntryOid?.Equals(goalOid.Value) ?? false);
|
var goal = allGoals.FirstOrDefault(g => g.ValueListEntryOid?.Equals(goalOid.Value) ?? false);
|
||||||
|
|
||||||
if(goal != null)
|
if(goal != null)
|
||||||
{
|
{
|
||||||
if(!Model.SelectedGoals.Any(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goal.ValueListEntryOid))
|
if(!Model.SelectedGoals.Any(a => a.ValueListEntryOid.HasValue && a.ValueListEntryOid.Value == goal.ValueListEntryOid))
|
||||||
@@ -432,29 +465,6 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
[Authorize]
|
|
||||||
public ActionResult SetShowExpiredSupportConcepts(FormCollection pCollection)
|
|
||||||
{
|
|
||||||
if(Model is null)
|
|
||||||
{
|
|
||||||
TempData[TempDataConstants.DoLogoutKey] = true;
|
|
||||||
return Logout();
|
|
||||||
}
|
|
||||||
|
|
||||||
var newValue = "true,false" == pCollection[FormCollectionConstants.ShowExpiredSupportConceptsKey];
|
|
||||||
|
|
||||||
Model.ShowExpiredSupportConcepts = newValue;
|
|
||||||
|
|
||||||
return UpdateApplicationSettings(SettingsKeys.ShowExpiredSupportConcepts, newValue ? "1" : "0");
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public new ActionResult Logout()
|
|
||||||
{
|
|
||||||
return base.Logout();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public void LoadGoals()
|
public void LoadGoals()
|
||||||
{
|
{
|
||||||
@@ -512,7 +522,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
Log.Error(exception);
|
Log.Error(exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<GoalTreeItem> BuildGoalTree(IReadOnlyCollection<ValueListEntryDC> goals)
|
private List<GoalTreeItem> BuildGoalTree(IReadOnlyCollection<ValueListEntryDC> goals)
|
||||||
{
|
{
|
||||||
var ziele = goals.Where(w => Zieltypen.Contains(w.Type)).OrderBy(s => s.DisplayName).ToList();
|
var ziele = goals.Where(w => Zieltypen.Contains(w.Type)).OrderBy(s => s.DisplayName).ToList();
|
||||||
@@ -531,12 +541,12 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
|
|
||||||
var treeItem = new GoalTreeItem(true, ziel.Type)
|
var treeItem = new GoalTreeItem(true, ziel.Type)
|
||||||
{
|
{
|
||||||
Children = new List<GoalTreeItem>(),
|
Children = new List<GoalTreeItem>(),
|
||||||
Header = ziel.DisplayName ?? string.Empty,
|
Header = ziel.DisplayName ?? string.Empty,
|
||||||
ParentOid = ziel.ParentOid,
|
ParentOid = ziel.ParentOid,
|
||||||
ValueListEntryOid = ziel.ValueListEntryOid
|
ValueListEntryOid = ziel.ValueListEntryOid
|
||||||
};
|
};
|
||||||
|
|
||||||
goalTreeDic.Add(ziel.ValueListEntryOid.Value, treeItem);
|
goalTreeDic.Add(ziel.ValueListEntryOid.Value, treeItem);
|
||||||
|
|
||||||
if(ziel.ParentOid is null)
|
if(ziel.ParentOid is null)
|
||||||
@@ -572,10 +582,10 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
|
|
||||||
var kind = new GoalTreeItem(false, ziel.Type)
|
var kind = new GoalTreeItem(false, ziel.Type)
|
||||||
{
|
{
|
||||||
Children = new List<GoalTreeItem>(),
|
Children = new List<GoalTreeItem>(),
|
||||||
Header = ziel.DisplayName ?? string.Empty,
|
Header = ziel.DisplayName ?? string.Empty,
|
||||||
IsLeaf = true,
|
IsLeaf = true,
|
||||||
ValueListEntryOid = ziel.ValueListEntryOid,
|
ValueListEntryOid = ziel.ValueListEntryOid,
|
||||||
RatingName = ratingName,
|
RatingName = ratingName,
|
||||||
ParentOid = ziel.ParentOid
|
ParentOid = ziel.ParentOid
|
||||||
};
|
};
|
||||||
@@ -637,6 +647,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public string LoadStatistics(long oid)
|
public string LoadStatistics(long oid)
|
||||||
@@ -965,6 +977,13 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
doku1 = collection[FormCollectionConstants.Dokumentation6Key];
|
doku1 = collection[FormCollectionConstants.Dokumentation6Key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decimal? betrag = null;
|
||||||
|
var betragAsString = collection[FormCollectionConstants.BetragKey]?.Replace('.', ',');
|
||||||
|
if(decimal.TryParse(betragAsString, out var betragAsDecimal))
|
||||||
|
{
|
||||||
|
betrag = betragAsDecimal;
|
||||||
|
}
|
||||||
|
|
||||||
Log.Info($"CreateOrUpdateServiceRecord: datum:{collection[FormCollectionConstants.DateKey]}; start:{collection[FormCollectionConstants.StartKey]}; ende:{collection[FormCollectionConstants.EndKey]}; dauer:{collection[FormCollectionConstants.DurationKey]}; doku:{doku1}; aktion:{(Model.IsInEditingMode ? "Speichern" : "Anlegen")}");
|
Log.Info($"CreateOrUpdateServiceRecord: datum:{collection[FormCollectionConstants.DateKey]}; start:{collection[FormCollectionConstants.StartKey]}; ende:{collection[FormCollectionConstants.EndKey]}; dauer:{collection[FormCollectionConstants.DurationKey]}; doku:{doku1}; aktion:{(Model.IsInEditingMode ? "Speichern" : "Anlegen")}");
|
||||||
|
|
||||||
if(string.IsNullOrEmpty(collection[FormCollectionConstants.DateKey]))
|
if(string.IsNullOrEmpty(collection[FormCollectionConstants.DateKey]))
|
||||||
@@ -1063,7 +1082,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
Model.NewServiceRecord.Goals = Model.SelectedGoals;
|
Model.NewServiceRecord.Goals = Model.SelectedGoals;
|
||||||
Model.NewServiceRecord.Start = zeitenFeld[0];
|
Model.NewServiceRecord.Start = zeitenFeld[0];
|
||||||
Model.NewServiceRecord.End = zeitenFeld[1];
|
Model.NewServiceRecord.End = zeitenFeld[1];
|
||||||
|
Model.NewServiceRecord.Betrag = betrag;
|
||||||
Model.NewServiceRecord.ServiceRecordType = marker ? ServiceRecordTypeId.Content : ServiceRecordTypeId.DefaultActivity;
|
Model.NewServiceRecord.ServiceRecordType = marker ? ServiceRecordTypeId.Content : ServiceRecordTypeId.DefaultActivity;
|
||||||
|
|
||||||
Model.NewServiceRecord.DistanceInMeter = null;
|
Model.NewServiceRecord.DistanceInMeter = null;
|
||||||
@@ -1440,6 +1459,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
item.GroupPersonCount = group.CustomerCount;
|
item.GroupPersonCount = group.CustomerCount;
|
||||||
item.GroupOid = Model.NewServiceRecord.GroupOid;
|
item.GroupOid = Model.NewServiceRecord.GroupOid;
|
||||||
item.GroupRoundedDuration = groupDuration;
|
item.GroupRoundedDuration = groupDuration;
|
||||||
|
item.Betrag = Model.NewServiceRecord.Betrag;
|
||||||
|
|
||||||
if(item.CostBearer != null && item.CostBearer.CostBearerOid is null && item.SupportConcept != null && item.SupportConcept.CostBearerList.Count > 0)
|
if(item.CostBearer != null && item.CostBearer.CostBearerOid is null && item.SupportConcept != null && item.SupportConcept.CostBearerList.Count > 0)
|
||||||
{
|
{
|
||||||
@@ -2047,6 +2067,54 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
return RedirectToActionPermanent("Main");
|
return RedirectToActionPermanent("Main");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult LoadServiceRecordsNonPost(int dayCountNumber, string start, string end, int month, int year, int recordsKey)
|
||||||
|
{
|
||||||
|
if(Model is null)
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
return PartialView("ServiceRecordListPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
var lastSelectedServiceRecordMonth = new DateTime(year, month, 1);
|
||||||
|
|
||||||
|
var isValidStart = DateTime.TryParse(start, out var parsedStart);
|
||||||
|
var isValidEnd = DateTime.TryParse(end, out var parsedEnd);
|
||||||
|
|
||||||
|
if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen)
|
||||||
|
{
|
||||||
|
if(!isValidStart)
|
||||||
|
{
|
||||||
|
parsedStart = DateTime.Today.GetFirstOfMonth();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isValidEnd)
|
||||||
|
{
|
||||||
|
parsedEnd = DateTime.Today;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(parsedStart > parsedEnd)
|
||||||
|
{
|
||||||
|
(parsedStart, parsedEnd) = (parsedEnd, parsedStart);
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.SelectedZeitraum = new NullableDateTimeSpan(parsedStart, parsedEnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
var serviceRecordTimeInterval = (ServiceRecordTimeInterval) recordsKey;
|
||||||
|
|
||||||
|
Model.ServiceRecordTimeInterval = serviceRecordTimeInterval;
|
||||||
|
|
||||||
|
CalculateSelectedDayCount(dayCountNumber, lastSelectedServiceRecordMonth, parsedStart, parsedEnd, serviceRecordTimeInterval);
|
||||||
|
|
||||||
|
if(Model.CostBearer2SupportConceptOid.HasValue && Model.CostBearer2SupportConceptOid != -1)
|
||||||
|
{
|
||||||
|
LoadPaginatedServiceRecordsToModel(Model.CurrentPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
return PartialView("ServiceRecordListPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
private void CalculateSelectedDayCount(int? dayCountNumber, DateTime? lastSelectedServiceRecordMonth, DateTime? von, DateTime? bis, ServiceRecordTimeInterval? serviceRecordTimeInterval)
|
private void CalculateSelectedDayCount(int? dayCountNumber, DateTime? lastSelectedServiceRecordMonth, DateTime? von, DateTime? bis, ServiceRecordTimeInterval? serviceRecordTimeInterval)
|
||||||
{
|
{
|
||||||
if(dayCountNumber is null)
|
if(dayCountNumber is null)
|
||||||
@@ -2239,6 +2307,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
var end = formCollection[FormCollectionConstants.EndKey];
|
var end = formCollection[FormCollectionConstants.EndKey];
|
||||||
var durationRaw = formCollection[FormCollectionConstants.DurationKey];
|
var durationRaw = formCollection[FormCollectionConstants.DurationKey];
|
||||||
|
|
||||||
|
var betragRaw = formCollection[FormCollectionConstants.BetragKey];
|
||||||
|
|
||||||
var distanceRaw = formCollection[FormCollectionConstants.DistanceKey];
|
var distanceRaw = formCollection[FormCollectionConstants.DistanceKey];
|
||||||
|
|
||||||
var doku1 = formCollection[FormCollectionConstants.Dokumentation1Key]?.RemoveUppercaseEsszett();
|
var doku1 = formCollection[FormCollectionConstants.Dokumentation1Key]?.RemoveUppercaseEsszett();
|
||||||
@@ -2295,6 +2365,11 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
checkServiceRecord.Notice4 = doku4;
|
checkServiceRecord.Notice4 = doku4;
|
||||||
checkServiceRecord.Notice5 = doku5;
|
checkServiceRecord.Notice5 = doku5;
|
||||||
|
|
||||||
|
if(betragRaw != null && decimal.TryParse(betragRaw, out var betrag))
|
||||||
|
{
|
||||||
|
checkServiceRecord.Betrag = betrag;
|
||||||
|
}
|
||||||
|
|
||||||
checkServiceRecord.Goals = Model.SelectedGoals;
|
checkServiceRecord.Goals = Model.SelectedGoals;
|
||||||
|
|
||||||
checkServiceRecord.Start = startDt;
|
checkServiceRecord.Start = startDt;
|
||||||
@@ -2642,6 +2717,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
[FormCollectionConstants.EndKey] = end,
|
[FormCollectionConstants.EndKey] = end,
|
||||||
[FormCollectionConstants.DurationKey] = durationRaw,
|
[FormCollectionConstants.DurationKey] = durationRaw,
|
||||||
[FormCollectionConstants.DistanceKey] = distanceRaw,
|
[FormCollectionConstants.DistanceKey] = distanceRaw,
|
||||||
|
[FormCollectionConstants.BetragKey] = betragRaw,
|
||||||
[FormCollectionConstants.MarkerKey] = marker,
|
[FormCollectionConstants.MarkerKey] = marker,
|
||||||
[FormCollectionConstants.ServiceDescriptionKey] = serviceDescription,
|
[FormCollectionConstants.ServiceDescriptionKey] = serviceDescription,
|
||||||
[FormCollectionConstants.Dokumentation1Key] = doku1,
|
[FormCollectionConstants.Dokumentation1Key] = doku1,
|
||||||
@@ -2767,7 +2843,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
Model.SelectedEmployee = Model.AllEmployees.First(f => f.EmployeeOid.Equals(employeeOid));
|
Model.SelectedEmployee = Model.AllEmployees.First(f => f.EmployeeOid.Equals(employeeOid));
|
||||||
return LeerzeichenFuerGetMethoden;
|
return Model.SelectedEmployee?.DetailDescription ?? LeerzeichenFuerGetMethoden;
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
@@ -3393,6 +3469,13 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
// Marker
|
// Marker
|
||||||
var marker = "on" == formCollection[FormCollectionConstants.MarkerKey];
|
var marker = "on" == formCollection[FormCollectionConstants.MarkerKey];
|
||||||
|
|
||||||
|
decimal? betrag = null;
|
||||||
|
var betragAsString = formCollection[FormCollectionConstants.BetragKey]?.Replace('.', ',');
|
||||||
|
if(decimal.TryParse(betragAsString, out var betragAsDecimal))
|
||||||
|
{
|
||||||
|
betrag = betragAsDecimal;
|
||||||
|
}
|
||||||
|
|
||||||
// Distanz
|
// Distanz
|
||||||
var distanz = formCollection[FormCollectionConstants.DistanceKey];
|
var distanz = formCollection[FormCollectionConstants.DistanceKey];
|
||||||
decimal? distanceInMeters = null;
|
decimal? distanceInMeters = null;
|
||||||
@@ -3489,6 +3572,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
Model.NewServiceRecord.Goals = Model.SelectedGoals;
|
Model.NewServiceRecord.Goals = Model.SelectedGoals;
|
||||||
Model.NewServiceRecord.Start = zeitenFeld[0];
|
Model.NewServiceRecord.Start = zeitenFeld[0];
|
||||||
Model.NewServiceRecord.End = zeitenFeld[1];
|
Model.NewServiceRecord.End = zeitenFeld[1];
|
||||||
|
Model.NewServiceRecord.Betrag = betrag;
|
||||||
|
|
||||||
if(marker)
|
if(marker)
|
||||||
{
|
{
|
||||||
@@ -4097,6 +4181,13 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
|
|
||||||
var marker = "on" == formCollection[FormCollectionConstants.MarkerKey];
|
var marker = "on" == formCollection[FormCollectionConstants.MarkerKey];
|
||||||
|
|
||||||
|
decimal? betrag = null;
|
||||||
|
var betragAsString = formCollection[FormCollectionConstants.BetragKey]?.Replace('.', ',');
|
||||||
|
if(decimal.TryParse(betragAsString, out var betragAsDecimal))
|
||||||
|
{
|
||||||
|
betrag = betragAsDecimal;
|
||||||
|
}
|
||||||
|
|
||||||
var distanz = formCollection[FormCollectionConstants.DistanceKey];
|
var distanz = formCollection[FormCollectionConstants.DistanceKey];
|
||||||
decimal? distanceInMeters = null;
|
decimal? distanceInMeters = null;
|
||||||
|
|
||||||
@@ -4213,7 +4304,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
IsCreatedInMobileClient = true,
|
IsCreatedInMobileClient = true,
|
||||||
Employee = employee,
|
Employee = employee,
|
||||||
ServiceRecordFormat = ServiceRecordFormate.OriginaleZeiterfassung,
|
ServiceRecordFormat = ServiceRecordFormate.OriginaleZeiterfassung,
|
||||||
ServiceDescription = OperationsService.GetServiceDescription(Model.SelectedServiceDescriptionOid.Value)
|
ServiceDescription = OperationsService.GetServiceDescription(Model.SelectedServiceDescriptionOid.Value),
|
||||||
|
Betrag = betrag
|
||||||
};
|
};
|
||||||
|
|
||||||
if(marker)
|
if(marker)
|
||||||
@@ -4373,21 +4465,22 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
int totalServiceRecords;
|
int totalServiceRecords;
|
||||||
|
|
||||||
var firstResult = (selectedPage - 1) * Model.MaxResults;
|
var firstResult = (selectedPage - 1) * Model.MaxResults;
|
||||||
|
var selectedEmployeeOid = Model.SelectedEmployee?.EmployeeOid ?? Model.Employee.EmployeeOid.Value;
|
||||||
|
|
||||||
// Ohne Hilfeplan
|
// Ohne Hilfeplan
|
||||||
if(Model.CostBearer2SupportConceptOid is null || Model.CostBearer2SupportConceptOid < 1)
|
if(Model.CostBearer2SupportConceptOid is null || Model.CostBearer2SupportConceptOid < 1)
|
||||||
{
|
{
|
||||||
records = Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen || Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl ?
|
records = Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen || Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl ?
|
||||||
//Zeitraum oder Monat gewählt
|
//Zeitraum oder Monat gewählt
|
||||||
OperationsService.GetEmployeesServiceRecordsWithStartEndDatePaginated(Model.Employee.EmployeeOid.Value, Model.SelectedZeitraum.StartDate.Value, Model.SelectedZeitraum.EndDate.Value, firstResult, Model.MaxResults, out totalServiceRecords).ToList() :
|
OperationsService.GetEmployeesServiceRecordsWithStartEndDatePaginated(selectedEmployeeOid, Model.SelectedZeitraum.StartDate.Value, Model.SelectedZeitraum.EndDate.Value, firstResult, Model.MaxResults, out totalServiceRecords).ToList() :
|
||||||
OperationsService.GetEmployeesServiceRecords2Paginated(Model.Employee.EmployeeOid.Value, selectedDayCount, firstResult, Model.MaxResults, out totalServiceRecords).ToList();
|
OperationsService.GetEmployeesServiceRecords2Paginated(selectedEmployeeOid, selectedDayCount, firstResult, Model.MaxResults, out totalServiceRecords).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
records = Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen || Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl ?
|
records = Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen || Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl ?
|
||||||
//Zeitraum oder Monat gewählt
|
//Zeitraum oder Monat gewählt
|
||||||
OperationsService.GetCustomerServiceRecordsWithStartEndDatePaginated(Model.SelectedSupportConcept.Customer.CustomerOid, Model.CostBearer2SupportConceptOid.Value, Model.SelectedZeitraum.StartDate.Value, Model.SelectedZeitraum.EndDate.Value, firstResult, Model.MaxResults, out totalServiceRecords) :
|
OperationsService.GetCustomerServiceRecordsWithStartEndDatePaginated(Model.SelectedSupportConcept.Customer.CustomerOid, Model.CostBearer2SupportConceptOid.Value, Model.SelectedZeitraum.StartDate.Value, Model.SelectedZeitraum.EndDate.Value, firstResult, Model.MaxResults, out totalServiceRecords) :
|
||||||
OperationsService.FindServiceRecordsForLastDaysPaginated(Model.CostBearer2SupportConceptOid, Model.SelectedDayCount, Model.Employee.EmployeeOid.Value, firstResult, Model.MaxResults, out totalServiceRecords).ToList();
|
OperationsService.FindServiceRecordsForLastDaysPaginated(Model.CostBearer2SupportConceptOid, Model.SelectedDayCount, Model.Employee?.EmployeeOid, firstResult, Model.MaxResults, out totalServiceRecords).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
var pages = Math.DivRem(totalServiceRecords, Model.MaxResults, out var remainder);
|
var pages = Math.DivRem(totalServiceRecords, Model.MaxResults, out var remainder);
|
||||||
@@ -4508,7 +4601,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private string GetLocalIPAddress()
|
private static string GetLocalIPAddress()
|
||||||
{
|
{
|
||||||
var host = Dns.GetHostEntry(Dns.GetHostName());
|
var host = Dns.GetHostEntry(Dns.GetHostName());
|
||||||
foreach(var ip in host.AddressList)
|
foreach(var ip in host.AddressList)
|
||||||
@@ -4546,9 +4639,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
if(long.TryParse(categoryOidStr, out var categoryOid))
|
if(long.TryParse(categoryOidStr, out var categoryOid))
|
||||||
{
|
{
|
||||||
Model.SelectedServiceCategory = Model.Categories2Descriptions.FirstOrDefault(f => f.Key?.ServiceCategoryOid != null && f.Key.ServiceCategoryOid.Value.Equals(categoryOid)).Key;
|
Model.SelectedServiceCategory = Model.Categories2Descriptions.FirstOrDefault(f => f.Key?.ServiceCategoryOid != null && f.Key.ServiceCategoryOid.Value.Equals(categoryOid)).Key;
|
||||||
//Model.SelectedServiceCategoryOid = Model.SelectedServiceCategory?.ServiceCategoryOid;
|
|
||||||
Model.SelectedServiceDescription = null;
|
Model.SelectedServiceDescription = null;
|
||||||
//Model.SelectedServiceDescriptionOid = null;
|
|
||||||
|
|
||||||
if(Model.SelectedServiceCategory is null)
|
if(Model.SelectedServiceCategory is null)
|
||||||
{
|
{
|
||||||
@@ -4558,7 +4649,6 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
var selectedServiceDescription = Model.Categories2Descriptions[Model.SelectedServiceCategory].OrderBy(sd => sd.Position).ThenBy(sd => sd.ServiceDescriptionOid).FirstOrDefault();
|
var selectedServiceDescription = Model.Categories2Descriptions[Model.SelectedServiceCategory].OrderBy(sd => sd.Position).ThenBy(sd => sd.ServiceDescriptionOid).FirstOrDefault();
|
||||||
|
|
||||||
Model.SelectedServiceDescription = selectedServiceDescription;
|
Model.SelectedServiceDescription = selectedServiceDescription;
|
||||||
//Model.SelectedServiceDescriptionOid = selectedServiceDescription?.ServiceDescriptionOid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return PartialView("Category2ServiceDescriptionPartial", Model);
|
return PartialView("Category2ServiceDescriptionPartial", Model);
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
Model.ServiceCategories = OperationsService.GetAllServiceCategories();
|
Model.ServiceCategories = OperationsService.GetAllServiceCategories();
|
||||||
|
|
||||||
Model.Organisations = CustomerService.GetAllCostBearerCompact();
|
Model.Organisations = CustomerService.GetAllCostBearerCompact();
|
||||||
Model.Organisations.Sort((x, y) => x.Name.CompareTo(y.Name));
|
Model.Organisations.Sort((x, y) => string.Compare(x.Name, y.Name, StringComparison.CurrentCulture));
|
||||||
|
|
||||||
Model.AllTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(MobileSessionFacade.LoggedInEmployee.EmployeeOid);
|
Model.AllTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(MobileSessionFacade.LoggedInEmployee.EmployeeOid);
|
||||||
}
|
}
|
||||||
@@ -468,14 +468,27 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
[Authorize]
|
[Authorize]
|
||||||
public string SetCustomer(long customerOid)
|
public string SetCustomer(long customerOid)
|
||||||
{
|
{
|
||||||
if(Model == null)
|
if(Model is null)
|
||||||
{
|
{
|
||||||
return LeerzeichenFuerGetMethoden;
|
return LeerzeichenFuerGetMethoden;
|
||||||
}
|
}
|
||||||
|
|
||||||
Model.SelectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == customerOid);
|
Model.SelectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == customerOid);
|
||||||
|
|
||||||
return LeerzeichenFuerGetMethoden;
|
return Model.SelectedCustomer?.DetailDescription ?? "Klient";
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public string SetTeam(long teamOid)
|
||||||
|
{
|
||||||
|
if(Model is null)
|
||||||
|
{
|
||||||
|
return LeerzeichenFuerGetMethoden;
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.SelectedTeam = Model.AllTeams.FirstOrDefault(team => team.TeamOid == teamOid);
|
||||||
|
|
||||||
|
return Model.SelectedTeam?.DetailDescription ?? string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
@@ -564,7 +577,7 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
Model.IsForSelectedCostbearersOnly = isForSelectedOrganisationOnly ?? false;
|
Model.IsForSelectedCostbearersOnly = isForSelectedOrganisationOnly ?? false;
|
||||||
Model.SelectedOrganisation = organisationOid.HasValue ? Model.Organisations.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(organisationOid)) : null;
|
Model.SelectedOrganisation = organisationOid.HasValue && Model.IsForSelectedCostbearersOnly ? Model.Organisations.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(organisationOid)) : null;
|
||||||
|
|
||||||
return LeerzeichenFuerGetMethoden;
|
return LeerzeichenFuerGetMethoden;
|
||||||
}
|
}
|
||||||
@@ -593,10 +606,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
Model.IsForSelectedCategoryOnly = isForSelectedServiceCategoryOnly ?? false;
|
Model.IsForSelectedCategoryOnly = isForSelectedServiceCategoryOnly ?? false;
|
||||||
if(serviceCategoryOid.HasValue)
|
|
||||||
{
|
Model.SelectedServiceCategory = serviceCategoryOid.HasValue && Model.IsForSelectedCategoryOnly ? Model.ServiceCategories.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid == serviceCategoryOid) : null;
|
||||||
Model.SelectedServiceCategory = Model.ServiceCategories.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid == serviceCategoryOid);
|
|
||||||
}
|
|
||||||
|
|
||||||
return LeerzeichenFuerGetMethoden;
|
return LeerzeichenFuerGetMethoden;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ using BeWoPlanerMobil.Models;
|
|||||||
using BeWoPlanerMobil.Service;
|
using BeWoPlanerMobil.Service;
|
||||||
using BeWoPlanerMobil.Util;
|
using BeWoPlanerMobil.Util;
|
||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
|
using BS.Shared.Core;
|
||||||
using BS.Shared.DataContracts;
|
using BS.Shared.DataContracts;
|
||||||
using BS.Shared.DataContracts.Compact;
|
using BS.Shared.DataContracts.Compact;
|
||||||
using BS.Shared.Extensions;
|
using BS.Shared.Extensions;
|
||||||
@@ -92,39 +93,71 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
Text = "Berichte",
|
Text = "Berichte",
|
||||||
Value = "0"
|
Value = "0"
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
Model.AllEmployeesForQueries = EmployeeService.GetAllActiveEmployeesCompact();
|
Model.AllEmployeesForQueries = EmployeeService.GetAllActiveEmployeesCompact();
|
||||||
Model.AllCustomersForQueries = EmployeeService.GetActiveCompactCustomersForEmployee(null);
|
Model.AllCustomersForQueries = EmployeeService.GetActiveCompactCustomersForEmployee(null);
|
||||||
|
|
||||||
Model.Queries = QueryService.GetAllQueriesOfType(QueryType.Public);
|
Model.Queries = QueryService.GetAllQueriesOfType(QueryType.Public);
|
||||||
|
|
||||||
foreach(var query in Model.Queries.Where(q => q.Parameter?.Any() ?? false))
|
var names2ValueListEntryTypes = new Dictionary<string, ValueListEntryType>();
|
||||||
{
|
|
||||||
foreach(var parameter in query.Parameter.Where(p => p.ParamType == QueryParameterType.ValueListEntryType))
|
foreach(var query in Model.Queries.Where(q => q.Parameter?.Any() ?? false))
|
||||||
{
|
{
|
||||||
// ToDo: Hier am 05.08.2024 weitermachen!
|
foreach(var parameter in query.Parameter.Where(p => p.ParamType == QueryParameterType.ValueListEntryType))
|
||||||
|
{
|
||||||
|
var parameterName = parameter.Name;
|
||||||
|
|
||||||
|
if(!(parameterName?.Contains("_") ?? false))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var name2Type = parameterName.Split('_');
|
||||||
|
|
||||||
|
var name = name2Type[0];
|
||||||
|
var type = name2Type[1];
|
||||||
|
|
||||||
|
if(!int.TryParse(type, out var typeEnumInt))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var valueListEntryType = (ValueListEntryType) typeEnumInt;
|
||||||
|
names2ValueListEntryTypes.AddIfNotIn(new KeyValuePair<string, ValueListEntryType>(name, valueListEntryType));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(Model.Employee?.EmployeeOid.HasValue ?? false)
|
Model.AllValueListEntriesForQuery = ValueListService.GetAllValueListEntrysByTypes(names2ValueListEntryTypes.Values.ToList()).ToList();
|
||||||
{
|
|
||||||
Model.SupportConcepts = EmployeeService.GetActiveSupportConceptsForEmployee(Model.Employee.EmployeeOid, CustomerFilterEnum.All);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Model.SupportConcepts = new List<SupportConceptDC>();
|
|
||||||
}
|
|
||||||
|
|
||||||
Model.SupportConcepts.DoForEach(sc => Model.CostBearer2SupportConceptRels.AddRangeIfElementsNotIn(sc.CostBearerRelations));
|
Model.AllValueListEntriesForQuery.DoForEach(valueListEntry =>
|
||||||
|
{
|
||||||
|
Model.ValueListEntryTypes2ValueListEntries.AddOrUpdateValueInDictionary(valueListEntry.Type, valueListEntry);
|
||||||
|
});
|
||||||
|
|
||||||
if(Model.SelectedCostBearer2SupportConceptRelListObject is null)
|
if(Model.Employee?.EmployeeOid.HasValue ?? false)
|
||||||
{
|
{
|
||||||
Model.SelectedCostBearer2SupportConceptRelListObject = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(f => f.CostBearer2SupportConceptOid == "-1") ?? Model.CostBearer2SupportConceptRelListObjects.First();
|
Model.SupportConcepts = EmployeeService.GetActiveSupportConceptsForEmployee(Model.Employee.EmployeeOid, CustomerFilterEnum.All);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Model.SupportConcepts = new List<SupportConceptDC>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.SupportConcepts.DoForEach(sc => Model.CostBearer2SupportConceptRels.AddRangeIfElementsNotIn(sc.CostBearerRelations));
|
||||||
|
|
||||||
|
if(Model.SelectedCostBearer2SupportConceptRelListObject is null)
|
||||||
|
{
|
||||||
|
Model.SelectedCostBearer2SupportConceptRelListObject = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(f => f.CostBearer2SupportConceptOid == "-1") ?? Model.CostBearer2SupportConceptRelListObjects.First();
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.AllOrganisationForQuery = CustomerService.GetAllActiveOrganisationsCompact();
|
||||||
|
Model.AllTeamsForQueries = EmployeeService.GetAllActiveCompactTeamsForEmployee(null);
|
||||||
|
|
||||||
|
Model.AllServiceCategoriesForQueries = OperationsService.GetAllServiceCategories();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Model.AllOrganisationForQuery = CustomerService.GetAllActiveOrganisationsCompact();
|
|
||||||
Model.AllTeamsForQueries = EmployeeService.GetAllActiveCompactTeamsForEmployee(null);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(AbstractModel.HasRightToViewMitarbeiterstundenkonto)
|
if(AbstractModel.HasRightToViewMitarbeiterstundenkonto)
|
||||||
@@ -135,6 +168,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
Value = "1"
|
Value = "1"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
Model.SelectedReportType = ReportType.Mitarbeiterstundenkonto;
|
Model.SelectedReportType = ReportType.Mitarbeiterstundenkonto;
|
||||||
#endif
|
#endif
|
||||||
@@ -176,6 +211,8 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
return PartialView("BeWoReportPartial", Model);
|
return PartialView("BeWoReportPartial", Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model.SelectedCustomReport = Model.CustomReports.FirstOrDefault(cr => cr.QueryOid == selectedQuery.Oid);
|
||||||
|
|
||||||
Model.SelectedQuery = selectedQuery;
|
Model.SelectedQuery = selectedQuery;
|
||||||
|
|
||||||
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.Employee.EmployeeOid.Value}";
|
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.Employee.EmployeeOid.Value}";
|
||||||
@@ -219,6 +256,13 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
|
|
||||||
var selectedQuery = Model.Queries.FirstOrDefault(query => query.Oid.Equals(reportOid.Value));
|
var selectedQuery = Model.Queries.FirstOrDefault(query => query.Oid.Equals(reportOid.Value));
|
||||||
|
|
||||||
|
if(selectedQuery is null)
|
||||||
|
{
|
||||||
|
return PartialView("BerichteFormPartialView", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
Model.SelectedCustomReport = Model.CustomReports.FirstOrDefault(cr => cr.QueryOid == selectedQuery.Oid);
|
||||||
|
|
||||||
Model.SelectedQuery = selectedQuery;
|
Model.SelectedQuery = selectedQuery;
|
||||||
|
|
||||||
foreach(var parameter in selectedQuery?.Parameter ?? new List<QueryParamDC>())
|
foreach(var parameter in selectedQuery?.Parameter ?? new List<QueryParamDC>())
|
||||||
@@ -483,7 +527,6 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
return PartialView("BerichteFormPartialView", Model);
|
return PartialView("BerichteFormPartialView", Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToDo: Was bei Datumsangaben etc. machen? -> String
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public ActionResult SelectQueryParameter(long? objectOid, int parameterType, long? parameterOid, string textValue)
|
public ActionResult SelectQueryParameter(long? objectOid, int parameterType, long? parameterOid, string textValue)
|
||||||
{
|
{
|
||||||
@@ -493,20 +536,32 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
return PartialView("BerichteFormPartialView");
|
return PartialView("BerichteFormPartialView");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(objectOid.HasValue && parameterOid.HasValue)
|
if((objectOid.HasValue || textValue != null) && parameterOid.HasValue)
|
||||||
{
|
{
|
||||||
var queryParameterType = (QueryParameterType)parameterType;
|
var queryParameterType = (QueryParameterType)parameterType;
|
||||||
|
|
||||||
switch(queryParameterType)
|
switch(queryParameterType)
|
||||||
{
|
{
|
||||||
case QueryParameterType.Custom:
|
case QueryParameterType.Custom:
|
||||||
throw new NotImplementedException("Der QueryParameterType.Custom wird noch nicht unterstützt!");
|
throw new NotImplementedException("Dieser Parametertyp wird noch nicht unterstützt!");
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Customer:
|
case QueryParameterType.Customer:
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
var selectedCustomer = Model.AllCustomersForQueries.FirstOrDefault(customer => customer.CustomerOid.Equals(objectOid.Value));
|
var selectedCustomer = Model.AllCustomersForQueries.FirstOrDefault(customer => customer.CustomerOid.Equals(objectOid.Value));
|
||||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedCustomer));
|
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedCustomer));
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Employee:
|
case QueryParameterType.Employee:
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
var selectedEmployee = Model.AllEmployeesForQueries.FirstOrDefault(employee => employee.EmployeeOid.Equals(objectOid.Value));
|
var selectedEmployee = Model.AllEmployeesForQueries.FirstOrDefault(employee => employee.EmployeeOid.Equals(objectOid.Value));
|
||||||
if(selectedEmployee != null)
|
if(selectedEmployee != null)
|
||||||
{
|
{
|
||||||
@@ -514,6 +569,12 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Organisation:
|
case QueryParameterType.Organisation:
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
var selectedOrganisation = Model.AllOrganisationForQuery.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(objectOid.Value));
|
var selectedOrganisation = Model.AllOrganisationForQuery.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(objectOid.Value));
|
||||||
|
|
||||||
if(selectedOrganisation != null)
|
if(selectedOrganisation != null)
|
||||||
@@ -522,14 +583,65 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Text:
|
case QueryParameterType.Text:
|
||||||
|
if(false == string.IsNullOrEmpty(textValue))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, textValue));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Date:
|
case QueryParameterType.Date:
|
||||||
|
if(textValue != null && DateTime.TryParse(textValue, out var selectedDate))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedDate));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.DateRange:
|
case QueryParameterType.DateRange:
|
||||||
|
if(textValue != null && textValue.Length == 21 &&textValue.Contains("_"))
|
||||||
|
{
|
||||||
|
var split = textValue.Split('_');
|
||||||
|
if(DateTime.TryParse(split[0], out var start) && DateTime.TryParse(split[1], out var end))
|
||||||
|
{
|
||||||
|
var dateRange = new DateTimeSpan(start, end);
|
||||||
|
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, dateRange));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Month:
|
case QueryParameterType.Month:
|
||||||
|
if(!textValue.Contains("_"))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var month2Year = textValue.Split('_');
|
||||||
|
var monthAsString = month2Year[0];
|
||||||
|
var yearAsString = month2Year[1];
|
||||||
|
|
||||||
|
if(int.TryParse(monthAsString, out var month) && month > 0 && month < 13 && int.TryParse(yearAsString, out var year) && Model.Years.Any(listItem => listItem.Value.Equals(yearAsString)))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, new DateTime(year, month, 1)));
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.ServiceCategory:
|
case QueryParameterType.ServiceCategory:
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
var selectedServiceCategory = Model.AllServiceCategoriesForQueries.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid.HasValue && serviceCategory.ServiceCategoryOid.Value.Equals(objectOid));
|
var selectedServiceCategory = Model.AllServiceCategoriesForQueries.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid.HasValue && serviceCategory.ServiceCategoryOid.Value.Equals(objectOid));
|
||||||
|
|
||||||
if(selectedServiceCategory != null)
|
if(selectedServiceCategory != null)
|
||||||
@@ -540,12 +652,26 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
case QueryParameterType.SupportConcept:
|
case QueryParameterType.SupportConcept:
|
||||||
var costBearer2SupportConceptRelListObj = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(costBearer2SupportConceptRelListObject => costBearer2SupportConceptRelListObject.CostBearer2SupportConceptOid.Equals(objectOid.ToString()));
|
var costBearer2SupportConceptRelListObj = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(costBearer2SupportConceptRelListObject => costBearer2SupportConceptRelListObject.CostBearer2SupportConceptOid.Equals(objectOid.ToString()));
|
||||||
|
|
||||||
|
Model.SelectedCostBearer2SupportConceptRelListObject = costBearer2SupportConceptRelListObj;
|
||||||
|
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if(costBearer2SupportConceptRelListObj != null)
|
if(costBearer2SupportConceptRelListObj != null)
|
||||||
{
|
{
|
||||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, costBearer2SupportConceptRelListObj));
|
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, costBearer2SupportConceptRelListObj));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Team:
|
case QueryParameterType.Team:
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
var selectedTeam = Model.AllTeamsForQueries.FirstOrDefault(team => team.TeamOid.Equals(objectOid.Value));
|
var selectedTeam = Model.AllTeamsForQueries.FirstOrDefault(team => team.TeamOid.Equals(objectOid.Value));
|
||||||
|
|
||||||
if(selectedTeam != null)
|
if(selectedTeam != null)
|
||||||
@@ -554,6 +680,12 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.ValueListEntryType:
|
case QueryParameterType.ValueListEntryType:
|
||||||
|
if(objectOid is null || objectOid.Value.Equals(0))
|
||||||
|
{
|
||||||
|
Model.SelectedValues.Remove(parameterOid.Value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
var selectedValueListEntry = Model.AllValueListEntriesForQuery.FirstOrDefault(valueListEntry => valueListEntry.ValueListEntryOid?.Equals(objectOid.Value) ?? false);
|
var selectedValueListEntry = Model.AllValueListEntriesForQuery.FirstOrDefault(valueListEntry => valueListEntry.ValueListEntryOid?.Equals(objectOid.Value) ?? false);
|
||||||
|
|
||||||
if(selectedValueListEntry != null)
|
if(selectedValueListEntry != null)
|
||||||
@@ -568,5 +700,51 @@ namespace BeWoPlanerMobil.Controllers
|
|||||||
|
|
||||||
return PartialView("BerichteFormPartialView", Model);
|
return PartialView("BerichteFormPartialView", Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
public ActionResult ExecuteQuery()
|
||||||
|
{
|
||||||
|
if(Model?.Employee?.EmployeeOid is null)
|
||||||
|
{
|
||||||
|
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||||
|
|
||||||
|
return PartialView("BeWoReportPartial");
|
||||||
|
}
|
||||||
|
|
||||||
|
var query = Model.SelectedQuery;
|
||||||
|
|
||||||
|
var paramList = new List<QueryParamDC>();
|
||||||
|
|
||||||
|
foreach(var item in query.Parameter)
|
||||||
|
{
|
||||||
|
var param = new QueryParamDC();
|
||||||
|
paramList.Add(param);
|
||||||
|
|
||||||
|
param.Name = item.Name;
|
||||||
|
param.ParamType = item.ParamType;
|
||||||
|
|
||||||
|
if(item.QueryParameterOid.HasValue && Model.SelectedValues.ContainsKey(item.QueryParameterOid.Value))
|
||||||
|
{
|
||||||
|
param.Value = Model.SelectedValues[item.QueryParameterOid.Value].Parameter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.Employee.EmployeeOid.Value}";
|
||||||
|
|
||||||
|
var queryResult = QueryService.ExecuteQuery(query.Oid, paramList);
|
||||||
|
|
||||||
|
if(queryResult is null)
|
||||||
|
{
|
||||||
|
return PartialView("BeWoReportPartial", Model);
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryService.PrepareQueryReport(queryResult, dcid);
|
||||||
|
var queryReport = Model.ReportCreator.CreateQueryReport(query.Oid, dcid);
|
||||||
|
|
||||||
|
Model.Report = queryReport;
|
||||||
|
Model.ReportName = query.Title;
|
||||||
|
|
||||||
|
return PartialView("BeWoReportPartial", Model);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -83,22 +83,7 @@ namespace BeWoPlanerMobil.Models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsAllowedToSeeCustomerFilter
|
public static bool IsAllowedToSeeCustomerFilter => MobileSessionFacade.LoggedInUser?.CheckForAtLeastOneRight(new List<UserRightType> { UserRightType.ViewAll, UserRightType.CustomerView_View, UserRightType.Customer_ViewMyTeams }) ?? false;
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var user = MobileSessionFacade.LoggedInUser;
|
|
||||||
|
|
||||||
if(user != null)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
user.CheckForRight(UserRightType.ViewAll) ||
|
|
||||||
user.CheckForRight(UserRightType.Customer_ViewMyTeams);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool IsAllowedToSeeMedikamentenliste
|
public static bool IsAllowedToSeeMedikamentenliste
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
@@ -27,7 +26,7 @@ namespace BeWoPlanerMobil.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var result = new List<SelectListItem> { new SelectListItem { Value = "-1", Text = string.Empty } };
|
var result = new List<SelectListItem> { new SelectListItem { Value = "-1", Text = " " } };
|
||||||
result.AddRange(Customers.Select(item => new SelectListItem { Value = item.CustomerOid.ToString(), Text = item.SimpleDescription }).ToList());
|
result.AddRange(Customers.Select(item => new SelectListItem { Value = item.CustomerOid.ToString(), Text = item.SimpleDescription }).ToList());
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -754,6 +754,8 @@ namespace BeWoPlanerMobil.Models
|
|||||||
|
|
||||||
return SelectedServiceDescription;
|
return SelectedServiceDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool ShowBetrag { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CustomSelectListItem
|
public class CustomSelectListItem
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ using BeWo.Report;
|
|||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
using BS.Shared.DataContracts;
|
using BS.Shared.DataContracts;
|
||||||
using BS.Shared.DataContracts.Compact;
|
using BS.Shared.DataContracts.Compact;
|
||||||
using DevExpress.XtraRichEdit.Import.Html;
|
using BS.Shared.Extensions;
|
||||||
|
|
||||||
namespace BeWoPlanerMobil.Models
|
namespace BeWoPlanerMobil.Models
|
||||||
{
|
{
|
||||||
@@ -68,25 +68,25 @@ namespace BeWoPlanerMobil.Models
|
|||||||
|
|
||||||
|
|
||||||
[Display(Name = "Bericht")]
|
[Display(Name = "Bericht")]
|
||||||
public long? SelectedCustomReport { get; set; }
|
public ReportSelectListItem SelectedCustomReport { get; set; }
|
||||||
public List<SelectListItem> CustomReports
|
public List<ReportSelectListItem> CustomReports
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var result = new List<SelectListItem>();
|
var result = new List<ReportSelectListItem>();
|
||||||
|
|
||||||
if(Queries is null)
|
if(Queries is null)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
result.Add(new SelectListItem { Text = "", Value = "0_0" });
|
result.Add(new ReportSelectListItem(0, false) { Text = string.Empty, Value = "0_0" });
|
||||||
|
|
||||||
foreach(var query in Queries)
|
foreach(var query in Queries)
|
||||||
{
|
{
|
||||||
var hasParameters = query.Parameter != null && query.Parameter.Count > 0;
|
var hasParameters = query.Parameter != null && query.Parameter.Count > 0;
|
||||||
|
|
||||||
result.Add(new SelectListItem { Text = query.Title, Value = $"{query.Oid}_{(hasParameters ? "1" : "0")}" });
|
result.Add(new ReportSelectListItem(query.Oid, hasParameters) { Text = query.Title, Value = $"{query.Oid}_{(hasParameters ? "1" : "0")}" });
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -163,7 +163,7 @@ namespace BeWoPlanerMobil.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var allCostBearerRelations = new List<CostBearer2SupportConceptRelListObject> { new CostBearer2SupportConceptRelListObject("Hilfeplan auswählen", "", "-1", false, false), new CostBearer2SupportConceptRelListObject("Ohne Hilfeplan", "", "-2", false, false) };
|
var allCostBearerRelations = new List<CostBearer2SupportConceptRelListObject> { new CostBearer2SupportConceptRelListObject("Hilfeplan auswählen", "", "0", false, false) };
|
||||||
foreach(var sc in SupportConcepts.OrderBy(sc => sc.Customer.LastName))
|
foreach(var sc in SupportConcepts.OrderBy(sc => sc.Customer.LastName))
|
||||||
{
|
{
|
||||||
allCostBearerRelations.AddRange(sc.CostBearerRelations.Select(
|
allCostBearerRelations.AddRange(sc.CostBearerRelations.Select(
|
||||||
@@ -198,6 +198,24 @@ namespace BeWoPlanerMobil.Models
|
|||||||
public Dictionary<ValueListEntryType, List<ValueListEntryDC>> ValueListEntryTypes2ValueListEntries { get; set; } = new Dictionary<ValueListEntryType, List<ValueListEntryDC>>();
|
public Dictionary<ValueListEntryType, List<ValueListEntryDC>> ValueListEntryTypes2ValueListEntries { get; set; } = new Dictionary<ValueListEntryType, List<ValueListEntryDC>>();
|
||||||
|
|
||||||
public List<SupportConceptCostBearerRelDC> CostBearer2SupportConceptRels { get; set; } = new List<SupportConceptCostBearerRelDC>();
|
public List<SupportConceptCostBearerRelDC> CostBearer2SupportConceptRels { get; set; } = new List<SupportConceptCostBearerRelDC>();
|
||||||
|
|
||||||
|
public ValueListEntryType GetValueListEntryTypeByQueryParameter(string parameterName)
|
||||||
|
{
|
||||||
|
foreach(var query in Queries.Where(q => q.Parameter.Any()))
|
||||||
|
{
|
||||||
|
var parameter = query.Parameter.FirstOrDefault(param => param.Name?.Equals(parameterName) ?? false);
|
||||||
|
|
||||||
|
if((parameter?.Name.Equals(parameterName) ?? false) && parameter.Name.Contains("_"))
|
||||||
|
{
|
||||||
|
if(int.TryParse(parameter.Name.Split('_')[1], out var typeAsInt))
|
||||||
|
{
|
||||||
|
return (ValueListEntryType)typeAsInt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ValueListEntryType.EmploymentType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct SelectedValue
|
public struct SelectedValue
|
||||||
@@ -212,6 +230,18 @@ namespace BeWoPlanerMobil.Models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ReportSelectListItem : SelectListItem
|
||||||
|
{
|
||||||
|
public long? QueryOid { get; set; }
|
||||||
|
public bool HasParameters { get; set; }
|
||||||
|
|
||||||
|
public ReportSelectListItem(long? queryOid, bool hasParameters)
|
||||||
|
{
|
||||||
|
QueryOid = queryOid;
|
||||||
|
HasParameters = hasParameters;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public enum ReportType
|
public enum ReportType
|
||||||
{
|
{
|
||||||
Berichte = 0,
|
Berichte = 0,
|
||||||
|
|||||||
7
BeWoPlanerMobil/Scripts/bs-custom-file-input.min.js
vendored
Normal file
7
BeWoPlanerMobil/Scripts/bs-custom-file-input.min.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
/*!
|
||||||
|
* bsCustomFileInput v1.3.4 (https://github.com/Johann-S/bs-custom-file-input)
|
||||||
|
* Copyright 2018 - 2020 Johann-S <johann.servoire@gmail.com>
|
||||||
|
* Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
!function (e, t) {"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = e || self).bsCustomFileInput = t()}(this, function () {"use strict"; var s = {CUSTOMFILE: '.custom-file input[type="file"]', CUSTOMFILELABEL: ".custom-file-label", FORM: "form", INPUT: "input"}, l = function (e) {if(0 < e.childNodes.length) for(var t = [].slice.call(e.childNodes), n = 0; n < t.length; n++) {var l = t[n]; if(3 !== l.nodeType) return l} return e}, u = function (e) {var t = e.bsCustomFileInput.defaultText, n = e.parentNode.querySelector(s.CUSTOMFILELABEL); n && (l(n).textContent = t)}, n = !!window.File, r = function (e) {if(e.hasAttribute("multiple") && n) return [].slice.call(e.files).map(function (e) {return e.name}).join(", "); if(-1 === e.value.indexOf("fakepath")) return e.value; var t = e.value.split("\\"); return t[t.length - 1]}; function d() {var e = this.parentNode.querySelector(s.CUSTOMFILELABEL); if(e) {var t = l(e), n = r(this); n.length ? t.textContent = n : u(this)} } function v() {for(var e = [].slice.call(this.querySelectorAll(s.INPUT)).filter(function (e) {return !!e.bsCustomFileInput}), t = 0, n = e.length; t < n; t++)u(e[t])} var p = "bsCustomFileInput", m = "reset", h = "change"; return {init: function (e, t) {void 0 === e && (e = s.CUSTOMFILE), void 0 === t && (t = s.FORM); for(var n, l, r = [].slice.call(document.querySelectorAll(e)), i = [].slice.call(document.querySelectorAll(t)), o = 0, u = r.length; o < u; o++) {var c = r[o]; Object.defineProperty(c, p, {value: {defaultText: (n = void 0, n = "", (l = c.parentNode.querySelector(s.CUSTOMFILELABEL)) && (n = l.textContent), n)}, writable: !0}), d.call(c), c.addEventListener(h, d)} for(var f = 0, a = i.length; f < a; f++)i[f].addEventListener(m, v), Object.defineProperty(i[f], p, {value: !0, writable: !0})}, destroy: function () {for(var e = [].slice.call(document.querySelectorAll(s.FORM)).filter(function (e) {return !!e.bsCustomFileInput}), t = [].slice.call(document.querySelectorAll(s.INPUT)).filter(function (e) {return !!e.bsCustomFileInput}), n = 0, l = t.length; n < l; n++) {var r = t[n]; u(r), r[p] = void 0, r.removeEventListener(h, d)} for(var i = 0, o = e.length; i < o; i++)e[i].removeEventListener(m, v), e[i][p] = void 0}}});
|
||||||
|
//# sourceMappingURL=bs-custom-file-input.min.js.map
|
||||||
@@ -115,23 +115,6 @@ function submitForm(submitButton) {
|
|||||||
submitButton.form.submit();
|
submitButton.form.submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//function showMessagePopupWithHtml(title, html) {
|
|
||||||
// $("#popupTitle").text(title);
|
|
||||||
|
|
||||||
// if(html !== null) {
|
|
||||||
// $("#modal-body").html("<p id=\"popupMessage\"></p>");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $("#popupMessage").html(html);
|
|
||||||
|
|
||||||
// $("#messagePopup").modal(
|
|
||||||
// {
|
|
||||||
// backdrop: "static",
|
|
||||||
// keyboard: false
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
//}
|
|
||||||
|
|
||||||
function hasEmptyRequiredFields(form) {
|
function hasEmptyRequiredFields(form) {
|
||||||
var count = 0;
|
var count = 0;
|
||||||
|
|
||||||
@@ -184,7 +167,7 @@ function cloneCanvas(oldCanvas) {
|
|||||||
function showAlertMessageBoxWithoutCallback(title, message) {
|
function showAlertMessageBoxWithoutCallback(title, message) {
|
||||||
$("#popupTitle").text(title);
|
$("#popupTitle").text(title);
|
||||||
|
|
||||||
$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">' + message + "</div>");
|
$("#messagePopup .modal-body").html(`<div class="row"><div class="col-auto"><span class="fas fa-exclamation-triangle fa-3x text-alert"></span></div><div class="col">${message}</div></div>`);
|
||||||
|
|
||||||
$("#popupMessage").text(message);
|
$("#popupMessage").text(message);
|
||||||
|
|
||||||
@@ -202,7 +185,7 @@ function showAlertMessageBoxWithoutCallback(title, message) {
|
|||||||
function showAlertMessageBox(title, message, callback, executeCallbackByBothButtons) {
|
function showAlertMessageBox(title, message, callback, executeCallbackByBothButtons) {
|
||||||
$("#popupTitle").text(title);
|
$("#popupTitle").text(title);
|
||||||
|
|
||||||
$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">' + message + "</div>");
|
$("#messagePopup .modal-body").html(`<div class="row"><div class="col-auto"><span class="fas fa-exclamation-triangle fa-3x text-danger"></span></div><div class="col">${message}</div></div>`);
|
||||||
|
|
||||||
$("#popupMessage").text(message);
|
$("#popupMessage").text(message);
|
||||||
|
|
||||||
@@ -230,7 +213,7 @@ function showAlertMessageBox(title, message, callback, executeCallbackByBothButt
|
|||||||
function showWarningMessageBox(title, message, callback, executeCallbackByBothButtons) {
|
function showWarningMessageBox(title, message, callback, executeCallbackByBothButtons) {
|
||||||
$("#popupTitle").text(title);
|
$("#popupTitle").text(title);
|
||||||
|
|
||||||
$("#messagePopup .modal-body").html('<div class="alert alert-warning" role="alert">' + message + "</div>");
|
$("#messagePopup .modal-body").html(`<div class="row"><div class="col-auto"><span class="fas fa-exclamation-triangle fa-3x text-warning"></span></div><div class="col">${message}</div></div>`);
|
||||||
|
|
||||||
$("#popupMessage").text(message);
|
$("#popupMessage").text(message);
|
||||||
|
|
||||||
@@ -293,19 +276,10 @@ function cardHeaderClick2(element, callback) {
|
|||||||
var chevronDown = $(element).find(".fa-chevron-down");
|
var chevronDown = $(element).find(".fa-chevron-down");
|
||||||
var chevronUp = $(element).find(".fa-chevron-up");
|
var chevronUp = $(element).find(".fa-chevron-up");
|
||||||
|
|
||||||
//if(chevronDown.length) {
|
chevronDown.removeClass("fa-chevron-down").addClass("fa-chevron-up");
|
||||||
chevronDown.removeClass("fa-chevron-down").addClass("fa-chevron-up");
|
|
||||||
//chevronDown.addClass("fa-chevron-up");
|
|
||||||
//}
|
|
||||||
|
|
||||||
//if(chevronUp.length) {
|
|
||||||
chevronUp.removeClass("fa-chevron-up").addClass("fa-chevron-down");
|
chevronUp.removeClass("fa-chevron-up").addClass("fa-chevron-down");
|
||||||
//}
|
|
||||||
|
|
||||||
//logInfo(`${chevronDown.attr("class")}`);
|
|
||||||
|
|
||||||
//$(element).find(".fa-chevron-down,.fa-chevron-up").toggleClass("fa-chevron-down").toggleClass("fa-chevron-up");
|
|
||||||
|
|
||||||
$(element).next(".collapse").toggle();
|
$(element).next(".collapse").toggle();
|
||||||
|
|
||||||
if(typeof callback === "function") {
|
if(typeof callback === "function") {
|
||||||
@@ -504,4 +478,17 @@ function parseJason(jsonToParse) {
|
|||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCurrentTimeStamp() {
|
||||||
|
var now = new Date(Date.now());
|
||||||
|
|
||||||
|
var date = String(2).padStart(2, now.getDate().toString());
|
||||||
|
var month = String(2).padStart(2, now.getMonth().toString());
|
||||||
|
var hours = String(2).padStart(2, now.getHours().toString());
|
||||||
|
var minutes = String(2).padStart(2, now.getMinutes().toString());
|
||||||
|
var seconds = String(2).padStart(2, now.getSeconds().toString());
|
||||||
|
var milliseconds = String(3).padStart(3, now.getMilliseconds().toString());
|
||||||
|
|
||||||
|
return `${date}.${month}.${now.getFullYear()} ${hours}:${minutes}:${seconds}.${milliseconds}`;
|
||||||
}
|
}
|
||||||
@@ -72,11 +72,11 @@ function submitGroupBookingForm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function deactivateGroupBookingForm() {
|
function deactivateGroupBookingForm() {
|
||||||
$("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", true);
|
$("#betrag, #employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function activateGroupBookingForm() {
|
function activateGroupBookingForm() {
|
||||||
$("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", false);
|
$("#betrag, #employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteServiceRecord(serviceRecordOid) {
|
function deleteServiceRecord(serviceRecordOid) {
|
||||||
@@ -228,6 +228,7 @@ function validateForm(form, prefix) {
|
|||||||
$("#srv-marker").val($(`${prefix}marker-cb`).val());
|
$("#srv-marker").val($(`${prefix}marker-cb`).val());
|
||||||
$("#srv-service-description").val($(`#${prefix}leistung-select`).find(":selected").val());
|
$("#srv-service-description").val($(`#${prefix}leistung-select`).find(":selected").val());
|
||||||
$("#srv-duration").val($(`#${prefix}duration`).val());
|
$("#srv-duration").val($(`#${prefix}duration`).val());
|
||||||
|
$("#srv-betrag").val($("#betrag").val());
|
||||||
|
|
||||||
showSpinner();
|
showSpinner();
|
||||||
$("#service-record-validation-form").submit();
|
$("#service-record-validation-form").submit();
|
||||||
|
|||||||
@@ -70,65 +70,7 @@ function onMonthOrYearChange() {
|
|||||||
checkForExistingSignature();
|
checkForExistingSignature();
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkForExistingSignature() {
|
|
||||||
var month = $("#month-select option:selected").val();
|
|
||||||
var year = $("#year-select option:selected").val();
|
|
||||||
var startDay = $("#start-day-select option:selected").val();
|
|
||||||
var endDay = $("#end-day-select option:selected").val();
|
|
||||||
|
|
||||||
if(startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull([month, year, startDay, endDay])) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var changeDateSelectionUrl = getChangeDateSelectionUrl();
|
|
||||||
|
|
||||||
$.get(changeDateSelectionUrl,
|
|
||||||
{
|
|
||||||
startDayString: startDay,
|
|
||||||
endDayString: endDay,
|
|
||||||
monthString: month,
|
|
||||||
yearString: year
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function qbFilterSelectionChange() {
|
|
||||||
var selectedOption = $("#qb-filter-select option:selected").val();
|
|
||||||
|
|
||||||
switch(selectedOption) {
|
|
||||||
case "3":
|
|
||||||
$("#team-selection-container").removeClass("d-block");
|
|
||||||
$("#team-selection-container").addClass("d-none");
|
|
||||||
|
|
||||||
$("#customer-selection-container").removeClass("d-none");
|
|
||||||
$("#customer-selection-container").addClass("d-block");
|
|
||||||
break;
|
|
||||||
case "4":
|
|
||||||
$("#customer-selection-container").removeClass("d-block");
|
|
||||||
$("#customer-selection-container").addClass("d-none");
|
|
||||||
|
|
||||||
$("#team-selection-container").removeClass("d-none");
|
|
||||||
$("#team-selection-container").addClass("d-block");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$("#customer-selection-container, #team-selection-container").removeClass("d-block");
|
|
||||||
$("#customer-selection-container, #team-selection-container").addClass("d-none");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var selectedFilterEnumUrl = getSetQbFilterEnumUrl();
|
|
||||||
|
|
||||||
$.get(selectedFilterEnumUrl, { filterEnumString: selectedOption});
|
|
||||||
}
|
|
||||||
|
|
||||||
function onCustomerSelectionChange() {
|
|
||||||
var url = getSetCustomerUrl();
|
|
||||||
|
|
||||||
var selectedCustomerOid = $("#customers-drop-down option:selected").val();
|
|
||||||
|
|
||||||
$.get(url, { customerOid: selectedCustomerOid}).done(function() {
|
|
||||||
checkForExistingSignature();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function cancelSignature(canSign, signaturePad, canvasId, signatureContainer, overridingAlertId) {
|
function cancelSignature(canSign, signaturePad, canvasId, signatureContainer, overridingAlertId) {
|
||||||
try {
|
try {
|
||||||
@@ -179,7 +121,6 @@ function hideSignatureContainer(signatureContainer, overridingAlertId) {
|
|||||||
$("#report-form-container").show();
|
$("#report-form-container").show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToDo: Löschen. An andere Stelle verlegt!
|
|
||||||
function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad, canvasId) {
|
function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad, canvasId) {
|
||||||
try {
|
try {
|
||||||
var canvas = document.getElementById(canvasId);
|
var canvas = document.getElementById(canvasId);
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
public static string DurationInMinutesKey => "DurationInMinutes";
|
public static string DurationInMinutesKey => "DurationInMinutes";
|
||||||
public static string MarkerKey => "marker-cb";
|
public static string MarkerKey => "marker-cb";
|
||||||
public static string FormIdKey => "form-id";
|
public static string FormIdKey => "form-id";
|
||||||
|
public static string BetragKey => "betrag";
|
||||||
|
|
||||||
// Kalender
|
// Kalender
|
||||||
public static string AppointmentStartDateKey => "StartDate";
|
public static string AppointmentStartDateKey => "StartDate";
|
||||||
@@ -77,5 +78,6 @@
|
|||||||
public static string ErrorMessageKey => "ErrorMessage";
|
public static string ErrorMessageKey => "ErrorMessage";
|
||||||
public static string DoLogoutKey => "DoLogout";
|
public static string DoLogoutKey => "DoLogout";
|
||||||
public static string ReportErrorMessageKey => "ReportErrorMessage";
|
public static string ReportErrorMessageKey => "ReportErrorMessage";
|
||||||
|
public static string ErrorAlertPopupMessage => "ErrorAlertPopupMessage";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,6 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Web.Mvc;
|
|
||||||
using BeWoPlanerMobil.Models;
|
using BeWoPlanerMobil.Models;
|
||||||
using BS.Shared;
|
using BS.Shared;
|
||||||
using BS.Shared.Core;
|
using BS.Shared.Core;
|
||||||
@@ -370,7 +369,8 @@ namespace BeWoPlanerMobil.Util
|
|||||||
WohnheimbuchungsOid = m.WohnheimbuchungsOid,
|
WohnheimbuchungsOid = m.WohnheimbuchungsOid,
|
||||||
DurationInStunden = m.DurationInStunden,
|
DurationInStunden = m.DurationInStunden,
|
||||||
ServiceRecordFormat = m.ServiceRecordFormat,
|
ServiceRecordFormat = m.ServiceRecordFormat,
|
||||||
DistanceInMeterDecimal = m.DistanceInMeterDecimal
|
DistanceInMeterDecimal = m.DistanceInMeterDecimal,
|
||||||
|
Betrag = m.Betrag
|
||||||
};
|
};
|
||||||
|
|
||||||
return clone;
|
return clone;
|
||||||
|
|||||||
@@ -78,9 +78,62 @@
|
|||||||
});
|
});
|
||||||
}, false);
|
}, false);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
function resetCustomerSearch() {
|
||||||
|
try {
|
||||||
|
$("#customer-search-input").val("");
|
||||||
|
$("#customer-dropdown-menu .dropdown-item").show();
|
||||||
|
|
||||||
|
var e = window.event;
|
||||||
|
e.cancelBubble = true;
|
||||||
|
if(e.stopPropagation) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCustomerSearchInput() {
|
||||||
|
try {
|
||||||
|
var searchText = $("#customer-search-input").val();
|
||||||
|
|
||||||
|
logInfo2($`Suche Klient mit ${searchText} im Namen`);
|
||||||
|
|
||||||
|
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||||
|
$("#customer-dropdown-menu .dropdown-item").show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuItems = $("#customer-dropdown-menu .dropdown-item");
|
||||||
|
|
||||||
|
menuItems.hide();
|
||||||
|
|
||||||
|
$.each(menuItems,
|
||||||
|
function(index, item) {
|
||||||
|
var itemText = $(item).text().toLowerCase();
|
||||||
|
|
||||||
|
if(itemText.includes(searchText.toLowerCase())) {
|
||||||
|
$(item).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectCustomer(customerOid) {
|
||||||
|
try {
|
||||||
|
$("#customer-oid-input").val(customerOid);
|
||||||
|
showSpinner();
|
||||||
|
$("#select-customer-form").submit();
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container mt-3">
|
<div class="container mt-3" style="max-width: 1200px !important;">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
@if(AbstractModel.IsAllowedToSeeCustomerFilter)
|
@if(AbstractModel.IsAllowedToSeeCustomerFilter)
|
||||||
{
|
{
|
||||||
@@ -95,18 +148,42 @@
|
|||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
@using(Html.BeginForm("SelectCustomer", "Customer", FormMethod.Post, new { id = "select-customer-form" }))
|
@using(Html.BeginForm("SelectCustomer", "Customer", FormMethod.Post, new { id = "select-customer-form" }))
|
||||||
{
|
{
|
||||||
<div class="input-group">
|
var customerName = Model.SelectedCustomer != null ? $"{Model.SelectedCustomer.LastName}, {Model.SelectedCustomer.FirstName}{(!string.IsNullOrWhiteSpace(Model.SelectedCustomer.CustomerAlias) ? $"({Model.SelectedCustomer.CustomerAlias})" : string.Empty)}" : string.Empty;
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text">Klient</span>
|
<div class="wide-dropdown">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Klient</span>
|
||||||
|
</div>
|
||||||
|
<div class="input-group-append dropdown-append">
|
||||||
|
<button class="btn btn-bewo-customers dropdown-toggle w-100 text-truncate white-space-normal" type="button" data-toggle="dropdown">
|
||||||
|
@customerName
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu w-100" id="customer-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||||
|
<div class="input-group px-2">
|
||||||
|
<input class="form-control w-100" id="customer-search-input" type="text" placeholder="Suchen ..." oninput="onCustomerSearchInput()" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-outline-secondary" type="button" onclick="resetCustomerSearch()">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
@foreach(var customer in Model.CustomerListItems)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" onclick="selectCustomer('@customer.Value')">@Html.Raw(customer.Text)</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@Html.DropDownListFor(m => m.SelectedCustomerOid, Model.CustomerListItems, new { onchange = "submitCustomerSelectionForm();", @class = "custom-select" })
|
|
||||||
</div>
|
</div>
|
||||||
|
<input type="hidden" name="SelectedCustomerOid" id="customer-oid-input"/>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-fluid mt-3 px-0" id="customer-container">
|
<div class="container-fluid mt-3 px-0" id="customer-container" style="max-width: 1200px !important;">
|
||||||
@if(Model?.SelectedJsonCustomer != null)
|
@if(Model?.SelectedJsonCustomer != null)
|
||||||
{
|
{
|
||||||
@* ----- Details ----- *@
|
@* ----- Details ----- *@
|
||||||
@@ -129,7 +206,7 @@
|
|||||||
var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty;
|
var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty;
|
||||||
|
|
||||||
<div class="row" id="stammdaten-container">
|
<div class="row" id="stammdaten-container">
|
||||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3">
|
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body pb-0">
|
<div class="card-body pb-0">
|
||||||
<div class="card-title text-bewo-customer-card-header">
|
<div class="card-title text-bewo-customer-card-header">
|
||||||
@@ -226,7 +303,7 @@
|
|||||||
<div class="form-group w-100">
|
<div class="form-group w-100">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
<div class="input-group-text">
|
||||||
Krankenkasse
|
Krankenkasse
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -238,8 +315,8 @@
|
|||||||
<div class="form-group w-100">
|
<div class="form-group w-100">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
<div class="input-group-text">
|
||||||
Versichertennummer
|
Versichertennr.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input @inputDisabled maxlength="45" type="text" class="form-control" id="versichertennummer" name="versichertennummer" value="@Model.SelectedJsonCustomer.Versichertennummer" />
|
<input @inputDisabled maxlength="45" type="text" class="form-control" id="versichertennummer" name="versichertennummer" value="@Model.SelectedJsonCustomer.Versichertennummer" />
|
||||||
@@ -250,7 +327,7 @@
|
|||||||
<div class="form-group w-100">
|
<div class="form-group w-100">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
<div class="input-group-text">
|
||||||
Versichertenstatus
|
Versichertenstatus
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -261,7 +338,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3">
|
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body pb-0">
|
<div class="card-body pb-0">
|
||||||
<div class="card-title text-bewo-customer-card-header">
|
<div class="card-title text-bewo-customer-card-header">
|
||||||
@@ -318,7 +395,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3">
|
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body pb-0">
|
<div class="card-body pb-0">
|
||||||
<div class="card-title text-bewo-customer-card-header">
|
<div class="card-title text-bewo-customer-card-header">
|
||||||
@@ -375,7 +452,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3">
|
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body pb-0">
|
<div class="card-body pb-0">
|
||||||
<div class="card-title text-bewo-customer-card-header">
|
<div class="card-title text-bewo-customer-card-header">
|
||||||
@@ -766,7 +843,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="collapse">
|
<div class="collapse">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="container-fluid px-0">
|
<div class="container-fluid px-0" id="customer-document-container">
|
||||||
@Html.Partial("DocumentPartial", Model)
|
@Html.Partial("DocumentPartial", Model)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1030,7 +1107,7 @@
|
|||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Abwesenheit hinzufügen</h5>
|
<h5 class="modal-title font-weight-bold">Abwesenheit hinzufügen</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -676,7 +676,7 @@
|
|||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="customer-bargeldkassen-form-popup-title">Bargeldkasse hinzufügen</h5>
|
<h5 class="modal-title font-weight-bold" id="customer-bargeldkassen-form-popup-title">Bargeldkasse hinzufügen</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="deselectBargeldkasse()">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="deselectBargeldkasse()">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -696,7 +696,7 @@
|
|||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Neue Zahlung hinzufügen</h5>
|
<h5 class="modal-title font-weight-bold">Neue Zahlung hinzufügen</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -718,7 +718,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="customer-bargeldtransaktionshistorienpopup-title">Änderungshistorie</h5>
|
<h5 class="modal-title font-weight-bold" id="customer-bargeldtransaktionshistorienpopup-title">Änderungshistorie</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="closeTransactionHistoryPopup()">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="closeTransactionHistoryPopup()">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -268,7 +268,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title"></h5>
|
<h5 class="modal-title font-weight-bold"></h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -1,29 +1,270 @@
|
|||||||
@using BeWoPlanerMobil.Models;
|
@using BeWoPlanerMobil.Models;
|
||||||
|
@using BeWoPlanerMobil.Util
|
||||||
@using BS.Shared.DataContracts
|
@using BS.Shared.DataContracts
|
||||||
@model CustomerModel
|
@model CustomerModel
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
$(document).ready(() => {
|
||||||
|
try {
|
||||||
|
window.bsCustomFileInput.destroy();
|
||||||
|
window.bsCustomFileInput.init();
|
||||||
|
|
||||||
|
@{
|
||||||
|
var errorMessage = TempData[TempDataConstants.ErrorAlertPopupMessage]?.ToString();
|
||||||
|
|
||||||
|
if(errorMessage != null) {
|
||||||
|
<text>
|
||||||
|
$("#error-alert-message").html("@Html.Raw(errorMessage)");
|
||||||
|
$("#error-alert-popup").modal("show");
|
||||||
|
</text>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$.each($(".file-description"), (index, item) => {
|
||||||
|
toggleDescriptionTextareaSaveButton(item);
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function toggleFolderIcon(element) {
|
function toggleFolderIcon(element) {
|
||||||
try {
|
try {
|
||||||
$(element).find(".fa-folder,.fa-folder-open").toggleClass("fa-folder").toggleClass("fa-folder-open");
|
$(element).find(".fa-folder,.fa-folder-open").toggleClass("fa-folder").toggleClass("fa-folder-open");
|
||||||
$(element).next(".collapse").toggle();
|
$(element).siblings(".input-group-prepend").find(".input-group-text").find(".fa-folder,.fa-folder-open").toggleClass("fa-folder").toggleClass("fa-folder-open");
|
||||||
|
$(element).parents(".card-header").next(".collapse").toggle();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggleDescriptionTextareaSaveButton(item) {
|
||||||
|
try {
|
||||||
|
var descriptionText = $(item).val();
|
||||||
|
|
||||||
|
var descriptionSaveButton = $(item).siblings("button");
|
||||||
|
|
||||||
|
var hasDescriptionText = descriptionText !== undefined && descriptionText !== null && descriptionText.length > 0
|
||||||
|
|
||||||
|
descriptionSaveButton.attr("disabled", !hasDescriptionText);
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fileDescriptionOnInput(item) {
|
||||||
|
try {
|
||||||
|
toggleDescriptionTextareaSaveButton(item);
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveDescriptionChange(fileOid) {
|
||||||
|
try {
|
||||||
|
var descriptionText = $(`#description-${fileOid}`).val();
|
||||||
|
|
||||||
|
$("#customer-document-container").load("@Url.Action("SaveDescriptionChange")", {descriptionText: descriptionText, fileOid: fileOid});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadFile(folderOid) {
|
||||||
|
try {
|
||||||
|
$("#folder-oid-input").val(folderOid);
|
||||||
|
|
||||||
|
$("#new-file-popup").modal("show");
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function createNewFolder(folderOid) {
|
||||||
|
try {
|
||||||
|
$("#folder-popup-title").text("Ordner hinzufügen");
|
||||||
|
|
||||||
|
$("#new-folder-popup").modal("show");
|
||||||
|
|
||||||
|
$("#new-folder-name").val("Neuer Ordner");
|
||||||
|
|
||||||
|
$("#folder-popup-save-btn").off("click");
|
||||||
|
$("#folder-popup-save-btn").on("click", () => {
|
||||||
|
var newFolderName = $("#new-folder-name").val();
|
||||||
|
|
||||||
|
if(newFolderName === null || newFolderName === undefined || newFolderName.length === 0) {
|
||||||
|
newFolderName = "Neuer Ordner";
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#customer-document-container").load("@Url.Action("AddNewFolder")", {folderName: newFolderName, parentFolderOid: folderOid});
|
||||||
|
$("#new-folder-popup").modal("hide");
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function renameFolder(folderOid, oldName) {
|
||||||
|
try {
|
||||||
|
$("#folder-popup-title").text("Ordner umbenennen");
|
||||||
|
$("#new-folder-name").val(oldName);
|
||||||
|
|
||||||
|
$("#new-folder-popup").modal("show");
|
||||||
|
|
||||||
|
$("#folder-popup-save-btn").off("click");
|
||||||
|
$("#folder-popup-save-btn").on("click", () => {
|
||||||
|
$("#customer-document-container").load("@Url.Action("RenameFolder")", {newName: $("#new-folder-name").val(), folderOid: folderOid});
|
||||||
|
$("#new-folder-popup").modal("hide");
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteFolder(folderOid, folderName) {
|
||||||
|
try {
|
||||||
|
showAlertMessageBox("Ordner löschen",
|
||||||
|
`ACHTUNG: Das Löschen von Ordnern kann nicht rückgängig gemacht werden.<br />Alle enthaltenen Dokumente bleiben erhalten und werden in den obersten Ordner "<span class='font-weight-bold'>Alle Ordner</span>" verschoben.<br /><br />Wollen Sie den Ordner "<span class='font-weight-bold'>${folderName}</span>" wirklich löschen?`,
|
||||||
|
() => {
|
||||||
|
$("#customer-document-container").load("@Url.Action("DeleteFolder")", {folderOid: folderOid});
|
||||||
|
},
|
||||||
|
false);
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showFolderEditPopup(parentFolderOid, name) {
|
||||||
|
try {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
$("#new-folder-name").val(name);
|
||||||
|
$("#folder-oid-container").val(parentFolderOid);
|
||||||
|
|
||||||
|
$("#new-folder-popup").modal("show");
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteFile(fileOid, fileVersion, fileName) {
|
||||||
|
try {
|
||||||
|
showAlertMessageBox("Datei löschen",
|
||||||
|
`ACHTUNG: Das Löschen von Dateien kann nicht rückgängig gemacht werden!<br />Wollen Sie das Dokument '<span class='font-weight-bold'>${fileName}</span>' wirklich löschen?`,
|
||||||
|
() => {
|
||||||
|
$("#customer-document-container").load("@Url.Action("DeleteFile")", {fileOid: fileOid, fileVersion: fileVersion});
|
||||||
|
},
|
||||||
|
false);
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@helper BuildFolderTreeBranch(BeWoFolderDC folder)
|
@helper BuildFolderTreeBranch(BeWoFolderDC folder)
|
||||||
{
|
{
|
||||||
<div class="card w-100 mb-3">
|
<div class="card w-100 mt-2">
|
||||||
<div class="card-header px-2" onclick="toggleFolderIcon(this)">
|
<div class="card-header p-0 border-0 d-flex">
|
||||||
<i class="fas fa-folder pr-1 text-primary"></i>@folder.Name
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text pointer-element" onclick="toggleFolderIcon(this)">
|
||||||
|
<i class="fas fa-folder text-warning"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="input-group-text px-1 form-control text-left pointer-element no-focus-outline no-selection" value="@folder.Name" readonly onclick="toggleFolderIcon(this)"/>
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-primary rounded-right" data-toggle="dropdown">
|
||||||
|
<i class="fas fa-ellipsis-v"></i>
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu">
|
||||||
|
<button class="btn btn-primary dropdown-item text-primary" type="button" onclick="uploadFile(@folder.BeWoFolderOid)">
|
||||||
|
<i class="fas fa-file-upload"></i>
|
||||||
|
Datei hochladen
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-outline-primary dropdown-item text-primary" type="button" onclick="createNewFolder(@folder.BeWoFolderOid)">
|
||||||
|
<i class="fas fa-folder-plus text-warning"></i>
|
||||||
|
Neuer Ordner
|
||||||
|
</button>
|
||||||
|
@if(folder.BeWoFolderOid.HasValue)
|
||||||
|
{
|
||||||
|
<button class="btn btn-outline-primary dropdown-item text-primary" type="button" onclick="renameFolder(@folder.BeWoFolderOid, '@folder.Name')">
|
||||||
|
<i class="fas fa-edit"></i>
|
||||||
|
Umbenennen
|
||||||
|
</button>
|
||||||
|
<div role="separator" class="dropdown-divider"></div>
|
||||||
|
<button class="btn btn-danger dropdown-item text-danger" type="button" onclick="deleteFolder(@folder.BeWoFolderOid, '@folder.Name')">
|
||||||
|
<i class="fas fa-trash-alt"></i>
|
||||||
|
Löschen
|
||||||
|
</button>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse">
|
<div class="collapse">
|
||||||
<div class="card-body px-2">
|
<div class="card-body p-1">
|
||||||
@foreach(var file in folder.Files)
|
@foreach(var file in folder.Files)
|
||||||
{
|
{
|
||||||
<i class="fas fa-file text-primary"></i>@Html.ActionLink(file.FileName, "DownloadFile", new { fileOid = file.FileAttachmentOid }, new { @class = "pl-2 px-2" })<br/>
|
<div class="card w-100 my-2">
|
||||||
|
<div class="card-header p-0 border-0 d-flex">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text text-primary">
|
||||||
|
<i class="fas fa-file"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="rounded-0 input-group-text px-1 form-control text-left pointer-element no-focus-outline no-selection" value="@file.FileName" readonly data-toggle="collapse" data-target="#file-details-@file.FileAttachmentOid" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-primary rounded-right" data-toggle="dropdown">
|
||||||
|
<i class="fas fa-ellipsis-v"></i>
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu">
|
||||||
|
<a href="@Url.Action("DownloadFile", new { fileOid = file.FileAttachmentOid })" class="btn btn-primary dropdown-item text-primary" role="button">
|
||||||
|
<i class="fas fa-download"></i>
|
||||||
|
Herunterladen
|
||||||
|
</a>
|
||||||
|
<div role="separator" class="dropdown-divider"></div>
|
||||||
|
<button class="btn btn-danger dropdown-item text-danger" type="button" onclick="deleteFile(@file.FileAttachmentOid, @file.FileAttachmentVersion, '@file.FileName')">
|
||||||
|
<i class="fas fa-trash-alt"></i>
|
||||||
|
Löschen
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="collapse" id="file-details-@file.FileAttachmentOid">
|
||||||
|
<div class="card-body p-1 my-2">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col text-secondary">
|
||||||
|
Hinterlegt am
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
@file.InsertedOn.ToString("dd.MM.yyyy")
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col text-secondary">
|
||||||
|
Hinterlegt von
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
@file.InsertedBy
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider" role="separator"></div>
|
||||||
|
<div class="form-group mt-1 mb-0">
|
||||||
|
@{
|
||||||
|
var fileDescription = file.Description ?? string.Empty;
|
||||||
|
}
|
||||||
|
<button class="btn btn-primary float-right mb-1" type="button" onclick="saveDescriptionChange(@file.FileAttachmentOid)">
|
||||||
|
<i class="fas fa-save"></i>
|
||||||
|
</button>
|
||||||
|
<label class="text-secondary float-left" for="description-@file.FileAttachmentOid">Beschreibung</label>
|
||||||
|
<textarea id="description-@file.FileAttachmentOid" oninput="fileDescriptionOnInput(this)" class="form-control file-description">@fileDescription</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
@foreach(var subFolder in folder.SubFolders)
|
@foreach(var subFolder in folder.SubFolders)
|
||||||
@@ -52,3 +293,83 @@
|
|||||||
Write(BuildFolderTree());
|
Write(BuildFolderTree());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal" tabindex="-1" role="dialog" id="new-folder-popup">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title font-weight-bold" id="folder-popup-title">Ordner hinzufügen</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" id="new-folder-popup-form">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Name</span>
|
||||||
|
</div>
|
||||||
|
<input id="new-folder-name" type="text" class="form-control" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="button" class="btn btn-outline-primary" onclick="$('#new-folder-name').val('');">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="folder-oid-container"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Abbrechen</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="folder-popup-save-btn">Speichern</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal" tabindex="-1" role="dialog" id="new-file-popup">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title font-weight-bold">Neue Datei hochladen</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
@using(Html.BeginForm("UploadFile", "Customer", FormMethod.Post, new { id="new-file-form", enctype="multipart/form-data" }))
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Datei</span>
|
||||||
|
</div>
|
||||||
|
<div class="custom-file">
|
||||||
|
<input type="file" class="custom-file-input text-truncate" id="file" name="file">
|
||||||
|
<label class="custom-file-label" for="file">Auswählen</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mt-3">
|
||||||
|
<div class="col">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Beschreibung</span>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control text-truncate" name="file-description-input" id="file-description-input" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="folder-oid-input" name="folder-oid-input" />
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="$('#file').val(null); $('#file-description-input, #folder-oid-input').val('');">Abbrechen</button>
|
||||||
|
<button type="button" class="btn btn-primary" onclick="showSpinner(); $('#new-file-form').submit();">Dokument hochladen</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
$("#employees-button, #category-select, #leistung-select, " +
|
$("#employees-button, #category-select, #leistung-select, " +
|
||||||
"#start-date, #end-date, #start-time, #end-time, #duration, " +
|
"#start-date, #end-date, #start-time, #end-time, #duration, " +
|
||||||
"#distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb")
|
"#distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb, #betrag")
|
||||||
.prop("disabled", (checkedCheckboxes.length > 0 ? false : true));
|
.prop("disabled", (checkedCheckboxes.length > 0 ? false : true));
|
||||||
|
|
||||||
$("#goals-tree").load("@Url.Action("ReloadGoals")", function () {
|
$("#goals-tree").load("@Url.Action("ReloadGoals")", function () {
|
||||||
@@ -136,6 +136,34 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@* ----- Betrag ----- *@
|
||||||
|
@if(Model.ShowBetrag)
|
||||||
|
{
|
||||||
|
var betrag = string.Empty;
|
||||||
|
if(Model.SelectedServiceRecord?.Betrag != null && Model.SelectedServiceRecord.Betrag.Value > 0)
|
||||||
|
{
|
||||||
|
betrag = Model.SelectedServiceRecord.Betrag.Value.ToString("#.00");
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="col-md">
|
||||||
|
<div class="form-group my-2">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<div class="input-group-text prepend-input-group-text">
|
||||||
|
Betrag
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input class="form-control" type="text" id="betrag" name="betrag" value="@betrag" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<div class="input-group-text">€</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
@* Trennstrich *@
|
@* Trennstrich *@
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
<h5 class="modal-title font-weight-bold">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal">
|
<button type="button" class="close" data-dismiss="modal">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Mitarbeiter hinzufügen</h5>
|
<h5 class="modal-title font-weight-bold">Mitarbeiter hinzufügen</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('gb-employee-search-input', 'employee-text')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('gb-employee-search-input', 'employee-text')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -70,8 +70,6 @@
|
|||||||
return "@Model.EinheitZeiterfassung" === "0";
|
return "@Model.EinheitZeiterfassung" === "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
$("#start-date-picker").datetimepicker({
|
$("#start-date-picker").datetimepicker({
|
||||||
locale: "de",
|
locale: "de",
|
||||||
@@ -147,17 +145,17 @@
|
|||||||
|
|
||||||
var isSupportConceptSelected = supportConceptOid !== -1;
|
var isSupportConceptSelected = supportConceptOid !== -1;
|
||||||
|
|
||||||
$("#employeesDropDown, #category-select, #leistung-select, " +
|
$("#employeesDropDown, #single-booking-dropdown-employees-menu, #category-select, #leistung-select, " +
|
||||||
"#start-date, #end-date, #start-time, #end-time, #duration, " +
|
"#start-date, #end-date, #start-time, #end-time, #duration, " +
|
||||||
"#distance, #textbausteine-button, #goals-button, textarea, #reset-button, " +
|
"#distance, #textbausteine-button, #goals-button, textarea, #reset-button, " +
|
||||||
"#create-button, #statistics-button, #timeFrameSelect, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", (isSupportConceptSelected ? false : true));
|
"#create-button, #statistics-button, #timeFrameSelect, #hours-minutes-dropdown-btn, #marker-cb, #betrag").prop("disabled", (isSupportConceptSelected ? false : true));
|
||||||
|
|
||||||
if("@Model.IsInGroupBookingMode".toLowerCase() === "true") {
|
if("@Model.IsInGroupBookingMode".toLowerCase() === "true") {
|
||||||
var hasSelectedSupportConcepts = "@Model.SelectedConceptCostBearerRelations.Any()".toLowerCase() === "true";
|
var hasSelectedSupportConcepts = "@Model.SelectedConceptCostBearerRelations.Any()".toLowerCase() === "true";
|
||||||
|
|
||||||
$("#employees-button, #category-select, #leistung-select, " +
|
$("#employees-button, #single-booking-dropdown-employees-menu, #category-select, #leistung-select, " +
|
||||||
"#start-date, #end-date, #start-time, #end-time, #duration, " +
|
"#start-date, #end-date, #start-time, #end-time, #duration, " +
|
||||||
"#distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", (hasSelectedSupportConcepts ? false : true));
|
"#distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #marker-cb, #betrag").prop("disabled", (hasSelectedSupportConcepts ? false : true));
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#fehlerdetail-textarea").prop("disabled", false);
|
$("#fehlerdetail-textarea").prop("disabled", false);
|
||||||
@@ -167,20 +165,7 @@
|
|||||||
|
|
||||||
toggleMultiBookingForm(isMultiBookingFormDisabled);
|
toggleMultiBookingForm(isMultiBookingFormDisabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
//var categorySelectId = "category-select";
|
|
||||||
//var leistungSelectId = "leistung-select";
|
|
||||||
|
|
||||||
@*if("@Model.IsInMultiBookingMode".toLowerCase() === "true") {
|
|
||||||
categorySelectId = "mb-category-select";
|
|
||||||
leistungSelectId = "mb-leistung-select";
|
|
||||||
}*@
|
|
||||||
|
|
||||||
@*if("@Model.IsInGroupBookingMode".toLowerCase() === "false") {
|
|
||||||
loadServiceDescriptions("category-select", "leistung-select", 'textmodule-container', 'tree');
|
|
||||||
}*@
|
|
||||||
|
|
||||||
|
|
||||||
initializeTimeInputs();
|
initializeTimeInputs();
|
||||||
|
|
||||||
initializeSignatureImagePopup();
|
initializeSignatureImagePopup();
|
||||||
@@ -344,19 +329,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setInputFilter(durationId, distanceId, hoursMinutesDropdownBtnId) {
|
function setInputFilter(durationId, distanceId, hoursMinutesDropdownBtnId) {
|
||||||
$("#" + durationId).inputFilter(function (value) {
|
$(`#${durationId}`).inputFilter(function (value) {
|
||||||
var result = /^\d*$/;
|
var result = /^\d*$/;
|
||||||
var dropdownButton = $("#" + hoursMinutesDropdownBtnId);
|
var dropdownButton = $(`#${hoursMinutesDropdownBtnId}`);
|
||||||
|
|
||||||
if (dropdownButton.length && dropdownButton.text() === "Stunden" || getIsZeiterfassungseinheitInMinutes() === false) {
|
if(dropdownButton.length && dropdownButton.text() === "Stunden" || getIsZeiterfassungseinheitInMinutes() === false) {
|
||||||
result = /^-?\d*[.,]?\d*$/;
|
result = /^\d*[.,]?\d*$/;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.test(value);
|
return result.test(value);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#" + distanceId).inputFilter(function(value) {
|
$(`#${distanceId}`).inputFilter(function(value) {
|
||||||
return /^-?\d*[.,]?\d*$/.test(value);
|
return /^\d*[.,]?\d*$/.test(value);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(`#betrag`).inputFilter(function (value) {
|
||||||
|
return /^\d*([.,]?\d{0,2})?$/.test(value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,7 +445,7 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container mt-3" id="checkbox-container">
|
<div class="container mt-3" id="checkbox-container" style="max-width: 1200px !important;">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@if(AbstractModel.IsAllowedToSeeSupportConceptFilter)
|
@if(AbstractModel.IsAllowedToSeeSupportConceptFilter)
|
||||||
{
|
{
|
||||||
@@ -471,7 +460,7 @@
|
|||||||
<div class="col-md pt-1">
|
<div class="col-md pt-1">
|
||||||
@using(Html.BeginForm("SetShowExpiredSupportConcepts", "Main", FormMethod.Post))
|
@using(Html.BeginForm("SetShowExpiredSupportConcepts", "Main", FormMethod.Post))
|
||||||
{
|
{
|
||||||
<div class="custom-control custom-checkbox custom-control-inline">
|
<div class="custom-control custom-switch custom-control-inline">
|
||||||
@Html.CheckBoxFor(m => m.ShowExpiredSupportConcepts, new { onchange = "submitForm(this)", @class = "custom-control-input" })
|
@Html.CheckBoxFor(m => m.ShowExpiredSupportConcepts, new { onchange = "submitForm(this)", @class = "custom-control-input" })
|
||||||
@Html.LabelFor(m => m.ShowExpiredSupportConcepts, new { @class = "custom-control-label" })
|
@Html.LabelFor(m => m.ShowExpiredSupportConcepts, new { @class = "custom-control-label" })
|
||||||
</div>
|
</div>
|
||||||
@@ -483,7 +472,7 @@
|
|||||||
<div class="col-md pt-1">
|
<div class="col-md pt-1">
|
||||||
@using(Html.BeginForm("SetGroupBookingMode", "Main", FormMethod.Post))
|
@using(Html.BeginForm("SetGroupBookingMode", "Main", FormMethod.Post))
|
||||||
{
|
{
|
||||||
<div class="custom-control custom-checkbox custom-control-inline">
|
<div class="custom-control custom-switch custom-control-inline">
|
||||||
@Html.CheckBoxFor(m => m.IsInGroupBookingMode, new { onchange = "submitForm(this)", @class = "custom-control-input" })
|
@Html.CheckBoxFor(m => m.IsInGroupBookingMode, new { onchange = "submitForm(this)", @class = "custom-control-input" })
|
||||||
@Html.LabelFor(m => m.IsInGroupBookingMode, new { @class = "custom-control-label" })
|
@Html.LabelFor(m => m.IsInGroupBookingMode, new { @class = "custom-control-label" })
|
||||||
</div>
|
</div>
|
||||||
@@ -496,7 +485,7 @@
|
|||||||
<div class="col-md pt-1">
|
<div class="col-md pt-1">
|
||||||
@using(Html.BeginForm("SetMultiBookingMode", "Main", FormMethod.Post))
|
@using(Html.BeginForm("SetMultiBookingMode", "Main", FormMethod.Post))
|
||||||
{
|
{
|
||||||
<div class="custom-control custom-checkbox custom-control-inline">
|
<div class="custom-control custom-switch custom-control-inline">
|
||||||
@Html.CheckBoxFor(m => m.IsInMultiBookingMode, new { onchange = "submitForm(this)", @class = "custom-control-input" })
|
@Html.CheckBoxFor(m => m.IsInMultiBookingMode, new { onchange = "submitForm(this)", @class = "custom-control-input" })
|
||||||
@Html.LabelFor(m => m.IsInMultiBookingMode, new { @class = "custom-control-label" })
|
@Html.LabelFor(m => m.IsInMultiBookingMode, new { @class = "custom-control-label" })
|
||||||
</div>
|
</div>
|
||||||
@@ -507,7 +496,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* ----- Einzelbuchung ----- *@
|
@* ----- Einzelbuchung ----- *@
|
||||||
<div class="container-fluid mb-3" id="main-container">
|
<div class="container-fluid mb-3" id="main-container" style="max-width: 1200px !important;">
|
||||||
@if(!Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode)
|
@if(!Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode)
|
||||||
{
|
{
|
||||||
@Html.Partial("SingleBookingPartial", Model)
|
@Html.Partial("SingleBookingPartial", Model)
|
||||||
@@ -515,7 +504,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* ----- Gruppenbuchung ----- *@
|
@* ----- Gruppenbuchung ----- *@
|
||||||
<div class="container mb-3">
|
<div class="container mb-3" style="max-width: 1200px !important;">
|
||||||
@if(Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode)
|
@if(Model.IsInGroupBookingMode && !Model.IsInMultiBookingMode)
|
||||||
{
|
{
|
||||||
<div id="group-booking-container">
|
<div id="group-booking-container">
|
||||||
@@ -525,7 +514,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* ----- Mehrfachbuchung ----- *@
|
@* ----- Mehrfachbuchung ----- *@
|
||||||
<div class="container mb-3">
|
<div class="container mb-3" style="max-width: 1200px !important;">
|
||||||
@if(Model.IsInMultiBookingMode && !Model.IsInGroupBookingMode)
|
@if(Model.IsInMultiBookingMode && !Model.IsInGroupBookingMode)
|
||||||
{
|
{
|
||||||
@Html.Partial("MultiBookingPartial", Model);
|
@Html.Partial("MultiBookingPartial", Model);
|
||||||
@@ -537,7 +526,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title">Textbausteine</h6>
|
<h6 class="modal-title font-weight-bold">Textbausteine</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal">
|
<button type="button" class="close" data-dismiss="modal">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -555,7 +544,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* ----- Unterschriften-Layover ----- *@
|
@* ----- Unterschriften-Layover ----- *@
|
||||||
<div class="container-fluid d-none mb-3" id="signature-container">
|
<div class="container-fluid d-none mb-3" id="signature-container" style="max-width: 1200px !important;">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
@@ -639,7 +628,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title" id="statistics-header"></h6>
|
<h6 class="modal-title font-weight-bold" id="statistics-header"></h6>
|
||||||
<button type="button" class="close" data-dismiss="modal">
|
<button type="button" class="close" data-dismiss="modal">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -664,7 +653,7 @@
|
|||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="signature-text"></h5>
|
<h5 class="modal-title font-weight-bold" id="signature-text"></h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="hideSignature()">
|
<button type="button" class="close" data-dismiss="modal" onclick="hideSignature()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -686,7 +675,7 @@
|
|||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Bewertungsskala</h5>
|
<h5 class="modal-title font-weight-bold">Bewertungsskala</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" onclick="hideGoalRatingPopup()">
|
<button class="close" type="button" data-dismiss="modal" onclick="hideGoalRatingPopup()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -717,7 +706,7 @@
|
|||||||
<div class="modal-dialog modal-lg" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Passwort ändern</h5>
|
<h5 class="modal-title font-weight-bold">Passwort ändern</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="$('#password-change-error-alert').html(''); $('#password-change-error-alert').modal('hide');">
|
<button type="button" class="close" data-dismiss="modal" onclick="$('#password-change-error-alert').html(''); $('#password-change-error-alert').modal('hide');">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -792,7 +781,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="staticBackdropLabel">Warnung</h5>
|
<h5 class="modal-title font-weight-bold" id="staticBackdropLabel">Warnung</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -846,6 +835,7 @@
|
|||||||
<input type="hidden" name="@FormCollectionConstants.MarkerKey" id="srv-marker" />
|
<input type="hidden" name="@FormCollectionConstants.MarkerKey" id="srv-marker" />
|
||||||
<input type="hidden" name="@FormCollectionConstants.ServiceDescriptionKey" id="srv-service-description" />
|
<input type="hidden" name="@FormCollectionConstants.ServiceDescriptionKey" id="srv-service-description" />
|
||||||
<input type="hidden" name="@FormCollectionConstants.DurationKey" id="srv-duration" />
|
<input type="hidden" name="@FormCollectionConstants.DurationKey" id="srv-duration" />
|
||||||
|
<input type="hidden" name="@FormCollectionConstants.BetragKey" id="srv-betrag" />
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -854,7 +844,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable h-100" role="document">
|
<div class="modal-dialog modal-dialog-scrollable h-100" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title">Ziele und Maßnahmen</h6>
|
<h6 class="modal-title font-weight-bold">Ziele und Maßnahmen</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetGoalTreeSearch()">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetGoalTreeSearch()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -98,6 +98,28 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@* ----- Betrag ----- *@
|
||||||
|
@if(Model.ShowBetrag)
|
||||||
|
{
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="col-md">
|
||||||
|
<div class="form-group my-2">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<div class="input-group-text prepend-input-group-text">
|
||||||
|
Betrag
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input class="form-control" type="text" id="betrag" name="betrag" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<div class="input-group-text">€</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
@* Trennlinie *@
|
@* Trennlinie *@
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
|
|||||||
@@ -132,7 +132,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
<h5 class="modal-title font-weight-bold">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal">
|
<button type="button" class="close" data-dismiss="modal">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Mitarbeiter hinzufügen</h5>
|
<h5 class="modal-title font-weight-bold">Mitarbeiter hinzufügen</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('mb-employee-search-input', 'employee-text')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('mb-employee-search-input', 'employee-text')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -72,8 +72,6 @@
|
|||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@{
|
@{
|
||||||
@@ -161,110 +159,105 @@
|
|||||||
</nav>
|
</nav>
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(var serviceRecord in Model.ServiceRecords)
|
foreach(var serviceRecord in Model.ServiceRecords)
|
||||||
|
{
|
||||||
|
if(serviceRecord.Start == null || serviceRecord.End == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var start = serviceRecord.Start.Value;
|
||||||
|
var end = serviceRecord.End.Value;
|
||||||
|
var hasSignatureStr = serviceRecord.SignatureOid.HasValue ? "JA" : "NEIN";
|
||||||
|
|
||||||
|
var duration = (end - start).TotalMinutes;
|
||||||
|
|
||||||
|
var roundedDuration = MobileUtils.GetDecimalValueWithMaxDecimal(serviceRecord.RoundedDuration, 2);
|
||||||
|
|
||||||
|
if(serviceRecord.ServiceDescription.Category.Percentage > 0 && serviceRecord.ServiceDescription.Category.Percentage < 100)
|
||||||
|
{
|
||||||
|
roundedDuration = roundedDuration * serviceRecord.ServiceDescription.Category.Percentage / 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
var durationStr = serviceRecord.GroupOid.HasValue ? string.Format("{0:###0.#} ({0:###0.#})", roundedDuration) : $"{duration:###0.#} ({roundedDuration:###0.#})";
|
||||||
|
|
||||||
|
var massnahmenString = string.Empty;
|
||||||
|
var zieleString = string.Empty;
|
||||||
|
|
||||||
|
if(serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
||||||
|
{
|
||||||
|
foreach(var goal in serviceRecord.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptGoalType || g.Type == ValueListEntryType.SupportConceptIndividualGoalType))
|
||||||
|
{
|
||||||
|
if(goal.Abbreviation != null && goal.TypeDescription != null)
|
||||||
|
{
|
||||||
|
massnahmenString += $"{goal.Abbreviation}: {goal.TypeDescription}";
|
||||||
|
}
|
||||||
|
else if(goal.Abbreviation is null && goal.TypeDescription != null)
|
||||||
|
{
|
||||||
|
massnahmenString += goal.TypeDescription;
|
||||||
|
}
|
||||||
|
else if(goal.Abbreviation != null && goal.TypeDescription is null)
|
||||||
|
{
|
||||||
|
massnahmenString += goal.Abbreviation;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
if(goal.RatingTypeOid.HasValue)
|
||||||
|
{
|
||||||
|
var goalRating = Model.GoalRatingTypes.FirstOrDefault(g => g.RatingTypeOid.HasValue && g.RatingTypeOid.Equals(goal.RatingTypeOid.Value));
|
||||||
|
|
||||||
|
if(goalRating?.DisplayName != null && goalRating.DisplayName.Length > 0)
|
||||||
{
|
{
|
||||||
if(serviceRecord.Start == null || serviceRecord.End == null)
|
massnahmenString += $" <strong style='color: blue;'>({goalRating.DisplayName})</strong>";
|
||||||
{
|
}
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var start = serviceRecord.Start.Value;
|
|
||||||
var end = serviceRecord.End.Value;
|
|
||||||
var hasSignatureStr = serviceRecord.SignatureOid.HasValue ? "JA" : "NEIN";
|
|
||||||
|
|
||||||
var duration = (end - start).TotalMinutes;
|
|
||||||
|
|
||||||
var roundedDuration = MobileUtils.GetDecimalValueWithMaxDecimal(serviceRecord.RoundedDuration, 2);
|
|
||||||
|
|
||||||
if(serviceRecord.ServiceDescription.Category.Percentage > 0 && serviceRecord.ServiceDescription.Category.Percentage < 100)
|
|
||||||
{
|
|
||||||
roundedDuration = roundedDuration * serviceRecord.ServiceDescription.Category.Percentage / 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
var durationStr = serviceRecord.GroupOid.HasValue ? string.Format("{0:###0.#} ({0:###0.#})", roundedDuration) : $"{duration:###0.#} ({roundedDuration:###0.#})";
|
|
||||||
|
|
||||||
var massnahmenString = string.Empty;
|
|
||||||
var zieleString = string.Empty;
|
|
||||||
|
|
||||||
if(serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
|
||||||
{
|
|
||||||
foreach(var goal in serviceRecord.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptGoalType || g.Type == ValueListEntryType.SupportConceptIndividualGoalType))
|
|
||||||
{
|
|
||||||
if(goal.Abbreviation != null && goal.TypeDescription != null)
|
|
||||||
{
|
|
||||||
massnahmenString += $"{goal.Abbreviation}: {goal.TypeDescription}";
|
|
||||||
}
|
|
||||||
else if(goal.Abbreviation is null && goal.TypeDescription != null)
|
|
||||||
{
|
|
||||||
massnahmenString += goal.TypeDescription;
|
|
||||||
}
|
|
||||||
else if(goal.Abbreviation != null && goal.TypeDescription is null)
|
|
||||||
{
|
|
||||||
massnahmenString += goal.Abbreviation;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
if(goal.RatingTypeOid.HasValue)
|
|
||||||
{
|
|
||||||
var goalRating = Model.GoalRatingTypes.FirstOrDefault(g => g.RatingTypeOid.HasValue && g.RatingTypeOid.Equals(goal.RatingTypeOid.Value));
|
|
||||||
|
|
||||||
if(goalRating?.DisplayName != null && goalRating.DisplayName.Length > 0)
|
|
||||||
{
|
|
||||||
massnahmenString += $" <strong style='color: blue;'>({goalRating.DisplayName})</strong>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(serviceRecord.Goals.IndexOf(goal) < serviceRecord.Goals.Count - 1)
|
if(serviceRecord.Goals.IndexOf(goal) < serviceRecord.Goals.Count - 1)
|
||||||
{
|
{
|
||||||
massnahmenString += ", ";
|
massnahmenString += ", ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(serviceRecord.ServiceRecordOid.HasValue && Model.ServiceRecordOids2GoalHeader.ContainsKey(serviceRecord.ServiceRecordOid.Value))
|
if(serviceRecord.ServiceRecordOid.HasValue && Model.ServiceRecordOids2GoalHeader.ContainsKey(serviceRecord.ServiceRecordOid.Value))
|
||||||
{
|
{
|
||||||
var ziele = serviceRecord.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptIndividualGoalCategoryType || g.Type == ValueListEntryType.SupportConceptGoalCategoryType).ToList();
|
var ziele = serviceRecord.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptIndividualGoalCategoryType || g.Type == ValueListEntryType.SupportConceptGoalCategoryType).ToList();
|
||||||
|
|
||||||
foreach(var ziel in ziele)
|
foreach(var ziel in ziele)
|
||||||
{
|
{
|
||||||
if(ziel.Abbreviation != null && ziel.TypeDescription != null)
|
if(ziel.Abbreviation != null && ziel.TypeDescription != null)
|
||||||
{
|
{
|
||||||
zieleString += $"{ziel.Abbreviation}: {ziel.TypeDescription} ";
|
zieleString += $"{ziel.Abbreviation}: {ziel.TypeDescription} ";
|
||||||
}
|
}
|
||||||
else if(ziel.Abbreviation is null && ziel.TypeDescription != null)
|
else if(ziel.Abbreviation is null && ziel.TypeDescription != null)
|
||||||
{
|
{
|
||||||
zieleString += ziel.TypeDescription;
|
zieleString += ziel.TypeDescription;
|
||||||
}
|
}
|
||||||
else if(ziel.Abbreviation != null && ziel.TypeDescription is null)
|
else if(ziel.Abbreviation != null && ziel.TypeDescription is null)
|
||||||
{
|
{
|
||||||
zieleString += ziel.Abbreviation;
|
zieleString += ziel.Abbreviation;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if(ziel.RatingTypeOid.HasValue)
|
if(ziel.RatingTypeOid.HasValue)
|
||||||
{
|
{
|
||||||
var zielbewertung = Model.GoalRatingTypes.FirstOrDefault(goalRatingType => goalRatingType.RatingTypeOid.HasValue && goalRatingType.RatingTypeOid.Equals(ziel.RatingTypeOid.Value));
|
var zielbewertung = Model.GoalRatingTypes.FirstOrDefault(goalRatingType => goalRatingType.RatingTypeOid.HasValue && goalRatingType.RatingTypeOid.Equals(ziel.RatingTypeOid.Value));
|
||||||
|
|
||||||
if(zielbewertung?.DisplayName != null && zielbewertung.DisplayName.Length > 0)
|
if(zielbewertung?.DisplayName != null && zielbewertung.DisplayName.Length > 0)
|
||||||
{
|
{
|
||||||
zieleString += $" <strong style='color: blue;'>({zielbewertung.DisplayName})</strong>";
|
zieleString += $" <strong style='color: blue;'>({zielbewertung.DisplayName})</strong>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
zieleString += ", ";
|
zieleString += ", ";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//foreach(var goalHeader in Model.ServiceRecordOids2GoalHeader[serviceRecord.ServiceRecordOid.Value])
|
zieleString = zieleString.TrimEnd(' ').TrimEnd(',');
|
||||||
//{
|
}
|
||||||
// zieleString += $"{goalHeader}, ";
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
zieleString = zieleString.TrimEnd(' ').TrimEnd(',');
|
var cardBackground = serviceRecord.ServiceRecordType == ServiceRecordTypeId.Content ? "bg-service-record-marked" : serviceRecord.GroupOid.HasValue ? "bg-bewo-group-booking" : string.Empty;
|
||||||
}
|
|
||||||
|
|
||||||
var cardBackground = serviceRecord.ServiceRecordType == ServiceRecordTypeId.Content ? "bg-service-record-marked" : serviceRecord.GroupOid.HasValue ? "bg-bewo-group-booking" : string.Empty;
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="card w-100 @cardBackground">
|
<div class="card w-100 @cardBackground">
|
||||||
@@ -371,7 +364,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
if(serviceRecord.Goals.Any(goal => goal.Type == ValueListEntryType.SupportConceptGoalType || goal.Type == ValueListEntryType.SupportConceptIndividualGoalType))
|
if(serviceRecord.Goals.Any(goal => goal.Type == ValueListEntryType.SupportConceptGoalType || goal.Type == ValueListEntryType.SupportConceptIndividualGoalType))
|
||||||
{
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -429,6 +422,25 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@if(Model.ShowBetrag)
|
||||||
|
{
|
||||||
|
var betrag = string.Empty;
|
||||||
|
|
||||||
|
if(serviceRecord.Betrag.HasValue && serviceRecord.Betrag.Value > 0)
|
||||||
|
{
|
||||||
|
betrag = serviceRecord.Betrag.Value.ToString("#.00") + " €";
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col text-secondary">
|
||||||
|
Betrag:
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
@betrag
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
@{
|
@{
|
||||||
var header1 = "Dokumentation";
|
var header1 = "Dokumentation";
|
||||||
if(Model.NumberOfDokuTypes >= 1)
|
if(Model.NumberOfDokuTypes >= 1)
|
||||||
@@ -579,7 +591,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title">Einmal-Unterschrift</h6>
|
<h6 class="modal-title font-weight-bold">Einmal-Unterschrift</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal">
|
<button type="button" class="close" data-dismiss="modal">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<script>
|
<script type="text/javascript">
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$("#hours-minutes-dropdown-btn").on("click", function() {
|
$("#hours-minutes-dropdown-btn").on("click", function() {
|
||||||
$("#hours-minutes-dropdown-btn").data("text", $("#hours-minutes-dropdown-btn").text().replaceAll(/\s/g, ""));
|
$("#hours-minutes-dropdown-btn").data("text", $("#hours-minutes-dropdown-btn").text().replaceAll(/\s/g, ""));
|
||||||
@@ -32,12 +32,25 @@
|
|||||||
var buttonText = $(this).text();
|
var buttonText = $(this).text();
|
||||||
$("#hours-minutes-dropdown-btn").text(buttonText);
|
$("#hours-minutes-dropdown-btn").text(buttonText);
|
||||||
|
|
||||||
setInputFilter('duration', 'distance', 'hours-minutes-dropdown-btn');
|
window.setInputFilter('duration', 'distance', 'hours-minutes-dropdown-btn');
|
||||||
|
|
||||||
$.get('@Url.Action("ToggleDurationUnit")', { isInHoursMode: buttonText === "Stunden" });
|
$.get('@Url.Action("ToggleDurationUnit")', { isInHoursMode: buttonText === "Stunden" });
|
||||||
|
|
||||||
calculateDuration(true, 'start-time', 'end-time', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker', false, false);
|
calculateDuration(true, 'start-time', 'end-time', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker', false, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@{
|
||||||
|
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
|
||||||
|
{
|
||||||
|
<text>
|
||||||
|
try {
|
||||||
|
initializeIntervalSelection();
|
||||||
|
} catch (error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
</text>
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function deleteSigntarue(signatureOid, serviceRecordOid, customerName, dateOfRecord) {
|
function deleteSigntarue(signatureOid, serviceRecordOid, customerName, dateOfRecord) {
|
||||||
@@ -74,6 +87,151 @@
|
|||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onSingleBookingEmployeeDropdownInput() {
|
||||||
|
try {
|
||||||
|
var input = $("#single-booking-employee-search-input");
|
||||||
|
|
||||||
|
var searchText = input.val();
|
||||||
|
|
||||||
|
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||||
|
$("#single-booking-employee-dropdown-menu .dropdown-item").show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuItems = $("#single-booking-employee-dropdown-menu .dropdown-item");
|
||||||
|
|
||||||
|
menuItems.hide();
|
||||||
|
|
||||||
|
$.each(menuItems, function(index, item) {
|
||||||
|
var itemText = $(item).text().toLowerCase();
|
||||||
|
|
||||||
|
if(itemText.includes(searchText.toLowerCase())) {
|
||||||
|
$(item).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetSingleBookingEmployeeSearch() {
|
||||||
|
try {
|
||||||
|
$("#single-booking-employee-search-input").val("");
|
||||||
|
$("#single-booking-employee-dropdown-menu .dropdown-item").show();
|
||||||
|
|
||||||
|
var e = window.event;
|
||||||
|
e.cancelBubble = true;
|
||||||
|
|
||||||
|
if (e.stopPropagation) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSelectedEmployeeForSingleBooking(employeeOid) {
|
||||||
|
try {
|
||||||
|
if(employeeOid !== null && employeeOid !== undefined && $.isNumeric(employeeOid) === true && employeeOid > 0) {
|
||||||
|
$.get("@Url.Action("SetServiceRecordEmployee")", {employeeOid: employeeOid}, function (employeeName) {
|
||||||
|
$("#single-booking-dropdown-employees-menu").text(employeeName);
|
||||||
|
|
||||||
|
loadServiceRecords();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadServiceRecords() {
|
||||||
|
try {
|
||||||
|
var selectedOption = $("#timeFrameSelect").val();
|
||||||
|
var start = $("#time-frame-start-date").val();
|
||||||
|
var end = $("#time-frame-end-date").val();
|
||||||
|
var dayCount = $("#day-count-number").val();
|
||||||
|
var year = $("#year-select").val();
|
||||||
|
var month = $("#month-select").val();
|
||||||
|
|
||||||
|
showSpinner();
|
||||||
|
|
||||||
|
$("#service-record-list-container").load("@Url.Action("LoadServiceRecordsNonPost")", {dayCountNumber: dayCount, start: start, end: end, month: month, year: year, recordsKey: selectedOption},
|
||||||
|
() => {
|
||||||
|
hideSpinner();
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initializeIntervalSelection() {
|
||||||
|
try {
|
||||||
|
var selectedOption = $("#timeFrameSelect option:selected").val();
|
||||||
|
|
||||||
|
switch (selectedOption) {
|
||||||
|
case "0":
|
||||||
|
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "1":
|
||||||
|
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
|
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "5":
|
||||||
|
$("#last-x-interval-container").show();
|
||||||
|
$("#custom-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "6":
|
||||||
|
$("#custom-interval-container").show();
|
||||||
|
$("#last-x-interval-container, #month-interval-container").hide();
|
||||||
|
break;
|
||||||
|
case "7":
|
||||||
|
$("#month-interval-container").show();
|
||||||
|
$("#last-x-interval-container, #custom-interval-container").hide();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeServiceRecordIntervalSelection(select) {
|
||||||
|
try {
|
||||||
|
var selectedOption = $(select).val();
|
||||||
|
|
||||||
|
showSpinner();
|
||||||
|
|
||||||
|
if(["0", "1", "2", "3", "4"].includes(selectedOption)) {
|
||||||
|
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
||||||
|
loadServiceRecords();
|
||||||
|
}
|
||||||
|
else if(selectedOption === "5") {
|
||||||
|
$("#last-x-interval-container").show();
|
||||||
|
$("#custom-interval-container, #month-interval-container").hide();
|
||||||
|
hideSpinner();
|
||||||
|
}
|
||||||
|
else if(selectedOption === "6") {
|
||||||
|
$("#custom-interval-container").show();
|
||||||
|
$("#last-x-interval-container, #month-interval-container").hide();
|
||||||
|
hideSpinner();
|
||||||
|
}
|
||||||
|
else if(selectedOption === "7") {
|
||||||
|
$("#month-interval-container").show();
|
||||||
|
$("#last-x-interval-container, #custom-interval-container").hide();
|
||||||
|
hideSpinner();
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@using(Html.BeginForm("ResetSingleBookingForm", "Main", FormMethod.Post, new { Id = "reset-single-booking-form-form" }))
|
@using(Html.BeginForm("ResetSingleBookingForm", "Main", FormMethod.Post, new { Id = "reset-single-booking-form-form" }))
|
||||||
@@ -121,7 +279,7 @@
|
|||||||
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Hilfeplanauswahl</h5>
|
<h5 class="modal-title font-weight-bold">Hilfeplanauswahl</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -183,16 +341,51 @@
|
|||||||
@* ----- Einzelbuchung: Mitarbeiter ----- *@
|
@* ----- Einzelbuchung: Mitarbeiter ----- *@
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
<div class="form-group my-2">
|
<div class="dropdown mt-3">
|
||||||
<div class="input-group">
|
@{
|
||||||
<div class="input-group-prepend">
|
var employeeButtonValue = "Mitarbeiter";
|
||||||
<div class="input-group-text prepend-input-group-text">Mitarbeiter</div>
|
|
||||||
|
if(Model.SelectedEmployee != null)
|
||||||
|
{
|
||||||
|
employeeButtonValue = Model.SelectedEmployee.DetailDescription;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="wide-dropdown">
|
||||||
|
<div class="input-group" id="single-booking-employee-input-group">
|
||||||
|
<div class="input-group-prepend" id="single-booking-employee-prepend">
|
||||||
|
<span class="input-group-text prepend-input-group-text">Mitarbeiter</span>
|
||||||
|
</div>
|
||||||
|
<div class="input-group-append dropdown-append" id="single-booking-employee-dropdown-container">
|
||||||
|
<button class="btn btn-primary dropdown-toggle text-truncate w-100 white-space-normal" type="button" id="single-booking-dropdown-employees-menu" data-toggle="dropdown">
|
||||||
|
@employeeButtonValue
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu" id="single-booking-employee-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||||
|
<div class="input-group px-2">
|
||||||
|
<input class="form-control" type="text" id="single-booking-employee-search-input" placeholder="Suchen..." oninput="onSingleBookingEmployeeDropdownInput()" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-outline-secondary" type="button" onclick="resetSingleBookingEmployeeSearch()">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
@foreach(var employee in Model.Employees)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="employee-@employee.EmployeeOid" onclick="setSelectedEmployeeForSingleBooking(@employee.EmployeeOid)">@employee.DetailDescription</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@Html.DropDownListFor(m => m.SelectedEmployeeOid, Model.EmployeeListItems, new { id = "employeesDropDown", @class = "custom-select", onchange = "setSelectedEmployee()" })
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@* ----- Einzelbuchung: Ziele ----- *@
|
||||||
@if(Model.SelectedSupportConcept != null && Model.SelectedSupportConcept.Goals.Any())
|
@if(Model.SelectedSupportConcept != null && Model.SelectedSupportConcept.Goals.Any())
|
||||||
{
|
{
|
||||||
<!-- Einzelbuchung: Ziele -->
|
<!-- Einzelbuchung: Ziele -->
|
||||||
@@ -211,6 +404,8 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@* ----- Einzelbuchung: Kategorie & Leistung ----- *@
|
@* ----- Einzelbuchung: Kategorie & Leistung ----- *@
|
||||||
<div id="category-to-description-container">
|
<div id="category-to-description-container">
|
||||||
@Html.Partial("Category2ServiceDescriptionPartial", Model)
|
@Html.Partial("Category2ServiceDescriptionPartial", Model)
|
||||||
@@ -230,6 +425,34 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@* ----- Betrag ----- *@
|
||||||
|
@if(Model.ShowBetrag)
|
||||||
|
{
|
||||||
|
var betrag = string.Empty;
|
||||||
|
if(Model.SelectedServiceRecord?.Betrag != null && Model.SelectedServiceRecord.Betrag.Value > 0)
|
||||||
|
{
|
||||||
|
betrag = Model.SelectedServiceRecord.Betrag.Value.ToString("#.00");
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="col-md">
|
||||||
|
<div class="form-group my-2">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<div class="input-group-text prepend-input-group-text">
|
||||||
|
Betrag
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input class="form-control" type="text" id="betrag" name="betrag" value="@betrag" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<div class="input-group-text">€</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
@@ -352,7 +575,7 @@
|
|||||||
@labelText
|
@labelText
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="text" class="form-control" id="duration" name="Dauer" onchange="onDurationChange('start-time', 'end-time', 'start-date', 'end-date', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker')" value="@durationValue">
|
<input type="number" step="0.01" min="0" class="form-control" id="duration" name="Dauer" onchange="onDurationChange('start-time', 'end-time', 'start-date', 'end-date', 'duration', 'hours-minutes-dropdown-btn', 'start-date-picker', 'end-date-picker')" value="@durationValue">
|
||||||
@if(Model.IsZeiterfassungInStdMin)
|
@if(Model.IsZeiterfassungInStdMin)
|
||||||
{
|
{
|
||||||
<div class="input-group-append">
|
<div class="input-group-append">
|
||||||
@@ -484,303 +707,196 @@
|
|||||||
{
|
{
|
||||||
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
|
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
|
||||||
{
|
{
|
||||||
|
var defaultStartDate = DateTime.Now.GetFirstOfMonth().ToShortDateString();
|
||||||
|
var defaultEndDate = DateTime.Today.ToShortDateString();
|
||||||
|
|
||||||
<div class="container-fluid w-100 mt-3 p-0">
|
<div class="container-fluid w-100 mt-3 p-0">
|
||||||
@using(Html.BeginForm("LoadServiceRecords", "Main", FormMethod.Post, new { id = "selectServiceRecordForm" }))
|
<div class="form-row">
|
||||||
{
|
<div class="col">
|
||||||
<div class="form-row">
|
<div class="form-group">
|
||||||
<div class="col">
|
<select name="Records" class="custom-select" onchange="changeServiceRecordIntervalSelection(this)" id="timeFrameSelect">
|
||||||
<div class="form-group">
|
<option value="5"
|
||||||
<select name="Records" class="custom-select" onchange="changeServiceRecordIntervalSelection(this)" id="timeFrameSelect">
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.XTage) { @Html.Raw("selected") }}>
|
||||||
<option value="5"
|
Letzten x Tage
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.XTage) { @Html.Raw("selected") }}>
|
</option>
|
||||||
Letzten x Tage
|
<option value="0"
|
||||||
</option>
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.LastWeek) { @Html.Raw("selected") }}>
|
||||||
<option value="0"
|
Letzten 7 Tage
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.LastWeek) { @Html.Raw("selected") }}>
|
</option>
|
||||||
Letzten 7 Tage
|
<option value="1"
|
||||||
</option>
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.LastMonth) { @Html.Raw("selected") }}>
|
||||||
|
Letzten 30 Tage
|
||||||
|
</option>
|
||||||
|
<option value="2"
|
||||||
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Last3Month) { @Html.Raw("selected") }}>
|
||||||
|
Letzten 90 Tage
|
||||||
|
</option>
|
||||||
|
<option value="3"
|
||||||
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.All) { @Html.Raw("selected") }}>
|
||||||
|
Alle
|
||||||
|
</option>
|
||||||
|
<option value="6"
|
||||||
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen) { @Html.Raw("selected") }}>
|
||||||
|
Zeitraum wählen
|
||||||
|
</option>
|
||||||
|
<option value="7"
|
||||||
|
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl) { @Html.Raw("selected") }}>
|
||||||
|
Monat wählen
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="button" class="btn btn-success w-100" onclick="loadServiceRecords()">
|
||||||
|
<span class="fas fa-sync-alt"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@*----- Anzahl Tage: [Nummern-Input] ----- *@
|
||||||
|
<div class="form-row" id="last-x-interval-container">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Anzahl Tage:</span>
|
||||||
|
</div>
|
||||||
|
<input class="form-control" id="day-count-number" type="number" name="day-count-number" min="0" value="@Model.LastSelectedServiceRecordTimeIntervalDays" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@*----- Zeitraum wählen: [Von-Datum] bis [Bis-Datum] erster des Monats bis aktuelles Datum ----- *@
|
||||||
|
<div class="form-row" id="custom-interval-container">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="col-6">
|
||||||
|
<div class="form-group mb-1">
|
||||||
|
<div class="input-group date" id="time-frame-start-date-picker" data-target-input="nearest">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Von</span>
|
||||||
|
</div>
|
||||||
|
<input type="text" id="time-frame-start-date" name="von" class="form-control datetimepicker-input" data-target="#time-frame-start-date-picker" value="@defaultStartDate" />
|
||||||
|
<div class="input-group-append" data-target="#time-frame-start-date-picker" data-toggle="datetimepicker">
|
||||||
|
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<div class="form-group mb-1">
|
||||||
|
<div class="input-group date" id="time-frame-end-date-picker" data-target-input="nearest">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Bis</span>
|
||||||
|
</div>
|
||||||
|
<input type="text" id="time-frame-end-date" name="bis" class="form-control datetimepicker-input" data-target="#time-frame-end-date-picker" value="@defaultEndDate" />
|
||||||
|
<div class="input-group-append" data-target="#time-frame-end-date-picker" data-toggle="datetimepicker">
|
||||||
|
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row" id="month-interval-container">
|
||||||
|
<div class="col-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Monat</span>
|
||||||
|
</div>
|
||||||
|
<select name="month-select" class="custom-select" id="month-select">
|
||||||
<option value="1"
|
<option value="1"
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.LastMonth) { @Html.Raw("selected") }}>
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 1) { @Html.Raw("selected") } }>
|
||||||
Letzten 30 Tage
|
Januar
|
||||||
</option>
|
</option>
|
||||||
<option value="2"
|
<option value="2"
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Last3Month) { @Html.Raw("selected") }}>
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 2) { @Html.Raw("selected") } }>
|
||||||
Letzten 90 Tage
|
Februar
|
||||||
</option>
|
</option>
|
||||||
<option value="3"
|
<option value="3"
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.All) { @Html.Raw("selected") }}>
|
@{ if(Model.LastSelectedServiceRecordMonth.Month == 3) { @Html.Raw("selected") } }>
|
||||||
Alle
|
März
|
||||||
|
</option>
|
||||||
|
<option value="4"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 4) { @Html.Raw("selected") }}>
|
||||||
|
April
|
||||||
|
</option>
|
||||||
|
<option value="5"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 5) { @Html.Raw("selected") }}>
|
||||||
|
Mai
|
||||||
</option>
|
</option>
|
||||||
<option value="6"
|
<option value="6"
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.ZeitraumWaehlen) { @Html.Raw("selected") }}>
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 6) { @Html.Raw("selected") }}>
|
||||||
Zeitraum wählen
|
Juni
|
||||||
</option>
|
</option>
|
||||||
<option value="7"
|
<option value="7"
|
||||||
@{if(Model.ServiceRecordTimeInterval == ServiceRecordTimeInterval.Monatsauswahl) { @Html.Raw("selected") }}>
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 7) { @Html.Raw("selected") }}>
|
||||||
Monat wählen
|
Juli
|
||||||
|
</option>
|
||||||
|
<option value="8"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 8) { @Html.Raw("selected") }}>
|
||||||
|
August
|
||||||
|
</option>
|
||||||
|
<option value="9"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 9) { @Html.Raw("selected") }}>
|
||||||
|
September
|
||||||
|
</option>
|
||||||
|
<option value="10"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 10) { @Html.Raw("selected") }}>
|
||||||
|
Oktober
|
||||||
|
</option>
|
||||||
|
<option value="11"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 11) { @Html.Raw("selected") }}>
|
||||||
|
November
|
||||||
|
</option>
|
||||||
|
<option value="12"
|
||||||
|
@{if(Model.LastSelectedServiceRecordMonth.Month == 12) { @Html.Raw("selected") }}>
|
||||||
|
Dezember
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<button type="button" class="btn btn-success w-100" onclick="showSpinner();$('#selectServiceRecordForm').submit();">
|
|
||||||
<span class="fas fa-sync-alt"></span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@*----- Anzahl Tage: [Nummern-Input] ----- *@
|
|
||||||
<div class="form-row" id="last-x-interval-container">
|
|
||||||
<div class="col-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="input-group">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text">Anzahl Tage:</span>
|
|
||||||
</div>
|
|
||||||
<input class="form-control" id="day-count-number" type="number" name="day-count-number" min="0" value="@Model.LastSelectedServiceRecordTimeIntervalDays" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
@*----- Zeitraum wählen: [Von-Datum] bis [Bis-Datum] erster des Monats bis aktuelles Datum ----- *@
|
<div class="form-group">
|
||||||
var defaultStartDate = DateTime.Now.GetFirstOfMonth().ToShortDateString();
|
<div class="input-group">
|
||||||
var defaultEndDate = DateTime.Today.ToShortDateString();
|
<div class="input-group-prepend">
|
||||||
<div class="form-row" id="custom-interval-container">
|
<span class="input-group-text">Jahr</span>
|
||||||
<div class="col-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="form-row">
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="form-group mb-1">
|
|
||||||
<div class="input-group date" id="time-frame-start-date-picker" data-target-input="nearest">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text">Von</span>
|
|
||||||
</div>
|
|
||||||
<input type="text" id="time-frame-start-date" name="von" class="form-control datetimepicker-input" data-target="#time-frame-start-date-picker" value="@defaultStartDate" />
|
|
||||||
<div class="input-group-append" data-target="#time-frame-start-date-picker" data-toggle="datetimepicker">
|
|
||||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="form-group mb-1">
|
|
||||||
<div class="input-group date" id="time-frame-end-date-picker" data-target-input="nearest">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text">Bis</span>
|
|
||||||
</div>
|
|
||||||
<input type="text" id="time-frame-end-date" name="bis" class="form-control datetimepicker-input" data-target="#time-frame-end-date-picker" value="@defaultEndDate" />
|
|
||||||
<div class="input-group-append" data-target="#time-frame-end-date-picker" data-toggle="datetimepicker">
|
|
||||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<select class="custom-select" name="year-select" id="year-select">
|
||||||
</div>
|
@{
|
||||||
</div>
|
var heuer = DateTime.Today.Year;
|
||||||
|
for(var year = heuer + 1; year >= heuer - 10; year--)
|
||||||
<div class="form-row" id="month-interval-container">
|
{
|
||||||
<div class="col-6">
|
<option value="@year"
|
||||||
<div class="form-group">
|
@{if(Model.LastSelectedServiceRecordMonth.Year == year) { @Html.Raw("selected") }}>
|
||||||
<div class="input-group">
|
@year
|
||||||
<div class="input-group-prepend">
|
</option>
|
||||||
<span class="input-group-text">Monat</span>
|
|
||||||
</div>
|
|
||||||
<select name="month-select" class="custom-select">
|
|
||||||
<option value="1"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 1) { @Html.Raw("selected") } }>
|
|
||||||
Januar
|
|
||||||
</option>
|
|
||||||
<option value="2"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 2) { @Html.Raw("selected") } }>
|
|
||||||
Februar
|
|
||||||
</option>
|
|
||||||
<option value="3"
|
|
||||||
@{ if(Model.LastSelectedServiceRecordMonth.Month == 3) { @Html.Raw("selected") } }>
|
|
||||||
März
|
|
||||||
</option>
|
|
||||||
<option value="4"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 4) { @Html.Raw("selected") }}>
|
|
||||||
April
|
|
||||||
</option>
|
|
||||||
<option value="5"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 5) { @Html.Raw("selected") }}>
|
|
||||||
Mai
|
|
||||||
</option>
|
|
||||||
<option value="6"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 6) { @Html.Raw("selected") }}>
|
|
||||||
Juni
|
|
||||||
</option>
|
|
||||||
<option value="7"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 7) { @Html.Raw("selected") }}>
|
|
||||||
Juli
|
|
||||||
</option>
|
|
||||||
<option value="8"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 8) { @Html.Raw("selected") }}>
|
|
||||||
August
|
|
||||||
</option>
|
|
||||||
<option value="9"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 9) { @Html.Raw("selected") }}>
|
|
||||||
September
|
|
||||||
</option>
|
|
||||||
<option value="10"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 10) { @Html.Raw("selected") }}>
|
|
||||||
Oktober
|
|
||||||
</option>
|
|
||||||
<option value="11"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 11) { @Html.Raw("selected") }}>
|
|
||||||
November
|
|
||||||
</option>
|
|
||||||
<option value="12"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Month == 12) { @Html.Raw("selected") }}>
|
|
||||||
Dezember
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="input-group">
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text">Jahr</span>
|
|
||||||
</div>
|
|
||||||
<select class="custom-select" name="year-select">
|
|
||||||
@{
|
|
||||||
var heuer = DateTime.Today.Year;
|
|
||||||
for(var year = heuer + 1; year >= heuer - 10; year--)
|
|
||||||
{
|
|
||||||
<option value="@year"
|
|
||||||
@{if(Model.LastSelectedServiceRecordMonth.Year == year) { @Html.Raw("selected") }}>
|
|
||||||
@year
|
|
||||||
</option>
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</select>
|
}
|
||||||
</div>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
<script>
|
<hr class="mt-0"/>
|
||||||
@{
|
|
||||||
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
|
|
||||||
{
|
|
||||||
<text>
|
|
||||||
try {
|
|
||||||
initializeIntervalSelection();
|
|
||||||
} catch (error) {
|
|
||||||
showErrorPopup(error);
|
|
||||||
}
|
|
||||||
</text>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializeIntervalSelection() {
|
|
||||||
try {
|
|
||||||
var selectedOption = $("#timeFrameSelect").val();
|
|
||||||
|
|
||||||
switch (selectedOption) {
|
|
||||||
case "0":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "1":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "2":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "3":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "4":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "5":
|
|
||||||
$("#last-x-interval-container").show();
|
|
||||||
$("#custom-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "6":
|
|
||||||
$("#custom-interval-container").show();
|
|
||||||
$("#last-x-interval-container, #month-interval-container").hide();
|
|
||||||
break;
|
|
||||||
case "7":
|
|
||||||
$("#month-interval-container").show();
|
|
||||||
$("#last-x-interval-container, #custom-interval-container").hide();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
showErrorPopup(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function changeServiceRecordIntervalSelection(select) {
|
|
||||||
var form = $("#selectServiceRecordForm");
|
|
||||||
|
|
||||||
try {
|
|
||||||
var selectedOption = $(select).val();
|
|
||||||
|
|
||||||
showSpinner();
|
|
||||||
|
|
||||||
switch (selectedOption) {
|
|
||||||
case "0":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
form.submit();
|
|
||||||
break;
|
|
||||||
case "1":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
form.submit();
|
|
||||||
break;
|
|
||||||
case "2":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
form.submit();
|
|
||||||
break;
|
|
||||||
case "3":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
form.submit();
|
|
||||||
break;
|
|
||||||
case "4":
|
|
||||||
$("#last-x-interval-container, #custom-interval-container, #month-interval-container").hide();
|
|
||||||
form.submit();
|
|
||||||
break;
|
|
||||||
case "5":
|
|
||||||
$("#last-x-interval-container").show();
|
|
||||||
$("#custom-interval-container, #month-interval-container").hide();
|
|
||||||
hideSpinner();
|
|
||||||
break;
|
|
||||||
case "6":
|
|
||||||
$("#custom-interval-container").show();
|
|
||||||
$("#last-x-interval-container, #month-interval-container").hide();
|
|
||||||
hideSpinner();
|
|
||||||
break;
|
|
||||||
case "7":
|
|
||||||
$("#month-interval-container").show();
|
|
||||||
$("#last-x-interval-container, #custom-interval-container").hide();
|
|
||||||
hideSpinner();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
showErrorPopup(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3" id="service-record-list-container">
|
<div class="container-fluid mt-3" id="service-record-list-container">
|
||||||
@Html.Partial("ServiceRecordListPartial", Model)
|
@Html.Partial("ServiceRecordListPartial", Model)
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@*----- /Liste mit den Einträgen und dem Auswahl-Select ----- *@
|
@*----- /Liste mit den Einträgen und dem Auswahl-Select ----- *@
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@using(Html.BeginForm("DeleteSignature", "Main", FormMethod.Post, new { id = "delete-signature-form" }))
|
@using(Html.BeginForm("DeleteSignature", "Main", FormMethod.Post, new { id = "delete-signature-form" }))
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-fluid" style="max-width: 1200px !important;">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button type="button" class="btn btn-primary float-right" id="qb-sig-cancel-btn">
|
<button type="button" class="btn btn-primary float-right" id="qb-sig-cancel-btn">
|
||||||
|
|||||||
@@ -204,16 +204,186 @@
|
|||||||
try {
|
try {
|
||||||
$.get("@Url.Action("ResetQuittierungsbeleg")");
|
$.get("@Url.Action("ResetQuittierungsbeleg")");
|
||||||
} catch(error) {
|
} catch(error) {
|
||||||
showErrorPopup(error);
|
window.showErrorPopup(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on("shown.bs.modal", "#qb-report-popup", function () {
|
$(document).on("shown.bs.modal", "#qb-report-popup", function () {
|
||||||
quittierungsbelegsViewer.AdjustControl();
|
quittierungsbelegsViewer.AdjustControl();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function checkForExistingSignature() {
|
||||||
|
try {
|
||||||
|
var month = $("#month-select option:selected").val();
|
||||||
|
var year = $("#year-select option:selected").val();
|
||||||
|
var startDay = $("#start-day-select option:selected").val();
|
||||||
|
var endDay = $("#end-day-select option:selected").val();
|
||||||
|
|
||||||
|
if(startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull([month, year, startDay, endDay])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.get("@Url.Action("ChangeDateSelection")",
|
||||||
|
{
|
||||||
|
startDayString: startDay,
|
||||||
|
endDayString: endDay,
|
||||||
|
monthString: month,
|
||||||
|
yearString: year
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function qbFilterSelectionChange() {
|
||||||
|
try {
|
||||||
|
var selectedOption = $("#qb-filter-select option:selected").val();
|
||||||
|
|
||||||
|
switch(selectedOption) {
|
||||||
|
case "3":
|
||||||
|
$("#team-selection-container").removeClass("d-block");
|
||||||
|
$("#team-selection-container").addClass("d-none");
|
||||||
|
|
||||||
|
$("#customer-selection-container").removeClass("d-none");
|
||||||
|
$("#customer-selection-container").addClass("d-block");
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
|
$("#customer-selection-container").removeClass("d-block");
|
||||||
|
$("#customer-selection-container").addClass("d-none");
|
||||||
|
|
||||||
|
$("#team-selection-container").removeClass("d-none");
|
||||||
|
$("#team-selection-container").addClass("d-block");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$("#customer-selection-container, #team-selection-container").removeClass("d-block");
|
||||||
|
$("#customer-selection-container, #team-selection-container").addClass("d-none");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var selectedFilterEnumUrl = getSetQbFilterEnumUrl();
|
||||||
|
|
||||||
|
$.get(selectedFilterEnumUrl, {filterEnumString: selectedOption});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onQBCustomerDropdownItemClick(customerOid) {
|
||||||
|
try {
|
||||||
|
$.get("@Url.Action("SetCustomer")", {customerOid: customerOid}).done(function(result) {
|
||||||
|
$("#qb-customer-dropdown-menu-btn").text(result);
|
||||||
|
checkForExistingSignature();
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onQBCustomerSearchInput() {
|
||||||
|
try {
|
||||||
|
var input = $("#qb-customer-search-input");
|
||||||
|
|
||||||
|
var searchText = input.val();
|
||||||
|
|
||||||
|
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||||
|
$("#qb-customer-dropdown-menu .dropdown-item").show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuItems = $("#qb-customer-dropdown-menu .dropdown-item");
|
||||||
|
|
||||||
|
menuItems.hide();
|
||||||
|
|
||||||
|
searchText = searchText.toLowerCase();
|
||||||
|
|
||||||
|
$.each(menuItems, function(index, item) {
|
||||||
|
var itemText = $(item).text().toLowerCase();
|
||||||
|
|
||||||
|
if(itemText.includes(searchText)) {
|
||||||
|
$(item).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetQBCustomerSearch() {
|
||||||
|
try {
|
||||||
|
$("#qb-customer-search-input").val("");
|
||||||
|
$("#qb-customer-dropdown-menu .dropdown-item").show();
|
||||||
|
|
||||||
|
var e = window.event;
|
||||||
|
e.cancelBubble = true;
|
||||||
|
|
||||||
|
if(e.stopPropagation) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function onQBTeamDropdownItemClick(teamOid) {
|
||||||
|
try {
|
||||||
|
$.get("@Url.Action("SetTeam")", {teamOid: teamOid}).done(function(selectedTeamName) {
|
||||||
|
$("#qb-team-dropdown-menu-btn").text(selectedTeamName);
|
||||||
|
checkForExistingSignature();
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onQBTeamSearchInput() {
|
||||||
|
try {
|
||||||
|
var input = $("#qb-team-search-input");
|
||||||
|
|
||||||
|
var searchText = input.val();
|
||||||
|
|
||||||
|
if (searchText === null || searchText === undefined || searchText.length === 0) {
|
||||||
|
$("#qb-team-dropdown-menu .dropdown-item").show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuItems = $("#qb-team-dropdown-menu .dropdown-item");
|
||||||
|
|
||||||
|
menuItems.hide();
|
||||||
|
|
||||||
|
searchText = searchText.toLowerCase();
|
||||||
|
|
||||||
|
$.each(menuItems,
|
||||||
|
function(index, item) {
|
||||||
|
var itemText = $(item).text().toLowerCase();
|
||||||
|
|
||||||
|
if(itemText.includes(searchText)) {
|
||||||
|
$(item).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetQBTeamSearch() {
|
||||||
|
try {
|
||||||
|
$("#qb-team-search-input").val("");
|
||||||
|
$("#qb-team-dropdown-menu .dropdown-item").show();
|
||||||
|
|
||||||
|
var e = window.event;
|
||||||
|
e.cancelBubble = true;
|
||||||
|
|
||||||
|
if(e.stopPropagation) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
} catch(error) {
|
||||||
|
window.showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container-fluid my-3" id="report-form-container">
|
<div class="container-fluid my-3" id="report-form-container" style="max-width: 1200px !important;">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col col-12">
|
<div class="col col-12">
|
||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
@@ -229,14 +399,36 @@
|
|||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
<div class="form-group mb-1 d-none" id="customer-selection-container">
|
<div class="mt-3" id="customer-selection-container">
|
||||||
<div class="input-group">
|
@{
|
||||||
<div class="input-group-prepend">
|
var customerButtonValue = Model.SelectedCustomer?.DetailDescription ?? string.Empty;
|
||||||
<div class="input-group-text">
|
}
|
||||||
Klient
|
<div class="wide-dropdown">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">Klient</span>
|
||||||
|
</div>
|
||||||
|
<div class="input-group-append dropdown-append">
|
||||||
|
<button class="btn btn-bewo-customers dropdown-toggle w-100 text-truncate white-space-normal" type="button" id="qb-customer-dropdown-menu-btn" data-toggle="dropdown">
|
||||||
|
@customerButtonValue
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu w-100 dropdown-max-height" id="qb-customer-dropdown-menu">
|
||||||
|
<div class="input-group px-2">
|
||||||
|
<input class="form-control" type="text" id="qb-customer-search-input" placeholder="Suchen..." oninput="onQBCustomerSearchInput()" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-outline-secondary" type="button" onclick="resetQBCustomerSearch()">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
@foreach(var customer in Model.Customers)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item cursor-pointer" id="customer-@customer.CustomerOid" onclick="onQBCustomerDropdownItemClick(@customer.CustomerOid)">@customer.DetailDescription</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@Html.DropDownListFor(m => m.SelectedCustomerOid, Model.CustomerListItems, new { id = "customers-drop-down", @class = "custom-select", onchange = "onCustomerSelectionChange()" })
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -248,12 +440,33 @@
|
|||||||
<div class="col-xl">
|
<div class="col-xl">
|
||||||
<div class="form-group mb-1 d-none" id="team-selection-container">
|
<div class="form-group mb-1 d-none" id="team-selection-container">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
|
@{
|
||||||
|
var teamButtonValue = Model.SelectedTeam?.DetailDescription ?? string.Empty;
|
||||||
|
}
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<div class="input-group-text">
|
<div class="input-group-text">Team</div>
|
||||||
Team
|
</div>
|
||||||
|
<div class="input-group-append dropdown-append">
|
||||||
|
<button type="button" class="btn btn-bewo-teams dropdown-toggle w-100 text-truncate white-space-normal" id="qb-team-dropdown-menu-btn" data-toggle="dropdown">
|
||||||
|
@teamButtonValue
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu w-100 dropdown-max-height" id="qb-team-dropdown-menu">
|
||||||
|
<div class="input-group px-2">
|
||||||
|
<input class="form-control" type="text" id="qb-team-search-input" placeholder="Suchen..." oninput="onQBTeamSearchInput()" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="button" class="btn btn-outline-secondary" onclick="resetQBTeamSearch()">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
@foreach(var team in Model.AllTeams)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item cursor-pointer" id="team-@team.TeamOid" onclick="onQBTeamDropdownItemClick(@team.TeamOid)">@team.DetailDescription</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@Html.DropDownListFor(m => m.SelectedTeamOid, Model.Teams, new { id = "teams-drop-down", @class = "custom-select", onchange = "checkForExistingSignature()" })
|
@*@Html.DropDownListFor(m => m.SelectedTeamOid, Model.Teams, new { id = "teams-drop-down", @class = "custom-select", onchange = "checkForExistingSignature()" })*@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -264,7 +477,7 @@
|
|||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-xl">
|
<div class="col-xl">
|
||||||
<div class="form-group mb-1">
|
<div class="form-group mb-1">
|
||||||
<!-- Nur für ausgewählten Mitarbeiter -->
|
@* Nur für ausgewählten Mitarbeiter *@
|
||||||
<div class="custom-control custom-checkbox custom-control-inline">
|
<div class="custom-control custom-checkbox custom-control-inline">
|
||||||
@Html.CheckBoxFor(m => m.IsForSelectedEmployeesOnly, new { onchange = "setIsOnlyForSelectedEmployee()", @class = "custom-control-input", id = "selected-employee-cb", data_toggle = "collapse", data_target = "#employee-select-container" })
|
@Html.CheckBoxFor(m => m.IsForSelectedEmployeesOnly, new { onchange = "setIsOnlyForSelectedEmployee()", @class = "custom-control-input", id = "selected-employee-cb", data_toggle = "collapse", data_target = "#employee-select-container" })
|
||||||
<label class="custom-control-label" for="selected-employee-cb">Nur für ausgewählten Mitarbeiter</label>
|
<label class="custom-control-label" for="selected-employee-cb">Nur für ausgewählten Mitarbeiter</label>
|
||||||
@@ -276,7 +489,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-xl">
|
<div class="col-xl">
|
||||||
<div class="form-group mb-1">
|
<div class="form-group mb-1">
|
||||||
<!-- Nur für ausgewählten Kostenträger -->
|
@* Nur für ausgewählten Kostenträger *@
|
||||||
<div class="custom-control custom-checkbox custom-control-inline">
|
<div class="custom-control custom-checkbox custom-control-inline">
|
||||||
@Html.CheckBoxFor(m => m.IsForSelectedCostbearersOnly, new { id = "selected-organisation-cb", @class = "custom-control-input", onchange = "setIsOnlyForSelectedOrganisation()", data_toggle = "collapse", data_target = "#organisation-select-container" })
|
@Html.CheckBoxFor(m => m.IsForSelectedCostbearersOnly, new { id = "selected-organisation-cb", @class = "custom-control-input", onchange = "setIsOnlyForSelectedOrganisation()", data_toggle = "collapse", data_target = "#organisation-select-container" })
|
||||||
<label class="custom-control-label" for="selected-organisation-cb">Nur für ausgewählten Kostenträger</label>
|
<label class="custom-control-label" for="selected-organisation-cb">Nur für ausgewählten Kostenträger</label>
|
||||||
@@ -288,7 +501,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-xl">
|
<div class="col-xl">
|
||||||
<div class="form-group mb-1">
|
<div class="form-group mb-1">
|
||||||
<!-- Nur für ausgewählte Leistungskategorie -->
|
@* Nur für ausgewählte Leistungskategorie *@
|
||||||
<div class="custom-control custom-checkbox custom-control-inline">
|
<div class="custom-control custom-checkbox custom-control-inline">
|
||||||
@Html.CheckBoxFor(m => m.IsForSelectedCategoryOnly, new { id = "selected-category-cb", @class = "custom-control-input", onchange = "setIsOnlyForSelectedServiceCategory()", data_toggle = "collapse", data_target = "#test-div3" })
|
@Html.CheckBoxFor(m => m.IsForSelectedCategoryOnly, new { id = "selected-category-cb", @class = "custom-control-input", onchange = "setIsOnlyForSelectedServiceCategory()", data_toggle = "collapse", data_target = "#test-div3" })
|
||||||
<label class="custom-control-label" for="selected-category-cb">Nur für ausgewählte Leistungskategorie</label>
|
<label class="custom-control-label" for="selected-category-cb">Nur für ausgewählte Leistungskategorie</label>
|
||||||
@@ -353,9 +566,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@* Info-, Erstellen- und Vorschau-Buttons *@
|
||||||
<div class="clearfix mt-3">
|
<div class="clearfix mt-3">
|
||||||
<button type="button" class="btn btn-primary float-left" data-toggle="modal" data-target="#qb-info-popup">
|
<button type="button" class="btn btn-info float-left" data-toggle="modal" data-target="#qb-info-popup">
|
||||||
<span class="fas fa-info"></span>
|
<span class="fas fa-info"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
@@ -377,13 +591,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Container für die Mitarbeiterunterschrift -->
|
<!-- Container für die Mitarbeiterunterschrift -->
|
||||||
<div class="container-fluid d-none my-3" id="report-signature-container">
|
<div class="container-fluid d-none my-3" id="report-signature-container" style="max-width: 1200px !important;">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /Container für die Mitarbeiterunterschrift -->
|
<!-- /Container für die Mitarbeiterunterschrift -->
|
||||||
|
|
||||||
<!-- Container für die Unterschrift -->
|
<!-- Container für die Unterschrift -->
|
||||||
<div class="container-fluid d-none my-3" id="report-signature-container-div">
|
<div class="container-fluid d-none my-3" id="report-signature-container-div" style="max-width: 1200px !important;">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
@@ -423,7 +637,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title text-danger">Legende</h5>
|
<h5 class="modal-title text-danger font-weight-bold">Legende</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -508,7 +722,7 @@
|
|||||||
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header py-1">
|
<div class="modal-header py-1">
|
||||||
<p class="modal-title">Quittierungsbeleg</p>
|
<p class="modal-title font-weight-bold">Quittierungsbeleg</p>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="resetQuittierungsbeleg()">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close" onclick="resetQuittierungsbeleg()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -15,29 +15,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@*
|
|
||||||
Formular-Inputs:
|
|
||||||
|
|
||||||
1. SupportConcept wie in SingleBookingFormPartial.cshtml
|
|
||||||
2. Employee
|
|
||||||
3. Customer
|
|
||||||
4. Team
|
|
||||||
5. Organisation
|
|
||||||
6. Month
|
|
||||||
7. Year (DateTime.Now.Year - 10 bis DateTime.Now.Year + 1)
|
|
||||||
8. Date
|
|
||||||
9. DateRange (Start & Ende)
|
|
||||||
10. ValueListEntry, z.B. Betreuungsart_8 -> Name: Betreuungsart, ValueListEntryType: 8
|
|
||||||
11. ServiceCategory
|
|
||||||
12. Custom
|
|
||||||
13. Text
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ToDo: Beim Auswählen eines Hilfeplans etc. berichte-form-container neu laden!
|
|
||||||
*@
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function () {
|
$(function () {
|
||||||
$("#query-date-picker").datetimepicker({
|
$("#query-date-picker").datetimepicker({
|
||||||
@@ -54,6 +31,16 @@
|
|||||||
locale: "de",
|
locale: "de",
|
||||||
format: "L"
|
format: "L"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
try {
|
||||||
|
calcPrependWidth();
|
||||||
|
} catch (error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function selectCostBearer2SupportConceptRel(relOid, parameterType, parameterOid) {
|
function selectCostBearer2SupportConceptRel(relOid, parameterType, parameterOid) {
|
||||||
@@ -66,9 +53,10 @@
|
|||||||
|
|
||||||
function selectMonth(parameterType, parameterOid) {
|
function selectMonth(parameterType, parameterOid) {
|
||||||
try {
|
try {
|
||||||
var selectedMonth = $("#month-select").find(":selected").val();
|
var selectedMonth = $("#month-select").find(":selected").val().toString();
|
||||||
|
var selectedYear = $("#month-year-select").find(":selected").val().toString();
|
||||||
|
|
||||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: selectedMonth.toString()});
|
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: `${selectedMonth}_${selectedYear}`});
|
||||||
} catch(error) {
|
} catch(error) {
|
||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
@@ -111,9 +99,9 @@
|
|||||||
|
|
||||||
$.each(menuItems,
|
$.each(menuItems,
|
||||||
function (index, item) {
|
function (index, item) {
|
||||||
var itemText = $(item).text();
|
var itemText = $(item).text().toLowerCase();
|
||||||
|
|
||||||
if(itemText.includes(searchText)) {
|
if(itemText.includes(searchText.toLowerCase())) {
|
||||||
$(item).show();
|
$(item).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -159,7 +147,7 @@
|
|||||||
|
|
||||||
function selectOrganisationParameter(element, organisationOid, parameterType, parameterOid) {
|
function selectOrganisationParameter(element, organisationOid, parameterType, parameterOid) {
|
||||||
try {
|
try {
|
||||||
$("#dropdownOrganisationsMenu").text($(element).text());
|
$("#dropdownOrganisationsMenu").text(organisationOid === 0 ? "Organisation" : $(element).text());
|
||||||
|
|
||||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: organisationOid, parameterType: parameterType, parameterOid: parameterOid});
|
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: organisationOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||||
} catch(error) {
|
} catch(error) {
|
||||||
@@ -184,17 +172,69 @@
|
|||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selectValueListEntry(element, parameterType, parameterOid) {
|
||||||
|
try {
|
||||||
|
var selectedOption = $(element).find(":selected");
|
||||||
|
var valueListEntryOid = selectedOption.val();
|
||||||
|
|
||||||
|
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: valueListEntryOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectQueryText(element, parameterType, parameterOid) {
|
||||||
|
try {
|
||||||
|
var selectedText = $(element).val();
|
||||||
|
|
||||||
|
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: selectedText});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectQueryDate(element, parameterType, parameterOid) {
|
||||||
|
try {
|
||||||
|
var date = $(element).val().toString();
|
||||||
|
|
||||||
|
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: date});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectQueryDateRange(parameterType, parameterOid) {
|
||||||
|
try {
|
||||||
|
var start = $("#query-date-range-start").val().toString();
|
||||||
|
var end = $("#query-date-range-end").val().toString();
|
||||||
|
|
||||||
|
if(!start || !end) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: `${start}_${end}`});
|
||||||
|
} catch(error) {
|
||||||
|
showErrorPopup(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@if(Model.SelectedQuery != null && Model.SelectedQuery.Parameter != null && Model.SelectedQuery.Parameter.Count > 0)
|
@if(Model.SelectedQuery != null && Model.SelectedQuery.Parameter != null && Model.SelectedQuery.Parameter.Count > 0)
|
||||||
{
|
{
|
||||||
<div class="mt-3">
|
<div>
|
||||||
<hr />
|
<hr />
|
||||||
@for(var i = 0; i < Model.SelectedQuery.Parameter.Count; i++)
|
@for(var i = 0; i < Model.SelectedQuery.Parameter.Count; i++)
|
||||||
{
|
{
|
||||||
var parameter = Model.SelectedQuery.Parameter[i];
|
var parameter = Model.SelectedQuery.Parameter[i];
|
||||||
|
|
||||||
|
if(parameter?.QueryParameterOid is null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
var parameterType = (int) parameter.ParamType;
|
var parameterType = (int) parameter.ParamType;
|
||||||
var parameterOid = parameter.QueryParameterOid;
|
var parameterOid = parameter.QueryParameterOid.Value;
|
||||||
|
|
||||||
switch(parameter.ParamType)
|
switch(parameter.ParamType)
|
||||||
{
|
{
|
||||||
@@ -224,7 +264,7 @@
|
|||||||
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">Hilfeplanauswahl</h5>
|
<h5 class="modal-title font-weight-bold">Hilfeplanauswahl</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -272,28 +312,39 @@
|
|||||||
@{
|
@{
|
||||||
var employeeButtonValue = "Mitarbeiter";
|
var employeeButtonValue = "Mitarbeiter";
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value) && Model.SelectedValues[parameterOid.Value].Parameter is CompactEmployeeDC selectedEmployee)
|
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is CompactEmployeeDC selectedEmployee)
|
||||||
{
|
{
|
||||||
employeeButtonValue = selectedEmployee.DetailDescription;
|
employeeButtonValue = selectedEmployee.DetailDescription;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
<button class="btn btn-bewo-employee dropdown-toggle w-100" type="button" id="dropdownEmployeesMenu" data-toggle="dropdown">
|
|
||||||
@employeeButtonValue
|
<div class="input-group">
|
||||||
</button>
|
<div class="input-group-prepend wide-dropdown">
|
||||||
<div class="dropdown-menu" id="query-employee-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
<button class="btn btn-bewo-employee dropdown-toggle w-100" type="button" id="dropdownEmployeesMenu" data-toggle="dropdown">
|
||||||
<div class="input-group px-2">
|
@employeeButtonValue
|
||||||
<input class="form-control w-100" id="query-employee-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
</button>
|
||||||
<div class="input-group-append">
|
<div class="dropdown-menu w-100" id="query-employee-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('employee')">
|
<div class="input-group px-2">
|
||||||
<span class="fas fa-times-circle"></span>
|
<input class="form-control" id="query-employee-search-input" type="text" placeholder="Suchen..." oninput="onDropdownParameterInput(this)" />
|
||||||
</button>
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('employee')">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-team-0" onclick="selectEmployeeParameter(this, 0, @parameterType, @parameterOid)"> </a>
|
||||||
|
@foreach(var employee in Model.AllEmployeesForQueries)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-employee-@employee.EmployeeOid" onclick="selectEmployeeParameter(this, @employee.EmployeeOid, @parameterType, @parameterOid)">@employee.DetailDescription</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="input-group-append" style="min-width: min-content !important;">
|
||||||
@foreach(var employee in Model.AllEmployeesForQueries)
|
<button class="btn btn-outline-bewo-employee w-100" type="button" onclick="selectEmployeeParameter(getElementById('query-employee-0'), 0, @parameterType, @parameterOid)">
|
||||||
{
|
<span class="fas fa-times-circle"></span>
|
||||||
<a class="dropdown-item" style="cursor: pointer;" id="query-employee-@employee.EmployeeOid" onclick="selectEmployeeParameter(this, @employee.EmployeeOid, @parameterType, @parameterOid)">@employee.DetailDescription</a>
|
</button>
|
||||||
}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -308,31 +359,41 @@
|
|||||||
@{
|
@{
|
||||||
var customerButtonValue = "Klient";
|
var customerButtonValue = "Klient";
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
if(Model.SelectedValues.ContainsKey(parameterOid))
|
||||||
{
|
{
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is CompactCustomerDC selectedCustomer)
|
if(Model.SelectedValues[parameterOid].Parameter is CompactCustomerDC selectedCustomer)
|
||||||
{
|
{
|
||||||
customerButtonValue = selectedCustomer.DetailDescription;
|
customerButtonValue = selectedCustomer.DetailDescription;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
<button class="btn btn-bewo-customers dropdown-toggle w-100" type="button" id="dropdownCustomersMenu" data-toggle="dropdown">
|
<div class="input-group">
|
||||||
@customerButtonValue
|
<div class="input-group-prepend wide-dropdown">
|
||||||
</button>
|
<button class="btn btn-bewo-customers dropdown-toggle w-100" type="button" id="dropdownCustomersMenu" data-toggle="dropdown">
|
||||||
<div class="dropdown-menu" id="query-customer-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
@customerButtonValue
|
||||||
<div class="input-group px-2">
|
</button>
|
||||||
<input class="form-control w-100" id="query-customer-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
<div class="dropdown-menu w-100" id="query-customer-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||||
<div class="input-group-append">
|
<div class="input-group px-2">
|
||||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('customer')">
|
<input class="form-control w-100" id="query-customer-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||||
<span class="fas fa-times-circle"></span>
|
<div class="input-group-append">
|
||||||
</button>
|
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('customer')">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-customer-0" onclick="selectCustomerParameter(this, 0, @parameterType, @parameterOid)"> </a>
|
||||||
|
@foreach(var customer in Model.AllCustomersForQueries)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-customer-@customer.CustomerOid" onclick="selectCustomerParameter(this, @customer.CustomerOid, @parameterType, @parameterOid)">@customer.DetailDescription</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="input-group-append" style="min-width: min-content !important;">
|
||||||
@foreach(var customer in Model.AllCustomersForQueries)
|
<button class="btn btn-outline-bewo-customers w-100" type="button" onclick="selectCustomerParameter(getElementById('query-customer-0', 0, @parameterType, @parameterOid))">
|
||||||
{
|
<span class="fas fa-times-circle"></span>
|
||||||
<a class="dropdown-item" style="cursor: pointer;" id="query-customer-@customer.CustomerOid" onclick="selectCustomerParameter(this, @customer.CustomerOid, @parameterType, @parameterOid)">@customer.DetailDescription</a>
|
</button>
|
||||||
}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -349,14 +410,24 @@
|
|||||||
Monat
|
Monat
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select" id="month-select" onchange="selectMonth()">
|
<select class="custom-select" id="month-select" onchange="selectMonth(@parameterType, @parameterOid)">
|
||||||
@foreach(var month in Model.Months)
|
@foreach(var month in Model.Months)
|
||||||
{
|
{
|
||||||
var selected = string.Empty;
|
var selected = string.Empty;
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
if(Model.SelectedValues.ContainsKey(parameterOid))
|
||||||
{
|
{
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is string monthAsString && Model.Months.Any(m => m.Value.Equals(monthAsString)))
|
if(Model.SelectedValues[parameterOid].Parameter is DateTime monthDate && month.Value.Equals(monthDate.Month.ToString()))
|
||||||
|
{
|
||||||
|
selected = "selected";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var lastMonth = DateTime.Today.AddMonths(-1);
|
||||||
|
var selectedMonth = lastMonth.Month.ToString();
|
||||||
|
|
||||||
|
if(selectedMonth.Equals(month.Text))
|
||||||
{
|
{
|
||||||
selected = "selected";
|
selected = "selected";
|
||||||
}
|
}
|
||||||
@@ -365,20 +436,27 @@
|
|||||||
<option value="@month.Value" @selected>@month.Text</option>
|
<option value="@month.Value" @selected>@month.Text</option>
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
<select class="custom-select" id="month-year-select" onchange="selectYear()">
|
<select class="custom-select" id="month-year-select" onchange="selectMonth(@parameterType, @parameterOid)">
|
||||||
@foreach(var year in MobileUtils.Years)
|
@foreach(var year in MobileUtils.Years)
|
||||||
{
|
{
|
||||||
var selected = string.Empty;
|
var selected = string.Empty;
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is DateTime selectedYear)
|
||||||
{
|
{
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is int selectedYear && year.Equals(selectedYear))
|
if(year.Equals(selectedYear.Year))
|
||||||
{
|
{
|
||||||
selected = "selected";
|
selected = "selected";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var lastMonth = DateTime.Today.AddMonths(-1);
|
||||||
|
var selectedYear2 = lastMonth.Year;
|
||||||
|
|
||||||
<option value="@MobileUtils.Years.IndexOf(year)" @selected>@year</option>
|
selected = year.Equals(selectedYear2) ? "selected" : string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
<option value="@year" @selected>@year</option>
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@@ -388,6 +466,12 @@
|
|||||||
</div>
|
</div>
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.Date:
|
case QueryParameterType.Date:
|
||||||
|
var dateValue = string.Empty;
|
||||||
|
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is DateTime queryDate)
|
||||||
|
{
|
||||||
|
dateValue = queryDate.ToString("dd.MM.yyyy");
|
||||||
|
}
|
||||||
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
<div class="form-group my-2">
|
<div class="form-group my-2">
|
||||||
@@ -397,7 +481,7 @@
|
|||||||
Datum
|
Datum
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="text" id="query-date" name="query-date" class="form-control datetimepicker-input" data-target="#query-date-picker" data-toggle="datetimepicker" />
|
<input onfocusout="selectQueryDate(this, @parameterType, @parameterOid)" type="text" id="query-date" value="@dateValue" name="query-date" class="form-control datetimepicker-input" data-target="#query-date-picker" data-toggle="datetimepicker" />
|
||||||
<div class="input-group-append" data-target="#query-date-picker" data-toggle="datetimepicker">
|
<div class="input-group-append" data-target="#query-date-picker" data-toggle="datetimepicker">
|
||||||
<div class="input-group-text px-2">
|
<div class="input-group-text px-2">
|
||||||
<i class="fas fa-calendar-alt"></i>
|
<i class="fas fa-calendar-alt"></i>
|
||||||
@@ -409,6 +493,14 @@
|
|||||||
</div>
|
</div>
|
||||||
break;
|
break;
|
||||||
case QueryParameterType.DateRange:
|
case QueryParameterType.DateRange:
|
||||||
|
var startValue = string.Empty;
|
||||||
|
var endValue = string.Empty;
|
||||||
|
|
||||||
|
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is BS.Shared.Core.DateTimeSpan dateTimeSpan)
|
||||||
|
{
|
||||||
|
startValue = dateTimeSpan.StartDate.ToString("dd.MM.yyyy");
|
||||||
|
endValue = dateTimeSpan.EndDate.ToString("dd.MM.yyyy");
|
||||||
|
}
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
<div class="form-group my-2">
|
<div class="form-group my-2">
|
||||||
@@ -418,7 +510,7 @@
|
|||||||
Zeitraum
|
Zeitraum
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="text" id="query-date-range-start" name="query-date-range-start" class="form-control datetimepicker-input" data-target="#query-date-range-start-picker" data-toggle="datetimepicker" />
|
<input onfocusout="selectQueryDateRange(@parameterType, @parameterOid)" value="@startValue" type="text" id="query-date-range-start" name="query-date-range-start" class="form-control datetimepicker-input" data-target="#query-date-range-start-picker" data-toggle="datetimepicker" />
|
||||||
<div class="input-group-append" data-target="#query-date-range-start-picker" data-toggle="datetimepicker">
|
<div class="input-group-append" data-target="#query-date-range-start-picker" data-toggle="datetimepicker">
|
||||||
<div class="input-group-text px-2">
|
<div class="input-group-text px-2">
|
||||||
<i class="fas fa-calendar-alt"></i>
|
<i class="fas fa-calendar-alt"></i>
|
||||||
@@ -430,7 +522,7 @@
|
|||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
<div class="form-group my-2">
|
<div class="form-group my-2">
|
||||||
<div class="input-group date" id="query-date-range-end-picker" data-target-input="nearest">
|
<div class="input-group date" id="query-date-range-end-picker" data-target-input="nearest">
|
||||||
<input type="text" id="query-date-range-end" name="query-date-range-end" class="form-control datetimepicker-input" data-target="#query-date-range-end-picker" data-toggle="datetimepicker" />
|
<input onfocusout="selectQueryDateRange(@parameterType, @parameterOid)" value="@endValue" type="text" id="query-date-range-end" name="query-date-range-end" class="form-control datetimepicker-input" data-target="#query-date-range-end-picker" data-toggle="datetimepicker" />
|
||||||
<div class="input-group-append" data-target="#query-date-range-end-picker" data-toggle="datetimepicker">
|
<div class="input-group-append" data-target="#query-date-range-end-picker" data-toggle="datetimepicker">
|
||||||
<div class="input-group-text px-2">
|
<div class="input-group-text px-2">
|
||||||
<i class="fas fa-calendar-alt"></i>
|
<i class="fas fa-calendar-alt"></i>
|
||||||
@@ -448,28 +540,40 @@
|
|||||||
@{
|
@{
|
||||||
var teamButtonValue = "Team";
|
var teamButtonValue = "Team";
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues[parameterOid.Value].Parameter is CompactTeamDC selectedTeam)
|
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is CompactTeamDC selectedTeam)
|
||||||
{
|
{
|
||||||
teamButtonValue = selectedTeam.Name;
|
teamButtonValue = selectedTeam.Name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
<button class="btn btn-bewo-teams dropdown-toggle w-100" type="button" id="dropdownTeamsMenu" data-toggle="dropdown">
|
|
||||||
@teamButtonValue
|
<div class="input-group">
|
||||||
</button>
|
<div class="input-group-prepend wide-dropdown">
|
||||||
<div class="dropdown-menu" id="query-team-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
<button class="btn btn-bewo-teams dropdown-toggle w-100" type="button" id="dropdownTeamsMenu" data-toggle="dropdown">
|
||||||
<div class="input-group px-2">
|
@teamButtonValue
|
||||||
<input class="form-control w-100" id="query-team-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
</button>
|
||||||
<div class="input-group-append">
|
<div class="dropdown-menu w-100" id="query-team-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('team')">
|
<div class="input-group px-2">
|
||||||
<span class="fas fa-times-circle"></span>
|
<input class="form-control w-100" id="query-team-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||||
</button>
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-outline-bewo-teams" type="button" onclick="resetDropdownParameterSearch('team')">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-team-0" onclick="selectTeamParameter(this, 0, @parameterType, @parameterOid)"> </a>
|
||||||
|
|
||||||
|
@foreach(var team in Model.AllTeamsForQueries)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-team-@team.TeamOid" onclick="selectTeamParameter(this, @team.TeamOid, @parameterType, @parameterOid)">@team.Name</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="input-group-append" style="min-width: min-content !important;">
|
||||||
@foreach(var team in Model.AllTeamsForQueries)
|
<button class="btn btn-outline-secondary w-100" type="button" onclick="selectTeamParameter(getElementById('query-team-0', 0, @parameterType, @parameterOid))">
|
||||||
{
|
<span class="fas fa-times-circle"></span>
|
||||||
<a class="dropdown-item" style="cursor: pointer;" id="query-team-@team.TeamOid" onclick="selectTeamParameter(this, @team.TeamOid, @parameterType, @parameterOid)">@team.Name</a>
|
</button>
|
||||||
}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -486,13 +590,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select" id="category-@i-select" onchange="selectServiceCategoryParameter(this, @parameterType, @parameterOid)">
|
<select class="custom-select" id="category-@i-select" onchange="selectServiceCategoryParameter(this, @parameterType, @parameterOid)">
|
||||||
|
<option value="0"></option>
|
||||||
|
|
||||||
@foreach(var category in Model.AllServiceCategoriesForQueries)
|
@foreach(var category in Model.AllServiceCategoriesForQueries)
|
||||||
{
|
{
|
||||||
var selected = string.Empty;
|
var selected = string.Empty;
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
if(Model.SelectedValues.ContainsKey(parameterOid))
|
||||||
{
|
{
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is ServiceCategoryDC serviceCategory && serviceCategory.Equals(category))
|
if(Model.SelectedValues[parameterOid].Parameter is ServiceCategoryDC serviceCategory && serviceCategory.Equals(category))
|
||||||
{
|
{
|
||||||
selected = "selected";
|
selected = "selected";
|
||||||
}
|
}
|
||||||
@@ -516,7 +622,10 @@
|
|||||||
Text
|
Text
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input class="form-control w-100" type="text" id="query-text" name="query-text" />
|
@{
|
||||||
|
var selectedText = Model.SelectedValues.ContainsKey(parameterOid) ? Model.SelectedValues[parameterOid].Parameter.ToString() : string.Empty;
|
||||||
|
}
|
||||||
|
<input class="form-control w-100" value="@selectedText" type="text" id="query-text" name="query-text" onchange="selectQueryText(this, @parameterType, @parameterOid)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -532,14 +641,14 @@
|
|||||||
Jahr
|
Jahr
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<select class="custom-select" id="year-select" onchange="selectYear()">
|
<select class="custom-select" id="year-select" onchange="selectYear(@parameterType, @parameterOid)">
|
||||||
@foreach(var year in MobileUtils.Years)
|
@foreach(var year in MobileUtils.Years)
|
||||||
{
|
{
|
||||||
var selected = string.Empty;
|
var selected = string.Empty;
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
if(Model.SelectedValues.ContainsKey(parameterOid))
|
||||||
{
|
{
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is int selectedYear && year.Equals(selectedYear))
|
if(Model.SelectedValues[parameterOid].Parameter is int selectedYear && year.Equals(selectedYear))
|
||||||
{
|
{
|
||||||
selected = "selected";
|
selected = "selected";
|
||||||
}
|
}
|
||||||
@@ -559,26 +668,44 @@
|
|||||||
<div class="form-group my-2">
|
<div class="form-group my-2">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<div class="input-group-text prepend-input-group-text">
|
<div class="input-group-text">
|
||||||
@parameter.Name
|
@{
|
||||||
</div>
|
var parameterName = parameter.Name;
|
||||||
</div>
|
if(parameter.Name.Contains("_"))
|
||||||
@*<select class="custom-select" id="category-@i-select" onchange="selectServiceCategoryParameter(this, @parameterType, @parameterOid)">
|
|
||||||
@foreach(var category in Model.AllServiceCategoriesForQueries)
|
|
||||||
{
|
|
||||||
var selected = string.Empty;
|
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
|
||||||
{
|
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is ServiceCategoryDC serviceCategory && serviceCategory.Equals(category))
|
|
||||||
{
|
{
|
||||||
selected = "selected";
|
var splitName = parameter.Name.Split('_');
|
||||||
|
parameterName = string.Empty;
|
||||||
|
for(var j = 0; j < splitName.Length-1; j++)
|
||||||
|
{
|
||||||
|
parameterName += splitName[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ValueListEntryDC selectedValueListEntry = null;
|
||||||
|
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is ValueListEntryDC vle)
|
||||||
|
{
|
||||||
|
selectedValueListEntry = vle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<option value="@category.ServiceCategoryOid" @selected>@category.Name</option>
|
@parameterName
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<select class="custom-select" id="value-list-entry-@i-select" onchange="selectValueListEntry(this, @parameterType, @parameter.QueryParameterOid)">
|
||||||
|
<option value="0"></option>
|
||||||
|
|
||||||
|
@foreach(var valueListEntry in Model.ValueListEntryTypes2ValueListEntries[Model.GetValueListEntryTypeByQueryParameter(parameter.Name)])
|
||||||
|
{
|
||||||
|
var selected = string.Empty;
|
||||||
|
|
||||||
|
if(selectedValueListEntry?.Equals(valueListEntry) ?? false)
|
||||||
|
{
|
||||||
|
selected = "selected";
|
||||||
|
}
|
||||||
|
|
||||||
|
<option value="@valueListEntry.ValueListEntryOid" @selected>@valueListEntry.DisplayName</option>
|
||||||
}
|
}
|
||||||
</select>*@
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -591,32 +718,44 @@
|
|||||||
@{
|
@{
|
||||||
var organisationButtonValue = "Organisation";
|
var organisationButtonValue = "Organisation";
|
||||||
|
|
||||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
if(Model.SelectedValues.ContainsKey(parameterOid))
|
||||||
{
|
{
|
||||||
if(Model.SelectedValues[parameterOid.Value].Parameter is CompactOrganisationDC selectedOrganisation)
|
if(Model.SelectedValues[parameterOid].Parameter is CompactOrganisationDC selectedOrganisation)
|
||||||
{
|
{
|
||||||
organisationButtonValue = selectedOrganisation.DetailDescription;
|
organisationButtonValue = selectedOrganisation.DetailDescription;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
<button class="btn btn-bewo-organisation dropdown-toggle w-100" type="button" id="dropdownOrganisationsMenu" data-toggle="dropdown">
|
<div class="input-group">
|
||||||
@organisationButtonValue
|
<div class="input-group-prepend wide-dropdown">
|
||||||
</button>
|
<button class="btn btn-bewo-organisation dropdown-toggle w-100" type="button" id="dropdownOrganisationsMenu" data-toggle="dropdown">
|
||||||
<div class="dropdown-menu" id="query-organisation-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
@organisationButtonValue
|
||||||
<div class="input-group px-2">
|
</button>
|
||||||
<input class="form-control w-100" id="query-organisation-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
<div class="dropdown-menu w-100" id="query-organisation-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||||
<div class="input-group-append">
|
<div class="input-group px-2">
|
||||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('organisation')">
|
<input class="form-control w-100" id="query-organisation-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||||
<span class="fas fa-times-circle"></span>
|
<div class="input-group-append">
|
||||||
</button>
|
<button class="btn btn-outline-bewo-organisation" type="button" onclick="resetDropdownParameterSearch('organisation')">
|
||||||
|
<span class="fas fa-times-circle"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-organisation-0" onclick="selectOrganisationParameter(this, 0, @parameterType, @parameterOid)"> </a>
|
||||||
|
@foreach(var organisation in Model.AllOrganisationForQuery)
|
||||||
|
{
|
||||||
|
<a class="dropdown-item" style="cursor: pointer;" id="query-organisation-@organisation.OrganisationOid" onclick="selectOrganisationParameter(this, @organisation.OrganisationOid, @parameterType, @parameterOid)">@organisation.Name</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="input-group-append" style="min-width: min-content !important;">
|
||||||
@foreach(var organisation in Model.AllOrganisationForQuery)
|
<button class="btn btn-outline-secondary w-100" type="button" onclick="selectOrganisationParameter(getElementById('query-organisation-0', 0, @parameterType, @parameterOid))">
|
||||||
{
|
<span class="fas fa-times-circle"></span>
|
||||||
<a class="dropdown-item" style="cursor: pointer;" id="query-team-@organisation.OrganisationOid" onclick="selectOrganisationParameter(this, @organisation.OrganisationOid, @parameterType, @parameterOid)">@organisation.Name</a>
|
</button>
|
||||||
}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -627,7 +766,7 @@
|
|||||||
<div class="form-group my-2">
|
<div class="form-group my-2">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<div class="input-group-text prepend-input-group-text">
|
<div class="input-group-text">
|
||||||
@parameter.Name
|
@parameter.Name
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -644,6 +783,13 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="col-md">
|
||||||
|
<button class="btn btn-primary" type="button">Bericht öffnen</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container my-3">
|
<div class="container my-3" style="max-width: 1200px !important;">
|
||||||
<div class="row h-auto" id="abc-def">
|
<div class="row h-auto" id="abc-def">
|
||||||
<div class="col-sm-12 col-md-4 col-lg-4 col-xl-3">
|
<div class="col-sm-12 col-md-4 col-lg-4 col-xl-3">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -68,5 +68,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="msk-report-container">
|
<div id="msk-report-container">
|
||||||
@Html.Partial("BeWoReportPartial", Model)
|
@if(Model?.Report != null)
|
||||||
|
{
|
||||||
|
@Html.Partial("BeWoReportPartial", Model)
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
@@ -16,7 +16,6 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function reportFilterOnChange() {
|
function reportFilterOnChange() {
|
||||||
try {
|
try {
|
||||||
//team oder mitarbeiter
|
|
||||||
toggleMitarbeiterstundenForm();
|
toggleMitarbeiterstundenForm();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
@@ -153,8 +152,6 @@
|
|||||||
$("#bewo-report-popup").modal("show");
|
$("#bewo-report-popup").modal("show");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
@@ -166,11 +163,12 @@
|
|||||||
@if(Model.SelectedReportType == ReportType.Berichte)
|
@if(Model.SelectedReportType == ReportType.Berichte)
|
||||||
{
|
{
|
||||||
@Html.DropDownListFor(model => model.SelectedCustomReport, Model.CustomReports, new { @class = "custom-select", id = "msk-customReportSelect", onchange = "loadCustomReport()" })
|
@Html.DropDownListFor(model => model.SelectedCustomReport, Model.CustomReports, new { @class = "custom-select", id = "msk-customReportSelect", onchange = "loadCustomReport()" })
|
||||||
|
|
||||||
|
var berichteFormContainerDisplay = Model.SelectedCustomReport?.QueryOid != null ? "block" : "none";
|
||||||
|
|
||||||
<div id="berichte-form-container" style="display: none;">
|
<div id="berichte-form-container" style="display: @berichteFormContainerDisplay;">
|
||||||
@Html.Partial("BerichteFormPartialView", Model)
|
@Html.Partial("BerichteFormPartialView", Model)
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@if(Model.SelectedReportType == ReportType.Mitarbeiterstundenkonto && AbstractModel.HasRightToViewMitarbeiterstundenkonto)
|
@if(Model.SelectedReportType == ReportType.Mitarbeiterstundenkonto && AbstractModel.HasRightToViewMitarbeiterstundenkonto)
|
||||||
|
|||||||
@@ -312,7 +312,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Ressourcen</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Ressourcen</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('resource-search-input', 'resource-text', 'category-card')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('resource-search-input', 'resource-text', 'category-card')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -535,7 +535,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Mitarbeiter</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Mitarbeiter</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetEmployeeSearch()">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetEmployeeSearch()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -614,7 +614,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Klienten</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Klienten</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('customer-search-input', 'customer-text')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('customer-search-input', 'customer-text')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -431,7 +431,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Ressourcen</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Ressourcen</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('interval-finder-resource-search-input', 'resource-text', 'category-card')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('interval-finder-resource-search-input', 'resource-text', 'category-card')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -501,7 +501,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Mitarbeiter</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Mitarbeiter</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('interval-finder-employee-search-input', 'interval-finder-employee-text')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('interval-finder-employee-search-input', 'interval-finder-employee-text')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -587,7 +587,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Klienten</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Klienten</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('interval-finder-customer-search-input', 'interval-finder-customer-text')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('interval-finder-customer-search-input', 'interval-finder-customer-text')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Klienten</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Klienten</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetCustomerSearchForFiltering()">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetCustomerSearchForFiltering()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Mitarbeiter</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Mitarbeiter</h6>
|
||||||
<button type="button" class="close" onclick="resetEmployeeSearchForFiltering()">
|
<button type="button" class="close" onclick="resetEmployeeSearchForFiltering()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title">Termin löschen</h6>
|
<h6 class="modal-title font-weight-bold">Termin löschen</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal">
|
<button type="button" class="close" data-dismiss="modal">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -262,7 +262,7 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-fluid" style="max-width: 1200px !important;">
|
||||||
<hr />
|
<hr />
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@{
|
@{
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h6 class="modal-title text-center w-100">Ressourcen</h6>
|
<h6 class="modal-title text-center w-100 font-weight-bold">Ressourcen</h6>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('resource-search-input2', 'resource-text2', 'category-card')">
|
<button type="button" class="close" data-dismiss="modal" onclick="resetTreeSearch('resource-search-input2', 'resource-text2', 'category-card')">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title">@Model.ReportName</h5>
|
<h5 class="modal-title font-weight-bold">@Model.ReportName</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" onclick="closeReport()">
|
<button type="button" class="close" data-dismiss="modal" onclick="closeReport()">
|
||||||
<span>×</span>
|
<span>×</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<title>Error</title>
|
<title>Fehler</title>
|
||||||
<link rel="stylesheet" href="~/Content/BeWoMobileStyle.css?v=1.2" />
|
<link rel="stylesheet" href="@Url.Content("~/Content/style.css")" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<hgroup>
|
<hgroup>
|
||||||
<h1>Error.</h1>
|
<h1>Fehler.</h1>
|
||||||
<h2>An error occurred while processing your request. </h2>
|
<h2>Es ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator.</h2>
|
||||||
<h4>@ViewData["BeWoError"]</h4>
|
<h4>@ViewData["BeWoError"]</h4>
|
||||||
</hgroup>
|
</hgroup>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -72,6 +72,7 @@
|
|||||||
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/js-helper.js")" type="text/javascript"></script>
|
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/js-helper.js")" type="text/javascript"></script>
|
||||||
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/logging.js")" type="text/javascript"></script>
|
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/logging.js")" type="text/javascript"></script>
|
||||||
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/MoKPasswordSecurity.js")" type="text/javascript"></script>
|
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/MoKPasswordSecurity.js")" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript" src="@Scripts.Url("~/Scripts/bs-custom-file-input.min.js")"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/devextreme/dx.all.js")"></script>
|
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/devextreme/dx.all.js")"></script>
|
||||||
|
|
||||||
@@ -95,8 +96,6 @@
|
|||||||
window.addEventListener("error", (event) => {
|
window.addEventListener("error", (event) => {
|
||||||
hideSpinner();
|
hideSpinner();
|
||||||
|
|
||||||
var textToShow = `Message: ${event.message}\r\nFile name: ${event.filename}\r\nLine: ${event.lineno}\r\nColumn: ${event.colno}\r\nStack: ${event.error.stack}`;
|
|
||||||
|
|
||||||
if(event.message === "Uncaught TypeError: this._contentReadyAction is not a function") {
|
if(event.message === "Uncaught TypeError: this._contentReadyAction is not a function") {
|
||||||
logInfo("contentReadyAction-Fehler ist aufgetregen. Kann ignoriert werden.");
|
logInfo("contentReadyAction-Fehler ist aufgetregen. Kann ignoriert werden.");
|
||||||
return;
|
return;
|
||||||
@@ -112,7 +111,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
configureErrorPopup(textToShow);
|
configureErrorPopup(`Message: ${event.message}\r\nFile name: ${event.filename}\r\nLine: ${event.lineno}\r\nColumn: ${event.colno}\r\nStack: ${event.error.stack}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
function showChangePasswordPopup() {
|
function showChangePasswordPopup() {
|
||||||
@@ -123,11 +122,11 @@
|
|||||||
var initialPwPrependWidth = 0;
|
var initialPwPrependWidth = 0;
|
||||||
function calcChPwPrepend() {
|
function calcChPwPrepend() {
|
||||||
try {
|
try {
|
||||||
if (initialPwPrependWidth <= 0 && $.isNumeric(getMaxWidth("pw-prepend"))) {
|
if(initialPwPrependWidth <= 0 && $.isNumeric(getMaxWidth("pw-prepend"))) {
|
||||||
initialPwPrependWidth = getMaxWidth("pw-prepend");
|
initialPwPrependWidth = getMaxWidth("pw-prepend");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (initialPwPrependWidth <= 0) {
|
if(initialPwPrependWidth <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +136,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function copyErrorToClipboard() {
|
function copyErrorToClipboard() {
|
||||||
var element = document.querySelector("#fehlerdetail-textarea");
|
var element = document.querySelector("#fehlerdetail-textarea");
|
||||||
element.select();
|
element.select();
|
||||||
@@ -149,9 +147,7 @@
|
|||||||
function showErrorPopup(error, htmlMessage) {
|
function showErrorPopup(error, htmlMessage) {
|
||||||
hideSpinner();
|
hideSpinner();
|
||||||
|
|
||||||
var textToShow = "name: " + error.name + ";\r\nmessage: " + error.message + ";\r\nstack: " + error.stack;
|
configureErrorPopup(`name: ${error.name};\r\nmessage: ${error.message};\r\nstack: ${error.stack}`, htmlMessage);
|
||||||
|
|
||||||
configureErrorPopup(textToShow, htmlMessage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function showErrorMessagePopup(text, htmlMessage) {
|
function showErrorMessagePopup(text, htmlMessage) {
|
||||||
@@ -226,11 +222,22 @@
|
|||||||
s = "0" + s;
|
s = "0" + s;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#countdown").html("Abmeldung in " + m + ":" + s + '<span class="fas fa-unlock-alt pl-1"></span>');
|
$("#countdown").html(`Abmeldung in ${m}:${s}<span class="fas fa-unlock-alt pl-1"></span>`);
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
calcPrependWidth();
|
calcPrependWidth();
|
||||||
|
|
||||||
|
@{
|
||||||
|
var errorAlertMessage = TempData[TempDataConstants.ErrorAlertPopupMessage]?.ToString();
|
||||||
|
|
||||||
|
if(!string.IsNullOrWhiteSpace(errorAlertMessage))
|
||||||
|
{
|
||||||
|
<text>
|
||||||
|
$("#error-alert-popup").modal("show");
|
||||||
|
</text>
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showErrorPopup(error);
|
showErrorPopup(error);
|
||||||
}
|
}
|
||||||
@@ -248,11 +255,11 @@
|
|||||||
var val = widthToBootstrapVal(width);
|
var val = widthToBootstrapVal(width);
|
||||||
|
|
||||||
if(previousWidth !== val) {
|
if(previousWidth !== val) {
|
||||||
console.log("%c" + val, "font-size: 16px; font-weight: bold; color: #00F2FF;");
|
console.log(`%c${val}`, "font-size: 16px; font-weight: bold; color: #00F2FF;");
|
||||||
}
|
}
|
||||||
|
|
||||||
previousWidth = val;
|
window.previousWidth = val;
|
||||||
$("#size-info-span").text(val);
|
$("#dev-size-span").text(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
function widthToBootstrapVal(width) {
|
function widthToBootstrapVal(width) {
|
||||||
@@ -366,10 +373,14 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<a href="#" class="navbar-brand">
|
<a href="#" class="navbar-brand">
|
||||||
@Model.LoggedInEmplyeeFirstNameLastName
|
@Model.LoggedInEmplyeeFirstNameLastName
|
||||||
|
@if(Html.IsInDebugMode())
|
||||||
|
{
|
||||||
|
<span class="navbar-text text-bewo-dev" id="dev-size-span"></span>
|
||||||
|
}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<span class="d-inline-block" data-toggle="tooltip" title="Zeit bis zur automatischen Abmeldung" id="countdown-tooltip">
|
<span class="d-inline-block" data-toggle="tooltip" title="Zeit bis zur automatischen Abmeldung" id="countdown-tooltip">
|
||||||
<span class="navbar-text" id="countdown" onclick="countdownClick()"></span>
|
<span class="navbar-text" style="font-size: small !important;" id="countdown" onclick="countdownClick()"></span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive">
|
||||||
@@ -504,7 +515,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="popupTitle"></h5>
|
<h5 class="modal-title font-weight-bold" id="popupTitle"></h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close" id="message-popup-esc-btn">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close" id="message-popup-esc-btn">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -524,7 +535,7 @@
|
|||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title text-danger">Es ist ein Fehler aufgetreten</h5>
|
<h5 class="modal-title text-danger font-weight-bold">Es ist ein Fehler aufgetreten</h5>
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -549,7 +560,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="modal" tabindex="-1" role="dialog" id="error-alert-popup">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title font-weight-bold">Fehler</h5>
|
||||||
|
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-auto">
|
||||||
|
<span class="fas fa-exclamation-triangle fa-3x text-danger"></span>
|
||||||
|
</div>
|
||||||
|
<div class="col" id="error-alert-message">
|
||||||
|
@Html.Raw(TempData[TempDataConstants.ErrorAlertPopupMessage])
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn btn-primary" type="button" data-dismiss="modal">OK</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@if(TempData[TempDataConstants.ErrorMessageKey] != null)
|
@if(TempData[TempDataConstants.ErrorMessageKey] != null)
|
||||||
{
|
{
|
||||||
@@ -569,7 +605,6 @@
|
|||||||
<div class="alert alert-danger" id="error-message-alert" role="alert">
|
<div class="alert alert-danger" id="error-message-alert" role="alert">
|
||||||
@TempData[TempDataConstants.ErrorMessageKey]
|
@TempData[TempDataConstants.ErrorMessageKey]
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="btn btn-primary" onclick="clearErrorLog()">Error Log leeren</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace BeWo.Service.Plugins
|
|||||||
//t = "4950382346"; // Holsinger
|
//t = "4950382346"; // Holsinger
|
||||||
//t = "5973016645"; // Verein Lebensgestaltung Hanau
|
//t = "5973016645"; // Verein Lebensgestaltung Hanau
|
||||||
//t = "7375324044"; // Diakonie KK Kleve
|
//t = "7375324044"; // Diakonie KK Kleve
|
||||||
t = "1441747891"; // BeWo Mobil Köln
|
//t = "1441747891"; // BeWo Mobil Köln
|
||||||
//t = "5120047701"; // Trialog
|
//t = "5120047701"; // Trialog
|
||||||
//t = "3629696651"; // Soziale Dienste Niederrhein (SDN)
|
//t = "3629696651"; // Soziale Dienste Niederrhein (SDN)
|
||||||
//t = "9893557471"; // Caritas Frankfurt
|
//t = "9893557471"; // Caritas Frankfurt
|
||||||
@@ -341,7 +341,7 @@ namespace BeWo.Service.Plugins
|
|||||||
//t = "2986016022"; // Ev Verein für Wohnraumhilfe Frankfurt a.M.
|
//t = "2986016022"; // Ev Verein für Wohnraumhilfe Frankfurt a.M.
|
||||||
//t = "2181497347"; // BetreuungsserviceFuerAlltagUndWohnen (BAW Aachen)
|
//t = "2181497347"; // BetreuungsserviceFuerAlltagUndWohnen (BAW Aachen)
|
||||||
//t = "5433105975"; // aha e.V.
|
//t = "5433105975"; // aha e.V.
|
||||||
//t = "7396826106"; // SKF Sozialdienst katholischer Frauen e.V. Leverkusen
|
t = "7396826106"; // SKF Sozialdienst katholischer Frauen e.V. Leverkusen
|
||||||
//t = "4748304562"; // BeWo Darmstadt
|
//t = "4748304562"; // BeWo Darmstadt
|
||||||
//t = "5315865694"; // Wismarer Werkstätten GmbH
|
//t = "5315865694"; // Wismarer Werkstätten GmbH
|
||||||
//t = "6971328056"; // SKM Krefeld
|
//t = "6971328056"; // SKM Krefeld
|
||||||
@@ -390,6 +390,7 @@ namespace BeWo.Service.Plugins
|
|||||||
//t = "8735029937"; // Caritas Ostvest
|
//t = "8735029937"; // Caritas Ostvest
|
||||||
//t = "7653029063"; // SkF Leverkusen JuHi
|
//t = "7653029063"; // SkF Leverkusen JuHi
|
||||||
//t = "5000000000";
|
//t = "5000000000";
|
||||||
|
//t = "5564670353"; // Mittelpunkt GbR
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in New Issue
Block a user