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(); $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first(); $receiveDataEquipments = Equipment::where('equipments.company_projects_id', $projectId) ->join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id') ->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipment_work_historys.ispt_number') // Adicionei 'equipment_work_historys.ispt_number' aqui ->pluck('equipmentWorkHistorys_id'); $filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id) ->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments) ->get(); $equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id'); $query = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds) ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id') ->select('equipments.*', 'equipment_work_historys.ispt_number as ispt_number') // Adicionei 'equipment_work_historys.ispt_number as ispt_number' aqui ->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'); // Pega a data e hora atual $dataAtual = Carbon::now(); // Se quiser formatar a data, pode fazer assim: $dataFormatada = $dataAtual->format('Y-m-d H:i:s'); $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first(); $receiveDataEquipments = Equipment::where('equipments.company_projects_id', $projectId) // Adicionado 'equipments.' para remover a ambiguidade ->join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id') ->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipments.*') // Pegando o ID da tabela equipment_work_historys e todos os campos da tabela equipments ->get(); $filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id) ->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments->pluck('equipmentWorkHistorys_id')) // Usando equipmentWorkHistorys_id em vez de equipment_id ->get(); $equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id'); // Agora, em vez de buscar diretamente em Equipment, vamos pegar os detalhes via EquipmentWorkHistory $equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds) ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id') ->select('equipments.*', 'equipment_work_historys.*') // Seleciona todos os campos das tabelas equipments e equipment_work_historys ->get(); // $equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds) // ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id') // ->leftJoin('specific_attributes_equipment_types', 'equipments.equipment_id', '=', 'specific_attributes_equipment_types.equipment_id') // Fazendo a junção com a tabela 'specific_attributes_equipment_types' // ->select( // 'equipments.*', // 'equipment_work_historys.*', // 'specific_attributes_equipment_types.general_attributes_equipment_id', // 'specific_attributes_equipment_types.specific_attributes_value' // ) // ->get() // // Junta os dados obtidos na tabela : specific_attributes_equipment_types, e como os dados na colecao de cada equipamento. // ->transform(function ($item) { // // Aqui você transforma cada item da coleção, adicionando o novo par de chave-valor // $item->specific_attributes = [ // $item->general_attributes_equipment_id => $item->specific_attributes_value // ]; // // Remove as colunas desnecessárias para evitar duplicação // unset($item->general_attributes_equipment_id, $item->specific_attributes_value); // return $item; // }); $detalsProject = CompanyProject::where('company_projects_id', $projectId)->first(); $pdf = PDF::loadView('userClient.pdfReportings.equipmentsForAmbitPdf', [ 'equipmentDetails' => $equipmentDetails, 'userLogoPath' => $userLogoPath, 'dataAmbit' => $dataAmbit, 'projectId' => $projectId, 'detalsProject' => $detalsProject, 'dataFormatada' => $dataFormatada ])->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) // Primeiro, juntar-se com equipment_work_historys ->join('equipment_work_historys', 'equipment_association_ambits.equipmentWorkHistorys_id', '=', 'equipment_work_historys.equipmentWorkHistorys_id') // Depois, juntar-se com equipments ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id') // Agora, podemos filtrar pela company_projects_id ->where('equipments.company_projects_id', $projectId) ->count(); }) ->addColumn('action', function ($dataAmbitProject) use ($projectId) { $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_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id') // Juntar-se com equipment_association_ambits usando equipment_work_historys ->join('equipment_association_ambits', 'equipment_work_historys.equipmentWorkHistorys_id', '=', 'equipment_association_ambits.equipmentWorkHistorys_id') // Juntar-se com ambits_equipments ->join('ambits_equipments', 'equipment_association_ambits.ambits_id', '=', 'ambits_equipments.ambits_id') // Filtrar por company_projects_id ->where('equipments.company_projects_id', $projectId) // Selecionar os campos desejados ->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(); //Recebe todos os tipos de equipamentos $receiveAllTypeEquipments = EquipmentType::all(); $receiveAllEquipmentsOfProject = EquipmentWorkHistory::where('company_projects_id', $projectID)->get(); // Obtendo todos os IDs de equipmentWorkHistorys $equipmentWorkHistoryIds = $receiveAllEquipmentsOfProject->pluck('equipmentWorkHistorys_id'); // para a variavel obter o valor esperado precisamos separar os id como na varaivel acima, ele nao funciona diretamente com a variavel receiveAllEquipmentsOfProject, pois e uma colecao !! $receiveEquipmentAssociatedAmbit = EquipmentAssociationAmbit::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds)->get(); // Recebe os todos os ambitos do projecto $AmbitsId = $receiveEquipmentAssociatedAmbit->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) { // Filtros ... $allPlantsClient = $request->get('allPlantsClient'); $receiveAllPlants = $request->get('receiveAllPlants'); $receiveAllUnits = $request->get('receiveAllUnits'); $receiveEquipmentsType = $request->get('receiveEquipmentsType'); $clientID = $request->get('clientID'); //Criar Filtros para Atualizar os dados com base neles. $allPlantsClient = Plant::where('user_id', $clientID)->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($clientID = null) { // Se clientID não foi passado, usamos o ID do usuário autenticado if (is_null($clientID)) { $clientID = Auth::user()->user_id; } // Busca todas as Instalacoes com base no id do CLIENTE $allPlantsClient = Plant::where('user_id', $clientID)->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('clientID','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); } }