Page has been created to visualize all the jobs according to the current order
This commit is contained in:
parent
4e7215e9b7
commit
0ac269c5d7
2
.env
2
.env
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
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
15664
public/assets/dist/js/countryFlags.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
public/img/flagsImg/flags.png
Normal file
BIN
public/img/flagsImg/flags.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 69 KiB |
BIN
public/img/flagsImg/flags@2x.png
Normal file
BIN
public/img/flagsImg/flags@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 170 KiB |
|
|
@ -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 --}}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 --}}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
212
resources/views/projectsClients/viewProjectsList.blade.php
Normal file
212
resources/views/projectsClients/viewProjectsList.blade.php
Normal 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
|
||||
|
|
@ -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 ');
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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.",
|
||||
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user