Azienda.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Support\Facades\Validator;
  6. class Azienda extends Model
  7. {
  8. use HasFactory;
  9. protected $fillable = [
  10. 'ragione_sociale',
  11. 'nome_associazione',
  12. 'tipologia',
  13. 'logo',
  14. 'sede_legale_nazione',
  15. 'sede_legale_provincia',
  16. 'sede_legale_comune',
  17. 'sede_legale_indirizzo',
  18. 'sede_legale_cap',
  19. 'sede_operativa_nazione',
  20. 'sede_operativa_provincia',
  21. 'sede_operativa_comune',
  22. 'sede_operativa_indirizzo',
  23. 'sede_operativa_cap',
  24. 'same_address',
  25. 'email',
  26. 'pec',
  27. 'telefono',
  28. 'cellulare',
  29. 'partita_iva',
  30. 'codice_fiscale',
  31. 'codice_sdi',
  32. 'discipline',
  33. ];
  34. protected $casts = [
  35. 'chiusura_anno_fiscale' => 'date',
  36. 'scadenza_abbonamenti' => 'date',
  37. 'scadenza_pagamenti_uscita' => 'date',
  38. ];
  39. /**
  40. * Valida i campi richiesti prima della generazione del PDF.
  41. *
  42. * @return array|bool true se valido, oppure array di errori se non valido
  43. */
  44. public function validate()
  45. {
  46. $rules = [
  47. 'ragione_sociale' => 'required|string|max:255',
  48. 'email' => 'required|email|max:255',
  49. 'pec' => 'required|email|max:255',
  50. 'cellulare' => 'required|string|max:20',
  51. ];
  52. $validator = Validator::make($this->attributesToArray(), $rules);
  53. if ($validator->fails()) {
  54. return $validator->errors()->toArray();
  55. }
  56. return true;
  57. }
  58. /**
  59. * Restituisce true se l’azienda è valida (tutti i campi richiesti presenti).
  60. */
  61. public function isValid()
  62. {
  63. return $this->validate() === true;
  64. }
  65. /**
  66. * Get the logo URL attribute.
  67. *
  68. * @return string|null
  69. */
  70. public function getLogoUrlAttribute()
  71. {
  72. if ($this->logo) {
  73. return asset('storage/' . $this->logo);
  74. }
  75. return null;
  76. }
  77. /**
  78. * Get a formatted list of discipline names.
  79. *
  80. * @return string
  81. */
  82. public function getDisciplineListAttribute()
  83. {
  84. return $this->disciplines->pluck('name')->implode(', ');
  85. }
  86. }