diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index 2ef62ba5..7205658f 100755 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -19,6 +19,9 @@ use App\Services\PdfWrapper; use Illuminate\Support\Facades\Storage; +use ZipArchive; + + use Yajra\DataTables\Facades\DataTables; @@ -43,6 +46,336 @@ class ProjectoDatacontroller extends Controller { + public function DownloadAllPdfsWork(Request $request) + { + // Recuperar todos os equipamentos relacionados ao projeto + $detailsEquipments = Equipment::where("company_projects_id", $request->projectID)->get(); + + $receiveDetailsProject = CompanyProject::where('company_projects_id', $request->projectID)->first(); + $files = []; + + foreach ($detailsEquipments as $detailsEquipment) { + + // Obter o histórico de trabalho do equipamento atual + $detailsEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $detailsEquipment->equipment_id)->first(); + + // Obter o âmbito associado ao histórico de trabalho do equipamento atual + $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)->first(); + + // Inicializa o array para armazenar os atributos específicos + $specificAttributesArray = []; + + $receiveSpecificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $detailsEquipment->equipment_id)->get(); + $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)->first(); + $receiveDetailsProject = CompanyProject::where('company_projects_id', $detailsEquipmentWorkHistory->company_projects_id)->first(); + + // Corre a coleção e preenche o array 'specificAttributesArray' + foreach ($receiveSpecificAttributes as $attribute) { + // Verifica se a relação com 'generalAttributesEquipment' existe para evitar erro + if (isset($attribute->generalAttributesEquipment)) { + $key = $attribute->general_attributes_equipment_id; + $description = $attribute->generalAttributesEquipment->general_attributes_equipment_description; + $value = $attribute->specific_attributes_value; + + // Adiciona ao array temporário com a estrutura chave => [description, value] + $specificAttributesArray[$key] = [ + 'description' => $description, + 'value' => $value + ]; + } + } + + // Atribui o array de 'SpecificAttributes' ao modelo usando o método 'setAttribute' + $detailsEquipment->setAttribute('specificAttributes', $specificAttributesArray); + + // Recebe apenas as tarefas já feitas + $completedTasksHistory = ControlEquipmentWorkstation::with('workstationsTaskAnswers', 'receiveImages') + ->where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id) + ->whereNotNull('entry_date') + ->whereNotNull('departure_date') + ->has('workstationsTaskAnswers') + ->orderBy('elemental_tasks_id', 'asc') + ->get(); + + + // Verifica se a coleção tem registros + if ($completedTasksHistory->isNotEmpty()) { + // Obter a data mais antiga (primeira tarefa feita) + $oldestDate = $completedTasksHistory->min('departure_date'); + + // Obter a data mais recente (última tarefa feita) + $latestDate = $completedTasksHistory->max('departure_date'); + + // Formata as datas apenas para mostrar o dia + $startDate = \Carbon\Carbon::parse($oldestDate)->format('Y-m-d'); + $endDate = \Carbon\Carbon::parse($latestDate)->format('Y-m-d'); + + } else { + + // Caso não haja dados, defina datas nulas + $startDate = null; + $endDate = null; + } + + // Apos receber todas as tarefas deve verificar qual o ambito atual e comparar em qual ambito foram feitas as tarefas, ai sim verificar oque foi feito no Ambito antigo e oque foi feito no atual. + // histórico de âmbitos por time_change_ambit do mais antigo ao mais recente + $receiveAmbitHistory = HistoryOfEquipmentAmbitsInTheProject::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id) + ->orderBy('time_change_ambit', 'desc') + ->get(); + + + // Identifica o último âmbito (o mais recente) + $latestAmbitHistory = $receiveAmbitHistory->last(); + + // Separa as tarefas do histórico por âmbitos diferentes + $tasksByAmbit = $completedTasksHistory->groupBy('history_of_equipment_ambits_id'); + + + //coleção para armazenar todas as tarefas, concluídas e não concluídas + $receiveAllTasksHistiory = collect(); + $taskImages = []; + + // Contador para a ordem dos âmbitos + $ambitCounter = 1; + + + // Itera sobre cada âmbito anterior + foreach ($receiveAmbitHistory as $index => $ambitHistory) { + + $ambitId = $ambitHistory->history_of_equipment_ambits_id; + + + // Verifica se há tarefas associadas a esse âmbito + if ($tasksByAmbit->has($ambitId)) { + $tasksForAmbit = $tasksByAmbit->get($ambitId); + + // Loop para associar a ultima tarefa feita de acordo com o ambito relacionado com ela. + foreach ($tasksForAmbit as $taskHistory) { + if ($ambitId == $latestAmbitHistory->history_of_equipment_ambits_id) { + + // Se a tarefa pertence ao último âmbito (mais recente) + $taskHistory->cardTypeStyle = 'gray'; + $taskHistory->typeStatusHistory = 'historic'; + } else { + + // Se a tarefa pertence a âmbitos anteriores + $taskHistory->cardTypeStyle = 'blue'; + $taskHistory->AmbitHistoryTimeChange = $ambitHistory->time_change_ambit; + $taskHistory->AmbitHistoryOrder = $ambitCounter; // Adiciona o contador + $taskHistory->typeStatusHistory = 'historic'; + + // Adiciona AmbitName dinamicamente + if ($ambitHistory->AmbitsEquipment) { + $taskHistory->AmbitName = $ambitHistory->AmbitsEquipment->ambits_description; + } else { + $taskHistory->AmbitName = 'N/A'; // Defina 'N/A' ou outro valor se não houver AmbitsEquipment + } + } + + // Verifica se há um comentário associado e adiciona ao taskHistory + if ($taskHistory->taskEquipmentComment) { + $taskHistory->taskComment = $taskHistory->taskEquipmentComment->task_comment; + } + + // else { + // $taskHistory->taskComment = 'N/A'; // Ou qualquer outro valor padrão caso não tenha comentário + // } + + //recebe os dados do id da workstations_task_answers_id, control_equipment_workstation_id e as respostar : answer_json + $workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first(); + + if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) { + $answersArray = json_decode($workstationTaskAnswer->answer_json, true); + $formattedAnswers = []; + foreach ($answersArray as $item) { + if (isset($item['question']) && isset($item['value'])) { + $formattedAnswers[$item['question']] = $item['value']; + } + } + $taskHistory->formatted_answers = $formattedAnswers; + } else { + $taskHistory->formatted_answers = []; + } + + if ($taskHistory->receiveImages) { + $imagePaths = $taskHistory->receiveImages->image_paths; + $taskImages[$taskHistory->control_equipment_workstation_id] = is_array($imagePaths) ? $imagePaths : json_decode($imagePaths, true); + } else { + $taskImages[$taskHistory->control_equipment_workstation_id] = []; + } + + $receiveAllTasksHistiory->push($taskHistory); + } + } + + // Incrementa o contador para o próximo âmbito + $ambitCounter++; + } + + // Agrupa as tarefas concluídas por elemental_tasks_id e seleciona a mais recente por departure_date + $receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy(function ($item) { + return $item->elemental_tasks_id; + })->map(function ($group) { + return $group->sortByDesc('departure_date')->first(); + }); + + + // Define os caminhos das logos- Simbolo ISPT_4.0 + // $defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg'; + + $defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-8.png'; + + $isptLogoPath = '/img/ispt/ispt.jpg'; + + // Verifica se a logo do projeto está definida e não está vazia + $projectLogoPath = !empty($receiveDetailsProject->plant->company->project_logo) ? $receiveDetailsProject->plant->company->project_logo : $defaultLogoPath; + + // Verifica se a logo da empresa está definida e não está vazia + if (!empty($receiveDetailsProject->plant->company->company_logo)) { + $companyLogoPath = '/companies_logo/' . $receiveDetailsProject->plant->company->company_logo; + } else { + $companyLogoPath = $defaultLogoPath; + } + + // Cria uma coleção para armazenar os históricos de âmbitos + $ambitHistories = collect(); + + // Itera sobre a coleção original $receiveAllTasksHistiory + foreach ($receiveAllTasksHistiory as $taskHistory) { + + // Verifica se os campos AmbitHistoryTimeChange e AmbitHistoryOrder estão presentes + if (isset($taskHistory->AmbitHistoryTimeChange) && isset($taskHistory->AmbitHistoryOrder)) { + + // Extrai apenas a data da coluna AmbitHistoryTimeChange + $ambitDate = \Carbon\Carbon::parse($taskHistory->AmbitHistoryTimeChange)->format('Y-m-d'); + + // Cria uma nova entrada com os valores desejados + $ambitHistories->push([ + 'AmbitHistoryOrder' => $taskHistory->AmbitHistoryOrder, + 'AmbitName' => isset($taskHistory->AmbitName) ? $taskHistory->AmbitName : 'N/A', + 'AmbitHistoryTimeChange' => $ambitDate + ]); + } + } + + // Apos receber todas as tarefas deve verificar qual o ambito atual e comparar em qual ambito foram feitas as tarefas, ai sim verificar oque foi feito no Ambito antigo e oque foi feito no atual. + // histórico de âmbitos por time_change_ambit do mais antigo ao mais recente + $receiveAmbitHistory = HistoryOfEquipmentAmbitsInTheProject::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id) + ->orderBy('time_change_ambit', 'desc') + ->get(); + + // Gerar o PDF individualmente usando a classe PdfWrapper + $pdfWrapper = new PdfWrapper(); + + $pdf = $pdfWrapper->loadView('projectsClients.pdf.testePdf', [ + // 'detailsEquipment' => $detailsEquipment, + // 'detailsEquipmentWorkHistory' => $detailsEquipmentWorkHistory, // Incluindo a variável no PDF + // 'receiveDetailsProject' => $receiveDetailsProject, + // // ambitHistories + + // 'ambito' => $receiveAmbit->ambitsEquipment->ambits_description ?? 'N/A', // Incluindo o âmbito associado + // // receiveAllTasksHistiory + // // taskImages + + // 'projectLogoPath' => $projectLogoPath, + // 'companyLogoPath' => $companyLogoPath, + // 'isptLogoPath' => $isptLogoPath + + + 'detailsEquipment' => $detailsEquipment, + 'detailsEquipmentWorkHistory' => $detailsEquipmentWorkHistory, + 'receiveDetailsProject' => $receiveDetailsProject, + 'ambitHistories' => $ambitHistories, + 'dataControlEquipment' => 'null', + + 'ambito' => $receiveAmbit->ambitsEquipment->ambits_description, + 'recebeTasksForEquipment' => $receiveAllTasksHistiory, + 'taskImages' => $taskImages, + 'projectLogoPath' => $projectLogoPath, + 'companyLogoPath' => $companyLogoPath, + 'isptLogoPath' => $isptLogoPath, + + 'oldestDate' => $startDate, // Data mais antiga + 'latestDate' => $endDate // Data mais recente + ]); + + // Definir o caminho para salvar o PDF + $filePath = 'temp/pdfs/Tag_' . $detailsEquipment->equipment_tag . '.pdf'; + + // Salvar o PDF no armazenamento local usando stream() com false para pegar o conteúdo + Storage::put($filePath, $pdf->stream('', ['Attachment' => false])); + + // Adicionar o caminho do PDF na lista de arquivos + $files[] = storage_path('app/' . $filePath); + } + + + // Gerar o arquivo ZIP com todos os PDFs + $zipFilePath = $this->createZipWithPdfs($files, 'Relatorios Pdf Obra_' . $receiveDetailsProject->company_project_description . '.zip'); + + // Retornar o arquivo ZIP para download + return response()->download($zipFilePath)->deleteFileAfterSend(true); + } + + + // public function createZipWithPdfs($files, $zipFileName) + // { + // $zip = new ZipArchive; + // $zipDir = storage_path('app/temp/zips/'); + // // Verifique se o diretório existe, caso contrário, crie-o + // if (!is_dir($zipDir)) { + // mkdir($zipDir, 0777, true); // Cria o diretório com permissões de escrita + // } + // $zipPath = $zipDir . $zipFileName; + // if ($zip->open($zipPath, ZipArchive::CREATE) === TRUE) { + // foreach ($files as $file) { + // $fileName = basename($file); // Pega o nome do arquivo + // $zip->addFile($file, $fileName); // Adiciona o arquivo PDF ao ZIP + // } + // $zip->close(); + // } else { + // throw new \Exception("Não foi possível criar o arquivo ZIP."); + // } + // return $zipPath; // Caminho para o ZIP gerado + // } + + + public function createZipWithPdfs($files, $zipFileName) + { + $zip = new ZipArchive; + + // Definir o caminho do diretório para armazenar o ZIP temporário + $zipDir = storage_path('app/temp/zips/'); + + // Garantir que o diretório "temp/zips" exista ou crie-o com permissões adequadas + if (!Storage::exists('temp/zips')) { + Storage::makeDirectory('temp/zips', 0777, true); + } + + // Definir o caminho completo para o arquivo ZIP + $zipPath = $zipDir . $zipFileName; + + // Tentar abrir o arquivo ZIP, se falhar, lançar exceção + if ($zip->open($zipPath, ZipArchive::CREATE) === TRUE) { + foreach ($files as $file) { + // Pega o nome do arquivo + $fileName = basename($file); + // Adiciona o arquivo PDF ao ZIP + $zip->addFile($file, $fileName); + } + // Finaliza o ZIP + $zip->close(); + } else { + throw new \Exception("Não foi possível criar o arquivo ZIP."); + } + + // Retornar o caminho para o ZIP gerado + return $zipPath; + } + + + + public function completedEquipmentInProject(Request $request) { @@ -96,36 +429,25 @@ public function createPDFforcompletedEquipment($equipmentId) // Inicializa o array para armazenar os atributos específicos $specificAttributesArray = []; - - $receiveSpecificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $detailsEquipment->equipment_id)->get(); - $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)->first(); - $receiveDetailsProject = CompanyProject::where('company_projects_id', $detailsEquipmentWorkHistory->company_projects_id)->first(); - - // Corre a coleção e preenche o array 'specificAttributesArray' - foreach ($receiveSpecificAttributes as $attribute) { - // Verifica se a relação com 'generalAttributesEquipment' existe para evitar erro - if (isset($attribute->generalAttributesEquipment)) { - $key = $attribute->general_attributes_equipment_id; - $description = $attribute->generalAttributesEquipment->general_attributes_equipment_description; - $value = $attribute->specific_attributes_value; - - // Adiciona ao array temporário com a estrutura chave => [description, value] - $specificAttributesArray[$key] = [ - 'description' => $description, - 'value' => $value - ]; - } - } - // Atribui o array de 'SpecificAttributes' ao modelo usando o método 'setAttribute' $detailsEquipment->setAttribute('specificAttributes', $specificAttributesArray); - // Recebe apenas as tarefas já feitas - $completedTasksHistory = ControlEquipmentWorkstation::with('workstationsTaskAnswers', 'receiveImages') + // Dados do Projecto atual + $receiveDetailsProject = CompanyProject::where('company_projects_id', $detailsEquipmentWorkHistory->company_projects_id)->first(); + + $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)->first(); + + // Busca todas as tarefas do equipamento na ordem de execução - junta com as ordem de execussao das tarefas = completedTasksHistory + $receiveAllTasksEquipmentInHistory = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id) + ->orderBy('execution_order', 'asc') + ->get(); + + // Recebe apenas as tarefas já feitas - collection + $completedTasksHistory = ControlEquipmentWorkstation::with('workstationsTaskAnswers') ->where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id) ->whereNotNull('entry_date') ->whereNotNull('departure_date') - ->has('workstationsTaskAnswers') + ->has('workstationsTaskAnswers') // Garante que haja pelo menos uma 'workstationsTaskAnswers' relacionada ->orderBy('elemental_tasks_id', 'asc') ->get(); @@ -149,113 +471,63 @@ public function createPDFforcompletedEquipment($equipmentId) } - // Apos receber todas as tarefas deve verificar qual o ambito atual e comparar em qual ambito foram feitas as tarefas, ai sim verificar oque foi feito no Ambito antigo e oque foi feito no atual. - // histórico de âmbitos por time_change_ambit do mais antigo ao mais recente - $receiveAmbitHistory = HistoryOfEquipmentAmbitsInTheProject::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id) - ->orderBy('time_change_ambit', 'desc') - ->get(); + foreach ($completedTasksHistory as $taskHistory) { + $taskHistory->cardTypeStyle = '#8CC084'; // Adiciona o campo 'cardTypeStyle' + // $taskHistory->typeStatusHistory = 'historic'; -> verificar onde seria mais necessario criar esse atributo de historico - - // Identifica o último âmbito (o mais recente) - $latestAmbitHistory = $receiveAmbitHistory->last(); - - // Separa as tarefas do histórico por âmbitos diferentes - $tasksByAmbit = $completedTasksHistory->groupBy('history_of_equipment_ambits_id'); - - - //coleção para armazenar todas as tarefas, concluídas e não concluídas - $receiveAllTasksHistiory = collect(); - $taskImages = []; - - // Contador para a ordem dos âmbitos - $ambitCounter = 1; - - - - // Itera sobre cada âmbito anterior - foreach ($receiveAmbitHistory as $index => $ambitHistory) { - - $ambitId = $ambitHistory->history_of_equipment_ambits_id; - - - // Verifica se há tarefas associadas a esse âmbito - if ($tasksByAmbit->has($ambitId)) { - $tasksForAmbit = $tasksByAmbit->get($ambitId); - - // Loop para associar a ultima tarefa feita de acordo com o ambito relacionado com ela. - foreach ($tasksForAmbit as $taskHistory) { - if ($ambitId == $latestAmbitHistory->history_of_equipment_ambits_id) { - - // Se a tarefa pertence ao último âmbito (mais recente) - $taskHistory->cardTypeStyle = 'gray'; - $taskHistory->typeStatusHistory = 'historic'; - } else { - - // Se a tarefa pertence a âmbitos anteriores - $taskHistory->cardTypeStyle = 'blue'; - $taskHistory->AmbitHistoryTimeChange = $ambitHistory->time_change_ambit; - $taskHistory->AmbitHistoryOrder = $ambitCounter; // Adiciona o contador - $taskHistory->typeStatusHistory = 'historic'; - - // Adiciona AmbitName dinamicamente - if ($ambitHistory->AmbitsEquipment) { - $taskHistory->AmbitName = $ambitHistory->AmbitsEquipment->ambits_description; - } else { - $taskHistory->AmbitName = 'N/A'; // Defina 'N/A' ou outro valor se não houver AmbitsEquipment - } - } - - // Verifica se há um comentário associado e adiciona ao taskHistory - if ($taskHistory->taskEquipmentComment) { - $taskHistory->taskComment = $taskHistory->taskEquipmentComment->task_comment; - } - - // else { - // $taskHistory->taskComment = 'N/A'; // Ou qualquer outro valor padrão caso não tenha comentário - // } - - //recebe os dados do id da workstations_task_answers_id, control_equipment_workstation_id e as respostar : answer_json - $workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first(); - - if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) { - $answersArray = json_decode($workstationTaskAnswer->answer_json, true); - $formattedAnswers = []; - foreach ($answersArray as $item) { - if (isset($item['question']) && isset($item['value'])) { - $formattedAnswers[$item['question']] = $item['value']; - } - } - $taskHistory->formatted_answers = $formattedAnswers; - } else { - $taskHistory->formatted_answers = []; - } - - if ($taskHistory->receiveImages) { - $imagePaths = $taskHistory->receiveImages->image_paths; - $taskImages[$taskHistory->control_equipment_workstation_id] = is_array($imagePaths) ? $imagePaths : json_decode($imagePaths, true); - } else { - $taskImages[$taskHistory->control_equipment_workstation_id] = []; - } - - $receiveAllTasksHistiory->push($taskHistory); - } + // Verifica se há um comentário associado e adiciona ao taskHistory + if ($taskHistory->taskEquipmentComment) { + $taskHistory->taskComment = $taskHistory->taskEquipmentComment->task_comment; } - // Incrementa o contador para o próximo âmbito - $ambitCounter++; + // Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir + $workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first(); + + if ($workstationTaskAnswer && $workstationTaskAnswer->answer_json) { + // Decodifica o JSON para um array + $answersArray = json_decode($workstationTaskAnswer->answer_json, true); + + // 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'])) { + $formattedAnswers[$item['question']] = $item['value']; + } + } + + // Atribui o array formatado ao taskHistory + $taskHistory->formatted_answers = $formattedAnswers; + } else { + // Se não houver respostas, define formatted_answers como um array vazio ou null + $taskHistory->formatted_answers = []; + } + + // Calcula o tempo de execução se as datas de entrada e saída nao forem nulas + if (!is_null($taskHistory->entry_date) && !is_null($taskHistory->departure_date)) { + + $entryDate = \Carbon\Carbon::parse($taskHistory->entry_date); + $departureDate = \Carbon\Carbon::parse($taskHistory->departure_date); + + $diffInMinutes = $entryDate->diffInMinutes($departureDate); + $diffInHours = $entryDate->diffInHours($departureDate); + $diffInDays = $entryDate->diffInDays($departureDate); + + if ($diffInMinutes < 60) { + $taskHistory->runtime = $diffInMinutes . ' minutos'; + } elseif ($diffInHours < 24) { + $taskHistory->runtime = $diffInHours . ' horas'; + } else { + $remainingHours = $diffInHours % 24; + $taskHistory->runtime = $diffInDays . ' dias ' . $remainingHours . ' horas'; + } + } else { + $taskHistory->runtime = 'N/A'; + } } - // Agrupa as tarefas concluídas por elemental_tasks_id e seleciona a mais recente por departure_date - $receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy(function ($item) { - return $item->elemental_tasks_id; - })->map(function ($group) { - return $group->sortByDesc('departure_date')->first(); - }); // Define os caminhos das logos- Simbolo ISPT_4.0 - // $defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg'; - $defaultLogoPath = '/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-8.png'; $isptLogoPath = '/img/ispt/ispt.jpg'; @@ -269,33 +541,11 @@ public function createPDFforcompletedEquipment($equipmentId) } else { $companyLogoPath = $defaultLogoPath; } - - // Cria uma coleção para armazenar os históricos de âmbitos - $ambitHistories = collect(); - - // Itera sobre a coleção original $receiveAllTasksHistiory - foreach ($receiveAllTasksHistiory as $taskHistory) { - - // Verifica se os campos AmbitHistoryTimeChange e AmbitHistoryOrder estão presentes - if (isset($taskHistory->AmbitHistoryTimeChange) && isset($taskHistory->AmbitHistoryOrder)) { - - // Extrai apenas a data da coluna AmbitHistoryTimeChange - $ambitDate = \Carbon\Carbon::parse($taskHistory->AmbitHistoryTimeChange)->format('Y-m-d'); - - // Cria uma nova entrada com os valores desejados - $ambitHistories->push([ - 'AmbitHistoryOrder' => $taskHistory->AmbitHistoryOrder, - 'AmbitName' => isset($taskHistory->AmbitName) ? $taskHistory->AmbitName : 'N/A', - 'AmbitHistoryTimeChange' => $ambitDate - ]); - } - } - - // dd($receiveDetailsProject); - //Deve devolver com Observacoes se existir. + // dd($completedTasksHistory); //Precisamos receber o Tipo de equipamento e detalhes da Obra, alem do atributos especificos de acordo com o tipo de equipamento. // Converte as imagens para base64 usando o serviço PdfWrapper + $pdfWrapper = new PdfWrapper(); // Gera e retorna o PDF @@ -304,18 +554,20 @@ public function createPDFforcompletedEquipment($equipmentId) // ->setIncludePath('$PATH:/usr/bin') ->loadView('projectsClients.pdf.testePdf', [ - // 'tag' => $detailsEquipment->equipment_tag, - // 'numeroPanini' => $detailsEquipmentWorkHistory->ispt_number, - // 'nObra' => $receiveDetailsProject->project_company_name, - 'detailsEquipment' => $detailsEquipment, 'detailsEquipmentWorkHistory' => $detailsEquipmentWorkHistory, 'receiveDetailsProject' => $receiveDetailsProject, - 'ambitHistories' => $ambitHistories, + // 'ambitHistories' => $ambitHistories, + + 'dataControlEquipment' => [ + 'typePageForViewElementalTasks' => 'pdf' + ], 'ambito' => $receiveAmbit->ambitsEquipment->ambits_description, - 'receiveAllTasksHistiory' => $receiveAllTasksHistiory, - 'taskImages' => $taskImages, + 'recebeTasksForEquipment' => $completedTasksHistory, + // 'taskImages' => $taskImages, + 'taskImages' => '[]', + 'projectLogoPath' => $projectLogoPath, 'companyLogoPath' => $companyLogoPath, 'isptLogoPath' => $isptLogoPath, @@ -327,6 +579,7 @@ public function createPDFforcompletedEquipment($equipmentId) ->stream('ispt40.pdf'); } + public function viewProjectsList($orderProjectID) { @@ -438,50 +691,55 @@ public function checkProjectIsptNumber(Request $request, $projectId = null) public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $equipmentID) { - + // Dados do Projecto atual $detailsProject = CompanyProject::where('company_projects_id', $projectID)->first(); - $detailsCliente = Plant::where('plant_id', $detailsProject->plant_id)->first(); - $detailsProject->user_id = $detailsCliente->user_id; + //Detalhes do equipmento em relacao a obra atual $detailsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID) ->where('company_projects_id', $projectID)->first(); - //Recebe os comentarios do equipamento + //Recebe os comentarios do equipamento, assim por ter ligacao com a Model 'User', para cada valor recebido no get(), consegue criar um novo atributo a collection $comment->type_user $receiveComments = EquipmentComment::with(['user']) ->where('equipmentWorkHistorys_id', $detailsEquipmentWorkProject->equipmentWorkHistorys_id) ->where('company_projects_id', $detailsProject->company_projects_id) ->get() + + //Talvez nao seja necessario isto, pois a model EquipmentComment, ja tem relacao com a 'User' ->transform(function ($comment) { // Adiciona uma nova propriedade ao objeto de comentário - $comment->type_users = $comment->user->type_users; + $comment->type_user = $comment->user->type_users; return $comment; }); + //Recebe os dados padrao do Equipamento e o atribui uma nova coluna :typeOfPortfolioStructure , para indicar ser um dado de Historico. $detalsEquipment = Equipment::where('equipment_id', $equipmentID)->first(); + $detalsEquipment->typeOfPortfolioStructure = 'History'; //recebe todos os dados referentes ao equipamento // OBS : Porem deveria confirma se a tarefa foi mesmo concluida. // $receiveAllTasksHistiory = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $detailsEquipmentWorkProject->equipmentWorkHistorys_id)->get(); + // $tasksAssociatedWithAmbit = TasksAssociationAmbits::where('ambits_equipment_id', $receiveAmbit->ambits_id)->get(); $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $detailsEquipmentWorkProject->equipmentWorkHistorys_id)->first(); - // $tasksAssociatedWithAmbit = TasksAssociationAmbits::where('ambits_equipment_id', $receiveAmbit->ambits_id)->get(); // Busca todas as tarefas do equipamento na ordem de execução $receiveAllTasksEquipmentInHistory = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkProject->equipmentWorkHistorys_id) ->orderBy('execution_order', 'asc') ->get(); - // Em seguida, obtenha todos os IDs de tarefas elementares de $receiveAllTasksEquipmentInHistory + // Recebe todos os IDs de tarefas elementares de $receiveAllTasksEquipmentInHistory em array $equipmentTasksIds = $receiveAllTasksEquipmentInHistory->pluck('elemental_tasks_id')->filter()->unique(); - // Recebe apenas as tarefas já feitas + // Recebe todas as tarefas concluídas relacionadas à Workstation, ordenadas por 'elemental_tasks_id' e 'departure_date' $completedTasksHistory = ControlEquipmentWorkstation::with('workstationsTaskAnswers') ->where('equipmentWorkHistorys_id', $detailsEquipmentWorkProject->equipmentWorkHistorys_id) - ->whereNotNull('entry_date') // Verifica se 'entry_date' não é null - ->whereNotNull('departure_date') // Verifica se 'departure_date' não é null - ->has('workstationsTaskAnswers') // Garante que haja pelo menos uma 'workstationsTaskAnswers' relacionada + ->whereNotNull('entry_date') + ->whereNotNull('departure_date') + ->has('workstationsTaskAnswers') ->orderBy('elemental_tasks_id', 'asc') - ->get(); + ->orderBy('departure_date', 'desc') // Ordena por data mais recente primeiro + ->get() + ->unique('elemental_tasks_id'); // Garante a última ocorrência para cada 'elemental_tasks_id' // Cria uma coleção para armazenar todas as tarefas, concluídas e não concluídas @@ -489,16 +747,14 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq // Adiciona as tarefas concluídas à coleção principal foreach ($completedTasksHistory as $taskHistory) { - $taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle' - $taskHistory->typeStatusHistory = 'historic'; + $taskHistory->cardTypeStyle = '#8CC084'; // Adiciona o campo 'cardTypeStyle' + // $taskHistory->typeStatusHistory = 'historic'; -> verificar onde seria mais necessario criar esse atributo de historico // Verifica se há um comentário associado e adiciona ao taskHistory if ($taskHistory->taskEquipmentComment) { $taskHistory->taskComment = $taskHistory->taskEquipmentComment->task_comment; } - - // Obtém o primeiro registro de workstationsTaskAnswers ou define como null se não existir $workstationTaskAnswer = $taskHistory->workstationsTaskAnswers->first(); @@ -521,61 +777,43 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq $taskHistory->formatted_answers = []; } - if ($taskHistory->receiveImages) { - $imagePaths = $taskHistory->receiveImages->image_paths; - $taskHistory->image_paths = is_array($imagePaths) ? $imagePaths : json_decode($imagePaths, true); - } else { - $taskHistory->image_paths = []; - } - + // Calcula o tempo de execução se as datas de entrada e saída nao forem nulas if (!is_null($taskHistory->entry_date) && !is_null($taskHistory->departure_date)) { - // Converte para instâncias de Carbon + $entryDate = \Carbon\Carbon::parse($taskHistory->entry_date); $departureDate = \Carbon\Carbon::parse($taskHistory->departure_date); - // Calcula a diferença em minutos, horas e dias $diffInMinutes = $entryDate->diffInMinutes($departureDate); $diffInHours = $entryDate->diffInHours($departureDate); $diffInDays = $entryDate->diffInDays($departureDate); - // Se a diferença for menos de uma hora if ($diffInMinutes < 60) { $taskHistory->runtime = $diffInMinutes . ' minutos'; - } - // Se a diferença for menos de 24 horas mas mais que uma hora - else if ($diffInHours < 24) { + } elseif ($diffInHours < 24) { $taskHistory->runtime = $diffInHours . ' horas'; - } - // Se for mais de 24 horas - else { - // Calcula horas restantes após contar os dias + } else { $remainingHours = $diffInHours % 24; $taskHistory->runtime = $diffInDays . ' dias ' . $remainingHours . ' horas'; } } else { - $taskHistory->runtime = 'N/A'; // valor padrão + $taskHistory->runtime = 'N/A'; } - // Adiciona o taskHistory à coleção principal + // Define a estrutura baseada na propriedade statusAmbit para 'latest' e 'history' $receiveAllTasksHistiory->push($taskHistory); } - // Agrupa e ordena as tarefas concluídas por elemental_tasks_id e departure_date - $receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy(function ($item) { - return $item->elemental_tasks_id; - })->map(function ($group) { - $latest = $group->sortByDesc('departure_date')->first(); - $latest->statusHistory = 'yes'; - $history = $group->sortByDesc('departure_date')->slice(1)->map(function ($item) { - $item->statusHistory = 'no'; - return $item; - }); + // Reorganiza a coleção por elemental_tasks_id, definindo a propriedade statusAmbit + $receiveAllTasksHistiory = $receiveAllTasksHistiory->groupBy('elemental_tasks_id') + ->map(function ($group) { + return $group->map(function ($task) use ($group) { + // Marcar a tarefa mais recente como 'latest' e as demais como 'history' + $task->statusAmbit = $task->departure_date === $group->first()->departure_date ? 'latest' : 'history'; + return $task; + }); + }) + ->flatten(1); // Remove o agrupamento aninhado para que todos estejam em uma única coleção - return [ - 'latest' => $latest, - 'history' => $history->values() - ]; - }); // Adiciona as tarefas não concluídas à coleção principal $incompleteTasks = $equipmentTasksIds->diff($completedTasksHistory->pluck('elemental_tasks_id')); @@ -584,28 +822,29 @@ public function showAmbitDetailsProjectHistory($equipmentStatus, $projectID, $eq // Busca os dados da tarefa elementar $elementalTask = ElementalTasks::where('elemental_tasks_id', $taskId)->first(); - // Adiciona à coleção principal usando o elemental_tasks_id como chave - $receiveAllTasksHistiory->put($taskId, [ - 'latest' => (object) [ - 'elemental_tasks_id' => $taskId, - 'control_equipment_workstation_id' => 'N/A', - 'cardType' => 'blue', - 'cardTypeStyle' => 'blue', - 'formatted_answers' => [], - 'entry_date' => 'N/A', - 'runtime' => 'N/A', - 'statusHistory' => 'N/A', - 'typeStatusHistory' => 'N/A', - 'elementalTask' => (object) [ - 'elemental_tasks_code' => $elementalTask ? $elementalTask->elemental_tasks_code : null, - 'elemental_tasks_description' => $elementalTask ? $elementalTask->elemental_tasks_description : null - ] - ], - 'history' => collect() // Histórico vazio para tarefas não concluídas + // Cria uma estrutura padrão para tarefas não concluídas + $receiveAllTasksHistiory->push((object) [ + 'elemental_tasks_id' => $taskId, + 'control_equipment_workstation_id' => 'N/A', + // 'cardType' => 'blue', + 'cardTypeStyle' => 'gray', + 'formatted_answers' => [], + 'entry_date' => 'N/A', + 'runtime' => 'N/A', + 'statusAmbit' => 'incomplete', // Novo status para tarefas incompletas + 'typeStatusHistory' => 'N/A', + 'elementalTask' => (object) [ + 'elemental_tasks_code' => $elementalTask ? $elementalTask->elemental_tasks_code : null, + 'elemental_tasks_description' => $elementalTask ? $elementalTask->elemental_tasks_description : null + ] ]); } - return view('projectsClients.showAmbitDetailProjectHistory', compact('receiveComments', 'equipmentStatus', 'detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory', 'detalsEquipment', 'detailsEquipmentWorkProject')); + $dataControlEquipment = ['typePageForViewElementalTasks' => 'historic']; + + + + return view('projectsClients.showAmbitDetailProjectHistory', compact('receiveComments', 'equipmentStatus', 'detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory', 'detalsEquipment', 'detailsEquipmentWorkProject', 'dataControlEquipment')); } @@ -824,7 +1063,7 @@ public function projectDetails_11($projectID, $equipmentID) // Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes $portfolioOnlyreadOrEditToo = 3; //filteredTasks', 'OrdemTasks', 'DetailsTasks' campos vazios para ISV. - return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment', 'filteredTasks', 'OrdemTasks', 'DetailsTasks', 'specificAttributesArray', 'receiveEquipmentWorkHistorys','portfolioOnlyreadOrEditToo')); + return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment', 'filteredTasks', 'OrdemTasks', 'DetailsTasks', 'specificAttributesArray', 'receiveEquipmentWorkHistorys', 'portfolioOnlyreadOrEditToo')); } //Funcao que recebe a Acoes do dataTables do portifolio. @@ -868,8 +1107,8 @@ public function articulated_22($equipmentID) $specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value; } - // Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes - $portfolioOnlyreadOrEditToo = 3; + // Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes + $portfolioOnlyreadOrEditToo = 3; return view('projectsClients.testRoute', compact('dataEquipment', 'receiveAlldetailsEquipmentWorkHistory', 'specificAttributesArray', 'portfolioOnlyreadOrEditToo')); diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php index e17c6ca0..3a713753 100755 --- a/app/Http/Controllers/WorkstationsJobsController.php +++ b/app/Http/Controllers/WorkstationsJobsController.php @@ -165,6 +165,7 @@ public function receiveQuestionsEquipment($equipmentID) } public function receiveAnswersEquipment(Request $request, $control_equipment_workstation_id) { + //No request recebemos ID(NUmero da tarela elementar) , esta variavel vai receber este ID apos selerar o id da string // $elementalTaskID = 0; // Deve receber as perguntas e respostas para a tarefa selecionada @@ -622,15 +623,23 @@ public function getEquipmentData($equipment_id, $component_tag) $dataEquipment->istp_number = $receiveEquipmentWorkHistory->ispt_number; $dataEquipment->equipment_ambit = $receiveAmbit->ambitsEquipment->ambits_description; + $dataEquipment->typeOfPortfolioStructure = 'work'; // Cria um sistema de 1 a 3 , onde 1 e apenas 'ler', 2 apenas editar e 3 as 2 opcoes $portfolioOnlyreadOrEditToo = 3; + $dataControlEquipment = [ + 'collection' => $receiveDataControlEquipment, // Sua coleção de dados + 'typePageForViewElementalTasks' => 'workStation' // Seu array de valores específicos + ]; + + // dd($receiveDataControlEquipment ); + return view('workstations.workstations', [ // Deve receber o atual COntrol ID ? tudo a vez que atualizar ?? 'receiveComments' => $receiveComments, - 'dataControlEquipment' => $receiveDataControlEquipment, - 'dataEquipment' => $dataEquipment, + 'dataControlEquipment' => $dataControlEquipment, + 'detalsEquipment' => $dataEquipment, 'specificAttributesArray' => $specificAttributesArray, 'recebeTasksForEquipment' => $recebeTasksForEquipment, 'receiveComponentTag' => $component_tag, diff --git a/public/companies_logo/1728212257.png b/public/companies_logo/1728212257.png new file mode 100644 index 00000000..5e6f6d26 Binary files /dev/null and b/public/companies_logo/1728212257.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2610_4256/img1.png b/public/receiveImagesControlEquipmentWorkstation/2610_4256/img1.png new file mode 100644 index 00000000..f4d1a6b9 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2610_4256/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2622_4261/img1.png b/public/receiveImagesControlEquipmentWorkstation/2622_4261/img1.png new file mode 100644 index 00000000..1014a94e Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2622_4261/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2622_4261/img2.png b/public/receiveImagesControlEquipmentWorkstation/2622_4261/img2.png new file mode 100644 index 00000000..16846011 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2622_4261/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2622_4261/img3.png b/public/receiveImagesControlEquipmentWorkstation/2622_4261/img3.png new file mode 100644 index 00000000..ae5198b1 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2622_4261/img3.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2625_4261/img1.png b/public/receiveImagesControlEquipmentWorkstation/2625_4261/img1.png new file mode 100644 index 00000000..653e94b6 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2625_4261/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2625_4261/img2.png b/public/receiveImagesControlEquipmentWorkstation/2625_4261/img2.png new file mode 100644 index 00000000..a1ecc04f Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2625_4261/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2625_4261/img3.png b/public/receiveImagesControlEquipmentWorkstation/2625_4261/img3.png new file mode 100644 index 00000000..e2e066a0 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2625_4261/img3.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2627_4262/img1.png b/public/receiveImagesControlEquipmentWorkstation/2627_4262/img1.png new file mode 100644 index 00000000..e172a5e0 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2627_4262/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2627_4262/img2.png b/public/receiveImagesControlEquipmentWorkstation/2627_4262/img2.png new file mode 100644 index 00000000..72648f9d Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2627_4262/img2.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2633_4264/img1.png b/public/receiveImagesControlEquipmentWorkstation/2633_4264/img1.png new file mode 100644 index 00000000..c76e1b46 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2633_4264/img1.png differ diff --git a/public/receiveImagesControlEquipmentWorkstation/2635_4265/img1.png b/public/receiveImagesControlEquipmentWorkstation/2635_4265/img1.png new file mode 100644 index 00000000..ce023632 Binary files /dev/null and b/public/receiveImagesControlEquipmentWorkstation/2635_4265/img1.png differ diff --git a/public/templateExcel/.~Valves_Template.xlsx b/public/templateExcel/.~Valves_Template.xlsx deleted file mode 100644 index ef7113ce..00000000 Binary files a/public/templateExcel/.~Valves_Template.xlsx and /dev/null differ diff --git a/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php b/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php index 93e450b7..e91c4018 100644 --- a/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php +++ b/resources/views/Admin/CrudCompanies/showCompanyDetails.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') @if (session('success')) diff --git a/resources/views/Admin/CrudUsers/createUser.blade.php b/resources/views/Admin/CrudUsers/createUser.blade.php index 8097c734..4e0e5ffc 100755 --- a/resources/views/Admin/CrudUsers/createUser.blade.php +++ b/resources/views/Admin/CrudUsers/createUser.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content')
diff --git a/resources/views/Admin/CrudUsers/editCompanies.blade.php b/resources/views/Admin/CrudUsers/editCompanies.blade.php index 77bdaeb0..b96f208c 100755 --- a/resources/views/Admin/CrudUsers/editCompanies.blade.php +++ b/resources/views/Admin/CrudUsers/editCompanies.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content')
diff --git a/resources/views/Admin/CrudUsers/editUsers.blade.php b/resources/views/Admin/CrudUsers/editUsers.blade.php index 2f7503c4..d8105eb2 100755 --- a/resources/views/Admin/CrudUsers/editUsers.blade.php +++ b/resources/views/Admin/CrudUsers/editUsers.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content')
diff --git a/resources/views/Admin/CrudUsers/listCompany.blade copy.php b/resources/views/Admin/CrudUsers/listCompany.blade copy.php index b924ed62..68ebe35f 100755 --- a/resources/views/Admin/CrudUsers/listCompany.blade copy.php +++ b/resources/views/Admin/CrudUsers/listCompany.blade copy.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') @if (session('success')) diff --git a/resources/views/Admin/CrudUsers/listCompany.blade.php b/resources/views/Admin/CrudUsers/listCompany.blade.php index 21fc450e..883652f1 100755 --- a/resources/views/Admin/CrudUsers/listCompany.blade.php +++ b/resources/views/Admin/CrudUsers/listCompany.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') @if (session('success')) diff --git a/resources/views/Admin/CrudUsers/listUsers.blade.php b/resources/views/Admin/CrudUsers/listUsers.blade.php index cef3fd84..d38e40d7 100755 --- a/resources/views/Admin/CrudUsers/listUsers.blade.php +++ b/resources/views/Admin/CrudUsers/listUsers.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') @if (session('success')) diff --git a/resources/views/Admin/CrudUsers/showUsers.blade.php b/resources/views/Admin/CrudUsers/showUsers.blade.php index 20b9ae52..6c514d87 100755 --- a/resources/views/Admin/CrudUsers/showUsers.blade.php +++ b/resources/views/Admin/CrudUsers/showUsers.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content')
diff --git a/resources/views/Admin/DataManagement/manageassets.blade copy.php b/resources/views/Admin/DataManagement/manageassets.blade copy.php index 343cebad..582c0790 100755 --- a/resources/views/Admin/DataManagement/manageassets.blade copy.php +++ b/resources/views/Admin/DataManagement/manageassets.blade copy.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') diff --git a/resources/views/Admin/DataManagement/manageassets.blade.php b/resources/views/Admin/DataManagement/manageassets.blade.php index 7f218236..dd2d43ee 100755 --- a/resources/views/Admin/DataManagement/manageassets.blade.php +++ b/resources/views/Admin/DataManagement/manageassets.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') diff --git a/resources/views/Admin/DataManagement/showEquipament.blade.php b/resources/views/Admin/DataManagement/showEquipament.blade.php index 43d1ee3b..4e4038df 100755 --- a/resources/views/Admin/DataManagement/showEquipament.blade.php +++ b/resources/views/Admin/DataManagement/showEquipament.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') diff --git a/resources/views/Admin/index.blade.php b/resources/views/Admin/index.blade.php index af7f0590..231cf10c 100755 --- a/resources/views/Admin/index.blade.php +++ b/resources/views/Admin/index.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') diff --git a/resources/views/Admin/profile.blade.php b/resources/views/Admin/profile.blade.php index e4565d5d..ca028d24 100755 --- a/resources/views/Admin/profile.blade.php +++ b/resources/views/Admin/profile.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') @if (session('success')) diff --git a/resources/views/Templates/AdminLayout/AdminLayout.blade.php b/resources/views/Templates/AdminLayout/AdminLayout.blade.php new file mode 100644 index 00000000..4f6ec167 --- /dev/null +++ b/resources/views/Templates/AdminLayout/AdminLayout.blade.php @@ -0,0 +1,192 @@ +@extends('Templates/templateAdmin') + +@section('Content-AdminLayout') + + + + + + + +
+ @yield('Main-content') +
+ + + + {{-- --}} + +@endsection diff --git a/resources/views/Templates/WorkstationsLayout/WorkstationsLayout.blade.php b/resources/views/Templates/WorkstationsLayout/WorkstationsLayout.blade.php new file mode 100644 index 00000000..4bedb3e6 --- /dev/null +++ b/resources/views/Templates/WorkstationsLayout/WorkstationsLayout.blade.php @@ -0,0 +1,248 @@ +@extends('Templates/templateAdmin') + +@section('Content-WorkstationsLayout') + + + + + + + + +
+ @yield('Main-content') +
+ +@endsection diff --git a/resources/views/Templates/templateAdmin.blade copy.php b/resources/views/Templates/templateAdmin.blade copy.php new file mode 100755 index 00000000..710faf43 --- /dev/null +++ b/resources/views/Templates/templateAdmin.blade copy.php @@ -0,0 +1,770 @@ + + + + + + + + + + + + + + {{-- --}} + + {{-- --}} + + + + +
+ + + + + + + + + + +
+ + + +
+ @yield('content') +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- Graficos para gestao com chart.js --}} + + + + + + + + + + + + + +
+ + + +
+ AdminLTELogo +
+ + + + + + + + +
+ @yield('Main-content') + {{--
+
+
+
+ + + +
+ ./col-md-12 +
+ ./row justify-content-center +
+ ./container-fluid +
--}} + {{-- ./content --}} +
+ {{-- ./content-wrapper --}} + + + + + +
+ + + + + +@yield('scriptsTemplateAdmin') +{{-- Scripts-Plugins --}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{{-- + + --}} + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/Templates/templateAdmin.blade.php b/resources/views/Templates/templateAdmin.blade.php index c4ee5a0a..ac373219 100755 --- a/resources/views/Templates/templateAdmin.blade.php +++ b/resources/views/Templates/templateAdmin.blade.php @@ -6,19 +6,17 @@ + {{ config('app.name') }} + - {{-- --}} - - {{-- --}} - - +
- - -
+ +
AdminLTELogo
- - - - - - - -
- @yield('Main-content') - {{--
-
-
-
- - - -
- ./col-md-12 -
- ./row justify-content-center -
- ./container-fluid -
--}} - {{-- ./content --}} -
- {{-- ./content-wrapper --}} - - - - + {{-- @endif --}}
@@ -503,4 +305,21 @@ class="d-block">{{ Auth::user()->userType?->type_user }} + + + + + + + + diff --git a/resources/views/Templates/templateWorkstations.blade copy.php b/resources/views/Templates/templateWorkstations.blade copy.php new file mode 100755 index 00000000..9c81b2c3 --- /dev/null +++ b/resources/views/Templates/templateWorkstations.blade copy.php @@ -0,0 +1,740 @@ + + + + + + + + {{ config('app.name') }} + + + + + + + + {{-- + --}} + + + + + + + + + + + + + + + + + + + + + {{-- + --}} + + + + + + + + + +
+ + + + + + + + + + +
+ + {{--
+
+
+ +
+ +
+ + +
+ +
+
+
+
--}} + + + +
+ @yield('content') +
+ +
+ + + {{-- --}} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- + + + + + + + + + --}} + + + + + + \ No newline at end of file diff --git a/resources/views/Templates/templateWorkstations.blade.php b/resources/views/Templates/templateWorkstations.blade.php index 0ee479cf..4e654b23 100755 --- a/resources/views/Templates/templateWorkstations.blade.php +++ b/resources/views/Templates/templateWorkstations.blade.php @@ -3,18 +3,18 @@ - - - {{ config('app.name') }} + + + + - + {{ config('app.name') }} - {{-- --}} @@ -26,727 +26,75 @@ + + - - - {{-- --}} - - - - + +
- - - - - - - - - -
- -
-
-
- -
- -
- - -
- -
-
-
-
- - - -
- @yield('content') -
- -
- - - - - {{-- --}} - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{-- - - - - - - - - - - - - --}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/auth/verify-email.blade.php b/resources/views/auth/verify-email.blade.php index e5c44301..d075a41a 100755 --- a/resources/views/auth/verify-email.blade.php +++ b/resources/views/auth/verify-email.blade.php @@ -1,4 +1,4 @@ -@extends('Templates/templateAdmin') +@extends('Templates/AdminLayout/AdminLayout') @section('Main-content') diff --git a/resources/views/components/layouts/elementalTasksOfficial.blade.php b/resources/views/components/layouts/elementalTasksOfficial.blade.php index 4bc47949..b0011f30 100644 --- a/resources/views/components/layouts/elementalTasksOfficial.blade.php +++ b/resources/views/components/layouts/elementalTasksOfficial.blade.php @@ -1,17 +1,81 @@ -@forelse ($recebeTasksForEquipment as $task_todo) +@foreach ($recebeTasksForEquipment as $tasktodo) + {{-- @php + // Verificar se o $dataControlEquipment contém o tipo de página + $typePage = $dataControlEquipment['typePageForViewElementalTasks'] ?? null; + + // Definir $isComplexStructure somente se a página for do tipo 'historic' + $isComplexStructure = $typePage == 'historic'; + + // Definir $isEditable e $isReadOnly com base no tipo de página + if ($typePage == 'historic' || $typePage == 'pdf') { + $isEditable = false; + $isReadOnly = true; + } elseif ($typePage === 'workStation') { + // Se for 'workStation', verifique o estilo do card para determinar se é editável + $isEditable = isset($task_todo) && !in_array($task_todo->cardTypeStyle, ['gray', '#8CC084']); + $isReadOnly = !$isEditable; + } else { + // Caso padrão, sem tipo de página especificado, usando a cor do card para definir as permissões + $isEditable = + isset($task_todo) && ($task_todo->cardTypeStyle == 'blue' || $task_todo->cardTypeStyle === 'green'); + $isReadOnly = !$isEditable; + } + @endphp --}} + @php - $isEditable = $task_todo->cardTypeStyle === 'blue' || $task_todo->cardTypeStyle === 'green'; - $isReadOnly = $task_todo->cardTypeStyle === 'gray' || $task_todo->cardTypeStyle === '#8CC084'; + // Verificar se o $dataControlEquipment contém o tipo de página e definir as variáveis conforme o tipo + $typePage = $dataControlEquipment['typePageForViewElementalTasks'] ?? null; + + // Definir as variáveis conforme o tipo de página + $isComplexStructure = $typePage == 'historic'; // Somente para histórico + $isEditable = $typePage == 'workStation'; + $isReadOnly = $typePage == 'isReadOnly'; + + // // Controlar o acesso de leitura e edição com base no tipo de página + // $isEditable = + // $typePage == 'workStation' && + // isset($task_todo) && + // !in_array($task_todo->cardTypeStyle, ['gray', '#8CC084']); + // $isReadOnly = $typePage == 'pdf' || !$isEditable; + @endphp + + -
-
+
+ +
-

- {{ $task_todo->elementalTask->elemental_tasks_code }} - - {{ $task_todo->elementalTask->elemental_tasks_description }} + + + @if (!$isComplexStructure && $tasktodo->cardTypeStyle == 'blue' && isset($tasktodo->AmbitHistoryOrder)) +
+ {{ $tasktodo->AmbitHistoryOrder }} +
+ @endif + + +

+ {{ $tasktodo->elementalTask->elemental_tasks_code }} - + {{ $tasktodo->elementalTask->elemental_tasks_description }}

+ + + + @if ( + $isComplexStructure && + isset($detalsEquipment->typeOfPortfolioStructure) && + $detalsEquipment->typeOfPortfolioStructure == 'History') +
+ @if ($tasktodo->typeStatusHistory === 'historic') +

+ Data: {{ $tasktodo->entry_date ?? 'N/A' }}

+ @endif +
+ @endif +
+ +
+ + @if (isset($dataControlEquipment['collection']) && + $dataControlEquipment['collection'] !== null && + $dataControlEquipment['typePageForViewElementalTasks'] === 'workStation') +
+ @csrf + @endif +
- - @csrf - -
- - - @if ($isEditable) - - @if (in_array($task_todo->elemental_tasks_id, [1, 10, 15])) -