Page has been created to visualize all the jobs according to the current order

This commit is contained in:
ygbanzato 2024-04-01 15:09:47 +01:00
parent 4e7215e9b7
commit 0ac269c5d7
17 changed files with 17654 additions and 107 deletions

2
.env
View File

@ -18,7 +18,7 @@ DB_PORT=3306
# Alteracoes para funcionar com o servidor, porem não funciona na firma
DB_HOST=ispt-innovation.com
DB_DATABASE=ispt40_backup
DB_DATABASE=ispt40_version01
DB_USERNAME=ispt40
DB_PASSWORD=qu3ro3ntr@r

View File

@ -321,6 +321,78 @@ public function getDataProjectsClient(Request $request)
}
// public function getDataProjects(Request $request)
// {
// $receiveAllClients = $request->get('receiveAllClients');
// $receiveAllPlants = $request->get('receiveAllPlants');
// $projectOrder = $request->get('projectOrder');
// $query = CompanyProject::with(['plant.user']) // Garante que ambas as relações sejam carregadas
// ->where('order_project', $projectOrder)
// ->select(['company_projects.*']); // Seleciona todos os campos de CompanyProject, ajuste conforme necessário
// return DataTables::of($query)
// ->addColumn('plant_id', function ($item) {
// // Acessando plant_name diretamente através da relação 'plant'
// return $item->plant ? $item->plant->plant_name : 'N/A';
// })
// ->addColumn('client', function ($item) {
// // Acessando user_name através das relações encadeadas 'plant' seguido por 'user'
// return $item->plant && $item->plant->user ? $item->plant->user->user_name : 'N/A';
// })
// ->addColumn('action', function ($projectClient) {
// $actionBtn = '<a title="Detalhes da Obra" href="' . route('articulated_2', ['id' => $projectClient->company_projects_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
// return $actionBtn;
// })
// ->make(true);
// }
public function getDataProjects(Request $request)
{
$receiveAllClients = $request->get('receiveAllClients');
$receiveAllPlants = $request->get('receiveAllPlants');
$projectOrder = $request->get('projectOrder');
$query = CompanyProject::with(['plant.user']) // Carrega as relações plant e user
->where('order_project', $projectOrder)
->whereHas('plant', function ($query) use ($receiveAllPlants, $receiveAllClients) {
if ($receiveAllPlants !== '#') {
$query->where('plant_id', $receiveAllPlants);
}
if ($receiveAllClients !== '#') {
// Filtra por user_id dentro da relação plant->user
$query->whereHas('user', function ($query) use ($receiveAllClients) {
$query->where('user_id', $receiveAllClients);
});
}
})
->select(['company_projects.*']); // Ajuste conforme necessário para os campos específicos que deseja selecionar
return DataTables::of($query)
->addColumn('plant_id', function ($item) {
return $item->plant ? $item->plant->plant_name : 'N/A';
})
->addColumn('client', function ($item) {
return $item->plant && $item->plant->user ? $item->plant->user->user_name : 'N/A';
})
->addColumn('action', function ($projectClient) use ($projectOrder) {
$routeName = 'articulated_2';
if ($projectOrder == 2) {
$routeName = 'preparedProject';
} elseif ($projectOrder == 3) {
$routeName = 'ExecutionProject';
}
$actionBtn = '<a title="Detalhes da Obra" href="' . route($routeName, ['projectID' => $projectClient->company_projects_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
return $actionBtn;
})
->make(true);
// preparedProject
//ExecutionProject
}
public function receiveProjectsClient()
{
$client = Auth::user()->user_id;

View File

@ -4,8 +4,10 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use App\Mail\NewUserNotification;
use Illuminate\Support\Facades\Mail;
@ -41,16 +43,23 @@ public function store(Request $request)
'pending_password' => 'required|min:8|confirmed',
]);
$joinName = $request->get('name') . ' ' . $request->get('lastName');
// $pendingUser = new PendingUser([
// 'pending_user_name' => $joinName,
// 'pending_user_email' => $request->get('pending_email'),
// 'pending_user_phone' => $request->get('pending_phone'),
// 'pending_user_nif' => $request->get('pending_nif'),
// 'pending_user_password' => Hash::make($request->get('pending_password')),
// $validator = Validator::make($request->all(), [
// 'name' => 'required',
// 'lastName' => 'required',
// 'pending_email' => 'required',
// 'pending_phone' => 'required',
// 'pending_nif' => 'required',
// 'pending_password' => 'required',
// 'pending_password_confirmation' => 'required'
// ]);
// dd($validator);
// if ($validator->fails()) {
// return redirect()->back()->withErrors($validator)->withInput();
// }
$joinName = $request->get('name') . ' ' . $request->get('lastName');
$pendingUser = new PendingUser();
$pendingUser->pending_user_name = $joinName;
$pendingUser->pending_user_email = $request->get('pending_email');

View File

@ -34,6 +34,26 @@
class ProjectoDatacontroller extends Controller
{
public function viewProjectsList($orderProjectID)
{
// // $receiveProjectsForThisOrder = CompanyProject::where('order_project',$orderProjectID)->get();
// $receiveProjectsForThisOrder = CompanyProject::with(['plant.user'])->where('order_project', $orderProjectID)->get();
// return view('projectsClients.viewProjectsList',compact('receiveProjectsForThisOrder','orderProjectID'));
$receiveProjectsForThisOrder = CompanyProject::with(['plant.user'])
->where('order_project', $orderProjectID)
->get();
// Coletar todos os usuários em uma coleção separada
$users = $receiveProjectsForThisOrder->map(function ($project) {
return $project->plant->user;
})->unique('user_id'); // Aqui filtramos para ter certeza de que cada user_id é único
// Agora, você pode passar tanto os projetos quanto os usuários únicos para a sua view
return view('projectsClients.viewProjectsList', compact('receiveProjectsForThisOrder', 'users', 'orderProjectID'));
}
public function editEquipmentTasks(Request $request, $equipmentID)
{
// dd($request);
@ -128,7 +148,7 @@ public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
{
$detailsProject = CompanyProject::where('company_projects_id', $projectID)->first();
$detailsCliente = Plant::where('plant_id',$detailsProject->plant_id)->first();
$detailsCliente = Plant::where('plant_id', $detailsProject->plant_id)->first();
$detailsProject->user_id = $detailsCliente->user_id;
@ -182,7 +202,7 @@ public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
// Cria um array associativo onde as chaves são as perguntas e os valores são as respostas
$formattedAnswers = [];
foreach ($answersArray as $item) {
if (isset ($item['question']) && isset ($item['value'])) {
if (isset($item['question']) && isset($item['value'])) {
$formattedAnswers[$item['question']] = $item['value'];
}
}
@ -352,6 +372,7 @@ public function receivePlants($receiveAllClients)
return response()->json($formattedData);
}
//Funcao que recebe a Acoes do dataTables das obrar em Planeamento.
public function projectDetails_11($projectID, $equipmentID)
{
@ -481,7 +502,7 @@ public function projectDetails_11($projectID, $equipmentID)
$specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
}
return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment','filteredTasks', 'OrdemTasks', 'DetailsTasks', 'detailsEquipmentWorkHistory', 'specificAttributesArray'));
return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment', 'filteredTasks', 'OrdemTasks', 'DetailsTasks', 'detailsEquipmentWorkHistory', 'specificAttributesArray'));
}
//Funcao que recebe a Acoes do dataTables do portifolio.

View File

@ -155,19 +155,26 @@ public function show($id)
public function edit($id)
{
$user = User::findOrFail($id);
//Por enquanto suas estruturas são iguas então não precisa de outra pagina apenas para fazer a mesma coisa.
//Dependendo do tipo de utilizador deve ir para um pagina diferente.
// if($user->type_users == 3){
// return view('Admin.CrudUsers.editCompanies', compact('user'));
// } else
return view('Admin.CrudUsers.editUsers', compact('user'));
}
public function update(Request $request, User $user)
{
// dump($request);
//Por enquanto foi retirado o 'user_type' pois ainda não é necessario alterar o tipo de utilizador na edição.
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $user->user_id . ',user_id',
'password' => 'nullable|min:8|confirmed',
'user_type' => 'required',
// 'user_type' => 'required',
'user_phone' => 'required',
'user_nif' => 'required',
]);
@ -176,19 +183,20 @@ public function update(Request $request, User $user)
'name' => $request->get('name'),
'email' => $request->get('email'),
'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password,
'user_type' => $request->get('user_type'),
// 'user_type' => $request->get('user_type'),
'user_phone' => $request->get('user_phone'),
'user_nif' => $request->get('user_nif'),
]);
$user->save();
if($user->type_users == 3){
return redirect('/users/listCompanies')->with('success', 'Utilizador atualizado com Sucesso!!');
}else
return redirect('/users/listUsers')->with('success', 'Utilizador atualizado com Sucesso!!');
}
public function create()
{
return view('users.create');
@ -215,12 +223,18 @@ public function store(Request $request)
]);
$user->save();
return redirect('/users')->with('success', 'User created successfully!');
return redirect('/users')->with('success', 'Utilizador criado com sucesso!');
}
public function destroy(User $user)
{
$user->delete();
return redirect('/users/listUsers')->with('success', 'User deleted successfully!');
if($user->type_users == 3){
return redirect('/users/listCompanies')->with('success', 'Empresa deletado com sucesso!');
}else {
return redirect('/users/listUsers')->with('success', 'Utilizador deletado com sucesso!');
}
}
}

