Vertretungsmodul
Zeit kann jetzt leer sein in der Mobilversion
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.ServiceProxy;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BeWo.SchulbegleitenderDienst.SBDUtils
|
||||
@@ -13,6 +17,26 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
|
||||
var employeeSubstitutionList = new List<TagesansichtVM>();
|
||||
var customerSubstitutionList = new List<TagesansichtVM>();
|
||||
|
||||
var customer2AbsenceTimes = new Dictionary<CompactCustomerDC, List<AbsenceTimeDC>>();
|
||||
|
||||
viewModels.Where(w => w.VertretungsStatus == VertretungsStatus.KlientKrank && w.Customer != null).DoForEach(vi =>
|
||||
{
|
||||
customer2AbsenceTimes.AddOrUpdateValueInDictionary(vi.Customer, vi.Absencetime);
|
||||
});
|
||||
|
||||
var employeeAbsenceTimes = viewModels.Where(w => w.VertretungsStatus != VertretungsStatus.KlientKrank && w.Customer != null).ToList();
|
||||
|
||||
var itemsForunwantedSubstitutionList = new List<TagesansichtVM>();
|
||||
|
||||
foreach (var item in employeeAbsenceTimes)
|
||||
{
|
||||
if (customer2AbsenceTimes.ContainsKey(item.Customer))
|
||||
{
|
||||
item.KlientStatusColor = "#7FFF7F";
|
||||
itemsForunwantedSubstitutionList.AddIfNotIn(item);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var viewModel in viewModels)
|
||||
{
|
||||
if(viewModel.VertretungsStatus != VertretungsStatus.KlientKrank)
|
||||
@@ -29,7 +53,7 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
|
||||
}
|
||||
}
|
||||
|
||||
if (substitutionStartingDayCountCondition || viewModel.Vertretung?.VertretenderMitarbeiterOid != null || viewModel.Customer != null && viewModel.Customer.SubstitutionNeed == SubstitutionNeed.NoSubstitutionWanted)
|
||||
if (itemsForunwantedSubstitutionList.Contains(viewModel) || substitutionStartingDayCountCondition || viewModel.Vertretung?.VertretenderMitarbeiterOid != null || viewModel.Customer != null && viewModel.Customer.SubstitutionNeed == SubstitutionNeed.NoSubstitutionWanted)
|
||||
{
|
||||
unwantedSubstitutionList.AddIfNotIn(viewModel);
|
||||
}
|
||||
@@ -40,15 +64,7 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
|
||||
}
|
||||
else
|
||||
{
|
||||
//if(viewModel.Customer.SubstitutionNeed == SubstitutionNeed.SubstitutionNeeded || viewModel.Customer.SubstitutionNeed == SubstitutionNeed.SubstitutionWanted)
|
||||
//{
|
||||
|
||||
customerSubstitutionList.Add(viewModel);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// unwantedSubstitutionList.Add(viewModel);
|
||||
//}
|
||||
customerSubstitutionList.Add(viewModel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,8 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
VertretungsStatus = vertretungsItem.VertretungsStatus,
|
||||
WochenansichtBemerkung = vertretungsItem.WochenansichtBemerkung,
|
||||
VertreterInfoString = vertretungsItem.VertreterInfoString,
|
||||
EmployeeAddressString = vertretungsItem.EmployeeAddressString
|
||||
EmployeeAddressString = vertretungsItem.EmployeeAddressString,
|
||||
Id = vertretungsItem.Id
|
||||
};
|
||||
|
||||
if (vertretungsItem.Arbeitszeiten != null && vertretungsItem.Arbeitszeiten.Any())
|
||||
|
||||
@@ -267,5 +267,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
}
|
||||
|
||||
public new string VertreterInfoString { get; set; }
|
||||
|
||||
public Guid Id { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,19 +162,19 @@
|
||||
Margin="3,3,3,3" />
|
||||
<TextBox Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="9" Margin="3" Height="50" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" x:Name="MitarbeiterNotice"/>
|
||||
<StackPanel Grid.Column="2" Grid.Row="10" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom">
|
||||
<Button x:Name="button_addMitarbeiterVertretung" Content="Hinzufügen" Height="25" FontWeight="Normal" Margin="3" Click="Button_addMitarbeiterVertretung_OnClick"/>
|
||||
<Button Height="25" Margin="3" Content="Abbrechen" x:Name="button_cancelMitarbeiterVertretung" Click="Button_cancelMitarbeiterVertretung_OnClick"/>
|
||||
<Button x:Name="ButtonAddMitarbeiterVertretung" Content="Hinzufügen" Height="25" FontWeight="Normal" Margin="3" Click="Button_addMitarbeiterVertretung_OnClick"/>
|
||||
<Button Height="25" Margin="3" Content="Abbrechen" x:Name="ButtonCancelMitarbeiterVertretung" Click="Button_cancelMitarbeiterVertretung_OnClick"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Border>
|
||||
</controls:PopupNonTopmost>
|
||||
|
||||
<Button x:Name="KlientVertretung_Button" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Left" Margin="3,3,3,3" Click="KlientVertretung_Button_OnClick" Content="{markup:Translate Neue Abwesenheit für Klient/in}" />
|
||||
<Button x:Name="KlientVertretungButton" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Left" Margin="3,3,3,3" Click="KlientVertretung_Button_OnClick" Content="{markup:Translate Neue Abwesenheit für Klient/in}" />
|
||||
|
||||
<controls:PopupNonTopmost Topmost="False" x:Name="popup_newKlientVertretung" Width="300" StaysOpen="True" Placement="MousePoint" PlacementTarget="{Binding ElementName=KlientVertretung_Button}">
|
||||
<controls:PopupNonTopmost Topmost="False" x:Name="PopupNewKlientVertretung" Width="300" StaysOpen="True" Placement="MousePoint" PlacementTarget="{Binding ElementName=KlientVertretungButton}">
|
||||
<Border Background="White" Padding="3" BorderThickness="1" BorderBrush="Gray">
|
||||
<GroupBox x:Name="groupbox_newKlientVertretung" Header="Klient/in hinzufügen" Style="{DynamicResource ObjectEditGroupBox}">
|
||||
<GroupBox x:Name="GroupboxNewKlientVertretung" Header="Klient/in hinzufügen" Style="{DynamicResource ObjectEditGroupBox}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
@@ -230,11 +230,11 @@
|
||||
|
||||
<TextBox Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="8" Margin="3" Height="50" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" x:Name="KlientNotice"/>
|
||||
|
||||
<Button Grid.Column="1" Grid.Row="9" x:Name="button_addKlientVertretung" Content="Hinzufügen" Height="25"
|
||||
<Button Grid.Column="1" Grid.Row="9" x:Name="ButtonAddKlientVertretung" Content="Hinzufügen" Height="25"
|
||||
FontWeight="Normal" Margin="3" VerticalAlignment="Bottom" HorizontalAlignment="Right" Click="Button_addKlientVertretung_OnClick" />
|
||||
|
||||
<Button Grid.Row="9" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="25"
|
||||
Margin="3" Content="Abbrechen" x:Name="button_cancelKlientVertretung" Click="Button_cancelKlientVertretung_OnClick" />
|
||||
Margin="3" Content="Abbrechen" x:Name="ButtonCancelKlientVertretung" Click="Button_cancelKlientVertretung_OnClick" />
|
||||
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
@@ -1317,11 +1317,11 @@
|
||||
</Grid>
|
||||
<!-- /Wochenansicht -->
|
||||
|
||||
<Popup Grid.Row="0" Margin="10" x:Name="popup_MitarbeiterVertretung" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Closed="popup_Closed" Opened="popup_Opened">
|
||||
<Popup Grid.Row="0" Margin="10" x:Name="PopupMitarbeiterVertretung" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Closed="popup_Closed" Opened="popup_Opened">
|
||||
<search:EmployeeSearchView x:Name="MitarbeiterVertretungsearchview" />
|
||||
</Popup>
|
||||
|
||||
<Popup Grid.Row="0" Margin="10" x:Name="popup_KlientVertretung" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Closed="popup_Closed" Opened="popup_Opened">
|
||||
<Popup Grid.Row="0" Margin="10" x:Name="PopupKlientVertretung" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Closed="popup_Closed" Opened="popup_Opened">
|
||||
<search:CustomerSearchView x:Name="KlientVertretungsearchview" />
|
||||
</Popup>
|
||||
</Grid>
|
||||
|
||||
@@ -109,7 +109,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
});
|
||||
}
|
||||
|
||||
private void GetWochenDienstFromItems(DateTime time, IEnumerable<TagesansichtVM> items)
|
||||
private void GetWochenDienstFromItems(DateTime time, IEnumerable<TagesansichtVM> tagesansichtVMs)
|
||||
{
|
||||
_ItemsWochenMitarbeiter.Clear();
|
||||
_ItemsWochenKlienten.Clear();
|
||||
@@ -119,7 +119,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
var customerList = new List<TagesansichtVM>();
|
||||
var unwantedList = new List<TagesansichtVM>();
|
||||
|
||||
foreach(var item in items)
|
||||
foreach(var item in tagesansichtVMs)
|
||||
{
|
||||
if(item.VertretungsStatus == VertretungsStatus.KlientKrank)
|
||||
{
|
||||
@@ -243,12 +243,12 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
private void Popupedit_MitarbeiterVertretungSearch_OnPopUpClick_popupedit_MitarbeiterVertretungSearch_PopUpClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
popup_MitarbeiterVertretung.IsOpen = true;
|
||||
PopupMitarbeiterVertretung.IsOpen = true;
|
||||
}
|
||||
|
||||
private void MitarbeiterVertretungsearchview_MitarbeiterVertretungSelected(object sender, EventArgs<CompactEmployeeDC> e)
|
||||
{
|
||||
popup_MitarbeiterVertretung.IsOpen = false;
|
||||
PopupMitarbeiterVertretung.IsOpen = false;
|
||||
|
||||
_CurrentEmployee = e.Data;
|
||||
|
||||
@@ -440,23 +440,23 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
private void KlientVertretung_Button_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
popup_newKlientVertretung.IsOpen = true;
|
||||
PopupNewKlientVertretung.IsOpen = true;
|
||||
}
|
||||
|
||||
private void Button_cancelKlientVertretung_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
popup_newKlientVertretung.IsOpen = false;
|
||||
PopupNewKlientVertretung.IsOpen = false;
|
||||
ClearAllKlientValues();
|
||||
}
|
||||
|
||||
private void Popupedit_KlientVertretungSearch_OnPopUpClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
popup_KlientVertretung.IsOpen = true;
|
||||
PopupKlientVertretung.IsOpen = true;
|
||||
}
|
||||
|
||||
private void KlientVertretungsearchview_KlientVertretungSelected(object sender, EventArgs<CompactCustomerDC> e)
|
||||
{
|
||||
popup_KlientVertretung.IsOpen = false;
|
||||
PopupKlientVertretung.IsOpen = false;
|
||||
|
||||
_CurrentCustomer = e.Data;
|
||||
|
||||
@@ -526,7 +526,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
if(isValid)
|
||||
{
|
||||
popup_newKlientVertretung.IsOpen = false;
|
||||
PopupNewKlientVertretung.IsOpen = false;
|
||||
|
||||
SaveCustomerAbsenceTime();
|
||||
|
||||
|
||||
@@ -36,11 +36,14 @@ namespace BeWo.SchulbegleitenderDienst.ViewModel
|
||||
get => _Notice;
|
||||
set
|
||||
{
|
||||
if (!Equals(_Notice, value))
|
||||
if (Equals(_Notice, value))
|
||||
{
|
||||
_Notice = value;
|
||||
FirePropertyChanged(nameof(Bemerkung));
|
||||
return;
|
||||
}
|
||||
|
||||
_Notice = value;
|
||||
|
||||
FirePropertyChanged(nameof(Bemerkung));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,9 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.Mvvm.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.Xpf.Scheduler.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraScheduler.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraScheduler.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
|
||||
@@ -70,4 +70,22 @@
|
||||
border: 1px solid #ff5a00;
|
||||
margin: 0 .5em;
|
||||
padding: 0 .5em;
|
||||
}
|
||||
|
||||
#absence-times-table p {
|
||||
margin: .1em 0;
|
||||
}
|
||||
|
||||
.absence-time-interval {
|
||||
color: #AB4A07;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#create-absence-time-form {
|
||||
display: none;
|
||||
padding-top: .25em;
|
||||
}
|
||||
|
||||
input:focus + label, textarea:focus + label {
|
||||
color: #FF5A00 !important;
|
||||
}
|
||||
@@ -76,7 +76,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult PreselectCustomer(long customerOid)
|
||||
public ActionResult PreselectCustomer(long? customerOid)
|
||||
{
|
||||
if (!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
||||
{
|
||||
@@ -85,11 +85,10 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
InitViewModel();
|
||||
|
||||
// TODO: select customer
|
||||
if (customerOid > 0)
|
||||
if (customerOid.HasValue && customerOid > 0)
|
||||
{
|
||||
Model.SelectedCustomerOid = customerOid;
|
||||
Model.SelectedCustomer = CustomerService.LoadCustomer(customerOid);
|
||||
Model.SelectedCustomer = CustomerService.LoadCustomer(customerOid.Value);
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Customer");
|
||||
@@ -133,22 +132,62 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[HttpPost]
|
||||
public ActionResult CreateAbsenceTime(FormCollection formCollection)
|
||||
{
|
||||
if (Model?.SelectedCustomerOid == null)
|
||||
{
|
||||
return RedirectToActionPermanent("Index", "Login");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (Model == null)
|
||||
{
|
||||
return RedirectToActionPermanent("Index", "Login");
|
||||
}
|
||||
|
||||
var startDateRaw = formCollection["absence-time-start-input"];
|
||||
var endDateRaw = formCollection["absence-time-end-input"];
|
||||
var absenceReasonOidRaw = formCollection["SelectedAbsenceReasonOid"];
|
||||
var notice = formCollection["absencetime-notice-input"];
|
||||
|
||||
var startDate = DateTime.Parse(startDateRaw);
|
||||
DateTime? endDate = null;
|
||||
DateTime? startDate = null;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(startDateRaw))
|
||||
{
|
||||
if (DateTime.TryParse(startDateRaw, out var startDateTime))
|
||||
{
|
||||
startDate = startDateTime;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(endDateRaw))
|
||||
{
|
||||
if (DateTime.TryParse(endDateRaw, out var endDateTime))
|
||||
{
|
||||
endDate = endDateTime;
|
||||
}
|
||||
}
|
||||
|
||||
AbsenceReasonDC absenceReason = null;
|
||||
if (!string.IsNullOrWhiteSpace(absenceReasonOidRaw))
|
||||
{
|
||||
if (long.TryParse(absenceReasonOidRaw, out var absenceReasonOid))
|
||||
{
|
||||
absenceReason = CustomerService.LoadAbsenceReason(absenceReasonOid);
|
||||
}
|
||||
}
|
||||
|
||||
if (absenceReason != null)
|
||||
{
|
||||
var absenceTime = new AbsenceTimeDC
|
||||
{
|
||||
CustomerOid = Model.SelectedCustomerOid,
|
||||
End = endDate,
|
||||
Start = startDate,
|
||||
Notice = notice,
|
||||
Reason = absenceReason
|
||||
};
|
||||
|
||||
CustomerService.InsertAbsenceTimes(new List<AbsenceTimeDC> {absenceTime});
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
@@ -156,7 +195,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
log.Error(exception.Message, exception);
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Customer");
|
||||
return RedirectToActionPermanent("PreselectCustomer", new {customerOid = Model.SelectedCustomerOid});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ namespace BeWoPlanerMobil.Models
|
||||
public string EnvironmentPersonsDisplayValue => SelectedJsonCustomer != null && SelectedJsonCustomer.Umfeldpersonen.Count > 0 ? "block" : "none";
|
||||
|
||||
public string TabControlDisplayValue => SelectedJsonCustomer != null ? "block" : "none";
|
||||
|
||||
|
||||
public int SelectedCustomerTab { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -129,27 +129,30 @@ function karteAnzeigen() {
|
||||
}
|
||||
|
||||
function cancelAbsenceTimeCreation() {
|
||||
// TODO: Inputs leeren und das Formular ausblenden.
|
||||
|
||||
$("#absence-time-start").val("");
|
||||
$("#absence-time-end").val("");
|
||||
$("#absencetime-notice").text("");
|
||||
$("#absencetime-notice").val("");
|
||||
$("#absence-time-reason").val($("#absence-time-reason").eq(0).val());
|
||||
|
||||
$("#absencetime-notice").change();
|
||||
|
||||
//toggleCreationForm();
|
||||
}
|
||||
|
||||
function validateAndCreateAbsenceTime() {
|
||||
// TODO: Start- und Enddatum validieren und gegebenenfalls Fehlermeldung anzeigen oder Formular abschicken
|
||||
var startStr = $("#absence-time-start").val();
|
||||
var endStr = $("#absence-time-end").val();
|
||||
|
||||
var startDate = new BeWoDateObject(startStr).date;
|
||||
var startDate = new BeWoDateObject(startStr).getDateFromBeWoDateObject();
|
||||
|
||||
var isStartDateValid = validateDate(startDate);
|
||||
var isStartDateValid = validateDate(startStr);
|
||||
|
||||
var isValid = isStartDateValid;
|
||||
|
||||
if (endStr.length > 0 && isStartDateValid) {
|
||||
var endDate = new BeWoDateObject(endStr).date;
|
||||
var isEndDateValid = validateDate(endDate);
|
||||
|
||||
var endDate = new BeWoDateObject(endStr).getDateFromBeWoDateObject();
|
||||
var isEndDateValid = validateDate(endStr);
|
||||
|
||||
if (isEndDateValid) {
|
||||
isValid = endDate > startDate;
|
||||
@@ -161,6 +164,14 @@ function validateAndCreateAbsenceTime() {
|
||||
if (!isValid) {
|
||||
toggleErrorPopup("Das Startdatum und/oder Enddatum ist ungültig", 2);
|
||||
} else {
|
||||
$("#create-absencetime-form").submit();
|
||||
$("#create-absence-time-form").submit();
|
||||
}
|
||||
}
|
||||
|
||||
function toggleCreationForm() {
|
||||
var creationButton = $("#show-absence-time-creation-form-btn");
|
||||
var creationForm = $("#create-absence-time-form");
|
||||
|
||||
creationButton.toggle();
|
||||
creationForm.toggle();
|
||||
}
|
||||
@@ -37,6 +37,14 @@
|
||||
var startStr = startDateBox.val();
|
||||
var endStr = endDateBox.val();
|
||||
|
||||
if (startStr.length === 0) {
|
||||
startStr = "0000";
|
||||
}
|
||||
|
||||
if (endStr.length === 0) {
|
||||
endStr = "0000";
|
||||
}
|
||||
|
||||
if (!validateDate(dateStr) || !zeitRegEx.test(startStr) || !zeitRegEx.test(endStr)) {
|
||||
hideSanduhr();
|
||||
|
||||
|
||||
@@ -15,219 +15,217 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
<div id="klienten" style="display: @Model.TabControlDisplayValue; padding-left: 1em;">
|
||||
<div id="klientenTabelle">
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4>Eigenschaften</h4>
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Vorname:</td>
|
||||
<td class="contentTd">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Vorname : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Nachname:</td>
|
||||
<td class="contentTd" id="KlientNachname">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Nachname : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Geburtstag:</td>
|
||||
<td class="contentTd" id="KlientGeb">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Geburtstag : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Geschlecht:</td>
|
||||
<td class="contentTd" id="KlientSex">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Geschlecht : string.Empty)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4 class="inline-display-element">Adresse</h4>
|
||||
<input type="button" onclick="karteAnzeigen()" style="background-image: url(@Url.Content("~/Content/images/location-orange.svg")); background-repeat: no-repeat; background-position: center; background-size: 55%; background-color: transparent; margin-top: -0.6em; display: inline; width: auto; float: right;" />
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Adresszusatz:</td>
|
||||
<td class="contentTd" id="KlientAdresse">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Adresszusatz : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Straße:</td>
|
||||
<td class="contentTd" id="adressfeld">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Strasse : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">PLZ:</td>
|
||||
<td class="contentTd" id="plzfeld">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Postleitzahl : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Ort:</td>
|
||||
<td class="contentTd" id="ortfeld">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Ort : string.Empty)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4>Rechnungsadresse</h4>
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Name:</td>
|
||||
<td class="contentTd" id="KlientReName">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadresseName : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Straße:</td>
|
||||
<td class="contentTd" id="KlientReStrasse">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadresseStrasse : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Postleitzahl:</td>
|
||||
<td class="contentTd" id="KlientRePostleitzahl">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadressePostleitzahl : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Ort:</td>
|
||||
<td class="contentTd" id="KlientReOrt">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadresseOrt : string.Empty)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4>Kontakt</h4>
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Handy:</td>
|
||||
<td class="contentTd" id="KlientHandy">
|
||||
<a style="color: black" href="@Html.Raw(Model.SelectedJsonCustomer != null ? "tel:" + Model.SelectedJsonCustomer.Handy : string.Empty)">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Handy : string.Empty)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Telefon:</td>
|
||||
<td class="contentTd" id="KlientTelefon">
|
||||
<a style="color: black" href="@Html.Raw(Model.SelectedJsonCustomer != null ? "tel:" + Model.SelectedJsonCustomer.Telefon : string.Empty)">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Telefon : string.Empty)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Fax:</td>
|
||||
<td class="contentTd" id="KlientFax">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Fax : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Mail:</td>
|
||||
<td class="contentTd" id="KlientMail"><a style="color: black" href="@Html.Raw(Model.SelectedJsonCustomer != null ? "mailto:" + Model.SelectedJsonCustomer.EMail : string.Empty)">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.EMail : string.Empty)</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="padding-right: 1em; margin-bottom: 16px; display: @Model.ReferenceNumberDisplayValue" id="aktenzeichenContainer">
|
||||
<h4 style="display: inline; color: #AB4A07;">Aktenzeichen pro Kostenträger</h4>
|
||||
<hr />
|
||||
<table id="aktenzeichenTable" class="width-inheriting-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
<p style="float: left;">Kostenträger</p>
|
||||
</th>
|
||||
<th scope="col">
|
||||
<p style="float: right;">Aktenzeichen</p>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
foreach (var referenceNumber in Model.SelectedJsonCustomer.ReferenceNumbers)
|
||||
{
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">@referenceNumber.Costbearer</td>
|
||||
<td class="contentTd">@referenceNumber.ReferenceNumber</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td colspan="2"><hr /></td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="padding-right: 1em; display: @Model.NoticeDisplayValue" id="kommentarContainer">
|
||||
<h4 style="display: inline; color: #AB4A07;">Kommentar</h4>
|
||||
<hr />
|
||||
<pre>
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
@Html.Raw(Model.SelectedJsonCustomer.Kommentar)
|
||||
;
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div style="padding-right: 1em; display: @Model.EnvironmentPersonsDisplayValue" id="umfeldContainer">
|
||||
<h4 style="display: inline; color: #AB4A07;">Umfeld</h4>
|
||||
<hr />
|
||||
<div style="width: inherit;">
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
foreach (var relatedPerson in Model.SelectedJsonCustomer.Umfeldpersonen)
|
||||
{
|
||||
<div class="collapsible-container">
|
||||
<input type="button" class="toggle-btn2" value="@relatedPerson.FormattedName" />
|
||||
<div style="display: none;" class="kollabierbar">
|
||||
<table class="width-inheriting-table">
|
||||
<tbody>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Rolle:</td>
|
||||
<td class="contentTd">@relatedPerson.Rolle</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Adresse:</td>
|
||||
<td class="contentTd">@relatedPerson.StrNameNr</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td"></td>
|
||||
<td class="contentTd">@relatedPerson.PLZOrt</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Tel.:</td>
|
||||
<td class="contentTd">
|
||||
<a style="color: black" href="tel:@relatedPerson.TelNr">@relatedPerson.TelNr</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Mobil:</td>
|
||||
<td class="contentTd">
|
||||
<a style="color: black" href="tel:@relatedPerson.Mobil">@relatedPerson.Mobil</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">E-Mail</td>
|
||||
<td class="contentTd">
|
||||
<a style="color: black" href="mailto:@relatedPerson.EMail">@relatedPerson.EMail</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Fax:</td>
|
||||
<td class="contentTd">@relatedPerson.Fax</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-wrapper" style="display: none;">
|
||||
<div class="input-wrapper" style="display: @Model.TabControlDisplayValue;">
|
||||
<div class="customer-tab">
|
||||
<input type="button" class="customer-tab-link" id="customer-tab-1" onclick="focusOnCustomerTab(1)" value="Details"/>
|
||||
<input type="button" class="customer-tab-link" id="customer-tab-2" onclick="focusOnCustomerTab(2)" value="Abwesenheiten"/>
|
||||
</div>
|
||||
|
||||
<div class="customer-tab-content" id="customer-tab-content-1">
|
||||
|
||||
<div id="klienten" style="display: @Model.TabControlDisplayValue;">
|
||||
<div id="klientenTabelle">
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4>Eigenschaften</h4>
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Vorname:</td>
|
||||
<td class="contentTd">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Vorname : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Nachname:</td>
|
||||
<td class="contentTd" id="KlientNachname">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Nachname : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Geburtstag:</td>
|
||||
<td class="contentTd" id="KlientGeb">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Geburtstag : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Geschlecht:</td>
|
||||
<td class="contentTd" id="KlientSex">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Geschlecht : string.Empty)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4 class="inline-display-element">Adresse</h4>
|
||||
<input type="button" onclick="karteAnzeigen()" style="background-image: url(@Url.Content("~/Content/images/location-orange.svg")); background-repeat: no-repeat; background-position: center; background-size: 55%; background-color: transparent; margin-top: -0.6em; display: inline; width: auto; float: right;" />
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Adresszusatz:</td>
|
||||
<td class="contentTd" id="KlientAdresse">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Adresszusatz : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Straße:</td>
|
||||
<td class="contentTd" id="adressfeld">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Strasse : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">PLZ:</td>
|
||||
<td class="contentTd" id="plzfeld">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Postleitzahl : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Ort:</td>
|
||||
<td class="contentTd" id="ortfeld">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Ort : string.Empty)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4>Rechnungsadresse</h4>
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Name:</td>
|
||||
<td class="contentTd" id="KlientReName">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadresseName : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Straße:</td>
|
||||
<td class="contentTd" id="KlientReStrasse">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadresseStrasse : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Postleitzahl:</td>
|
||||
<td class="contentTd" id="KlientRePostleitzahl">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadressePostleitzahl : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Ort:</td>
|
||||
<td class="contentTd" id="KlientReOrt">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.RechnungsadresseOrt : string.Empty)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="eigenschaftsdiv">
|
||||
<h4>Kontakt</h4>
|
||||
<hr />
|
||||
<table class="width-inheriting-table">
|
||||
<tr>
|
||||
<td class="customer-td">Handy:</td>
|
||||
<td class="contentTd" id="KlientHandy">
|
||||
<a style="color: black" href="@Html.Raw(Model.SelectedJsonCustomer != null ? "tel:" + Model.SelectedJsonCustomer.Handy : string.Empty)">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Handy : string.Empty)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Telefon:</td>
|
||||
<td class="contentTd" id="KlientTelefon">
|
||||
<a style="color: black" href="@Html.Raw(Model.SelectedJsonCustomer != null ? "tel:" + Model.SelectedJsonCustomer.Telefon : string.Empty)">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Telefon : string.Empty)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Fax:</td>
|
||||
<td class="contentTd" id="KlientFax">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.Fax : string.Empty)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="customer-td">Mail:</td>
|
||||
<td class="contentTd" id="KlientMail"><a style="color: black" href="@Html.Raw(Model.SelectedJsonCustomer != null ? "mailto:" + Model.SelectedJsonCustomer.EMail : string.Empty)">@Html.Raw(Model.SelectedJsonCustomer != null ? Model.SelectedJsonCustomer.EMail : string.Empty)</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom: 16px; display: @Model.ReferenceNumberDisplayValue" id="aktenzeichenContainer">
|
||||
<h4 style="display: inline; color: #AB4A07;">Aktenzeichen pro Kostenträger</h4>
|
||||
<hr />
|
||||
<table id="aktenzeichenTable" class="width-inheriting-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
<p style="float: left;">Kostenträger</p>
|
||||
</th>
|
||||
<th scope="col">
|
||||
<p style="float: right;">Aktenzeichen</p>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
foreach (var referenceNumber in Model.SelectedJsonCustomer.ReferenceNumbers)
|
||||
{
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">@referenceNumber.Costbearer</td>
|
||||
<td class="contentTd">@referenceNumber.ReferenceNumber</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td colspan="2"><hr /></td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="display: @Model.NoticeDisplayValue" id="kommentarContainer">
|
||||
<h4 style="display: inline; color: #AB4A07;">Kommentar</h4>
|
||||
<hr />
|
||||
<pre>
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
@Html.Raw(Model.SelectedJsonCustomer.Kommentar)
|
||||
;
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div style="display: @Model.EnvironmentPersonsDisplayValue" id="umfeldContainer">
|
||||
<h4 style="display: inline; color: #AB4A07;">Umfeld</h4>
|
||||
<hr />
|
||||
<div style="width: inherit; padding-bottom: .5em;">
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
foreach (var relatedPerson in Model.SelectedJsonCustomer.Umfeldpersonen)
|
||||
{
|
||||
<div class="collapsible-container">
|
||||
<input type="button" class="toggle-btn2" value="@relatedPerson.FormattedName" />
|
||||
<div style="display: none;" class="kollabierbar">
|
||||
<table class="width-inheriting-table">
|
||||
<tbody>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Rolle:</td>
|
||||
<td class="contentTd">@relatedPerson.Rolle</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Adresse:</td>
|
||||
<td class="contentTd">@relatedPerson.StrNameNr</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td"></td>
|
||||
<td class="contentTd">@relatedPerson.PLZOrt</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Tel.:</td>
|
||||
<td class="contentTd">
|
||||
<a style="color: black" href="tel:@relatedPerson.TelNr">@relatedPerson.TelNr</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Mobil:</td>
|
||||
<td class="contentTd">
|
||||
<a style="color: black" href="tel:@relatedPerson.Mobil">@relatedPerson.Mobil</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">E-Mail</td>
|
||||
<td class="contentTd">
|
||||
<a style="color: black" href="mailto:@relatedPerson.EMail">@relatedPerson.EMail</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td class="customer-td">Fax:</td>
|
||||
<td class="contentTd">@relatedPerson.Fax</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="customer-tab-content" id="customer-tab-content-2">
|
||||
<div>
|
||||
@using (Html.BeginForm("CreateAbsenceTime", "Customer", FormMethod.Post, new { id="create-absencetime-form"}))
|
||||
@using (Html.BeginForm("CreateAbsenceTime", "Customer", FormMethod.Post, new { id="create-absence-time-form"}))
|
||||
{
|
||||
<table>
|
||||
<tr>
|
||||
@@ -249,7 +247,7 @@
|
||||
<div class="combobox-label-parent">
|
||||
@Html.LabelFor(m => m.SelectedAbsenceReasonOid)
|
||||
<div class="styled-select-div">
|
||||
@Html.DropDownListFor(m => m.SelectedAbsenceReasonOid, Model.AbsenceReasonListItems, new {@class = "dropdownlist-for"})
|
||||
@Html.DropDownListFor(m => m.SelectedAbsenceReasonOid, Model.AbsenceReasonListItems, new {@class = "dropdownlist-for", id = "absence-time-reason"})
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
@@ -264,18 +262,47 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="button" value="Anlegen" onclick="validateAndCreateAbsenceTime()" style="margin-right: .5em; margin-bottom: .3em;" />
|
||||
<input type="button" value="Abbrechen" onclick="cancelAbsenceTimeCreation()" style="margin-right: .5em; margin-bottom: .3em;" />
|
||||
</td>
|
||||
<td>
|
||||
<input type="button" value="Abbrechen" onclick="cancelAbsenceTimeCreation()" style="margin-left: .5em; margin-bottom: .3em;" />
|
||||
<div class="input-wrapper cell-content" style="margin-right: .5em;">
|
||||
<input type="button" value="Anlegen" onclick="validateAndCreateAbsenceTime()" style="margin-left: .5em; margin-bottom: .3em;" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
}
|
||||
|
||||
<input type="button" value="Neue Abwesenheit anlegen" id="show-absence-time-creation-form-btn" style="margin-top: .75em;" onclick="toggleCreationForm()" />
|
||||
|
||||
@if (Model.SelectedJsonCustomer != null)
|
||||
{
|
||||
<table id="absence-times-table">
|
||||
<tbody>
|
||||
@foreach (var absenceTime in Model.SelectedJsonCustomer.AbsenceTimes)
|
||||
{
|
||||
<tr class="testklasse">
|
||||
<td>
|
||||
<p class="absence-time-interval" style="margin-top: 1em;">@absenceTime.AbsenceInterval</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td>
|
||||
<p style="font-weight: bold;">@absenceTime.AbsenceReason</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="testklasse">
|
||||
<td>
|
||||
<p style="font-style: italic;">@absenceTime.Notice</p>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(".dropdownlist-for").css("height", '@AbstractModel.DropdownHeight' + "px");
|
||||
</script>
|
||||
@@ -33,8 +33,6 @@ namespace BeWo.Service.SBD
|
||||
var customerOids = new List<long>();
|
||||
var employeeOids = new List<long>();
|
||||
|
||||
// TODO: Eine SearchDAO Funktion schreiben, um die Klienten zu laden?
|
||||
|
||||
employeeAbsenceTimes.DoForEach(absenceTime =>
|
||||
{
|
||||
if(absenceTime.EmployeeOid.HasValue)
|
||||
@@ -178,9 +176,9 @@ namespace BeWo.Service.SBD
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
MigriereSubstitutionStatus(customer);
|
||||
|
||||
|
||||
|
||||
var addEmpty = true;
|
||||
|
||||
foreach (var employee2Customer in customer.Employee2CustomerList.Where(e2c => e2c.Employee.IsActive == ActivationTypeId.Active))
|
||||
@@ -237,7 +235,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -246,8 +244,7 @@ namespace BeWo.Service.SBD
|
||||
private static IEnumerable<VertretungsItemDC> ErstelleVertretungsItemsForAbsenceEmployee(AbsenceTime absenceTime, Employee employee, Customer customer, List<Vertretung> vertretungen, DateTime start, DateTime end, List<ContactDC> customerContactInformation, List<ContactDC> employeeContactInformation, List<CustomerOrganisationRelationDC> schools)
|
||||
{
|
||||
var vertretungsItems = new List<VertretungsItemDC>();
|
||||
|
||||
|
||||
var items2Remove = new List<Guid>();
|
||||
|
||||
var dateTime = start;
|
||||
while (dateTime <= end)
|
||||
@@ -256,7 +253,7 @@ namespace BeWo.Service.SBD
|
||||
{
|
||||
// TODO: Vertretungen erzeugen ein zweites VertretungsItem!
|
||||
|
||||
var newVertretungsItem = new VertretungsItemDC {Datum = dateTime, Absencetime = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDC(absenceTime)};
|
||||
var newVertretungsItem = new VertretungsItemDC {Datum = dateTime, Absencetime = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDC(absenceTime), Id = Guid.NewGuid()};
|
||||
|
||||
var vertretungsOids = new List<long>();
|
||||
|
||||
@@ -282,11 +279,11 @@ namespace BeWo.Service.SBD
|
||||
newVertretungsItem.CustomerContactInformation = customerContactInformation;
|
||||
newVertretungsItem.EmployeeContactInformation = employeeContactInformation;
|
||||
newVertretungsItem.Schools = schools;
|
||||
|
||||
// Klientenabwesenheit von Klient mit Betreuungszeiten oder mit Schule
|
||||
|
||||
// Klientenabwesenheit von Klient mit Betreuungszeiten oder mit Schule (Stundenplan)
|
||||
if (customer != null && customer.Arbeitszeiten.Any() || customer.Customer2OrganisationList.Any(a => a.ValueList.Any(b => b.Entry.Type == ValueListEntryType.EnvironmentOrganisationType && b.Entry.Value.Equals("Schule"))))
|
||||
{
|
||||
var betreuungszeiten = MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(customer.Arbeitszeiten);
|
||||
var betreuungszeiten = customer.Arbeitszeiten.Any() ? MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(customer.Arbeitszeiten) : MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(customer.Customer2OrganisationList.FirstOrDefault().Organisation.Arbeitszeiten.Where(w => w.EmployeeOid == null || w.EmployeeOid.Equals(employee?.Oid))) ?? new List<ArbeitszeitDC>();
|
||||
|
||||
var time = dateTime;
|
||||
var interval = betreuungszeiten.Where(
|
||||
@@ -307,7 +304,7 @@ namespace BeWo.Service.SBD
|
||||
return time <= w.GueltigBis;
|
||||
}
|
||||
|
||||
if(w.GueltigVon.HasValue && w.GueltigBis == null)
|
||||
if(w.GueltigBis == null)
|
||||
{
|
||||
return time >= w.GueltigVon;
|
||||
}
|
||||
@@ -319,7 +316,7 @@ namespace BeWo.Service.SBD
|
||||
|
||||
foreach(var item in interval)
|
||||
{
|
||||
assistanceTimeEntries.AddRange(item.Eintraege.Where(assistanceTimeEntry => DateTimeUtils.ConvertAppointmentDayOfWeekToDayOfWeek(assistanceTimeEntry.Tag) == dateTime.DayOfWeek));
|
||||
assistanceTimeEntries.AddRange(item.Eintraege.Where(assistanceTimeEntry => assistanceTimeEntry.DayOfWeek == dateTime.DayOfWeek && Equals(assistanceTimeEntry.Employee?.EmployeeOid, employee?.Oid) || assistanceTimeEntry.Employee == null));
|
||||
}
|
||||
|
||||
if(assistanceTimeEntries.Any())
|
||||
@@ -328,6 +325,30 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
|
||||
if (absenceTime.EmployeeOid.HasValue && absenceTime.Start.HasValue && newVertretungsItem.Arbeitszeiten != null)
|
||||
{
|
||||
var assistanceTimes = newVertretungsItem.Arbeitszeiten.Where(w => employee?.Oid == w.Employee?.EmployeeOid);
|
||||
|
||||
var blubb = assistanceTimes.Any(a =>
|
||||
{
|
||||
var assistanceTimeDates = Utils.GetAssistanceTimeComparisonDateTime(a.UhrzeitVon, a.UhrzeitBis, dateTime);
|
||||
|
||||
var absenceTimeEnd = absenceTime.End;
|
||||
|
||||
if (absenceTimeEnd.HasValue && absenceTime.Start.Value.Equals(absenceTimeEnd.Value))
|
||||
{
|
||||
absenceTimeEnd = absenceTimeEnd.Value.AddHours(23).AddMinutes(59).AddSeconds(59);
|
||||
}
|
||||
|
||||
return assistanceTimeDates.Start.IsIntervalInAbsenceTimeInterval(assistanceTimeDates.End, absenceTime.Start.Value, absenceTimeEnd);
|
||||
});
|
||||
|
||||
if (!blubb)
|
||||
{
|
||||
items2Remove.Add(newVertretungsItem.Id);
|
||||
}
|
||||
}
|
||||
|
||||
AddKrankheitsZeitraumAndMeldungToItem(newVertretungsItem, newVertretungsItem.Absencetime);
|
||||
|
||||
if (absenceTime.CustomerOid.HasValue)
|
||||
@@ -498,7 +519,10 @@ namespace BeWo.Service.SBD
|
||||
vertretungsItems.AddIfNotIn(copy);
|
||||
}
|
||||
|
||||
vertretungsItems.Add(newVertretungsItem);
|
||||
if (!items2Remove.Contains(newVertretungsItem.Id))
|
||||
{
|
||||
vertretungsItems.Add(newVertretungsItem);
|
||||
}
|
||||
}
|
||||
|
||||
dateTime = dateTime.AddDays(1);
|
||||
@@ -519,9 +543,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
else
|
||||
{
|
||||
customer.SubstitutionNeed = customer.VertretungGewuenscht
|
||||
? SubstitutionNeed.SubstitutionWanted
|
||||
: SubstitutionNeed.NoSubstitutionWanted;
|
||||
customer.SubstitutionNeed = customer.VertretungGewuenscht ? SubstitutionNeed.SubstitutionWanted : SubstitutionNeed.NoSubstitutionWanted;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -530,8 +552,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static void SetTeamleitung(BeWoEntityBase employee, VertretungsItemDC item)
|
||||
{
|
||||
if(employee.Oid == null)
|
||||
@@ -681,33 +702,8 @@ namespace BeWo.Service.SBD
|
||||
|
||||
private static bool GetIsSubstitutedCompletely(IEnumerable<ArbeitszeitEintrag> assistanceTimes, Vertretung substitution, DateTime dateTime, AbsenceTime absenceTime)
|
||||
{
|
||||
// TODO: absenceTime beachten!
|
||||
/*
|
||||
* Vertretung mit AssistanceTimes und AbsenceTime vergleichen
|
||||
*
|
||||
* AssistanceTimes: Do 08:00 - 10:30 und 10:45 - 12:15 und 12:30 - 14:00
|
||||
* AbsenceTime: 19.09.2019 09:00 bis 30.09.2019 15:00
|
||||
* Vertretung 1: 19.09.2019 10:00 bis 22.09.2019 13:00
|
||||
* Vertretung 2:
|
||||
*
|
||||
* Das Ende der Abwesenheit darf nicht größer als das Ende der Vertretung sein
|
||||
* Der Anfang der Abwesenheit darf nicht kleiner sein als der Anfang der Vertretung
|
||||
*/
|
||||
|
||||
//var valid = absenceTime.Start.HasValue && absenceTime.End.HasValue && absenceTime.End.Value <= substitution.VertretungsZeitraumBis && absenceTime.Start.Value >= substitution.VertretungsZeitraumVon;
|
||||
|
||||
//if(!valid)
|
||||
//{
|
||||
// return false;
|
||||
//}
|
||||
|
||||
var isSubstituted = true;
|
||||
|
||||
if(substitution.CustomerOid == 46)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
foreach(var assistanceTime in assistanceTimes)
|
||||
{
|
||||
var assistanceDateTimes = Utils.GetAssistanceTimeComparisonDateTime(assistanceTime.UhrzeitVon, assistanceTime.UhrzeitBis, dateTime);
|
||||
@@ -715,6 +711,7 @@ namespace BeWo.Service.SBD
|
||||
{
|
||||
substitution.VertretungsZeitraumBis = substitution.VertretungsZeitraumBis.AddDays(1).AddTicks(-1);
|
||||
}
|
||||
|
||||
isSubstituted = assistanceDateTimes.Start.AreInBetweenDates(assistanceDateTimes.End, substitution.VertretungsZeitraumVon, substitution.VertretungsZeitraumBis);
|
||||
|
||||
if(!isSubstituted)
|
||||
@@ -805,5 +802,19 @@ namespace BeWo.Service.SBD
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static bool IsAbsenceTimeInAssistanceTime(DateTime currentDate, ArbeitszeitEintragDC assistanceTime, AbsenceTime absenceTime)
|
||||
{
|
||||
if (currentDate.DayOfWeek != assistanceTime.DayOfWeek)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var assistanceDateTimes = Utils.GetAssistanceTimeComparisonDateTime(assistanceTime.UhrzeitVon, assistanceTime.UhrzeitBis, currentDate);
|
||||
|
||||
var isInbetween = currentDate.InBetween(assistanceDateTimes.Start, assistanceDateTimes.End);
|
||||
|
||||
return isInbetween;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,5 +124,8 @@ namespace BS.Shared.DataContracts
|
||||
|
||||
[DataMember]
|
||||
public string EmployeeAddressString { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public Guid Id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -481,6 +481,16 @@ namespace BS.Shared.Extensions
|
||||
return start1 >= start2 && end1 <= end2;
|
||||
}
|
||||
|
||||
public static bool IsIntervalInAbsenceTimeInterval(this DateTime start, DateTime end, DateTime absenceTimeStart, DateTime? absenceTimeEnd)
|
||||
{
|
||||
if (absenceTimeEnd == null)
|
||||
{
|
||||
return start >= absenceTimeStart && end >= absenceTimeStart;
|
||||
}
|
||||
|
||||
return AreInBetweenDates(start, end, absenceTimeStart, absenceTimeEnd.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prüft, ob das Datum in einem Zeitraum liegt. Wurde für Betreuungszeiten geschrieben.
|
||||
/// Achtung: Sind beide Daten des Zeitraums null, wird true zurückgegeben!
|
||||
|
||||
Reference in New Issue
Block a user