1111 * See the License for the specific language governing permissions and
1212 * limitations under the License.
1313 **/
14+
15+ use App \Services \Model \IAttendeeService ;
1416use Illuminate \Bus \Queueable ;
1517use Illuminate \Contracts \Queue \ShouldQueue ;
1618use Illuminate \Foundation \Bus \Dispatchable ;
1719use Illuminate \Queue \InteractsWithQueue ;
1820use Illuminate \Queue \SerializesModels ;
1921use Illuminate \Support \Facades \Log ;
2022use libs \utils \ITransactionService ;
21- use models \exceptions \EntityNotFoundException ;
2223use models \summit \ISummitAttendeeRepository ;
2324use models \summit \ISummitRepository ;
24- use models \summit \Summit ;
25- use models \summit \SummitAttendee ;
2625
2726/**
2827 * Class SynchAllAttendeesStatus
2928 * @package App\Jobs
3029 */
31- class SynchAllAttendeesStatus implements ShouldQueue
30+ final class SynchAllAttendeesStatus implements ShouldQueue
3231{
3332 public $ tries = 1 ;
3433
35- public $ timeout = 0 ;
36-
3734 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
3835
3936 /**
@@ -51,36 +48,22 @@ public function __construct(int $summit_id)
5148 }
5249
5350 /**
51+ * @param IAttendeeService $service
5452 * @param ISummitRepository $repository
53+ * @param ISummitAttendeeRepository $attendeeRepository
5554 * @param ITransactionService $tx_service
55+ * @return void
5656 * @throws \Exception
5757 */
58- public function handle (
59- ISummitRepository $ repository ,
60- ISummitAttendeeRepository $ attendeeRepository ,
61- ITransactionService $ tx_service
62- )
58+ public function handle (IAttendeeService $ service )
6359 {
6460 Log::debug (sprintf ("SynchAllAttendeesStatus::handle summit %s " , $ this ->summit_id ));
65- $ attendees_ids = $ tx_service ->transaction (function () use ($ repository ){
66- $ attendees_ids = [];
67- $ summit = $ repository ->getById ($ this ->summit_id );
68- if (!$ summit instanceof Summit)
69- throw new EntityNotFoundException (sprintf ("Summit %s not found " , $ this ->summit_id ));
70-
71- foreach ($ summit ->getAttendees () as $ a )
72- $ attendees_ids [] = $ a ->getId ();
73-
74- return $ attendees_ids ;
75- });
61+ $ service ->resynchAttendeesStatusBySummit ($ this ->summit_id );
62+ }
7663
77- foreach ($ attendees_ids as $ attendee_id ){
78- $ tx_service ->transaction (function () use ($ attendeeRepository , $ attendee_id ){
79- $ attendee = $ attendeeRepository ->getById ($ attendee_id );
80- if (!$ attendee instanceof SummitAttendee) return ;
81- $ attendee ->updateStatus ();
82- });
83- }
64+ public function failed (\Throwable $ exception )
65+ {
66+ Log::error ($ exception );
8467 }
8568}
8669
0 commit comments