HasPolizza.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. namespace App\Http\Livewire\Traits;
  3. use App\Models\Polizza;
  4. use Carbon\Carbon;
  5. trait HasPolizza{
  6. public $currentPolizza;
  7. public $data_polizze;
  8. public $compagnia_id;
  9. public $agenzia;
  10. public $polizza_num;
  11. public $valida_dal;
  12. public $valida_al;
  13. public $anagrafica_id;
  14. public $modalType;
  15. protected function getPolizzaRules(){
  16. return [
  17. 'compagnia_id' => 'required',
  18. 'polizza_num' => 'required',
  19. 'valida_dal' => 'required',
  20. 'valida_al' => 'required',
  21. 'anagrafica_id' => 'required'
  22. ];
  23. }
  24. public function getPolizza($polizza){
  25. if ($polizza > 0) {
  26. $ret = Polizza::with('compagnia')->with('anagrafica')->findOrFail($polizza);
  27. return $ret->agenzia . " " .
  28. ($ret->compagnia ? $ret->compagnia->name : '') . " " .
  29. ($ret->anagrafica ? ($ret->anagrafica->lastname . " " . $ret->anagrafica->firstname) : '');
  30. }
  31. return "";
  32. }
  33. public function addPolizza(){
  34. $this->resetPolizza();
  35. $this->currentPolizza = 99;
  36. $this->emit('load-polizza-modal');
  37. }
  38. public function removePolizza(){
  39. $this->data_polizze = 0;
  40. $this->emit('add-default-value', $this->data_polizze, '', 'data_polizze');
  41. }
  42. public function editPolizza(){
  43. $this->currentPolizza = $this->data_polizze;
  44. $this->editPolizzaData($this->data_polizze);
  45. $this->emit('load-polizza-modal');
  46. }
  47. public function savePolizza(){
  48. $this->validate($this->getPolizzaRules());
  49. try {
  50. if ($this->currentPolizza) {
  51. $polizza = Polizza::find($this->currentPolizza);
  52. } else {
  53. $polizza = new Polizza();
  54. }
  55. $polizza->compagnia_id = $this->compagnia_id;
  56. $polizza->agenzia = $this->agenzia;
  57. $polizza->polizza_num = $this->polizza_num;
  58. $polizza->valida_dal = Carbon::createFromFormat('d/m/Y', $this->valida_dal)->format('Y-m-d');
  59. $polizza->valida_al = Carbon::createFromFormat('d/m/Y', $this->valida_al)->format('Y-m-d');
  60. $polizza->anagrafica_id = $this->anagrafica_id;
  61. $polizza->save();
  62. $this->emit('polizzaSaved', [
  63. 'id' => $polizza->id,
  64. 'text' => $this->getPolizza($polizza->id)
  65. ]);
  66. $this->emit('closePolizzaModal');
  67. $this->dispatchBrowserEvent('notify', ['message' => 'Polizza salvata con successo']);
  68. } catch (\Exception $e) {
  69. $this->dispatchBrowserEvent('notify', [
  70. 'type' => 'error',
  71. 'message' => 'Errore durante il salvataggio della polizza: ' . $e->getMessage()
  72. ]);
  73. }
  74. }
  75. private function resetPolizza(){
  76. $this->compagnia_id = null;
  77. $this->agenzia = null;
  78. $this->polizza_num = null;
  79. $this->valida_dal = null;
  80. $this->valida_al = null;
  81. $this->anagrafica_id = null;
  82. }
  83. public function cleanPolizzaData(){
  84. $this->resetPolizza();
  85. $this->currentPolizza = null;
  86. }
  87. private function editPolizzaData($id){
  88. if ($id) {
  89. $polizza = Polizza::with(['anagrafica', 'compagnia'])->find($id);
  90. if ($polizza) {
  91. $this->compagnia_id = $polizza->compagnia_id;
  92. $this->agenzia = $polizza->agenzia;
  93. $this->polizza_num = $polizza->polizza_num;
  94. $this->valida_dal = $polizza->valida_dal;
  95. $this->valida_al = $polizza->valida_al;
  96. $this->anagrafica_id = $polizza->anagrafica_id;
  97. $this->emit('updatePolizzaSelects', [
  98. 'anagrafica' => [
  99. 'id' => $polizza->anagrafica_id,
  100. 'text' => $this->getAnagrafica($polizza->anagrafica_id)
  101. ],
  102. 'compagnia' => [
  103. 'id' => $polizza->compagnia_id,
  104. 'text' => $polizza->compagnia ? $polizza->compagnia->name : ''
  105. ],
  106. 'agenzia' => $polizza->agenzia
  107. ]);
  108. }
  109. }
  110. }
  111. public function addAnagraficaPolizza(){
  112. $this->resetAnagrafica();
  113. $this->currentAnagrafica = 99;
  114. $this->modalType = 'polizza';
  115. $this->emit('load-anagrafica-modal');
  116. }
  117. public function removeAnagraficaPolizza(){
  118. $this->anagrafica_id = 0;
  119. $this->emit('add-default-value', $this->anagrafica_id, '', 'anagrafica_id');
  120. }
  121. public function editAnagraficaPolizza(){
  122. $this->currentAnagrafica = $this->anagrafica_id;
  123. $this->modalType = 'polizza';
  124. $this->editAnagrafica($this->anagrafica_id);
  125. $this->emit('load-anagrafica-modal');
  126. }
  127. }