1455
public/assets/dist/css/countryFlag.css vendored Normal file

File diff suppressed because it is too large Load Diff

15664
public/assets/dist/js/countryFlags.js vendored Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

View File

@ -5,14 +5,24 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="text-light">Editar Utilizador</h1>
@if ($user->type_users == 3)
<h1 class="text-primary">Editar Empresa</h1>
@else
<h1 class="text-primary">Editar Utilizador</h1>
@endif
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('users.company') }}"> Utilizadores</a></li>
<li class="breadcrumb-item"><a href="{{ route('users.Show', [$user->user_id]) }}"> Detalhes do
utilizador</a></li>
@if ($user->type_users == 3)
<li class="breadcrumb-item"><a href="{{ route('users.company') }}"> Empresas</a></li>
<li class="breadcrumb-item"><a href="{{ route('users.Show', [$user->user_id]) }}"> Detalhes da Empresa</a></li>
<li class="breadcrumb-item active">Editar Empresa</li>
@else
<li class="breadcrumb-item"><a href="{{ route('users.list') }}"> Utilizadores</a></li>
<li class="breadcrumb-item"><a href="{{ route('users.Show', [$user->user_id]) }}"> Detalhes do utilizador</a></li>
<li class="breadcrumb-item active">Editar Utilizador</li>
@endif
</ol>
</div>
</div>
@ -23,7 +33,11 @@
<div class="container-fluid">
<div class="card card-primary">
<div class="card-header">
@if ($user->type_users == 3)
Editar Empresa : {{ $user->user_name }}
@else
Editar Utilizador : {{ $user->user_name }}
@endif
</div>
{{-- ./card-header --}}
<div class="card-body">
@ -53,7 +67,7 @@
<div class="form-group text-primary">
<label for="password">Palavra-passe:</label>
<input type="password" class="form-control" id="password" name="password"
placeholder="Deixe em branco para não alterar">
placeholder="Alterar senha">
</div>
</div>
<div class="col-sm-6">
@ -82,7 +96,8 @@
</div>
</div>
<div class="form-group text-primary">
<!-- Não parece ser necessario alterar um tipo de utilzador, por enquanto -->
{{-- <div class="form-group text-primary">
<label for="user_type">Tipo de Utilizador:</label>
<select class="form-control" id="user_type" name="user_type" required>
<!-- Deve mostrar a Opção apenas para utilizadores 'Super_Admin' -->
@ -97,10 +112,11 @@
<option value="Empresa" {{ $user->user_type == 'Empresa' ? 'selected' : '' }}>
Empresa</option>
</select>
</div>
</div> --}}
<button type="submit" class="btn btn-light float-right">Salvar</button>
<a href="{{ route('users.list') }}" class="btn btn-danger float-left">Retornar</a>
</form>
</div>
{{-- ./card-body --}}

