ultimatepos/resources/views/holding/index.blade.php

218 lines
12 KiB
PHP

@extends('layouts.app')
@section('title', __('lang_v1.holding_structure'))
@section('css')
<style>
/* Persian datepicker must appear above Bootstrap modals (z-index 1050) */
.datepicker-container {
z-index: 2000 !important;
}
.holding-date-picker {
cursor: pointer;
background-color: #fff;
}
</style>
@endsection
@section('content')
@include('essentials::layouts.nav_hrm')
<section class="content-header">
<h1>
@lang('lang_v1.holding_structure')
<small>@lang('lang_v1.holding_manage_desc')</small>
</h1>
</section>
<section class="content">
<div class="row row-custom">
@can('holding.context.switch')
<div class="col-md-12">
<div class="box box-solid">
<div class="box-body">
@if($userAssignments->isEmpty())
<div class="alert alert-warning no-margin">
<i class="fas fa-info-circle"></i> @lang('lang_v1.holding_setup_guide')
@can('holding.assignments.manage')
<button type="button" class="btn btn-sm btn-primary pull-left btn-modal" style="margin-right:8px;" data-href="{{ route('holding.assignments.create') }}" data-container=".holding_assignment_modal">
<i class="fa fa-plus"></i> @lang('lang_v1.holding_add_assignment_cta')
</button>
@endcan
</div>
@else
{!! Form::open(['url' => route('holding.context.switch'), 'method' => 'post', 'class' => 'form-inline']) !!}
<div class="form-group">
{!! Form::select('assignment_id', $userAssignments->mapWithKeys(function ($a) {
return [$a->id => trim($a->user->first_name.' '.($a->user->last_name ?? '')).' — '.optional($a->entity)->name.($a->orgUnit ? ' / '.$a->orgUnit->name : '')];
}), session('holding.active_assignment_id'), ['class' => 'form-control select2', 'placeholder' => __('lang_v1.holding_assignment'), 'required', 'style' => 'min-width:320px']) !!}
</div>
<button type="submit" class="btn btn-primary"><i class="fas fa-exchange-alt"></i> @lang('lang_v1.holding_switch')</button>
{!! Form::close() !!}
@endif
</div>
</div>
</div>
@endcan
<div class="col-md-3 col-sm-6 col-xs-12 col-custom">
<div class="info-box info-box-new-style">
<span class="info-box-icon bg-aqua"><i class="fas fa-building"></i></span>
<div class="info-box-content">
<span class="info-box-text">@lang('lang_v1.holding_total_entities')</span>
<span class="info-box-number">{{ $stats['entities'] }}</span>
</div>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-12 col-custom">
<div class="info-box info-box-new-style">
<span class="info-box-icon bg-green"><i class="fas fa-sitemap"></i></span>
<div class="info-box-content">
<span class="info-box-text">@lang('lang_v1.holding_total_units')</span>
<span class="info-box-number">{{ $stats['units'] }}</span>
</div>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-12 col-custom">
<div class="info-box info-box-new-style">
<span class="info-box-icon bg-yellow"><i class="fas fa-users"></i></span>
<div class="info-box-content">
<span class="info-box-text">@lang('essentials::lang.departments')</span>
<span class="info-box-number">{{ $stats['hrm_departments'] }}</span>
</div>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-12 col-custom">
<div class="info-box info-box-new-style">
<span class="info-box-icon bg-red"><i class="fas fa-user-tie"></i></span>
<div class="info-box-content">
<span class="info-box-text">@lang('lang_v1.holding_total_assignments')</span>
<span class="info-box-number">{{ $stats['assignments'] }}</span>
</div>
</div>
</div>
</div>
@if(!empty($activeHoldingAssignment))
<div class="alert alert-success">
<strong>@lang('lang_v1.holding_active_context'):</strong>
{{ optional($activeHoldingAssignment->entity)->name }}
@if(!empty($activeHoldingAssignment->orgUnit)) / {{ $activeHoldingAssignment->orgUnit->name }} @endif
@if($activeHoldingAssignment->is_primary)
<span class="label label-info">@lang('lang_v1.holding_primary')</span>
@endif
</div>
@endif
<div class="row">
<div class="col-md-12">
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#overview_tab" data-toggle="tab"><i class="fas fa-chart-pie"></i> @lang('lang_v1.holding_overview')</a></li>
<li><a href="#entities_tab" data-toggle="tab"><i class="fas fa-building"></i> @lang('lang_v1.holding_entities_tab')</a></li>
<li><a href="#units_tab" data-toggle="tab"><i class="fas fa-sitemap"></i> @lang('lang_v1.holding_org_structure_tab')</a></li>
<li><a href="#relations_tab" data-toggle="tab"><i class="fas fa-link"></i> @lang('lang_v1.holding_relations_tab')</a></li>
<li><a href="#assignments_tab" data-toggle="tab"><i class="fas fa-user-tie"></i> @lang('lang_v1.holding_assignments_tab')</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="overview_tab">
<div class="box-header with-border">
<h3 class="box-title">@lang('lang_v1.holding_org_tree')</h3>
<div class="box-tools pull-left">
@can('holding.update')
{!! Form::open(['url' => route('holding.sync.hrm'), 'method' => 'post', 'id' => 'holding_sync_hrm_form', 'style' => 'display:inline']) !!}
<button type="submit" class="btn btn-sm btn-success"><i class="fas fa-sync"></i> @lang('lang_v1.holding_sync_hrm')</button>
{!! Form::close() !!}
@endcan
<a href="{{ action([\App\Http\Controllers\TaxonomyController::class, 'index']) . '?type=hrm_department' }}" class="btn btn-sm btn-default">
<i class="fas fa-users"></i> @lang('essentials::lang.departments')
</a>
</div>
</div>
@if($entities->isEmpty())
<p class="text-center text-muted">@lang('lang_v1.holding_empty_entities')</p>
@else
<div class="row">
@foreach($orgTrees as $tree)
<div class="col-md-6">
<div class="box box-solid">
<div class="box-header with-border">
<h3 class="box-title">{{ $tree['entity']->name }}</h3>
<span class="label label-primary">{{ $entityTypes[$tree['entity']->entity_type] ?? $tree['entity']->entity_type }}</span>
</div>
<div class="box-body">
@if(empty($tree['nodes']))
<p class="text-muted">@lang('lang_v1.holding_no_units')</p>
@else
@include('holding.partials.org_tree_nodes', ['nodes' => $tree['nodes']])
@endif
</div>
</div>
</div>
@endforeach
</div>
@endif
</div>
<div class="tab-pane" id="entities_tab">
@can('holding.create')
<button type="button" class="btn btn-primary btn-modal margin-bottom-10" data-href="{{ route('holding.entities.create') }}" data-container=".holding_entity_modal">
<i class="fa fa-plus"></i> @lang('messages.add')
</button>
@endcan
@include('holding.partials.table_entities')
</div>
<div class="tab-pane" id="units_tab">
@can('holding.create')
<button type="button" class="btn btn-primary btn-modal margin-bottom-10" data-href="{{ route('holding.units.create') }}" data-container=".holding_unit_modal">
<i class="fa fa-plus"></i> @lang('messages.add')
</button>
@endcan
@include('holding.partials.table_units')
</div>
<div class="tab-pane" id="relations_tab">
@can('holding.create')
<button type="button" class="btn btn-primary btn-modal margin-bottom-10" data-href="{{ route('holding.relations.create') }}" data-container=".holding_relation_modal">
<i class="fa fa-plus"></i> @lang('messages.add')
</button>
@endcan
@include('holding.partials.table_relations')
</div>
<div class="tab-pane" id="assignments_tab">
<div class="margin-bottom-10">
@can('holding.assignments.manage')
<button type="button" class="btn btn-primary btn-modal" data-href="{{ route('holding.assignments.create') }}" data-container=".holding_assignment_modal">
<i class="fa fa-plus"></i> @lang('messages.add')
</button>
@endcan
@can('holding.update')
<button type="button" class="btn btn-success" id="holding_sync_hrm_btn"><i class="fas fa-sync"></i> @lang('lang_v1.holding_sync_hrm')</button>
@endcan
</div>
@include('holding.partials.table_assignments')
</div>
</div>
</div>
</div>
</div>
</section>
<div class="modal fade holding_entity_modal" tabindex="-1" role="dialog"></div>
<div class="modal fade holding_unit_modal" tabindex="-1" role="dialog"></div>
<div class="modal fade holding_relation_modal" tabindex="-1" role="dialog"></div>
<div class="modal fade holding_assignment_modal" tabindex="-1" role="dialog"></div>
@endsection
@section('javascript')
<script type="text/javascript">
var HOLDING_LANG = {
confirm_delete: @json(__('lang_v1.holding_confirm_delete')),
sync_hrm_url: @json(route('holding.sync.hrm'))
};
</script>
<script src="{{ asset('js/holding.js?v=' . $asset_v) }}"></script>
@endsection