herpaderpaldent/seat-groups

View on GitHub
src/Actions/SeatGroups/GetCurrentAffiliationAction.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
/**
 * Created by PhpStorm.
 * User: felix
 * Date: 05.09.2018
 * Time: 18:52.
 */

namespace Herpaderpaldent\Seat\SeatGroups\Actions\SeatGroups;

use Herpaderpaldent\Seat\SeatGroups\Models\SeatGroup;
use Seat\Eveapi\Models\Corporation\CorporationInfo;
use Seat\Eveapi\Models\Corporation\CorporationTitle;

class GetCurrentAffiliationAction
{
    public function execute(array $data)
    {
        $seatgroup = SeatGroup::find($data['seatgroup_id']);

        $affiliations = collect();

        if($seatgroup->all_corporations)
            $affiliations->push([
                'seatgroup_id' => $seatgroup->id,
                'all_corporations' => 'all_corporations',
            ]);

        $seatgroup->alliance->each(function ($alliance) use ($affiliations, $seatgroup) {
            $affiliations->push([
                'seatgroup_id' => $seatgroup->id,
                'alliance_id' => $alliance->alliance_id,
                'name' => $alliance->name,
            ]);
        });

        $seatgroup->corporation->each(function ($corporation) use ($affiliations, $seatgroup) {
            $affiliations->push([
                'seatgroup_id' => $seatgroup->id,
                'corporation_id' => $corporation->corporation_id,
                'name' => $corporation->name,
            ]);

        });

        $seatgroup->corporationTitles->each(function ($corporation_title) use ($affiliations, $seatgroup) {
            $corporation = CorporationInfo::find($corporation_title->corporation_id);
            $title_name = CorporationTitle::where('corporation_id', $corporation_title->corporation_id)
                ->where('title_id', $corporation_title->title_id)->first()->name; //TODO check if i could use get()

            $affiliations->push([
                'seatgroup_id' => $seatgroup->id,
                'corporation_id' => $corporation->corporation_id,
                'name' => $corporation->name,
                'corporation_title' => [
                    'title_id' => $corporation_title->title_id,
                    'name' => $title_name,
                ],
            ]);
        });

        return $affiliations;
    }
}