View File

@ -5,33 +5,45 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="text-light">Detalhes da Empresa</h1>
@if($user->type_users == 3)
<h1 class="text-primary">Detalhes da Empresa</h1>
@else
<h1 class="text-primary">Detalhes do Utilizador</h1>
@endif
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Administração</li>
@if($user->type_users == 3)
<li class="breadcrumb-item"><a href="{{ route('users.company') }}"> Empresas</a></li>
<li class="breadcrumb-item active">Detalhes da Empresa</li>
@else
<li class="breadcrumb-item"><a href="{{ route('users.list') }}"> Utilizadores</a></li>
<li class="breadcrumb-item active">Detalhes do Empresa</li>
@endif
</ol>
</div>
</div>
</div>
</section>
<section class="content">
<div class="container-fluid">
<div class="card card-primary">
<div class="card-header">
@if ($user->type_users == 3)
Empresa : {{ $user->user_name }}
@else
Utilizador : {{ $user->user_name }}
@endif
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-striped">
{{-- <tr>
<th>ID</th>
<td>{{ $user->user_id }}</td>
</tr> --}}
<tr>
<th>Nome</th>
<td>{{ $user->user_name }}</td>
@ -60,12 +72,22 @@
<th>Atualizado em : </th>
<td>{{ $user->updated_at }}</td>
</tr>
</table>
</div>
@if (Auth::user()->type_users == 1)
<!-- Apenas os Super Admin e Admin devem poder editar perfis -->
@if (Auth::user()->type_users == 1 || Auth::user()->type_users == 2)
<!-- Se for um Admin não deve editar -->
@if ($user->type_users != 1)
@if ($user->type_users == 3)
<a href="{{ route('users.edit', ['id' => $user->user_id]) }}"
class="btn btn-light float-right">Editar
Empresa</a>
class="btn btn-light float-right">Editar Empresa</a>
@else
<a href="{{ route('users.edit', ['id' => $user->user_id]) }}"
class="btn btn-light float-right">Editar Utilizador</a>
@endif
@endif
@endif
</div>
<br>

