Cargo diferente para cada empresa
[Concluído]
Tentei vicular os cargos ao tenant, porém vi que se eu deixda-los como unique no banco, um tenant não cosnegue cadastrar se ja tiver no banco. Vi tambem que se eu tirar o unique, posso acabar repetindo o nome no banco. Existe uma maneira de deixar unique apenas no tenant?
Fiz da seguinte maneira. Removi o unique do banco de dados e da validator. No model de Roles criei um metodo que faz uma busca na tabela comparando o nome do cargo ao que ja tem na tabela e compara com o tenant_id.
No controller, após passar pela validação submeto o $request->name e o $tenant_id a este metodo, se voltar null, deixo seguir a diante para cadastro, caso retorne o objeto, dou um redirect back informando que o cargo ja esta cadastrado dentro do tenant.
Com isso consegui cadastrar cargos iguais para diferentes tenants.
Sou iniciante mas se puder melhora isso será bom de mais!
// Model
public function rolesName($id, $name)
{
return $this->where('tenant_id', $id)
->where('name', $name)->first();
}
// Controller
public function store(StoreUpdateRoleRequest $request)
{
$tenant = auth()->user()->tenant->id;
$result = $this->repository->rolesName($tenant, $request->name);
if($result){
return redirect()->back()->with('warning', 'Esse cargo já esta cadastrado');
}
$this->repository->create($request->all());
return redirect()->route('roles.index')->with('success', 'Cargo cadastrado com sucesso');
}
Olá, Ricardo!
Tudo bem?
Existe sim amigo, aqui ensino como criar um validator personalizado por tenant: https://academy.especializati.com.br/aula/criar-validacao-personalizada-no-laravel-tenant-unique
A legal bacana muito melhor e sem gambiarras como eu fiz. Obrigado.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!