Intervallfinder überarbeitet & Bug gefixt, der zu einem Fehler beim Suchen nach freien Intervallen über mehrere Tage geführt hatte, wenn die Enduhrzeit vor der Startuhrzeit lag. Berichte mit Parametern. Verbesserte Mitarbeiter-, Klienten-, Team-, und Organisationsdropdowns mit Suche. Quittierungsbelegresultate (zum Unterschreiben) wird wie die Zeiterfassung paginiert. FaC: neuer Kalender noch nicht fertig.
116 lines
5.5 KiB
Plaintext
116 lines
5.5 KiB
Plaintext
@using BeWoPlanerMobil.Models;
|
|
|
|
@model CustomerModel
|
|
|
|
@{
|
|
var hasRelatedEmployees = Model.SelectedCustomer?.RelatedEmployees.Any() ?? false;
|
|
var hasRelatedTeams = Model.SelectedCustomer?.RelatedTeams.Any() ?? false;
|
|
}
|
|
|
|
@if(hasRelatedEmployees && Model.SelectedCustomer != null)
|
|
{
|
|
<div class="card w-100 h-100">
|
|
<div class="card-header" onclick="cardHeaderClick2(this)">
|
|
<div class="d-inline-flex">
|
|
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header" id="chevron-customer-betreuung-list"></i>
|
|
</div>
|
|
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
|
|
<button type="button" class="btn btn-link text-bewo-customer-card-header" style="font-size: 20px;">
|
|
Betreuung
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="collapse" id="collapse-customer-betreuung-list">
|
|
<div class="card-body p-1">
|
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3">
|
|
@foreach(var relation in Model.SelectedCustomer.RelatedEmployees)
|
|
{
|
|
var start = relation.StartDate.HasValue ? $"{relation.StartDate.Value:dd.MM.yyyy}" : "";
|
|
var end = relation.EndDate.HasValue ? $"{relation.EndDate.Value:dd.MM.yyyy}" : "";
|
|
<div class="col mb-3">
|
|
<div class="card h-100">
|
|
<div class="card-body">
|
|
<table class="w-100">
|
|
<tbody>
|
|
<tr>
|
|
<td class="text-secondary align-text-top">Betreuer:</td>
|
|
<td class="text-right align-text-top">@relation.Employee</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="text-secondary align-text-top">Rolle:</td>
|
|
<td class="text-right align-text-top">@relation.RelationRole.DisplayName</td>
|
|
</tr>
|
|
@if(!string.IsNullOrWhiteSpace(start))
|
|
{
|
|
<tr>
|
|
<td class="text-secondary align-text-top">Startdatum:</td>
|
|
<td class="text-right align-text-top">@start</td>
|
|
</tr>
|
|
}
|
|
@if(!string.IsNullOrWhiteSpace(end))
|
|
{
|
|
<tr>
|
|
<td class="text-secondary align-text-top">Enddatum:</td>
|
|
<td class="text-right align-text-top">@end</td>
|
|
</tr>
|
|
}
|
|
@if(!string.IsNullOrWhiteSpace(relation.Notice))
|
|
{
|
|
<tr>
|
|
<td class="text-secondary align-text-top pr-1">Erläuterung:</td>
|
|
<td class="text-justify align-text-top">@relation.Notice</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
@*Teams*@
|
|
@if(hasRelatedTeams && Model.SelectedCustomer != null)
|
|
{
|
|
<div class="card w-100 h-100 mt-3">
|
|
<div class="card-header" onclick="cardHeaderClick2(this)">
|
|
<div class="d-inline-flex">
|
|
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header" id="chevron-customer-betreuung-teams"></i>
|
|
</div>
|
|
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
|
|
<button type="button" class="btn btn-link text-bewo-customer-card-header" style="font-size: 20px;">
|
|
Teams
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="collapse" id="collapse-customer-betreuung-teams">
|
|
<div class="card-body">
|
|
@foreach(var teamRelation in Model.SelectedCustomer.RelatedTeams)
|
|
{
|
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 row-cols-xl-4">
|
|
<div class="col mb-3">
|
|
<div class="card h-100">
|
|
<div class="card-body">
|
|
<table class="w-100">
|
|
<tbody>
|
|
<tr>
|
|
<td class="text-secondary">Team:</td>
|
|
<td class="text-right">@teamRelation.Team.Name</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
} |