View File

@ -25,12 +25,14 @@
<div class="container-fluid">
<div class="row">
{{-- Em Planeamento --}}
<div class="col-md-3">
<div class="card card-row card-secondary">
<!-- Card header -->
<div class="card-header info-box bg-secondary">
<span class="info-box-icon"><i class="fas fa-file-edit"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{ __('messages.dashboard.planning.description') }}</span>
<span
@ -45,14 +47,16 @@ class="info-box-number">{{ $CompanyProject->where('order_project', 1)->count() }
<!-- /.info-box -->
<!-- /.Card header-->
<div class="card-body">
@foreach ($CompanyProject as $project)
<input type="hidden" name="receiveOrder_project-1" id="receiveOrder_project-1">
@if ($project->order_project == 1)
<div class="card card-secondary card-outline">
<div class="card-header">
<h5 class="progress-description">{{ $project->company_project_description }}
</h5>
<div class="card-tools">
<a href="{{ route('articulated_2', ['id' => $project->company_projects_id]) }}"
<a href="{{ route('articulated_2', ['projectID' => $project->company_projects_id]) }}"
class="btn btn-tool">
<i class="fa-solid fa-eye" style="color:rgb(62, 62, 62)"></i>
</a>
@ -62,6 +66,12 @@ class="btn btn-tool">
@endif
@endforeach
</div>
<div class="card-footer">
<a href="{{ route('viewProjectsList', ['orderProjectID' => '1']) }}"
class="btn btn-outline-secondary float-right">Ver Lista</a>
</div>
</div>
</div>
@ -93,7 +103,7 @@ class="btn btn-tool">
<h5 class="progress-description">{{ $project->company_project_description }}
</h5>
<div class="card-tools">
<a href="{{ route('preparedProject', ['ProjectId' => $project->company_projects_id]) }}"
<a href="{{ route('preparedProject', ['projectID' => $project->company_projects_id]) }}"
class="btn btn-tool">
<i class="fa-solid fa-eye" style="color:rgb(62, 62, 62)"></i>
</a>
@ -103,8 +113,13 @@ class="btn btn-tool">
@endif
@endforeach
</div>
<div class="card-footer">
<a href="{{ route('viewProjectsList', ['orderProjectID' => '2']) }}"
class="btn btn-outline-secondary float-right">Ver Lista</a>
</div>
</div>
</div>
{{-- Execucao --}}
<div class="col-md-3">
@ -114,11 +129,11 @@ class="btn btn-tool">
<span class="info-box-icon"><i class="fas fa-file-alt"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{__('messages.dashboard.on_going.description')}}</span>
<span class="info-box-text">{{ __('messages.dashboard.on_going.description') }}</span>
<span
class="info-box-number">{{ $CompanyProject->where('order_project', 3)->count() }}</span>
<span class="progress-description">
{{__('messages.dashboard.on_going.text')}}
{{ __('messages.dashboard.on_going.text') }}
</span>
</div>
<!-- /.info-box-content -->
@ -128,6 +143,50 @@ class="info-box-number">{{ $CompanyProject->where('order_project', 3)->count() }
<div class="card-body">
@foreach ($CompanyProject as $project)
@if ($project->order_project == 3)
<div class="card card-secondary card-outline">
<div class="card-header">
<h5 class="progress-description">{{ $project->company_project_description }}
</h5>
<div class="card-tools">
<a href="{{ route('ExecutionProject', ['projectID' => $project->company_projects_id]) }}"
class="btn btn-tool">
<i class="fa-solid fa-eye" style="color:rgb(62, 62, 62)"></i>
</a>
</div>
</div>
</div>
@endif
@endforeach
</div>
<div class="card-footer">
<a href="{{ route('viewProjectsList', ['orderProjectID' => '3']) }}"
class="btn btn-outline-secondary float-right">Ver Lista</a>
</div>
</div>
</div>
{{-- Concluidas --}}
<div class="col-md-3">
<div class="card card-row card-success">
<!-- Card header -->
<div class="card-header info-box bg-success">
<span class="info-box-icon"><i class="fas fa-check-circle"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{ __('messages.dashboard.finished.description') }}</span>
<span
class="info-box-number">{{ $CompanyProject->where('order_project', 4)->count() }}</span>
<span class="progress-description">
{{ __('messages.dashboard.finished.text') }} {{ now()->year }}.
</span>
</div>
<!-- /.info-box-content -->
</div>
<!-- /.info-box -->
<!-- /.Card header-->
<div class="card-body">
@foreach ($CompanyProject as $project)
@if ($project->order_project == 4)
<div class="card card-secondary card-outline">
<div class="card-header">
<h5 class="progress-description">{{ $project->company_project_description }}
@ -143,36 +202,11 @@ class="btn btn-tool">
@endif
@endforeach
</div>
<div class="card-footer">
<a href="{{ route('viewProjectsList', ['orderProjectID' => '4']) }}"
class="btn btn-outline-secondary float-right">Ver Lista</a>
</div>
</div>
{{-- Concluidas --}}
<div class="col-md-3">
<div class="card card-row card-success">
<!-- Card header -->
<div class="card-header info-box bg-success">
<span class="info-box-icon"><i class="fas fa-check-circle"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{__('messages.dashboard.finished.description')}}</span>
<span
class="info-box-number">{{ $CompanyProject->where('order_project', 4)->count() }}</span>
<span class="progress-description">
{{__('messages.dashboard.finished.text')}} {{ now()->year }}.
</span>
</div>
<!-- /.info-box-content -->
</div>
<!-- /.info-box -->
<!-- /.Card header-->
<div class="card-body">
@foreach ($CompanyProject as $project)
@if ($project->order_project == 4)
@endif
@endforeach
</div>
</div>
</div>
</div>
{{-- ./row --}}

