user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg'); // $pdf = PDF::loadView('userClient.pdfReportings.showReportingAllEquipmentsForAmbitProject', [ // '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); } }