Company.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. use Illuminate\Support\Facades\Log;
  7. use Illuminate\Support\Facades\DB;
  8. class Company extends Model
  9. {
  10. use HasFactory;
  11. use SoftDeletes;
  12. public function __construct()
  13. {
  14. $this->setTenant();
  15. }
  16. protected $fillable = [
  17. 'name',
  18. 'business_name',
  19. 'logo',
  20. 'phone',
  21. 'email',
  22. 'pec',
  23. 'costitution_date',
  24. 'address',
  25. 'zip',
  26. 'city_id',
  27. 'country_id',
  28. 'operational_headquarters',
  29. 'fiscal_code',
  30. 'vat',
  31. 'sdi_code',
  32. 'ateco_code',
  33. 'enabled',
  34. ];
  35. public function country()
  36. {
  37. return $this->belongsTo(\App\Models\Country::class);
  38. }
  39. public function city()
  40. {
  41. return $this->belongsTo(\App\Models\City::class);
  42. }
  43. public function activities()
  44. {
  45. return $this->hasMany(\App\Models\CompanyActivity::class);
  46. }
  47. public function rates()
  48. {
  49. return $this->hasMany(\App\Models\CompanyActivity::class);
  50. }
  51. public function services()
  52. {
  53. return $this->hasMany(\App\Models\CompanyActivity::class);
  54. }
  55. function setTenant()
  56. {
  57. $user = auth()->user();
  58. if ($user) {
  59. Log::info('Setting database connection', [
  60. 'database' => $user->tenant_database,
  61. 'username' => $user->tenant_username,
  62. // 'password' => $user->tenant_password
  63. ]);
  64. $connection = [
  65. 'driver' => 'mysql',
  66. 'host' => '127.0.0.1',
  67. 'port' => '3306',
  68. 'database' => $user->tenant_database,
  69. 'username' => $user->tenant_username,
  70. // 'password' => $user->tenant_password,
  71. ];
  72. config(['database.connections.tenant' => $connection]);
  73. config(['database.default' => 'tenant']);
  74. DB::purge('tenant');
  75. DB::reconnect('tenant');
  76. session(['currentClient' => $user->tenant_database]);
  77. session(['db_connection' => $connection]);
  78. Log::info('Current database after setup: ' . DB::connection()->getDatabaseName());
  79. Log::info('Current default connection: ' . DB::getDefaultConnection());
  80. }
  81. }
  82. }