View File

@ -16,14 +16,30 @@
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('assets/dist/css/adminlte.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/dist/css/countryFlag.css') }}">
</head>
<body class="hold-transition login-page">
@if (count($errors) > 0)
{{-- @if (count($errors) > 0)
<div class="alert alert-danger">
{{ implode('', $errors->all('<p>:message</p>')) }}
</div>
@endif --}}
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div style="width:50%">
<!-- /.login-logo -->
<div class="card card-outline card-primary">
@ -45,8 +61,8 @@
<div class="row">
<div class="col sm">
<div class="input-group mb-3">
<input type="text" name="name" class="form-control" placeholder="Primeiro Nome ..."
id="name" required>
<input type="text" name="name" class="form-control"
placeholder="Primeiro Nome ..." id="name" required>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
@ -68,7 +84,8 @@
</div>
<div class="col sm">
<div class="input-group mb-3">
<input type="email" name="pending_email" class="form-control" placeholder="Email" id="pending_email" required>
<input type="email" name="pending_email" class="form-control" placeholder="Email"
id="pending_email" required>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
@ -81,7 +98,7 @@
<div class="col sm">
<div class="input-group mb-3">
<input type="text" name="pending_nif" class="form-control" placeholder="Nif"
id="pending_nif" required>
id="pending_nif">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
@ -91,7 +108,7 @@
</div>
<div class="col sm">
<div class="input-group mb-3">
<input type="number" name="pending_phone" class="form-control" placeholder="Telemovel"
<input type="tel" name="pending_phone" class="form-control" placeholder="Telemovel"
id="pending_phone" required>
<div class="input-group-append">
<div class="input-group-text">
@ -99,14 +116,17 @@
</div>
</div>
</div>
{{-- <div class="iti">
<input type="tel" name="phone">
</div> --}}
</div>
</div>
<div class="row">
<div class="col sm">
<div class="input-group mb-3">
<input type="password" name="pending_password" class="form-control" placeholder="Password"
id="pending_password" required>
<input type="password" name="pending_password" class="form-control"
placeholder="Password" id="pending_password" required>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
@ -116,8 +136,9 @@
</div>
<div class="col sm">
<div class="input-group mb-3">
<input type="password" for="pending_password_confirmation" name="pending_password_confirmation" class="form-control"
placeholder="Check Password" >
<input type="password" for="pending_password_confirmation"
name="pending_password_confirmation" class="form-control"
placeholder="Check Password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
@ -127,11 +148,11 @@
</div>
</div>
@if ($errors->any())
{{-- @if ($errors->any())
<div class="alert alert-danger">
{{ implode('', $errors->all('<p>:message</p>')) }}
</div>
@endif
@endif --}}
<div class="row">
<div class="col-sm-8">
@ -150,6 +171,8 @@
</div>
<!-- /.register-box-->
<script src={{ asset('assets/dist/js/countryFlags.js') }}></script>
</body>
</html>

