[dfae77e] | 1 | <?php
|
---|
| 2 |
|
---|
| 3 | namespace App\Http\Controllers;
|
---|
| 4 |
|
---|
| 5 | use App\Enum\UserType;
|
---|
| 6 | use App\Models\Artist;
|
---|
| 7 | use App\Models\ArtistType;
|
---|
| 8 | use App\Models\Genre;
|
---|
| 9 | use App\Models\Organizer;
|
---|
| 10 | use App\Providers\RouteServiceProvider;
|
---|
| 11 | use Illuminate\Contracts\Foundation\Application;
|
---|
| 12 | use Illuminate\Contracts\View\Factory;
|
---|
| 13 | use Illuminate\Contracts\View\View;
|
---|
| 14 | use Illuminate\Http\RedirectResponse;
|
---|
| 15 | use Illuminate\Http\Request;
|
---|
| 16 | use Illuminate\Routing\Redirector;
|
---|
| 17 | use Illuminate\Support\Facades\Auth;
|
---|
| 18 | use Exception;
|
---|
| 19 |
|
---|
| 20 | class OnboardingController extends Controller
|
---|
| 21 | {
|
---|
| 22 | public function __construct()
|
---|
| 23 | {
|
---|
| 24 | $this->middleware(['auth', 'verified']);
|
---|
| 25 | }
|
---|
| 26 |
|
---|
| 27 | /**
|
---|
| 28 | * @return Application|Factory|View|RedirectResponse|Redirector|\never
|
---|
| 29 | */
|
---|
| 30 | public function index()
|
---|
| 31 | {
|
---|
| 32 | if (!empty(Auth::user()->type)) {
|
---|
| 33 | switch (Auth::user()->type) {
|
---|
| 34 | case UserType::ARTIST->value:
|
---|
| 35 | $artist = Artist::where('user_id', Auth::id())->firstOrFail();
|
---|
| 36 |
|
---|
| 37 | if ($artist->isOnboardingCompleted()) {
|
---|
| 38 | return redirect(RouteServiceProvider::ARTIST_HOME);
|
---|
| 39 | }
|
---|
| 40 | return view('onboarding.artist.index')
|
---|
| 41 | ->with('artist', $artist)
|
---|
| 42 | ->with('types', ArtistType::all())
|
---|
| 43 | ->with('genres', Genre::all());
|
---|
| 44 |
|
---|
| 45 | case UserType::ORGANIZER->value:
|
---|
| 46 | $organizer = Organizer::where('user_id', Auth::id())->firstOrFail();
|
---|
| 47 |
|
---|
| 48 | if ($organizer->isOnboardingCompleted()) {
|
---|
| 49 | return redirect(RouteServiceProvider::ARTIST_HOME);
|
---|
| 50 | }
|
---|
| 51 | return view('onboarding.organizer.index')
|
---|
| 52 | ->with('organizer', $organizer);
|
---|
| 53 | }
|
---|
| 54 | }
|
---|
| 55 |
|
---|
| 56 | return abort(404);
|
---|
| 57 | }
|
---|
| 58 |
|
---|
| 59 | /**
|
---|
| 60 | * @param Request $request
|
---|
| 61 | * @return Application|RedirectResponse|Redirector|\never
|
---|
| 62 | */
|
---|
| 63 | public function create(Request $request)
|
---|
| 64 | {
|
---|
| 65 | if (!empty(Auth::user()->type)) {
|
---|
| 66 | switch (Auth::user()->type) {
|
---|
| 67 | case UserType::ARTIST->value:
|
---|
| 68 | $artist = Artist::where('user_id', Auth::id())->firstOrFail();
|
---|
| 69 |
|
---|
| 70 | if ($request->has('birth_date')) {
|
---|
| 71 | $artist->birth_date = $request->input('birth_date');
|
---|
| 72 | }
|
---|
| 73 | if ($request->has('city')) {
|
---|
| 74 | $artist->city = $request->input('city');
|
---|
| 75 | }
|
---|
| 76 | if ($request->has('country')) {
|
---|
| 77 | $artist->country = $request->input('country');
|
---|
| 78 | }
|
---|
| 79 | if ($request->has('short_description')) {
|
---|
| 80 | $artist->short_description = $request->input('short_description');
|
---|
| 81 | }
|
---|
| 82 | if ($request->has('artist_type')) {
|
---|
| 83 | $type = ArtistType::where('name', $request->input('artist_type'))->firstOrFail();
|
---|
| 84 | $artist->artist_type()->associate($type);
|
---|
| 85 | }
|
---|
| 86 | if ($request->has('genres')) {
|
---|
| 87 | foreach ($request->input('genres') as $genre) {
|
---|
| 88 | Genre::findOrFail($genre);
|
---|
| 89 | }
|
---|
| 90 | $artist->genres()->attach($request->input('genres.*'));
|
---|
| 91 | }
|
---|
| 92 |
|
---|
| 93 | try {
|
---|
| 94 | $artist->save();
|
---|
| 95 | } catch (Exception $e) {
|
---|
| 96 | return redirect()->back()
|
---|
| 97 | ->with('error', $e->getMessage());
|
---|
| 98 | }
|
---|
| 99 |
|
---|
| 100 | $artist->user()->associate(Auth::user());
|
---|
| 101 |
|
---|
| 102 | return redirect(RouteServiceProvider::ARTIST_HOME);
|
---|
| 103 | case UserType::ORGANIZER->value:
|
---|
| 104 | $organizer = Organizer::where('user_id', Auth::id())->firstOrFail();
|
---|
| 105 |
|
---|
| 106 | if ($request->has('city')) {
|
---|
| 107 | $organizer->city = $request->input('city');
|
---|
| 108 | }
|
---|
| 109 | if ($request->has('country')) {
|
---|
| 110 | $organizer->country = $request->input('country');
|
---|
| 111 | }
|
---|
| 112 |
|
---|
| 113 | $organizer->user()->associate(Auth::user());
|
---|
| 114 |
|
---|
| 115 | try {
|
---|
| 116 | $organizer->save();
|
---|
| 117 | } catch (Exception $e) {
|
---|
| 118 | return redirect()->back()
|
---|
| 119 | ->with('error', $e->getMessage());
|
---|
| 120 | }
|
---|
| 121 |
|
---|
| 122 | return redirect(RouteServiceProvider::ORGANIZER_HOME);
|
---|
| 123 | }
|
---|
| 124 | }
|
---|
| 125 |
|
---|
| 126 | return abort(404);
|
---|
| 127 | }
|
---|
| 128 | }
|
---|