first();
// $receiveDataEquipments = Equipment::where('company_projects_id', $projectId)->get();
return view('userClient.showReportingAllEquipmentsForAmbitProject', compact('ambitId', 'projectId','dataAmbit'));
}
public function getEquipmentsOfAmbit(Request $request)
{
$projectId = $request->get('projectId');
$ambitId = $request->get('ambitId');
$dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
$receiveDataEquipments = Equipment::where('company_projects_id', $projectId)->get();
$filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id)
->whereIn('equipment_id', $receiveDataEquipments->pluck('equipment_id'))
->get();
$query = Equipment::whereIn('equipment_id', $filteredAssociations->pluck('equipment_id'))->get();
// $query = Equipment::select(['ispt_number', 'unit_id', 'equipment_tag'])->get();
return DataTables::of($query)
// Adicione aqui qualquer manipulação de dados ou colunas adicionais que você precise
->make(true);
}
public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
{
// Obter o caminho da imagem do usuário ou uma imagem padrão
$userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg');
$dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
$receiveDataEquipments = Equipment::where('company_projects_id', $projectId)->get();
$filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id)
->whereIn('equipment_id', $receiveDataEquipments->pluck('equipment_id'))
->get();
$equipmentDetails = Equipment::whereIn('equipment_id', $filteredAssociations->pluck('equipment_id'))->get();
$pdf = PDF::loadView('userClient.pdfReportings.equipmentsForAmbitPdf', [
'equipmentDetails' => $equipmentDetails,
'userLogoPath' => $userLogoPath,
'dataAmbit' => $dataAmbit,
'projectId' => $projectId
])->setPaper('a4', 'landscape');
return $pdf->stream('relatorio_teste.pdf');
// return view('userClient.pdfReportings.showReportingAllEquipmentsForAmbitProject', [
// 'userLogoPath' => $userLogoPath,
// 'dataAmbit' => $dataAmbit,
// 'projectId' => $projectId
// ]);
}
public function getDataAllEquipmentsForAmbitOfProject(Request $request)
{
$projectId = $request->get('projectId');
$dataAmbit = $request->get('dataAmbit');
// // Construa a consulta para buscar os equipamentos associados ao âmbito e projeto especificados
// $query = Equipment::whereHas('ambits', function ($q) use ($dataAmbit) {
// $q->where('id', $dataAmbit); // Aqui, 'id' deve ser o campo que identifica unicamente um âmbito na tabela de âmbitos
// })->whereHas('projects', function ($q) use ($projectId) {
// $q->where('id', $projectId); // Aqui, 'id' deve ser o campo que identifica unicamente um projeto na tabela de projetos
// });
// // Utilize o Yajra DataTables para formatar a resposta
// return DataTables::of($query)
// // Adicione aqui qualquer coluna ou manipulação de dados adicionais que você precise
// ->make(true);
// Primeiro, vamos filtrar os equipamentos que pertencem ao projeto especificado.
$equipmentsOfProject = Equipment::where('company_projects_id', $projectId)->pluck('equipment_id');
// Em seguida, vamos filtrar esses equipamentos para obter apenas aqueles associados ao âmbito especificado.
$equipmentsQuery = Equipment::whereIn('equipment_id', $equipmentsOfProject)
->whereHas('equipmentAssociationAmbit', function ($q) use ($dataAmbit) {
$q->where('ambits_id', $dataAmbit);
})
->select(['equipment_id', 'ispt_number', 'unit_id', 'equipment_tag']); // Selecionar apenas as colunas necessárias
// Utilize o Yajra DataTables para formatar a resposta
return DataTables::of($equipmentsQuery)
// Adicione aqui qualquer manipulação de dados ou colunas adicionais que você precise
->make(true);
}
public function getDataAmbitsOfProject(Request $request)
{
// Recebe o id do Projecto atual
$projectId = $request->get('projectId');
// Recebe os IDS passados de todos os âmbitos do projeto atual
$AmbitsIdString = $request->get('AmbitsIdString');
$AmbitsIdArray = explode(",", $AmbitsIdString); // Converter de string para Array
$query = AmbitsEquipment::whereIn('ambits_id', $AmbitsIdArray)
->select(['ambits_id', 'ambits_description']);
return Datatables::of($query)
->addColumn('amountEquipment', function ($ambitsEquipment) use ($projectId) {
// Contar quantos equipamentos estão associados a este âmbito para o projeto específico
return EquipmentAssociationAmbit::where('ambits_id', $ambitsEquipment->ambits_id)
->whereHas('Equipment', function ($q) use ($projectId) {
$q->where('company_projects_id', $projectId);
})->count();
})
->addColumn('action', function ($dataAmbitProject) use ($projectId) { // Incluindo $projectId no escopo da função anônima
$actionBtn = '';
return $actionBtn;
})
->make(true);
}
public function showReportingEquipmentProject($dataEquipment)
{
dd($dataEquipment);
// return view('showReportingEquipmentProject');
}
public function getDataEquipmentsOfProject(Request $request)
{
$projectId = $request->get('projectId');
$query = Equipment::join('equipment_association_ambits', 'equipments.equipment_id', '=', 'equipment_association_ambits.equipment_id')
->join('ambits_equipments', 'equipment_association_ambits.ambits_id', '=', 'ambits_equipments.ambits_id')
->where('equipments.company_projects_id', $projectId)
->select([
'equipments.equipment_id',
'equipments.unit_id',
'equipments.equipment_tag',
'equipments.equipment_type_id',
'ambits_equipments.ambits_description as ambits_description'
]);
$dataEquipentProject = $query->get();
// Retornar a resposta para o DataTables
return Datatables::of($dataEquipentProject)
->addColumn('action', function ($dataEquipment) {
$actionBtn = '';
return $actionBtn;
})
->make(true);
}
public function showDataDetailsProjectClient($projectID)
{
// Recebe os detalhes do Projecto.
$receiveDataProject = CompanyProject::where('company_projects_id', $projectID)->first();
// Recebe todas as Fabricas relacionadas a intalacao do Projecto recebido.
$receiveUnitsOfProject = Unit::where('plant_id', $receiveDataProject->plant_id)->get();
$receiveAllTypeEquipments = EquipmentType::all();
$receiveAllEquipmentsOfProject = Equipment::where('company_projects_id', $projectID)->get();
// Primeiro, obtenha todos os 'equipment_id' como um array
$equipmentIds = $receiveAllEquipmentsOfProject->pluck('equipment_id')->toArray();
// Agora, use 'whereIn' com esse array de 'equipment_id'
$receiveAmbitsOfProject = EquipmentAssociationAmbit::whereIn('equipment_id', $equipmentIds)->get();
// Recebe os todos os ambitos do projecto
$AmbitsId = $receiveAmbitsOfProject->pluck('ambits_id')->unique()->toArray();
// Vamos passar os ids dos Ambitos para a view, para envialos para a Tabela Yajra. e carregar com base nos Ambitos
$AmbitsIdString = implode(",", $AmbitsId);
// Recebe os dados de cada Ambito
$receiveDataAmbitsProject = AmbitsEquipment::whereIn('ambits_id', $AmbitsId)->get();
return view('userClient.showDataDetailsProjectClient', compact('receiveDataProject', 'receiveUnitsOfProject', 'receiveAllTypeEquipments', 'receiveDataAmbitsProject', 'AmbitsIdString'));
}
public function getDataProjectsClient(Request $request)
{
$allPlantsClient = $request->get('allPlantsClient');
$receiveAllPlants = $request->get('receiveAllPlants');
$receiveAllUnits = $request->get('receiveAllUnits');
$receiveEquipmentsType = $request->get('receiveEquipmentsType');
//Criar Filtros para Atualizar os dados com base neles.
$client = Auth::user()->user_id;
$allPlantsClient = Plant::where('user_id', $client)->pluck('plant_id')->toArray();
$query = CompanyProject::with('plant') // Assegure-se de que a relação está correta.
->whereIn('plant_id', $allPlantsClient)
->whereNotNull('end_date')
->select(['company_projects_id', 'plant_id', 'project_company_number', 'company_project_description', 'project_company_responsible', 'date_started', 'end_date']);
$dataProjectsClient = $query->get();
return Datatables::of($dataProjectsClient)
->addColumn('plant_name', function ($item) { // Ajuste na função anônima
return $item->plant ? $item->plant->plant_name : 'N/A'; // Acessando plant_name
})
->addColumn('action', function ($projectClient) {
$actionBtn = '';
return $actionBtn;
})
->make(true);
}
public function receiveProjectsClient()
{
$client = Auth::user()->user_id;
$recevePlantClient = Plant::where('user_id', $client)->get();
// Extrai os plant_id da coleção $recevePlantClient
$plantsIds = $recevePlantClient->pluck('plant_id');
// Busca todos os CompanyProject que têm um plant_id dentro da lista $plantIds
$allProjectsClient = CompanyProject::whereIn('plant_id', $plantsIds)->get();
return view('userClient.dashboardClient', compact('allProjectsClient'));
}
public function receiveManageAssetsClient()
{
$client = Auth::user()->user_id;
$allPlantsClient = Plant::where('user_id', $client)->get();
// Extrai os plant_id da coleção $recevePlantClient
$plantsIds = $allPlantsClient->pluck('plant_id');
// Busca todas as fabricas referente a plantas recebidas, guardamos o id de cada fabrica em $unitsIds
$allUnitsClient = Unit::whereIn('plant_id', $plantsIds)->get();
$unitsIds = $allUnitsClient->pluck('unit_id');
// Recebemos todos os equipamentos do cliente logado.
$allEquipmentsClient = Equipment::whereIn('unit_id', $unitsIds)->get();
// Recebe todos os tipos de equipamento
$allEquipmentType = EquipmentType::all();
return view('userClient.manageAssetsClient', compact('client', 'allPlantsClient', 'allUnitsClient', 'allEquipmentType', 'allEquipmentsClient'));
}
public function reportingDataClient()
{
$client = Auth::user()->user_id;
// Busca todas as Instalacoes com base no id do CLIENTE
$allPlantsClient = Plant::where('user_id', $client)->get();
// Extrai os plant_id da coleção $recevePlantClient
$plantsIds = $allPlantsClient->pluck('plant_id');
$allProjectsClient = CompanyProject::whereIn('plant_id', $plantsIds)->get();
// Obtém todos os anos distintos da coluna 'date_started'
$yearsProjects = CompanyProject::selectRaw('YEAR(date_started) as year')
->distinct()
->orderBy('year', 'desc')
->pluck('year');
return view('userClient.reportingDataClient', compact('allPlantsClient', 'yearsProjects'));
}
public function receiveMonths($yearsProjects)
{
// Obtenha todos os meses distintos da coluna 'date_started' para o ano especificado
$monthsData = CompanyProject::selectRaw('MONTH(date_started) as month')
->whereYear('date_started', $yearsProjects)
->distinct()
->orderBy('month', 'asc')
->get();
// Formatar os dados para enviar como JSON
$formattedData = $monthsData->map(function ($item) {
$monthName = date("F", mktime(0, 0, 0, $item->month, 1)); // Converta o número do mês para o nome do mês
return [
'id' => $item->month, // Você pode optar por enviar o número do mês
'name' => $monthName // ou o nome do mês, dependendo do que a sua aplicação necessita
];
});
// Retorna os dados em formato JSON
return response()->json($formattedData);
}
public function receiveDays($yearProjects, $monthsProjects)
{
// Obtenha todos os dias distintos para o mês e ano especificados
$daysData = CompanyProject::selectRaw('DAY(date_started) as day')
->whereYear('date_started', $yearProjects)
->whereMonth('date_started', $monthsProjects)
->distinct()
->orderBy('day', 'asc')
->get();
// Formatar os dados para enviar como JSON
$formattedData = $daysData->map(function ($item) {
return [
'id' => $item->day, // O número do dia
'name' => $item->day // O nome do dia, que neste caso é apenas o número
];
});
// Retorna os dados em formato JSON
return response()->json($formattedData);
}
}