Untitled

 avatar
unknown
plain_text
10 months ago
36 kB
3
Indexable
<?php
namespace Unity;

use Dingo\Api\Facade\API;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
use Carbon\Carbon;
use \BaseController;
use \Input;
use \Meetup;
use \MeetupInvitation;
/**
 * This controller is responsible for handling all actions related to the meetups.
 * This controller is also Unity specific
 */

class MeetupController extends BaseController
{
    /**
     * API | GET | unity/meetup/user/all
     * This function is used to get all the meetups of the logged in user.
     *
     * @example {
     *  access: String (public / private)
     *  source: String (room / content / event)
     *  size: Number
     *  page: Number
     * }
     */
    public function get_user_meetups()
    {
        try {
            $user_id = $this->getLoggedUserId();
            $access = \Input::get('access');
            $source = \Input::get('source'); // room, content, event
            $size = Input::get('size');
            $meetups = Meetup::select(
                'id',
                'name',
                'user_id',
                'start_datetime',
                'timezone',
                'duration',
                'meetup_type',
                'type_id',
                'is_public'
            )->where('user_id', $user_id)->whereRaw('date_add(start_datetime, Interval duration MINUTE) > current_timestamp()')
                ->with(
                    ['event' => function ($query) {
                        $query->select('id', 'name', 'description', 'image', 'updated_at');
                    }, 'room' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'room.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'media_room' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'media_room.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'content' => function ($query) {
                        $query->select('id', 'title', 'description', 'thumb', 'updated_at', 'is_room_only', 'event_id');
                    }, 'content.event' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'content.event.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'invitations' => function ($query) {
                        $query->select('id', 'meetup_id', 'user_id', 'status');
                    }]
                )->orderBy('created_at', 'desc');

            if (isset($source)) {
                if ($source === 'location') {
                    $meetups = $meetups->where('meetup_type', '!=', 'event')->where('meetup_type', '!=', 'content');
                } else {
                    $meetups = $meetups->where('meetup_type', $source);
                }
            }
            if (isset($access)) {
                $is_public = $access === 'private' ? false : true;
                $meetups = $meetups->where('is_public', $is_public);
            }
            $meetups = $meetups->paginate($size)->toJSON();
            $meetups = json_decode($meetups);
            $arr_index = 0;
            foreach ($meetups->data as $meetup) {
                if ($meetup->meetup_type === 'room' && isset($meetup->room)) {
                    $meetup->event = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                } else if ($meetup->meetup_type === 'event' && isset($meetup->event)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                } else if ($meetup->meetup_type === 'media_room' && isset($meetup->media_room)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->event = null;
                }
                else if ($meetup->meetup_type === 'content' && isset($meetup->content)) {
                    $meetup->event = null;
                    $meetup->room = null;
                    $meetup->media_room = null;
                }
                $meetup->status = 'owner';
                $arr_index++;
                // unset not required fields
                unset($meetup->content->event_id);
                foreach ($meetup->invitations as $invitation) {
                    unset($invitation->meetup_id);
                    unset($invitation->id);
                }
            }
            // remove keys from array
            $meetups->data = array_values($meetups->data);
            return API::response()->array(
                [
                'return' => true,
                'output' => $meetups,
                'extra' => []
                ]
            )->statusCode(200);
        } catch (\Exception $e) {
            \Utility::log($e->getMessage(), "meetup.logs");
            return API::response()->array(
                [
                'return' => false,
                'output' => [],
                'extra' => [
                    'message' => 'Failed to fetch invited meetups',
                    'error' => $e->getMessage()
                ]
                ]
            )->statusCode(200);
        }
    }

    /**
     * API | GET | unity/meetup/user/joined
     * This function is used to get all joined meetups of the logged in user.
     *
     * @example {
     *  access: String (public / private)
     *  source: String (room / content / event)
     *  size: Number
     *  page: Number
     * }
     */
    public function get_joined_meetups()
    {
        try {
            $user_id = $this->getLoggedUserId();
            $access = \Input::get('access');
            $source = \Input::get('source');
            $invitations = MeetupInvitation::where('user_id', $user_id)
                ->where('status', 'accepted')->get();
            $meetup_ids = [];
            $size = Input::get('size');
            foreach ($invitations as $invite) {
                array_push($meetup_ids, $invite->meetup_id);
            }
            $meetups = Meetup::select(
                'id',
                'name',
                'user_id',
                'start_datetime',
                'timezone',
                'duration',
                'meetup_type',
                'type_id',
                'is_public'
            )->whereIn('id', $meetup_ids)->where('user_id', '!=', $user_id)->whereRaw('date_add(start_datetime, Interval duration MINUTE) > current_timestamp()')
                ->with(
                    ['event' => function ($query) {
                        $query->select('id', 'name', 'description', 'image', 'updated_at');
                    }, 'room' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'room.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'media_room' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'media_room.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'content' => function ($query) {
                        $query->select('id', 'title', 'description', 'thumb', 'updated_at', 'is_room_only', 'event_id');
                    }, 'content.event' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'content.event.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'invitations' => function ($query) {
                        $query->select('id', 'meetup_id', 'user_id', 'status');
                    }]
                )->orderBy('created_at', 'desc');

            if (isset($source)) {
                if ($source === 'location') {
                    $meetups = $meetups->where('meetup_type', '!=', 'event')->where('meetup_type', '!=', 'content');
                } else {
                    $meetups = $meetups->where('meetup_type', $source);
                }
            }
            if (isset($access)) {
                $is_public = $access === 'private' ? false : true;
                $meetups = $meetups->where('is_public', $is_public);
            }
            $meetups = $meetups->paginate($size)->toJSON();
            $meetups = json_decode($meetups);
            $arr_index = 0;
            foreach ($meetups->data as $meetup) {
                if ($meetup->meetup_type === 'room' && isset($meetup->room)) {
                    $meetup->event = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                } else if ($meetup->meetup_type === 'event' && isset($meetup->event)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                } else if ($meetup->meetup_type === 'media_room' && isset($meetup->media_room)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->event = null;
                } else if ($meetup->meetup_type === 'content' && isset($meetup->content)) {
                    $meetup->event = null;
                    $meetup->room = null;
                    $meetup->media_room = null;
                }
                $meetup->status = 'joined';
                $arr_index++;
                // unset not required fields
                unset($meetup->content->event_id);
                foreach ($meetup->invitations as $invitation) {
                    unset($invitation->meetup_id);
                    unset($invitation->id);
                }
            }
            // remove keys from array
            $meetups->data = array_values($meetups->data);
            return API::response()->array(
                [
                'return' => true,
                'output' => $meetups,
                'extra' => []
                ]
            )->statusCode(200);
        } catch (\Exception $e) {
            \Utility::log($e->getMessage(), "meetup.logs");
            return API::response()->array(
                [
                'return' => false,
                'output' => [],
                'extra' => [
                    'message' => 'Failed to fetch joined meetups'
                ]
                ]
            )->statusCode(200);
        }
    }

    /**
     * API | GET | unity/meetup/user/invited
     * This function is used to get all invited meetups of the logged in user.
     *
     * @example {
     *  access: String (public / private)
     *  source: String (room / content / event)
     *  size: Number
     *  page: Number
     * }
     */
    public function get_invited_meetups()
    {
        try {
            $user_id = $this->getLoggedUserId();
            $access = \Input::get('access');
            $invitations = MeetupInvitation::where('user_id', $user_id)
                ->where('status', 'invited')->get();
            $meetup_ids = [];
            $source = Input::get('source');
            $size = Input::get('size');
            foreach ($invitations as $invite) {
                array_push($meetup_ids, $invite->meetup_id);
            }
            $meetups = Meetup::select(
                'id',
                'name',
                'user_id',
                'start_datetime',
                'timezone',
                'duration',
                'meetup_type',
                'type_id',
                'is_public'
            )->whereIn('id', $meetup_ids)->where('user_id', '!=', $user_id)->whereRaw('date_add(start_datetime, Interval duration MINUTE) > current_timestamp()')
                ->with(
                    ['event' => function ($query) {
                        $query->select('id', 'name', 'description', 'image', 'updated_at');
                    }, 'room' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'room.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'media_room' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'media_room.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'content' => function ($query) {
                        $query->select('id', 'title', 'description', 'thumb', 'updated_at', 'is_room_only', 'event_id');
                    }, 'content.event' => function ($query) {
                        $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                    }, 'content.event.location' => function ($query) {
                        $query->select('id', 'type_id', 'type');
                    }, 'invitations' => function ($query) {
                        $query->select('id', 'meetup_id', 'user_id', 'status');
                    }]
                )->orderBy('created_at', 'desc');
            if (isset($source)) {
                if ($source === 'location') {
                    $meetups = $meetups->where('meetup_type', '!=', 'event')->where('meetup_type', '!=', 'content');
                } else {
                    $meetups = $meetups->where('meetup_type', $source);
                }
            }
            if (isset($access)) {
                $is_public = $access === 'private' ? false : true;
                $meetups = $meetups->where('is_public', $is_public);
            }
            $meetups = $meetups->paginate($size)->toJSON();
            $meetups = json_decode($meetups);
            $arr_index = 0;
            foreach ($meetups->data as $meetup) {
                if ($meetup->meetup_type === 'room' && isset($meetup->room)) {
                    $meetup->event = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                } else if ($meetup->meetup_type === 'event' && isset($meetup->event)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                } else if ($meetup->meetup_type === 'media_room' && isset($meetup->media_room)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->event = null;
                } else if ($meetup->meetup_type === 'content' && isset($meetup->content)) {
                    $meetup->event = null;
                    $meetup->room = null;
                    $meetup->media_room = null;
                }
                $meetup->status = 'invited';
                $arr_index++;
                // unset not required fields
                unset($meetup->content->event_id);
                foreach ($meetup->invitations as $invitation) {
                    unset($invitation->meetup_id);
                    unset($invitation->id);
                }
            }
            // remove keys from array
            $meetups->data = array_values($meetups->data);
            return API::response()->array(
                [
                'return' => true,
                'output' => $meetups,
                'extra' => []
                ]
            )->statusCode(200);
        } catch (\Exception $e) {
            \Utility::log($e->getMessage(), "meetup.logs");
            return API::response()->array(
                [
                'return' => false,
                'output' => [],
                'extra' => [
                    'message' => 'Failed to fetch invited meetups'
                ]
                ]
            )->statusCode(200);
        }
    }

    /**
     * API | GET | unity/meetup/all
     * This function is used to get all created / invited / rejected and joined meetups of the logged in user.
     *
     * @example {
     *  access: String (public / private)
     *  source: String (room / content / event)
     *  size: Number
     *  page: Number
     * }
     */
    public function get_all_user_meetups()
    {
        try {
            $user_id = $this->getLoggedUserId();
            $size = Input::get('size');
            $access = Input::get('access');
            $source = Input::get('source');
            $invitations = MeetupInvitation::where('user_id', $user_id)
                ->where('status', '!=', 'rejected')->get();
            $meetup_ids = [];
            foreach ($invitations as $invite) {
                array_push($meetup_ids, $invite->meetup_id);
            }
            $meetups = Meetup::select(
                'id',
                'name',
                'user_id',
                'start_datetime',
                'timezone',
                'duration',
                'meetup_type',
                'type_id',
                'is_public'
            )->whereRaw('date_add(start_datetime, Interval duration MINUTE) > current_timestamp()')->where(
                function ($query) use ($meetup_ids, $user_id) {
                    $query->whereIn('id', $meetup_ids)->orWhere('user_id', $user_id);
                }
            )->with(
                ['event' => function ($query) {
                        $query->select('id', 'name', 'description', 'image', 'updated_at');
                }, 'room' => function ($query) {
                    $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                }, 'room.location' => function ($query) {
                    $query->select('id', 'type_id', 'type');
                }, 'media_room' => function ($query) {
                    $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                }, 'media_room.location' => function ($query) {
                    $query->select('id', 'type_id', 'type');
                }, 'stage_location' => function ($query) {
                    $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                }, 'stage_location.location' => function ($query) {
                    $query->select('id', 'type_id', 'type');
                }, 'content' => function ($query) {
                    $query->select('id', 'title', 'description', 'thumb', 'updated_at', 'is_room_only', 'event_id');
                }, 'content.event' => function ($query) {
                    $query->select('id', 'name', 'description', 'background_image', 'updated_at');
                }, 'content.event.location' => function ($query) {
                    $query->select('id', 'type_id', 'type');
                }, 'invitations' => function ($query) {
                    $query->select('id', 'meetup_id', 'user_id', 'status');
                }]
            )->orderBy('created_at', 'desc');
            if (isset($source)) {
                if ($source === 'location') {
                    $meetups = $meetups->where('meetup_type', '!=', 'event')->where('meetup_type', '!=', 'content');
                } else {
                    $meetups = $meetups->where('meetup_type', $source);
                }
            }
            if (isset($access)) {
                $is_public = $access === 'private' ? false : true;
                $meetups = $meetups->where('is_public', $is_public);
            }
            $meetups = $meetups->paginate($size)->toJSON();
            $meetups = json_decode($meetups);
            $arr_index = 0;
            foreach ($meetups->data as $meetup) {
                if ($meetup->meetup_type === 'room' && isset($meetup->room)) {
                    $meetup->event = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                    $meetup->stage_location = null;
                } else if ($meetup->meetup_type === 'event' && isset($meetup->event)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->media_room = null;
                    $meetup->stage_location = null;
                } else if ($meetup->meetup_type === 'media_room' && isset($meetup->media_room)) {
                    $meetup->room = null;
                    $meetup->content = null;
                    $meetup->event = null;
                    $meetup->stage_location = null;
                } else if ($meetup->meetup_type === 'content' && isset($meetup->content)) {
                    $meetup->event = null;
                    $meetup->room = null;
                    $meetup->media_room = null;
                    $meetup->stage_location = null;
                } else if ($meetup->meetup_type === 'stage_location' && isset($meetup->stage_location)) {
                    $meetup->event = null;
                    $meetup->room = null;
                    $meetup->media_room = null;
                    $meetup->content = null;
                }
                // unset not required fields
                unset($meetup->content->event_id);
                if (sizeof($meetup->invitations) > 0) {
                    foreach ($meetup->invitations as $invitation) {
                        if ($meetup->user_id === $user_id) {
                            $meetup->status = 'owner';
                        } else if ($invitation->user_id === $user_id) {
                            if ($invitation->status === 'accepted') {
                                $meetup->status = 'joined';
                            } else if ($invitation->status === 'invited') {
                                $meetup->status = 'invited';
                            }
                        }
                        unset($invitation->meetup_id);
                        unset($invitation->id);
                    }
                } else {
                    $meetup->status = 'owner';
                }
                $arr_index++;

            }
            // remove keys from array
            $meetups->data = array_values($meetups->data);
            return API::response()->array([
                'return' => true,
                'output' => $meetups,
                'extra' => []  
            ])->statusCode(200);
        } catch (\Exception $e) {
            return API::response()->array([
                'return' => false,
                'output' => [],
                'extra' => [
                    'message' => 'Failed to fetch all meetups',
                    'error' => $e->getMessage(),
                    'line' => $e->getLine()
                ]
            ])->statusCode(200);
        }
    }

    /**
     * API | GET | unity/meetup/
     * @example {
     *  meetup_id: Number
     * }
     */
    public function get_meetup_details()
    {
        try {
            $id = Input::get('meetup_id');
            $meetup = Meetup::select(
                'id',
                'name',
                'user_id',
                'start_datetime',
                'timezone',
                'duration',
                'meetup_type',
                'type_id',
                'timezone_string'
            )->where('id', $id)
                ->with([
                    'user' => function ($query) {
                        $query->select(
                            'id',
                            'fullname',
                            'nickname',
                            'show_nickname',
                            'username',
                            'user_image'
                        );
                    }, 'invitations' => function ($query) {
                        $query->select(
                            'id',
                            'user_id',
                            'meetup_id',
                            'email',
                            'fullname',
                            'type',
                            'status',
                            'availability_status'
                        );
                    }, 'invitations.user' => function ($query) {
                        $query->select(
                            'id',
                            'fullname',
                            'nickname',
                            'show_nickname',
                            'username',
                            'user_image',
                            'online_status'
                        );
                    }, 'event.contents.content' => function ($query) {
                        $query->select(
                            'id',
                            'description',
                            'title',
                            'thumb'
                        );
                    }, 'event.meeting_spotlight', 'room' => function ($query) {
                        $query->select(
                            'id',
                            'description',
                            'background_image'
                        );
                    }, 'media_room' => function ($query) {
                        $query->select(
                            'id',
                            'description',
                            'background_image'
                        );
                    }, 'stage_location' => function ($query) {
                        $query->select(
                            'id',
                            'description',
                            'background_image'
                        );
                    }
                    , 'event',
                    'content' => function ($query) {
                        $query->select(
                            'id',
                            'description',
                            'thumb'
                        );
                    }
                ])
            ->first();

            // Format and filter fields
            $meetup->invites = $meetup->invitations;
            unset($meetup->invitations);
            $meetup->meetup_owner = $meetup->user;
            unset($meetup->user);
            // Add skybox details
            $skybox_details = null;
            $skybox_id = null;
            if ($meetup->meetup_type === 'event') {
                unset($meetup->room);
                unset($meetup->media_room);
                unset($meetup->content);
                unset($meetup->stage_location);
                $meetup->event_spotlight = $meetup->event->meeting_spotlight;
                $meetup->event_contents = $meetup->event->contents;
                $meetup->image = $meetup->event->image;
                $meetup->description = $meetup->event->description;
                // Add skybox details for event
                switch ($meetup->event->type) {
                    case 'room':
                        $room = \Event::where('id', $meetup->event->type_id)->with(['location', 'location.skybox.details'])->first();
                        if (isset($room) && isset($room->location) && isset($room->location->skybox)) {
                            $skybox_details = [
                                "image" => $room->location->skybox->details->url,
                                "additional_detail" => []
                            ];
                            $skybox_id = $room->location->skybox->id;
                        }
                        break;
                    case 'media_room':
                        $media_room = \MediaRoom::where('id', $meetup->event->type_id)->with(['location', 'location.skybox.details'])->first();
                        if (isset($media_room) && isset($media_room->location) && isset($media_room->location->skybox)) {
                            $skybox_details = [
                                "image" => $media_room->location->skybox->details->url,
                                "additional_detail" => []
                            ];
                            $skybox_id = $media_room->location->skybox->id;
                        }
                        break;
                    case 'stage_location':
                        $stage_location = \StageLocation\StageLocation::where('id', $meetup->event->type_id)->with(['location', 'location.skybox.details'])->first();
                        if (isset($stage_location) && isset($stage_location->location) && isset($stage_location->location->skybox)) {
                            $skybox_details = [
                                "image" => $stage_location->location->skybox->details->url,
                                "additional_detail" => []
                            ];
                            $skybox_id = $stage_location->location->skybox->id;
                        }
                        break;
                }
                $meetup->skybox = $skybox_id;
                $meetup->skybox_details = $skybox_details;
                unset($meetup->event);
                foreach ($meetup->event_contents as $c) {
                    unset($c->meeting_id);
                    unset($c->content_id);
                    unset($c->room_id);
                    unset($c->content->sub_category);
                }
            }
            else {
                unset($meetup->event);
                $meetup->event_contents = [];
                switch ($meetup->meetup_type) {
                    case 'room':
                        $meetup->image = $meetup->room->background_image;
                        $meetup->description = $meetup->room->description;
                        // Add skybox details for room
                        $room = \Event::where('id', $meetup->type_id)->with(['location', 'location.skybox.details'])->first();
                        if (isset($room) && isset($room->location) && isset($room->location->skybox)) {
                            $skybox_details = [
                                "image" => $room->location->skybox->details->url,
                                "additional_detail" => []
                            ];
                            $skybox_id = $room->location->skybox->id;
                        }
                        break;
                    case 'media_room':
                        $meetup->image = $meetup->media_room->background_image;
                        $meetup->description = $meetup->media_room->description;
                        // Add skybox details for media room
                        $media_room = \MediaRoom::where('id', $meetup->type_id)->with(['location', 'location.skybox.details'])->first();
                        if (isset($media_room) && isset($media_room->location) && isset($media_room->location->skybox)) {
                            $skybox_details = [
                                "image" => $media_room->location->skybox->details->url,
                                "additional_detail" => []
                            ];
                            $skybox_id = $media_room->location->skybox->id;
                        }
                        break;
                    case 'stage_location':
                        $meetup->image = $meetup->stage_location->background_image;
                        $meetup->description = $meetup->stage_location->description;
                        // Add skybox details for stage location
                        $stage_location = \StageLocation\StageLocation::where('id', $meetup->type_id)->with(['location', 'location.skybox.details'])->first();
                        if (isset($stage_location) && isset($stage_location->location) && isset($stage_location->location->skybox)) {
                            $skybox_details = [
                                "image" => $stage_location->location->skybox->details->url,
                                "additional_detail" => []
                            ];
                            $skybox_id = $stage_location->location->skybox->id;
                        }
                        break;
                    case 'content':
                        $meetup->image = $meetup->content->thumb;
                        $meetup->description = $meetup->content->description;
                        break;
                    default:
                        $meetup->image = null;
                        $meetup->description = null;
                        break;
                }
                $meetup->skybox = $skybox_id;
                $meetup->skybox_details = $skybox_details;
                unset ($meetup->room);
                unset ($meetup->media_room);
                unset ($meetup->stage_location);
                unset ($meetup->event);
                unset ($meetup->content);
            }
            return API::response()->array([
                'return' => true,
                'output' => $meetup,
                'extra' => []
            ])->statusCode(200);
        } catch (\Exception $e) {
            return API::response()->array([
                'return' => false,
                'output' => [],
                'extra' => [
                    'message' => 'Failed to fetch all meetups',
                    'error' => $e->getMessage() . ' ' . $e->getLine()
                ]
            ])->statusCode(200);
        }
    }

    /**
     * API | GET | /unity/meetup/invitation
     * API is used to get all meetup invitations with pagination
     *
     * @example {
     * page: Number,
     * size: Number,
     * event_id: Number
     * }
     */
    public function get_meetup_invitations () {
        try {
            $meetup_id = \Input::get('meetup_id');
            $size = \Input::get('size');
            if (!isset($size)) {
                $size = 100;
            }
            $page = \Input::get('page');
            if (!isset($page)) {
                $page = 1;
            }
            $meetup = \Meetup::where('id', $meetup_id)->first();
            if (!isset($meetup)) {
                return API::response()->array(
                    [
                    'return' => false,
                    'output' => [],
                    'extra' => [
                        'message' => 'Meetup not found'
                    ]
                    ]
                )->statusCode(200);
            }
            $invitations = \MeetupInvitation::select(
                'id',
                'user_id',
                'email',
                'fullname',
                'type',
                'status'
            )->where('meetup_id', $meetup_id)->with(['user' => function ($query){
                $query->select(
                    'id',
                    'fullname',
                    'email',
                    'user_image',
                    'nickname',
                    'show_nickname',
                    'online_status'
                );
            }])->paginate($size)->toJSON();
            $invitations = json_decode($invitations);
            $meetup_owner = \User::select(
                'id',
                'fullname',
                'email',
                'user_image',
                'nickname',
                'show_nickname',
                'online_status'
            )->where('id', $meetup->user_id)->first();
            $meetup_owner->availability_status = $meetup->owner_availability;
            return API::response()->array(
                [
                'return' => true,
                'output' => [
                    "invitations" => $invitations,
                    "event_owner" => $meetup_owner
                ],
                'extra' => []
                ]
            );
        } catch (\Exception $e) {
            return API::response()->array(
                [
                'return' => false,
                'output' => [],
                'extra' => [
                    'message' => 'Failed to fetch meetup inviations!',
                    'error' => $e->getMessage()
                ]
                ]
            )->statusCode(200);
        }
    }
}
Editor is loading...
Leave a Comment