Files
BeWoPlaner/BeWoPlanerMobil/Views/DevExpressScheduler/CustomResourceSelectPartial.cshtml
2026-06-29 13:45:41 +02:00

140 lines
5.9 KiB
Plaintext

@using BS.Shared.Core.Utilities
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.AppointmentModel
@{
var j = 0;
var areAllSelected = true;
foreach(var category2Resources in Model.ResourceCategories2Resources)
{
var resourceOids = category2Resources.Value.Select(resource => resource.ResourceOid.Value).ToList();
if(false == resourceOids.All(oid => Model.SelectedResourceOids.Contains(oid)))
{
areAllSelected = false;
break;
}
}
var checkedValue = areAllSelected ? "checked" : string.Empty;
var isOriginator = Model.OriginatorOid.HasValue && Model.OriginatorOid.Value == Model.LoggedInCompactEmployee.EmployeeOid;
var isNew = Model.Oid is null;
var canEditResApt = Model.HasRightKalenderRessourcenTermineAendern;
var canEditOthersResApt = Model.HasRightKalenderRessourcenTermineAndererAendern;
var canCreateResApt = Model.HasRightKalenderRessourcenTermineAnlegen;
var isDisabled = isNew is false && isOriginator is false && canEditOthersResApt is false ||
isNew is false && isOriginator && canEditResApt is false ||
isNew && canCreateResApt is false;
var disabled = isDisabled ? "disabled" : string.Empty;
}
<div class="dropdown w-100" id="resources-dropdown">
<button class="btn btn-bewo-resource dropdown-toggle w-100" type="button" data-toggle="dropdown">
Ressourcen <span class="badge badge-light" id="apt-res-badge">@Model.SelectedResourceOids.Count</span>
</button>
<div class="dropdown-menu" onclick="event.stopPropagation();">
<div class="dropdown-item py-1 px-2">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="checkbox" @checkedValue @disabled onclick="selectAllEmployeeCustomerResource('res')" id="apt-res-select-all">
</div>
</div>
<input type="text" class="form-control" id="res-drop-search-input" placeholder="Suchen ..." oninput="onNewResourceSeachInput()">
<div class="input-group-append">
<button type="button" class="btn btn-outline-secondary" onclick="resetNewResourceSearch()">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
</div>
<div class="dropdown-divider py-0 px-2"></div>
<div id="dropdown-res-itm-container">
@{
foreach(var category2Resources in Model.ResourceCategories2Resources)
{
var category = category2Resources.Key;
var resources = category2Resources.Value;
var dNone = j / Model.ResourcePageLimit + 1 != 1 ? " d-none" : string.Empty;
<div class="dropdown-item w-100 py-0 px-2 @dNone" id="dropdown-item-@j">
<div class="card mb-1 category-card" id="res-cat-@category.ValueListEntryOid">
<div class="card-header tree-card-header px-2 py-1" onclick="categoryCardHeaderClick('collapsable-res-cat-@category.ValueListEntryOid')">
<div class="d-flex align-items-center m-0">
<h6 class="mr-auto mb-0">@category.DisplayName</h6>
<div class="btn-group" role="group">
<span class="fas fa-chevron-down text-primary"></span>
</div>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"collapsable-res-cat-{category.ValueListEntryOid}")" id="collapsable-res-cat-@category.ValueListEntryOid">
<div class="card-body resource-list px-2 py-1">
@foreach(var resource in resources)
{
var isChecked = resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value) ? "checked" : string.Empty;
<form class="form-inline justify-content-between">
<div class="form-group form-check">
<input class="form-check-input" @disabled type="checkbox" id="apt-edit-res-@resource.ResourceOid.Value" @isChecked onclick="updateEmployeeCustomerResourceSelection('res')"/>
<label for="apt-edit-res-@resource.ResourceOid.Value" class="form-check-label">
@resource.DetailDescription
</label>
</div>
@if(WebUtils.CheckColorString(resource.Color))
{
<div class="float-right" style="width: 10px; height: 10px; background-color: @resource.Color; border: 1px solid @resource.Color; border-radius: 3px;"></div>
}
</form>
}
</div>
</div>
</div>
</div>
j++;
}
}
</div>
<div class="dropdown-divider" id="apt-res-pag-divider"></div>
<div class="dropdown-item" id="apt-res-pag-dropdow-item">
<nav id="apt-res-pag-nav">
<ul class="pagination justify-content-center" id="apt-res-pagination">
</ul>
</nav>
</div>
</div>
</div>
@* ToDo: Mit den Kategorien wie im alten Kalendermodul bauen!
@for(var i = 0; i < Model.PossibleResources.Count; i++)
{
var resource = Model.PossibleResources[i];
var isChecked = resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value) ? "checked" : string.Empty;
var dNone = i / Model.ResourcePageLimit + 1 != 1 ? " d-none" : string.Empty;
<div class="dropdown-item w-100 @dNone" id="dropdown-item-@i">
<form class="form-inline justify-content-between">
<div class="form-group form-check">
<input class="form-check-input" type="checkbox" id="apt-edit-res-@resource.ResourceOid.Value" @isChecked onclick="updateEmployeeCustomerResourceSelection('res')"/>
<label for="apt-edit-res-@resource.ResourceOid.Value" class="form-check-label">
@resource.DetailDescription
</label>
</div>
@if(WebUtils.CheckColorString(resource.Color))
{
<div class="float-right" style="width: 10px; height: 10px; background-color: @resource.Color; border: 1px solid @resource.Color; border-radius: 3px;"></div>
}
</form>
</div>
}*@