Azienda.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. $rules_human = [
  53. 'ragione_sociale' => "Ragione sociale",
  54. 'email' => "Email",
  55. 'pec' => "Pec",
  56. 'cellulare' => "Cellulare",
  57. ];
  58. $validator = Validator::make($this->attributesToArray(), $rules);
  59. if ($validator->fails()) {
  60. $errors = [];
  61. foreach ($validator->errors()->messages() as $field => $error) {
  62. $errors[$field] = isset($rules_human[$field]) ? $rules_human[$field] : $field;
  63. }
  64. return $errors;
  65. }
  66. return true;
  67. }
  68. /**
  69. * Restituisce true se l'azienda è valida (tutti i campi richiesti presenti).
  70. */
  71. public function isValid()
  72. {
  73. return $this->validate() === true;
  74. }
  75. /**
  76. * Get the logo URL attribute.
  77. *
  78. * @return string|null
  79. */
  80. public function getLogoUrlAttribute()
  81. {
  82. if ($this->logo) {
  83. return asset('storage/' . $this->logo);
  84. }
  85. return null;
  86. }
  87. /**
  88. * Get a formatted list of discipline names.
  89. *
  90. * @return string
  91. */
  92. public function getDisciplineListAttribute()
  93. {
  94. return $this->disciplines->pluck('name')->implode(', ');
  95. }
  96. }