From fbd397e1df074f0c1fa50e73a122d3ce48d13371 Mon Sep 17 00:00:00 2001
From: philipp lang <philipp@aweos.de>
Date: Thu, 24 Jun 2021 00:12:47 +0200
Subject: [PATCH] Add create and delete member

---
 app/Member/DeleteJob.php         | 46 ++++++++++++++++++++++++++++++++
 app/Member/MemberRequest.php     |  8 +++++-
 resources/lang/de/validation.php |  1 +
 3 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 app/Member/DeleteJob.php

diff --git a/app/Member/DeleteJob.php b/app/Member/DeleteJob.php
new file mode 100644
index 00000000..5b1be239
--- /dev/null
+++ b/app/Member/DeleteJob.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Member;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Zoomyboy\LaravelNami\Nami;
+use App\Confession;
+
+class DeleteJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $memberId;
+    public $member;
+    public $user;
+
+    public function __construct(Member $member, $user)
+    {
+        $this->memberId = $member->id;
+        $this->user = $user;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        $this->member = Member::find($this->memberId);
+
+        if (!$this->member->hasNami) {
+            return false;
+        }
+
+        Nami::login($this->user->mglnr)->deleteMember($this->member->nami_id);
+
+        Member::withoutEvents(function() {
+            $this->member->update(['nami_id' => null]);
+        });
+    }
+}
diff --git a/app/Member/MemberRequest.php b/app/Member/MemberRequest.php
index 3fc5a0f6..99d938de 100644
--- a/app/Member/MemberRequest.php
+++ b/app/Member/MemberRequest.php
@@ -59,7 +59,10 @@ class MemberRequest extends FormRequest
 
     public function persistCreate() {
         $this->merge(['group_id' => Group::where('nami_id', auth()->user()->getNamiGroupId())->firstOrFail()->id]);
-        $m = Member::create($this->input());
+        $member = Member::create($this->input());
+        if($this->input('has_nami')) {
+            CreateJob::dispatch($member, auth()->user());
+        }
     }
 
     public function persistUpdate(Member $member) {
@@ -71,5 +74,8 @@ class MemberRequest extends FormRequest
         if($this->input('has_nami') && $member->nami_id !== null) {
             UpdateJob::dispatch($member, auth()->user());
         }
+        if(!$this->input('has_nami') && $member->nami_id !== null) {
+            DeleteJob::dispatch($member, auth()->user());
+        }
     }
 }
diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php
index bdbaa7c3..3c3f833e 100644
--- a/resources/lang/de/validation.php
+++ b/resources/lang/de/validation.php
@@ -187,5 +187,6 @@ return [
         'nationality_id' => 'Staatsangehörigkeit',
         'first_group_id' => 'Erste Untertätigkeit',
         'first_activity_id' => 'Erste Tätigkeit',
+        'fee_id' => 'Beitragsart',
     ],
 ];