Add subscriptions
This commit is contained in:
parent
0202d29c32
commit
9c580b7eb5
|
@ -4,6 +4,8 @@ namespace App;
|
|||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use App\Member\Member;
|
||||
use App\Payment\Subscription;
|
||||
|
||||
class Fee extends Model
|
||||
{
|
||||
|
@ -11,4 +13,9 @@ class Fee extends Model
|
|||
|
||||
public $fillable = ['name', 'nami_id'];
|
||||
public $timestamps = false;
|
||||
|
||||
|
||||
public function subscriptions() {
|
||||
return $this->hasMany(Subscription::class);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,11 @@ class InitializeFees {
|
|||
public function handle() {
|
||||
$this->bar->task('Synchronisiere Beiträge', function() {
|
||||
$this->api->group(auth()->user()->getNamiGroupId())->fees()->each(function($fee) {
|
||||
\App\Fee::create(['nami_id' => $fee->id, 'name' => $fee->name]);
|
||||
\App\Fee::create(['nami_id' => $fee->id, 'name' => $fee->name])
|
||||
->subscriptions()->create([
|
||||
'name' => $fee->name,
|
||||
'amount' => 1000,
|
||||
]);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -22,6 +22,15 @@ class InitializeMembers {
|
|||
$this->api = $api;
|
||||
}
|
||||
|
||||
public function getSubscriptionId($member) {
|
||||
$fee = Fee::firstWhere('nami_id', $member->fee_id ?: -1);
|
||||
if (is_null($fee)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return optional($fee->subscriptions()->first())->id;
|
||||
}
|
||||
|
||||
public function handle() {
|
||||
$allMembers = collect([]);
|
||||
|
||||
|
@ -52,7 +61,7 @@ class InitializeMembers {
|
|||
'confession_id' => optional(Confession::firstWhere('nami_id', $member->confession_id ?: -1))->id,
|
||||
'region_id' => optional(Region::firstWhere('nami_id', $member->region_id ?: -1))->id,
|
||||
'country_id' => Country::where('nami_id', $member->country_id)->firstOrFail()->id,
|
||||
'fee_id' => optional(Fee::firstWhere('nami_id', $member->fee_id ?: -1))->id,
|
||||
'subscription_id' => $this->getSubscriptionId($member),
|
||||
'nationality_id' => Nationality::where('nami_id', $member->nationality_id)->firstOrFail()->id,
|
||||
'version' => $member->version,
|
||||
]);
|
||||
|
|
|
@ -62,7 +62,7 @@ class CreateJob implements ShouldQueue
|
|||
'confession_id' => $this->member->confession ? $this->member->confession->nami_id : Confession::firstWhere('is_null', true)->id,
|
||||
'region_id' => optional($this->member->region)->nami_id,
|
||||
'country_id' => $this->member->country->nami_id,
|
||||
'fee_id' => optional($this->member->fee)->nami_id,
|
||||
'fee_id' => $this->member->getNamiFeeId(),
|
||||
'nationality_id' => $this->member->nationality->nami_id,
|
||||
'group_id' => $this->member->group->nami_id,
|
||||
'first_activity_id' => $this->member->firstActivity->nami_id,
|
||||
|
|
|
@ -8,18 +8,18 @@ use Illuminate\Notifications\Notifiable;
|
|||
use App\Bill\BillKind;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use App\Nationality;
|
||||
use App\Fee;
|
||||
use App\Group;
|
||||
use App\Activity;
|
||||
use App\Subactivity;
|
||||
use Zoomyboy\LaravelNami\NamiUser;
|
||||
use App\Payment\Subscription;
|
||||
|
||||
class Member extends Model
|
||||
{
|
||||
use Notifiable;
|
||||
use HasFactory;
|
||||
|
||||
public $fillable = ['firstname', 'lastname', 'nickname', 'other_country', 'birthday', 'joined_at', 'send_newspaper', 'address', 'further_address', 'zip', 'location', 'main_phone', 'mobile_phone', 'work_phone', 'fax', 'email', 'email_parents', 'nami_id', 'group_id', 'letter_address', 'country_id', 'way_id', 'nationality_id', 'fee_id', 'region_id', 'gender_id', 'confession_id', 'letter_address', 'bill_kind_id', 'version', 'first_subactivity_id', 'first_activity_id', 'confirmed_at', 'children_phone'];
|
||||
public $fillable = ['firstname', 'lastname', 'nickname', 'other_country', 'birthday', 'joined_at', 'send_newspaper', 'address', 'further_address', 'zip', 'location', 'main_phone', 'mobile_phone', 'work_phone', 'fax', 'email', 'email_parents', 'nami_id', 'group_id', 'letter_address', 'country_id', 'way_id', 'nationality_id', 'subscription_id', 'region_id', 'gender_id', 'confession_id', 'letter_address', 'bill_kind_id', 'version', 'first_subactivity_id', 'first_activity_id', 'confirmed_at', 'children_phone'];
|
||||
|
||||
public $dates = ['joined_at', 'birthday'];
|
||||
|
||||
|
@ -56,6 +56,14 @@ class Member extends Model
|
|||
return $api->group($this->group->nami_id)->member($this->nami_id)->memberships()->toArray();
|
||||
}
|
||||
|
||||
public function getNamiFeeId() {
|
||||
if (!$this->subscription) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this->subscription->fee->nami_id;
|
||||
}
|
||||
|
||||
//---------------------------------- Relations ----------------------------------
|
||||
public function country()
|
||||
{
|
||||
|
@ -97,9 +105,9 @@ class Member extends Model
|
|||
return $this->hasMany(Membership::class);
|
||||
}
|
||||
|
||||
public function fee()
|
||||
public function subscription()
|
||||
{
|
||||
return $this->belongsTo(Fee::class);
|
||||
return $this->belongsTo(Subscription::class);
|
||||
}
|
||||
|
||||
public function billKind() {
|
||||
|
|
|
@ -5,7 +5,6 @@ namespace App\Member;
|
|||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Gender;
|
||||
use App\Fee;
|
||||
use App\Region;
|
||||
use App\Country;
|
||||
use App\Nationality;
|
||||
|
@ -13,6 +12,7 @@ use App\Confession;
|
|||
use App\Bill\BillKind;
|
||||
use App\Activity;
|
||||
use App\Group;
|
||||
use App\Payment\Subscription;
|
||||
|
||||
class MemberController extends Controller
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ class MemberController extends Controller
|
|||
'regions' => Region::where('is_null', false)->get()->pluck('name', 'id'),
|
||||
'nationalities' => Nationality::get()->pluck('name', 'id'),
|
||||
'confessions' => Confession::where('is_null', false)->get()->pluck('name', 'id'),
|
||||
'fees' => Fee::get()->pluck('name', 'id'),
|
||||
'subscriptions' => Subscription::get()->pluck('name', 'id'),
|
||||
'data' => [
|
||||
'country_id' => Country::default()
|
||||
],
|
||||
|
@ -69,7 +69,7 @@ class MemberController extends Controller
|
|||
'regions' => Region::where('is_null', false)->get()->pluck('name', 'id'),
|
||||
'nationalities' => Nationality::get()->pluck('name', 'id'),
|
||||
'confessions' => Confession::where('is_null', false)->get()->pluck('name', 'id'),
|
||||
'fees' => Fee::get()->pluck('name', 'id'),
|
||||
'subscriptions' => Subscription::get()->pluck('name', 'id'),
|
||||
'data' => new MemberResource($member),
|
||||
'mode' => 'edit',
|
||||
]);
|
||||
|
|
|
@ -26,7 +26,7 @@ class MemberResource extends JsonResource
|
|||
'joined_at' => $this->joined_at->format('Y-m-d'),
|
||||
'joined_at_human' => $this->joined_at->format('d.m.Y'),
|
||||
'id' => $this->id,
|
||||
'fee_id' => $this->fee_id,
|
||||
'subscription_id' => $this->subscription_id,
|
||||
'gender_id' => $this->gender_id,
|
||||
'further_address' => $this->further_address,
|
||||
'work_phone' => $this->work_phone,
|
||||
|
|
|
@ -60,7 +60,7 @@ class UpdateJob implements ShouldQueue
|
|||
'confession_id' => $this->member->confession ? $this->member->confession->nami_id : Confession::firstWhere('is_null', true)->id,
|
||||
'region_id' => optional($this->member->region)->nami_id,
|
||||
'country_id' => $this->member->country->nami_id,
|
||||
'fee_id' => optional($this->member->fee)->nami_id,
|
||||
'fee_id' => $this->member->getNamiFeeId(),
|
||||
'nationality_id' => $this->member->nationality->nami_id,
|
||||
'id' => $this->member->nami_id,
|
||||
'group_id' => $this->member->group->nami_id,
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use App\Payment\Subscription;
|
||||
use App\Fee;
|
||||
use App\Member\Member;
|
||||
|
||||
class CreateSubscriptionsRelationColumn extends Migration
|
||||
{
|
||||
|
@ -18,6 +21,34 @@ class CreateSubscriptionsRelationColumn extends Migration
|
|||
$table->unsignedInteger('amount')->after('name');
|
||||
$table->foreignId('fee_id')->after('name')->constrained();
|
||||
});
|
||||
|
||||
foreach(Fee::get() as $fee) {
|
||||
Subscription::create([
|
||||
'amount' => 1000,
|
||||
'fee_id' => $fee->id,
|
||||
'name' => $fee->name,
|
||||
]);
|
||||
}
|
||||
|
||||
Schema::table('members', function (Blueprint $table) {
|
||||
$table->foreignId('subscription_id')->after('version')->nullable()->default(1)->constrained();
|
||||
});
|
||||
|
||||
Member::withoutEvents(function() {
|
||||
foreach (Member::get() as $member) {
|
||||
if (is_null($member->fee_id)) {
|
||||
$member->update(['subscription_id' => null]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$member->update(['subscription_id' => Subscription::firstWhere('fee_id', $member->fee_id)->id]);
|
||||
}
|
||||
});
|
||||
|
||||
Schema::table('members', function (Blueprint $table) {
|
||||
$table->dropForeign(['fee_id']);
|
||||
$table->dropColumn('fee_id');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
<f-switch id="send_newspaper" v-model="inner.send_newspaper" label="Mittendrin"></f-switch>
|
||||
<f-text class="col-span-2" type="date" id="joined_at" v-model="inner.joined_at" label="Eintrittsdatum"></f-text>
|
||||
<f-select class="col-span-2" :options="confessions" id="confession_id" v-model="inner.confession_id" label="Konfession"></f-select>
|
||||
<f-select class="col-span-2" :options="fees" id="fee_id" v-model="inner.fee_id" label="Beitrag"></f-select>
|
||||
<f-select class="col-span-2" :options="subscriptions" id="subscription_id" v-model="inner.subscription_id" label="Beitrag"></f-select>
|
||||
<f-textarea class="col-span-2" rows="4" id="letter_address" v-model="inner.letter_address" label="Brief-Adresse"></f-textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -77,7 +77,7 @@ export default {
|
|||
activities: {},
|
||||
mode: {},
|
||||
genders: {},
|
||||
fees: {},
|
||||
subscriptions: {},
|
||||
data: {},
|
||||
regions: {},
|
||||
countries: {},
|
||||
|
|
Loading…
Reference in New Issue