Criar obra
+ +diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 0afe3ec1..3da6df50 100644 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -1,7 +1,5 @@ get(); - // Nao vinculado ao project ainda + // Apos terminar nao vai ficar step 1 + return view('projectsClients/createProject', ['step' => 1], ['companies' => $companies]); + } + // Progress Bar + //Devolve para a primeira para na descricao do projecto apenas user com ID 3, quer dizer que apenas as "empresas" + public function showStep1($company_projects_id) + { + $projects = CompanyProject::find($company_projects_id); + $companies = User::where('type_users', 3)->get(); + + return view('projectsClients/projectDetails_1', ['step' => 1], ['companies' => $companies]) + ->with('projects',$projects); + } + + // Se forem alterados dados dos Detalhes da Obra, vai ser alterado + public function EditprocessStep1(Request $request){ + + } + + public function removePendingEquipment($id){ + $equipment = PendingEquipment::findOrFail($id); + $equipment->delete(); + return back()->with('success', 'Equipamento pendente removido com sucesso!'); + } + + public function CreateNewEquipmentFromPendingEquipment(Request $request, $id){ + $checkPendingEquipment = PendingEquipment::findOrFail($id); + + $counter = 2; + $baseTag = $checkPendingEquipment->pending_equipment_tag; + $baseDescription = $checkPendingEquipment->pending_equipment_description; + + // Ciclo para verificar se ja existe um equipamento com o mesmo nome se existir vai criando com o contador iniciado a partir de (2) + while (Equipment::where('equipment_tag', $baseTag . "({$counter})")->orWhere('equipment_description', $baseDescription . "({$counter})")->exists()) { + $counter++; + } + + $newEquipment = new Equipment; + $newEquipment->unit_id = $checkPendingEquipment->pending_equipment_unit_id; + $newEquipment->equipment_type_id = $checkPendingEquipment->pending_equipment_type_id; + $newEquipment->equipment_tag = $baseTag . "({$counter})"; + $newEquipment->equipment_description = $baseDescription . "({$counter})"; + $newEquipment->equipment_serial_number = $checkPendingEquipment->pending_equipment_serial_number; + $newEquipment->equipment_brand = $checkPendingEquipment->pending_equipment_brand; + $newEquipment->equipment_model = $checkPendingEquipment->pending_equipment_model; + $newEquipment->company_projects_id = $checkPendingEquipment->pending_company_projects_id; + $newEquipment->save(); + + $receiveEquipmentID = $newEquipment->equipment_id; + + $newEquipmentAssociationAmbits = new EquipmentAssociationAmbit; + $newEquipmentAssociationAmbits->equipment_type_id = $newEquipment->equipment_type_id; + $newEquipmentAssociationAmbits->ambits_id = $request->EquipmentAmbit; + $newEquipmentAssociationAmbits->equipment_id = $receiveEquipmentID; + $newEquipmentAssociationAmbits->save(); + + $checkPendingEquipment->delete(); + + return back()->with('success', 'Equipamento '.$newEquipment->equipment_tag.' criado com sucesso'); + } + + + public function processStep1(Request $request) + { + // Validação... + $installationId = $request->input('installation_id'); + + if ($installationId == 'new_install') { + + // Criar uma nova instalação... + $newInstallation = new Plant; + + $newInstallation->plant_name = $request->input('new_company_name'); + $newInstallation->plant_address = $request->input('new_company_address'); + $newInstallation->user_id = $request->input('user_id'); + + // $newInstallation->save(); + + // Use o id da nova instalação. + $installationId = $newInstallation->plant_id; + } + + $project = new CompanyProject; + + $project->company_project_description = $request->input('description_project'); + $project->project_ispt_number = $request->input('n_project_ispt'); + $project->project_company_number = $request->input('project_company_number'); + $project->project_ispt_responsible = $request->input('responsible_project_ispt'); + $project->project_company_responsible = $request->input('responsible_project_company'); + $project->date_started = $request->input('date_started'); + + $project->plant_id = $installationId; + + $project->save(); + + session(['form_data.step1' => $request->all()]); + + // // Redirecione o usuário para a próxima etapa + // return redirect('/test2') + // ->with('project', $project) + // ->with('success', 'Dados guardados com sucesso'); + return redirect()->route('test2', ['id' => $project->company_projects_id]) + ->with('success', 'Detalhes, Projecto criado com sucesso'); + } + + public function showStep2($company_projects_id) + { + // Verifique se a etapa 1 foi concluída + + // if (!session('form_data.step1')) { + // return redirect('/createProject'); + // } + + //recebe o Id de Plant vai devolver todos os equipamentos relacionados a esta instalacao(plant) + // Carregue o projeto com o id fornecido + $project = CompanyProject::find($company_projects_id); + + $numberProject = $project->company_projects_id; + + $typeEquipments = EquipmentType::all(); + + //Retorna todas as Fabricas Unit, com base na instalacao + $checkUnits = DB::table('units') + ->join('plants', 'units.plant_id', '=', 'plants.plant_id') + ->join('company_projects', 'plants.plant_id', '=', 'company_projects.plant_id') + ->select('units.*') + ->where('company_projects.company_projects_id', '=', $company_projects_id) + ->get(); + + //Retorna todos os Equipamentos, com base na instalcao do projecto + $checkEquipments = DB::table('equipments') + ->join('units', 'equipments.unit_id', '=', 'units.unit_id') + ->join('plants', 'units.plant_id', '=', 'plants.plant_id') + ->select('equipments.*') // Seleciona todas as colunas da tabela 'equipments' + ->where('plants.plant_id', '=', $project['plant_id']) // Filtra baseado no 'plant_id' + ->get(); + + // Para listar os equipamentos vinculados na obra, buscamos suas associações gerais entre suas tabelas , ou seja a : fabrica(unit), tipo de equipamento e o Ambito para se realizar a tarefas pretendida neste obra. + // $listEquipmentsProjects = Equipment::with(['unit', 'equipmentType', 'equipmentAssociationAmbit.ambitsEquipment']) + // ->where('company_projects_id', $company_projects_id) + // ->get(); + $listEquipmentsProjects = Equipment::with(['unit', 'equipmentType', 'equipmentAssociationAmbit.ambitsEquipment', 'specificAttributes' => function ($query) { + $query->orderBy('specific_attributes_value', 'asc'); + }]) + ->where('company_projects_id', $company_projects_id) + ->get(); + + $pendingEquipments = PendingEquipment::where('pending_company_projects_id', $numberProject)->get(); + + if (!$pendingEquipments->isEmpty()) { + // Retornamos para a view 'step' => 2 indicando conclusao da primeira parte, $numberProject para associacao de equipamentos a esta obra, alem de todos os equipamentos e fabricao ja existente com base na instalacao que se iniciou a obra. + return view('projectsClients/articulated_2', ['step' => 2, 'numberProject' => $numberProject]) + ->with('danger', 'Equipamentos Pendentes: ' . count($pendingEquipments)) + ->with('pendingEquipments', $pendingEquipments) + ->with('listEquipmentsProjects', $listEquipmentsProjects) + ->with('typeEquipments', $typeEquipments) + ->with('checkEquipments', $checkEquipments) + ->with('checkUnits', $checkUnits); + } + return view('projectsClients/articulated_2', ['step' => 2, 'numberProject' => $numberProject]) + ->with('listEquipmentsProjects', $listEquipmentsProjects) + ->with('typeEquipments', $typeEquipments) + ->with('checkEquipments', $checkEquipments) + ->with('checkUnits', $checkUnits); + } + + public function createEquipmentManual(Request $request) + { + // EquipmentAmbit + // *** Recebe a Instalacao(Plant), com base no numero da Obra Criada + $receivePlant = DB::table('plants') + ->join('company_projects', 'company_projects.plant_id', 'plants.plant_id') + ->select('plants.plant_id') + ->where('company_projects.company_projects_id', '=', $request->numberProject) + ->get(); + + //recebe a lista de todos os equipmentos relacionados a obra que se esta a criar. + $listEquipmentsProjects = DB::table('equipments') + ->select('equipments.*') + ->where('equipments.company_projects_id', '=', $request->numberProject) + ->get(); + + // Verifica se ja existe um equipamento com as as caracteristicas : tag,unit_id, iguais ao que pretendemos criar + $existingEquipment = Equipment::firstWhere([ + 'equipment_tag' => $request->tag, + 'unit_id' => $request->unit_id + ]); + + if ($existingEquipment) { + return redirect()->route('test2', ['id' => $request->numberProject]) + ->with('danger', 'Equipamento ja Existe !!') + ->with('listEquipmentsProjects', $listEquipmentsProjects); + } + + // Se realmente for um equipamento novo, verifica se ira associar a uma fabrica (unit) nova ou ja existente + $newEquipmentProject = new Equipment; + + // Se for uma fabrica(Unit) existente + if ($request->new_unit_name == null) { + $newEquipmentProject->unit_id = $request->unit_id; + } else { + + //ja retorna se for uma fabrica nova (Unit) + $newUnit = new Unit; + $newUnit->unit_name = $request->new_unit_name; + $newUnit->plant_id = $receivePlant[0]->plant_id; + $newUnit->save(); + + $newEquipmentProject->unit_id = $newUnit->unit_id; + } + $newEquipmentProject->equipment_type_id = $request->equipmentTypeId; + $newEquipmentProject->equipment_tag = $request->tag; + $newEquipmentProject->equipment_description = $request->equipmentDescription; + + // Estes campos a baixo : podem ter valor ou nao + $newEquipmentProject->equipment_serial_number = $request->serialNumberEquipment ?? NULL; + $newEquipmentProject->equipment_brand = $request->equipmentBrand ?? NULL; + $newEquipmentProject->equipment_model = $request->equipmentModel ?? NULL; + + $newEquipmentProject->company_projects_id = $request->numberProject; + $newEquipmentProject->save(); + + // ID do equipamento criado + $equipmentID = $newEquipmentProject->equipment_id; + + + + // Verifica os campos do Card_do tipo de valvula selecionado (Ex: psv_card) e de acordo com os campos preenchidos se for de atributos especificos, ele compara o 'name' dos inputs com os 'general_attributes_equipment_description' da tabela : GeneralAttributesEquipment e associa + $checkAtributs = GeneralAttributesEquipment::whereIn('general_attributes_equipment_description', array_keys($request->all())) + ->pluck('general_attributes_equipment_id', 'general_attributes_equipment_description') + ->toArray(); + + // Recebe esta associacao, e cria um array para cada 'name'(inputs) igual ao 'general_attributes_equipment_description', contanto que seu valor(input) seja diferente de *NULL, assim o "$receivesAssociationAttributes" recebe o id de acordo com a tabela , o nome de acordo com a tabela e o valor do $request recebido associado ao campo + $receivesAssociationAttributes = []; + foreach ($checkAtributs as $description => $id) { + if ($request[$description] !== null) { + $receivesAssociationAttributes[] = [ + 'general_attributes_equipment_id' => $id, + 'general_attributes_equipment_description' => $description, + 'value' => $request[$description] + ]; + } + } + // Para cada um dos Arrays criados acima, vai criar os novos dados na tabela 'SpecificAttributesEquipmentType' + foreach ($receivesAssociationAttributes as $receivesAssociationAttribute) { + $AddAtributsEquipments = new SpecificAttributesEquipmentType; + $AddAtributsEquipments->equipment_id = $equipmentID; + $AddAtributsEquipments->equipment_type_id = $request->equipmentTypeId; + $AddAtributsEquipments->specific_attributes_equipment_type_id = $receivesAssociationAttribute['general_attributes_equipment_id']; + $AddAtributsEquipments->specific_attributes_value = $receivesAssociationAttribute['value']; + $AddAtributsEquipments->save(); + } + //Criar associacao do equipamento ao Ambito + $AssociationEquipmentAmbit = new EquipmentAssociationAmbit; + $AssociationEquipmentAmbit->equipment_type_id = $request->equipmentTypeId; + $AssociationEquipmentAmbit->ambits_id = $request->EquipmentAmbit; + $AssociationEquipmentAmbit->equipment_id = $equipmentID; + $AssociationEquipmentAmbit->save(); + + + // O $request->numberProject e sempre necessario retornar para indicar a obra que se esta modificando... + return redirect()->route('test2', ['id' => $request->numberProject]) + ->with('success', 'Equipamento criado com sucesso') + ->with('listEquipmentsProjects', $listEquipmentsProjects); + } + public function receiveIdEquipment(Equipment $equipment){ + // return response()->json($equipment); + return view('projectsClients/articulated_2', ['equipment' => $equipment]); + } + + public function processStep2(Request $request) + { + // Valide e processe os dados do formulário + $file = $request->file('documento'); + + // Recebe a id do Projecto criado + $company_projects_id = $request->numberProject; + + // Certifique-se de que um arquivo foi enviado + if ($file) { + // Carregue o arquivo Excel + $spreadsheet = IOFactory::load($file->path()); + + // Obtenha a primeira planilha, onde fica os nomes chaves para associar a tabela : general_attributes_equipaments + $worksheet = $spreadsheet->getSheet(0); + + // Transforme os dados da planilha em um array + $data = $worksheet->toArray(); + + // Retorna um array com todos os names preenchidos na primeira linha do template de Excel + $nomesColunas = $data[0]; + + $countPendingEquipments = 0; + $countNewEquipment = 0; + + // Comece a partir da sexta linha + for ($i = 6; $i < count($data); $i++) { + + $dadosLinha = $data[$i]; + + // Verifica se os 5 primeiros campos essenciais estao preenchidos, um deles nao estiver preenchido ele ignora e nao cria o equipamento + $isEmpty = false; + for ($j = 0; $j < 5; $j++) { + if (empty($dadosLinha[$j])) { + $isEmpty = true; + break; + } + } + if ($isEmpty) { + continue; + } + + // Em cada um das linhas horizontais do excel, vai se guardar a 'key' vinculada ao valor do campo preenchido ou seja a 'key' vai ter o mesmo nome de um dos dados da tabela : general_attributes_equipaments na coluna : general_attributes_equipment_description, assim sendo mais facil implementar na tabela : specific_attributes_equipament_types + $juntarArrays = array_combine($nomesColunas, $dadosLinha); + + // vai guardar todos os campos de possiveis novos equipamentos, cada um em um array para multiplos inserts, na base de dados + $datas = array_filter($juntarArrays, function ($chave) { + return !empty($chave); + }, ARRAY_FILTER_USE_KEY); + + //Indentifica qual o tipo de equipamento selecionado de acordo com a tabela EquipmentType + $equipmentType = EquipmentType::where('equipment_type_name', $datas['tipo_equipamento'])->first(); + + $checkFactory = Unit::where('unit_name', $datas['fabrica'])->first(); + + + // Antes de criar o novo equipamento, verifique se já existe um equipamento + // com o mesmo factory_id e tag. + $existingEquipment = Equipment::where('unit_id', $checkFactory->unit_id) + ->where('equipment_tag', $datas['tag']) + ->first(); + + + + if ($existingEquipment) { + + // Se o equipamento existir, crie o novo equipamento na tabela pending_equipaments. + $pendingEquipament = new PendingEquipment; + + // Defina os atributos do pendingEquipament conforme necessário. + $pendingEquipament->pending_equipment_unit_id = $checkFactory->unit_id; + $pendingEquipament->pending_equipment_type_id = $equipmentType->equipment_type_id; + $pendingEquipament->pending_equipment_tag = $datas['tag']; + $pendingEquipament->pending_equipment_description = $datas['equipment_Description']; + $pendingEquipament->pending_equipment_serial_number = $datas['n_serie']; + $pendingEquipament->pending_equipment_brand = $datas['modelo']; + $pendingEquipament->pending_company_projects_id = $company_projects_id; + $pendingEquipament->save(); + + // Incremente o contador de PendingEquipments + $countPendingEquipments++; + + // Continue com o próximo loop. + continue; + } + + $newEquipament = new Equipment; + + $newEquipament->unit_id = $checkFactory->unit_id; + $newEquipament->equipment_type_id = $equipmentType->equipment_type_id; + $newEquipament->equipment_Description = $datas['equipment_Description']; + $newEquipament->equipment_tag = $datas['tag']; + $newEquipament->equipment_serial_number = $datas['n_serie']; + $newEquipament->equipment_model = $datas['modelo']; + $newEquipament->company_projects_id = $company_projects_id; + + $newEquipament->save(); + + $countNewEquipment++; + + // Guardo os valores de 'id' e do 'tipo de equipamento' que nosso novo equipamento acabado de criar + $receveEquipment_ID = $newEquipament->equipment_id; + $receveEquipament_type_ID = $newEquipament->equipment_type_id; + + $ambit = AmbitsEquipment::where('ambits_description', $datas['ambito'])->first(); + + if ($ambit) { + $ambit_id = $ambit->ambits_id; + } + + $AssociationEquipmentAmbit = new EquipmentAssociationAmbit; + + $AssociationEquipmentAmbit->equipment_type_id = $receveEquipament_type_ID; + $AssociationEquipmentAmbit->ambits_id = $ambit_id; + $AssociationEquipmentAmbit->equipment_id = $receveEquipment_ID; + $AssociationEquipmentAmbit->save(); + + $generalAttributes = GeneralAttributesEquipment::all(); + + foreach ($generalAttributes as $generalAttribute) { + // Verifica se a chave existe em $datas, comparando com os dados da tabela : GeneralAttributesEquipment assim adicionando todos diferentes de NULL relacionados com o equipamento acabado de cria + if (isset($datas[$generalAttribute->general_attributes_equipment_description])) { + $specificAttribute = new SpecificAttributesEquipmentType; + + $specificAttribute->equipment_id = $receveEquipment_ID; + $specificAttribute->equipment_type_id = $receveEquipament_type_ID; + $specificAttribute->specific_attributes_equipment_type_id = $generalAttribute->general_attributes_equipment_id; + // Atribui o valor da chave correspondente em $datas + $specificAttribute->specific_attributes_value = $datas[$generalAttribute->general_attributes_equipment_description]; + + // $specificAttribute->save(); + } + } + } + + $pendingEquipments = PendingEquipment::where('pending_company_projects_id', $request->numberProject)->get(); + + // $pendingEquipments = session('pendingEquipments'); + if ($countPendingEquipments != 0) { + // return redirect()->route('test2')->with('Danger', 'Equipamentos Pendentes')->with('listValves', $listValves)->with('pendingEquipments', $pendingEquipments); + return redirect()->route('test2', ['id' => $request->numberProject]) + ->with('danger', 'Equipamentos Pendentes criados : ' . $countPendingEquipments) + ->with('pendingEquipments', $pendingEquipments); + // ->with('success', 'Equipamentos Criados :' . count($listValves)) + } + return redirect()->route('test2', ['id' => $request->numberProject]) + ->with('success', 'Equipamentos Criados :' . $countNewEquipment); + } + + //Nao chega aqui ainda pois volta para a pagina com dados ja carregados. + + session(['form_data.step2' => $request->all()]); + + // Redirecione o usuário para a próxima etapa + return redirect('/test3'); + } + + public function showStep3() + { + // Verifique se a etapa 2 foi concluída + // if (!session('form_data.step2')) { + // return redirect('/test2'); + // } + + return view('projectsClients/workStation_3', ['step' => 3]); + } + + public function processStep3(Request $request) + { + // Valide e processe os dados do formulário + // ... + session(['form_data.step3' => $request->all()]); + + // Aqui, todas as etapas foram concluídas + // Você pode redirecionar o usuário para uma página de "Obrigado" ou processar os dados do formulário + // ... + } public function index() { @@ -40,7 +489,7 @@ public function index() ->get(); - dd($results); + // dd($results); $groupedEquipments = []; @@ -74,7 +523,6 @@ public function listCompanies() { $companies = User::where('type_users', 3)->get(); return view('projectsClients/createProject', ['companies' => $companies]); - // return view('projectsClients/createProject', ['companies' => $companies]); } @@ -111,6 +559,8 @@ public function createProject(Request $request) $project->save(); return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso'); + // return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso'); + } public function storeProject(Request $request) @@ -131,14 +581,24 @@ public function storeProject(Request $request) public function getByUserNif(Request $request) { - // dd(Installation::where('user_id', $request->input('user_id'))->get()); + // dd(Plant::where('user_id', $request->input('user_id'))->get()); $user_id = $request->input('user_id'); //Check - $installations = Unit::where('user_id', $user_id)->get(); + $installations = Plant::where('user_id', $user_id)->get(); return response()->json($installations); } + public function getAmbits($equipmentType) + { + + $ambits = DB::table('ambits_equipments') + ->select('ambits_equipments.*') + ->where('ambits_equipments.equipment_type_id', $equipmentType) + ->get(); + return response()->json($ambits); + } + // public function createEquipamentProject(Request $request) // { // $file = $request->file('documento'); @@ -214,110 +674,129 @@ public function getByUserNif(Request $request) // } // } - public function createEquipamentProject(Request $request) - { - $file = $request->file('documento'); - - // Certifique-se de que um arquivo foi enviado - if ($file) { - // Carregue o arquivo Excel - $spreadsheet = IOFactory::load($file->path()); - - // Obtenha a primeira planilha - $worksheet = $spreadsheet->getSheet(0); - - // Transforme os dados da planilha em um array - $data = $worksheet->toArray(); - - $nomesColunas = $data[0]; - - // Atributos que você quer buscar e inserir - $attributes = ["dimension", "dn_ent", "p&id", "n_sap", "isolation", "scaffolding", "grua", "interlocks"]; - - // Comece a partir da sexta linha - for ($i = 6; $i < count($data); $i++) { - $dadosLinha = $data[$i]; - - //Se nao preencher o campo $dadosLinha[0], nao cria um novo equipamento - //Trocar pelos 5 primeiros - if (empty($dadosLinha[0])) { - continue; - } - - $juntarArrays = array_combine($nomesColunas, $dadosLinha); - - $datas = array_filter($juntarArrays, function ($chave) { - return !empty($chave); - }, ARRAY_FILTER_USE_KEY); - - $equipmentType = EquipmentType::where('equipment_type_name', $datas['tipo_equipamento'])->first(); - - $checkFactory = Unit::where('unit_name', $datas['fabrica'])->first(); + - // Antes de criar o novo equipamento, verifique se já existe um equipamento - // com o mesmo factory_id e tag. - $existingEquipment = Equipment::where('unit_id', $checkFactory->unit_id) - ->where('equipment_tag', $datas['tag']) - ->first(); + // public function createEquipamentProject(Request $request) + // { + // $file = $request->file('documento'); - if ($existingEquipment) { - // Se o equipamento existir, crie o novo equipamento na tabela pending_equipaments. - $pendingEquipament = new PendingEquipment; - // Defina os atributos do pendingEquipament conforme necessário. - $pendingEquipament->pending_equipment_unit_id = $checkFactory->unit_id; - $pendingEquipament->pending_equipment_type_id = $equipmentType->equipment_type_id; - $pendingEquipament->pending_equipment_tag = $datas['tag']; - $pendingEquipament->pending_equipment_description = $datas['equipment_Description']; - $pendingEquipament->pending_equipment_serial_number = $datas['n_serie']; - $pendingEquipament->pending_equipment_brand = $datas['modelo']; + // // Certifique-se de que um arquivo foi enviado + // if ($file) { + // // Carregue o arquivo Excel + // $spreadsheet = IOFactory::load($file->path()); - $pendingEquipament->save(); + // // Obtenha a primeira planilha + // $worksheet = $spreadsheet->getSheet(0); - // Continue com o próximo loop. - continue; - } + // // Transforme os dados da planilha em um array + // $data = $worksheet->toArray(); - $newEquipament = new Equipment; + // $nomesColunas = $data[0]; - $newEquipament->unit_id = $checkFactory->unit_id; - $newEquipament->equipment_type_id = $equipmentType->equipment_type_id; - $newEquipament->equipment_Description = $datas['equipment_Description']; - $newEquipament->equipment_tag = $datas['tag']; - $newEquipament->equipment_serial_number = $datas['n_serie']; - $newEquipament->equipment_model = $datas['modelo']; + // // Atributos que você quer buscar e inserir + // $attributes = ["dimension", "dn_ent", "p&id", "n_sap", "isolation", "scaffolding", "grua", "interlocks"]; - $newEquipament->save(); + // // Comece a partir da sexta linha + // for ($i = 6; $i < count($data); $i++) { - $receveEquipment_ID = $newEquipament->equipment_id; - - $receveEquipament_type_ID = $newEquipament->equipment_type_id; + // $dadosLinha = $data[$i]; + + // //Se nao preencher o campo $dadosLinha[0], nao cria um novo equipamento + // //Trocar pelos 5 primeiros + // if (empty($dadosLinha[0])) { + // continue; + // } - foreach ($attributes as $attribute) { + // $juntarArrays = array_combine($nomesColunas, $dadosLinha); - $generalAttribute = GeneralAttributesEquipment::where('general_attributes_equipment_description', $attribute)->first(); + // $datas = array_filter($juntarArrays, function ($chave) { + // return !empty($chave); + // }, ARRAY_FILTER_USE_KEY); - + // $equipmentType = EquipmentType::where('equipment_type_name', $datas['tipo_equipamento'])->first(); - if (!is_null($generalAttribute)) { + // $checkFactory = Unit::where('unit_name', $datas['fabrica'])->first(); - $specificAttribute = new SpecificAttributesEquipmentType; - $specificAttribute->equipment_id = $receveEquipment_ID; - $specificAttribute->equipment_type_id = $receveEquipament_type_ID; - $specificAttribute->specific_attributes_equipment_type_id = $generalAttribute->general_attributes_equipment_id; - $specificAttribute->specific_attributes_value = $datas[$attribute]; + // // Antes de criar o novo equipamento, verifique se já existe um equipamento + // // com o mesmo factory_id e tag. + // $existingEquipment = Equipment::where('unit_id', $checkFactory->unit_id) + // ->where('equipment_tag', $datas['tag']) + // ->first(); - $specificAttribute->save(); + // if ($existingEquipment) { + // // Se o equipamento existir, crie o novo equipamento na tabela pending_equipaments. + // $pendingEquipament = new PendingEquipment; + // // Defina os atributos do pendingEquipament conforme necessário. + // $pendingEquipament->pending_equipment_unit_id = $checkFactory->unit_id; + // $pendingEquipament->pending_equipment_type_id = $equipmentType->equipment_type_id; + // $pendingEquipament->pending_equipment_tag = $datas['tag']; + // $pendingEquipament->pending_equipment_description = $datas['equipment_Description']; + // $pendingEquipament->pending_equipment_serial_number = $datas['n_serie']; + // $pendingEquipament->pending_equipment_brand = $datas['modelo']; - } - } - } - - $listValves = Equipment::all(); - return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso')->with('listValves', $listValves); - } - - } + // $pendingEquipament->save(); + + // // Adicione uma variável de sessão para indicar que um equipamento pendente foi criado. + // session(['pendingEquipmentCreated' => true]); + + // // Adicione uma variável de sessão para indicar que um equipamento pendente foi criado. + // session()->push('pendingEquipments', $pendingEquipament); + + // // Continue com o próximo loop. + // continue; + // } + + // $newEquipament = new Equipment; + + // $newEquipament->unit_id = $checkFactory->unit_id; + // $newEquipament->equipment_type_id = $equipmentType->equipment_type_id; + // $newEquipament->equipment_Description = $datas['equipment_Description']; + // $newEquipament->equipment_tag = $datas['tag']; + // $newEquipament->equipment_serial_number = $datas['n_serie']; + // $newEquipament->equipment_model = $datas['modelo']; + + // $newEquipament->save(); + + // $receveEquipment_ID = $newEquipament->equipment_id; + + // $receveEquipament_type_ID = $newEquipament->equipment_type_id; + + + // foreach ($attributes as $attribute) { + + // $generalAttribute = GeneralAttributesEquipment::where('general_attributes_equipment_description', $attribute)->first(); + + // if (!is_null($generalAttribute)) { + + // $specificAttribute = new SpecificAttributesEquipmentType; + + // $specificAttribute->equipment_id = $receveEquipment_ID; + // $specificAttribute->equipment_type_id = $receveEquipament_type_ID; + // $specificAttribute->specific_attributes_equipment_type_id = $generalAttribute->general_attributes_equipment_id; + // $specificAttribute->specific_attributes_value = $datas[$attribute]; + + // // $specificAttribute->save(); + // } + // } + // } + + // $listValves = Equipment::all(); + // $pendingEquipments = PendingEquipment::all(); + + // // return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso')->with('listValves', $listValves); + + // // return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso')->with('listValves', $listValves)->with('pendingEquipments', $pendingEquipments); + + // $listValves = Equipment::all(); + // $pendingEquipments = session('pendingEquipments'); + // if ($pendingEquipments) { + // return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso')->with('listValves', $listValves)->with('pendingEquipments', $pendingEquipments); + // } else { + // return redirect()->route('createProject')->with('success', 'Dados guardados com sucesso')->with('listValves', $listValves); + // } + // } + // } } diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index 1c7accf9..c14a3185 100644 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -4,12 +4,22 @@ use App\Models\Equipment; use App\Models\Plant; +use App\Models\CompanyProject; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; class ProjectoDatacontroller extends Controller { + + public function HomePage(){ + $CompanyProject = CompanyProject::all(); + + return view('Admin/index') + // return view('codePronto'); + ->with("CompanyProject", $CompanyProject); + } + public function ManageAssets() { diff --git a/app/Models/AmbitsEquipment.php b/app/Models/AmbitsEquipment.php index 5e100ff6..1d6b0c3f 100644 --- a/app/Models/AmbitsEquipment.php +++ b/app/Models/AmbitsEquipment.php @@ -12,8 +12,10 @@ class AmbitsEquipment extends Model protected $table = 'ambits_equipments'; protected $primaryKey = 'ambits_equipment_id'; - - public $timestamps = false; + + public function equipmentAssociationAmbit(){ + return $this->hasMany(EquipmentAssociationAmbit::class, 'ambits_id', 'ambits_id'); + } } diff --git a/app/Models/Equipment.php b/app/Models/Equipment.php index e8cfb116..627f96e8 100644 --- a/app/Models/Equipment.php +++ b/app/Models/Equipment.php @@ -30,12 +30,20 @@ public function equipmentType() return $this->belongsTo(EquipmentType::class, 'equipment_type_id', 'equipment_type_id'); } + // public function specificAttributes() + // { + // return $this->hasMany(SpecificAttributesEquipmentType::class, 'equipment_id', 'equipment_id'); + // } + public function specificAttributes() { - return $this->hasMany(SpecificAttributesEquipmentType::class, 'equipment_id', 'equipment_id'); + return $this->hasMany(SpecificAttributesEquipmentType::class, 'equipment_id', 'equipment_id') + ->join('general_attributes_equipaments', 'specific_attributes_equipament_types.general_attributes_equipment_id', '=', 'general_attributes_equipaments.general_attributes_equipment_id') + ->orderBy('general_attributes_equipaments.general_attributes_equipment_description', 'asc'); } - - - + public function equipmentAssociationAmbit() + { + return $this->hasMany(EquipmentAssociationAmbit::class, 'equipment_id', 'equipment_id'); + } } diff --git a/app/Models/EquipmentAssociationAmbit.php b/app/Models/EquipmentAssociationAmbit.php new file mode 100644 index 00000000..771bedbf --- /dev/null +++ b/app/Models/EquipmentAssociationAmbit.php @@ -0,0 +1,28 @@ +belongsTo(EquipmentType::class,'equipment_type_id', 'equipment_type_id'); + } + + public function ambitsEquipment(){ + return $this->belongsTo(AmbitsEquipment::class,'ambits_id', 'ambits_id'); + } + + public function Equipment(){ + return $this->belongsTo(Equipment::class,'equipment_id', 'equipment_id'); + + } +} diff --git a/app/Models/EquipmentType.php b/app/Models/EquipmentType.php index 0c8754f0..e46010b1 100644 --- a/app/Models/EquipmentType.php +++ b/app/Models/EquipmentType.php @@ -17,7 +17,16 @@ public function equipments(){ return $this->hasMany(Equipment::class, 'equipment_type_id', 'equipment_type_id'); } + public function pendingEquipments(){ + return $this->hasMany(PendingEquipment::class, 'pending_equipment_type_id', 'equipment_type_id'); + } + + public function specificAttributesEquipamentTypes(){ return $this->hasMany(SpecificAttributesEquipmentType::class, 'equipment_type_id', 'equipment_type_id'); } + + public function equipmentAssociationAmbits(){ + return $this->hasMany(EquipmentAssociationAmbit::class,'equipment_type_id', 'equipment_type_id'); + } } diff --git a/app/Models/GeneralAttributesEquipment.php b/app/Models/GeneralAttributesEquipment.php index 4de27217..85544d35 100644 --- a/app/Models/GeneralAttributesEquipment.php +++ b/app/Models/GeneralAttributesEquipment.php @@ -15,6 +15,6 @@ class GeneralAttributesEquipment extends Model public function specificAttributes() { - return $this->hasMany(SpecificAttributesEquipmentType::class, 'specific_attributes_equipment_type_id', 'general_attributes_equipment_id'); + return $this->hasMany(SpecificAttributesEquipmentType::class, 'general_attributes_equipment_id', 'general_attributes_equipment_id'); } } diff --git a/app/Models/PendingEquipment.php b/app/Models/PendingEquipment.php index 2ab62af9..f2d604c1 100644 --- a/app/Models/PendingEquipment.php +++ b/app/Models/PendingEquipment.php @@ -14,4 +14,15 @@ class PendingEquipment extends Model protected $table = 'pending_equipments'; protected $primaryKey = 'pending_equipment_id'; + + public function unit() + { + return $this->belongsTo(Unit::class, 'pending_equipment_unit_id', 'unit_id'); + } + + public function equipmentType() + { + return $this->belongsTo(EquipmentType::class, 'pending_equipment_type_id', 'equipment_type_id'); + } + } diff --git a/app/Models/SpecificAttributesEquipmentType.php b/app/Models/SpecificAttributesEquipmentType.php index 035b3cf5..2313fd4f 100644 --- a/app/Models/SpecificAttributesEquipmentType.php +++ b/app/Models/SpecificAttributesEquipmentType.php @@ -22,10 +22,13 @@ public function equipment() return $this->belongsTo(Equipment::class, 'equipment_id', 'equipment_id'); } - public function generalAttribute() - { - return $this->belongsTo(GeneralAttributesEquipment::class, 'specific_attributes_equipment_type_id', 'general_attributes_equipment_id'); - } + public function generalAttributesEquipment() +{ + return $this->belongsTo(GeneralAttributesEquipament::class, 'general_attributes_equipment_id', 'general_attributes_equipment_id'); +} + + + } diff --git a/app/Models/Unit.php b/app/Models/Unit.php index 907627d1..61476dfc 100644 --- a/app/Models/Unit.php +++ b/app/Models/Unit.php @@ -8,6 +8,7 @@ class Unit extends Model { use HasFactory; + public $timestamps = false; protected $table = 'units'; @@ -16,4 +17,8 @@ public function equipments(){ return $this->hasMany(Equipment::class, 'unit_id', 'unit_id'); } + + public function pendingEquipments(){ + return $this->hasMany(PendingEquipment::class, 'pending_equipment_unit_id', 'unit_id'); + } } diff --git a/public/StyleAdmin/css/adminlte.css b/public/StyleAdmin/css/adminlte.css index ed3e1ed7..de80dc17 100644 --- a/public/StyleAdmin/css/adminlte.css +++ b/public/StyleAdmin/css/adminlte.css @@ -41,6 +41,52 @@ :root { --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +.has-float-label { + position: relative; + font-size: 70%; + width: 100%; +} + +.has-float-label label { + position: absolute; + opacity: 1; + transition: all .2s; + top: -.5em; + left: .75rem; + z-index: 0; + line-height: 1; + padding: 0 1px; + color: gray; + +} + +.has-float-label label::after { + content: " "; + display: block; + position: absolute; + background: #fff; + height: 2px; + top: 50%; + left: -.2em; + right: -.2em; + z-index: -1; +} + +.has-float-label .form-control:placeholder-shown:not(:focus)::-webkit-input-placeholder { + opacity: 0; + +} + +.has-float-label .form-control:placeholder-shown:not(:focus)+label { + font-size: 120%; + opacity: .5; + top: .3em; + +} + + + /* Progress Bar */ #progressbar { @@ -72,6 +118,7 @@ #progressbar li:before { background: rgb(196, 196, 196); border-radius: 3px; margin: 0 auto 5px auto; + text-align: center; } /*progressbar connectors*/ @@ -102,6 +149,14 @@ #progressbar li.active:after { color: white; } +/* Inputs Obrigatorios */ +input[required] { + border-color: red; +} +.required { + color: red; +} + #msform { text-align: center; diff --git a/resources/views/Admin/index.blade.php b/resources/views/Admin/index.blade.php index 1d5bb3c6..817d8b89 100644 --- a/resources/views/Admin/index.blade.php +++ b/resources/views/Admin/index.blade.php @@ -1,256 +1,238 @@ @extends('Templates/templateAdmin') @section('Main-content') + - -
Criar obra
+ +