View File

@ -1626,7 +1626,7 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
}
});
});
</script> --}}
</script> --}}
{{-- Receber os Ambitos para criacao de equipamento manual --}}
<script>

View File

@ -0,0 +1,212 @@
@extends('Templates/templateAdmin')
@section('Main-content')
<!-- Content Header (Page header) -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
@if ($orderProjectID == '1')
<h1 class="breadcrumb-item active">Obras em Planeamento</h1>
@elseif($orderProjectID == '2')
<h1 class="breadcrumb-item active">Obras Preparadas</h1>
@elseif($orderProjectID == '3')
<h1 class="breadcrumb-item active">Obras em execução</h1>
@endif
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
@if ($orderProjectID == '1')
<li class="breadcrumb-item active">Obras em Planeamento</li>
@elseif($orderProjectID == '2')
<li class="breadcrumb-item active">Obras Preparadas</li>
@elseif($orderProjectID == '3')
<li class="breadcrumb-item active">Obras em execução</li>
@endif
</ol>
</div><!-- /.col -->
</div>
</div><!-- /.container-fluid -->
</section>
<!-- /.content-header -->
<section class="content">
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-md-12">
<div class="card card-primary" id="cardAssetsTable">
<div class="card-header">
<h3 class="card-title">{{ __('messages.portfolio.change_buttons.asset_table') }}</h3>
</div>
<!-- /.card-header -->
<div class="card-body">
<input type="hidden" name="projectOrder" id="projectOrder" value={{ $orderProjectID }}>
<div class="row text-center">
<div class="form-group col-sm">
<label>Clientes </label>
<select id="receiveAllClients" name="receiveAllClients" class="form-control">
<option value='#' selected>Mostrar Todos</option>
@foreach ($users as $user)
<option value="{{ $user->user_id }}">
{{ $user->user_name }}</option>
@endforeach
</select>
</div>
<div class="form-group col-sm" id="card-receivePlantClientRelated">
<label>Instalações </label>
<select id="receivePlantClientRelated" name="receivePlantClientRelated"
class="form-control">
<option value="#">Mostrar Todos</option>
</select>
</div>
{{-- <div class="col-sm" id="card-receiveUnitsClientRelated">
<div class="form-group">
<label>intervalo de tempo </label>
<select id="receiveUnitsClientRelated" name="receiveUnitsClientRelated"
class="form-control">
</select>
</div>
</div> --}}
</div>
<!-- row text-center -->
<table id="showAllProjscts" class="table table-bordered table-striped">
<thead>
<tr>
<th>Identificação do projecto</th>
<th>Número do Projeto ISPT</th>
<th>Gestor de Projeto ISPT</th>
<th>Cliente</th>
<th>Instalação</th>
<th>Data de Início do Projeto </th>
<th>Ações</th>
</tr>
</thead>
</table>
</div>
<!-- /.card-body -->
</div>
{{-- ./cardAssetsTable --}}
</div>
{{-- ./col-md-12 --}}
</div>
{{-- ./justify-content-center --}}
</section>
{{-- @foreach ($receiveProjectsForThisOrder as $projectsForThisOrder)
<h1>{{ $projectsForThisOrder->company_project_description }}</h1>
@endforeach --}}
@endsection
@section('scriptsTemplateAdmin')
<script type="text/javascript">
$(document).ready(function() {
// Esconde os cards inicialmente
$('#card-receivePlantClientRelated').hide();
$('#receiveAllClients').on('change', function() {
var receiveAllClients = $(this).val();
// Esconde ambos os cards ao mudar o cliente
$('#card-receivePlantClientRelated').hide();
//Se existir receiveAllClients e for diferente de '#'
if (receiveAllClients && receiveAllClients !== '#') {
$('#card-receivePlantClientRelated').show(); // Mostra o card de Plantas
// Faz a requisição AJAX para receber as plantas
$.ajax({
url: '/api/receivePlants/' + receiveAllClients,
type: 'GET',
success: function(data) {
var select = $('#receivePlantClientRelated');
select.empty(); // Limpa o select atual
select.append($('<option>', {
value: '#',
text: 'Mostrar Todas'
}));
// Preenche o select de Plantas
$.each(data, function(index, item) {
select.append($('<option>', {
value: item.id,
text: item.name
}));
});
}
});
}
});
});
</script>
<script type="text/javascript">
var dataTables;
$(document).ready(function() {
dataTables = $('#showAllProjscts').DataTable({
responsive: true,
processing: true,
serverSide: true,
ajax: {
url: '{{ route('getDataProjects') }}',
type: 'GET',
data: function(d) {
// Envia as variaveis de acordo com as opcoes selecionadas para o DataTables
d.receiveAllClients = $('#receiveAllClients').val();
d.receiveAllPlants = $('#receivePlantClientRelated').val();
d.projectOrder = $('#projectOrder').val();
}
},
columns: [{
data: 'company_project_description',
name: 'company_project_description'
},
{
data: 'project_company_number',
name: 'project_company_number'
},
{
data: 'project_ispt_responsible',
name: 'project_ispt_responsible'
},
{
data: 'client',
name: 'client'
},
{
data: 'plant_id',
name: 'plant_id'
},
{
data: 'date_started',
name: 'date_started'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
],
});
});
//De acordo com os valores deste campos, como anteriormente ja sao enviados para a DataTables para fazer as filtragens, agora atualizamos a Tabela com base no filtros feitos
$('#receiveAllClients,#receivePlantClientRelated').on('change',
function() {
dataTables.ajax.reload();
});
</script>
@endsection

View File

@ -37,9 +37,13 @@
return view('testDataTables');
});
route::get('changeStateProject/{projectId}',[CreateProjectController::class,'changeStateProject'])->name('changeStateProject');
route::get('deleteProject/{projectId}', [CreateProjectController::class,'deleteProject'])->name('deleteProject');
Route::get('viewProjectsList/{orderProjectID}',[ProjectoDatacontroller::class,'viewProjectsList'])->name('viewProjectsList');
Route::get('changeStateProject/{projectId}',[CreateProjectController::class,'changeStateProject'])->name('changeStateProject');
Route::get('deleteProject/{projectId}', [CreateProjectController::class,'deleteProject'])->name('deleteProject');
Route::get('/checkProjectIsptNumber/{projectId?}',[ProjectoDatacontroller::class,'checkProjectIsptNumber'])->name('checkProjectIsptNumber');
@ -47,6 +51,7 @@
Route::get('showDetailsEquipmentForQrCode/{equipmentId}/{projectId}', [PreparedProjectController::class, 'showDetailsEquipmentForQrCode'])->name('showDetailsEquipmentForQrCode');
Route::get('showAllEquipmentsInProjectForQrCode/{projectId}' , [PreparedProjectController::class,'showAllEquipmentsInProjectForQrCode'])->name('showAllEquipmentsInProjectForQrCode');
@ -70,11 +75,13 @@
Route::get('getDataEquipment', [ExecutionProjectController::class, 'getDataEquipment'])->name('getDataEquipment');
Route::post('deleteEquipmentInProject',[CreateProjectController::class,'deleteEquipmentInProject'])->name('deleteEquipmentInProject');
Route::post('changeAmbitEquipment',[CreateProjectController::class,'changeAmbitEquipment'])->name('changeAmbitEquipment');
Route::get('getDataEquipmentClient', [ExecutionProjectController::class, 'getDataEquipmentClient'])->name('getDataEquipmentClient');
Route::get('getDataProjects', [ClientController::class, 'getDataProjects'])->name('getDataProjects');
Route::get('getDataProjectsClient', [ClientController::class, 'getDataProjectsClient'])->name('getDataProjectsClient');
Route::get('showReportingEquipmentProject/{dataEquipment}', [ClientController::class, 'showReportingEquipmentProject'])->name('showReportingEquipmentProject'); //oK
@ -93,8 +100,6 @@
// Route::get('getEquipment', [UsersDataTable::class,'getEquipment'])->name('getEquipment');
// Route::get('getEquipment', [UsersDataTable::class, 'html'])->name('getEquipment');
Route::post('language/switch', [LanguageController::class, 'switchLanguage'])->name('language.switch');
// Esta rota so pode aceder quem tiver o link atravez do email
@ -211,7 +216,7 @@
// indication of progress bar to projects that are in 'Planning'
Route::get('projectDetails_1/{id}', 'showStep1')->name('projectDetails_1');
Route::get('articulated_2/{id}', 'showStep2')->name('articulated_2');
Route::get('articulated_2/{projectID}', 'showStep2')->name('articulated_2');
Route::get('workStation_3/{id}', 'showStep3')->name('workStation_3');
// Para adicionar uma tarefa Complementar
@ -249,10 +254,10 @@
});
Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData');
Route::get('preparedProject/{ProjectId}', [PreparedProjectController::class, 'PreparedProject'])->name('preparedProject');
Route::get('preparedProject/{projectID}', [PreparedProjectController::class, 'PreparedProject'])->name('preparedProject');
Route::get('EditProjectForArticulated', [PreparedProjectController::class, 'editProjectForArticulated'])->name('EditProjectForArticulated');
Route::get('ExecutionProject/{ProjectId}', [ExecutionProjectController::class, 'receiveExecutionProject'])->name('ExecutionProject');
Route::get('ExecutionProject/{projectID}', [ExecutionProjectController::class, 'receiveExecutionProject'])->name('ExecutionProject');
Route::get('/ReceiveEquipmentIdForShowModal/{EquipmentID}', [ExecutionProjectController::class, 'receiveEquipmentIdForShowModal'])->name('ReceiveEquipmentIdForShowModal ');

View File

@ -13,10 +13,10 @@
|
*/
'reset' => 'A sua palavra-passe foi redefinida.',
'sent' => 'Enviamos para o seu email uma ligação para redefinir a sua senha.',
'reset' => 'A sua palavra-passe foi redefinida com sucesso.',
'sent' => 'Enviámos para o seu email uma ligação para redefinir a sua palavra-passe.',
'throttled' => 'Por favor, aguarde antes de tentar novamente.',
'token' => 'Este token de redefinição de senha é inválido.',
'user' => "Nenhum utilizador encontrado em este endereço de email.",
'token' => 'Este token de redefinição de palavra-passe é inválido.',
'user' => "Não foi encontrado nenhum utilizador com este endereço de email.",
];