<?php

    if (!function_exists('load_polymorphic_dependencies')) {
        function load_polymorphic_dependencies(Illuminate\Database\Eloquent\Collection $collection, $polymorphic_name, $model_type, array $relation, $poly_type = NULL, $poly_id = NULL)
        {
            if (empty($poly_type)) {
                $poly_type = $polymorphic_name . "_type";
            }

            if (empty($poly_id)) {
                $poly_id = $polymorphic_name . "_id";
            }
            $new_collection = new \Illuminate\Database\Eloquent\Collection();

            foreach ($collection as $model) {
                if ($model->$polymorphic_name instanceof $model_type) {
                    $new_collection->add($model->$polymorphic_name);
                }
            }

            $new_collection->load($relation);

            return $collection;
        }
    }

    if (!function_exists('fulltext_search_term')) {
        function fulltext_search_term($term, $allInclusive = TRUE, $wildcard = TRUE)
        {
            if (empty($term)) {
                return $term;
            }
            $term = str_replace("@", " ", $term);
            $term = str_replace("+", " ", $term);
            $term = str_replace("-", " ", $term);
            $term = str_replace("<", " ", $term);
            $term = str_replace(">", " ", $term);
            $term = str_replace("(", " ", $term);
            $term = str_replace(")", " ", $term);
            $term = str_replace("~", " ", $term);
            $term = str_replace("*", " ", $term);
            $term = str_replace("%", " ", $term);
            $term = str_replace("\"", " ", $term);

            $words = explode(" ", trim($term));

            $terms = [];

            foreach ($words as $word) {
                if ($wildcard) {
                    $word = $word . "*";
                }

                if (!empty($word)) {
                    if ($allInclusive) {
                        $word = "+" . $word;
                    }

                    $terms[] = $word;
                }
            }

            return implode(" ", $terms);
        }
    }

    if (!function_exists('getSearchAutoComplete')) {
        function getSearchAutoComplete($searchTerm = '')
        {
            //Prepare the query

            $fullSearchString = fulltext_search_term($searchTerm, TRUE, TRUE);

            $dataToReturn = [];
            $titulos = DB::table("keywords_lang")->selectRaw("keywords_lang.title")
                ->whereRaw("MATCH(keywords_lang.title) AGAINST (? IN BOOLEAN MODE)", [$fullSearchString])
                // ->where("keywords_lang.title", 'like',"%".$searchTerm."%")
                //  ->join("event_item_keyword", "keywords_lang.keyword_id", "=", "event_item_keyword.keyword_id")
                ->orderByRaw("MATCH(keywords_lang.title) AGAINST (? IN BOOLEAN MODE) desc", [$fullSearchString])
                ->limit(10)
                ->get();

            foreach ($titulos as $titulo) {
                $dataToReturn[] = $titulo->title;
            }

            return $dataToReturn;

        }
    }

    if (!function_exists('replaceWords')) {
        function replaceWords($term)
        {
            $replaceTerms = [
                'ps' => "partido socialista"
            ];

            $words = explode(" ", trim($term));

            $terms = [];

            foreach ($words as $word) {
                if (array_key_exists(strtolower($word), $replaceTerms)) {
                    $terms[] = $replaceTerms[ strtolower($word) ];
                } else {
                    $terms[] = $word;
                }
            }

            return implode(" ", $terms);
        }
    }

    if (!function_exists('getEvents')) {
        function getEvents($searchString = '', $areaEvent = '', $dateStart = '', $dateEnd = '', $locationID = '', $pageNumber = 1, $personID = '', $eventType = '', $myLife = FALSE)
        {
            $searchString = trim($searchString);
            //$searchString = replaceWords($searchString);
            DB::getPaginator()->setCurrentPage($pageNumber);
            //Prepare the query
            $query = EventItem::full()->with([
                "image",
                "eventMedias" => function ($query) {
                    $query->full();
                },
                "area"        => function ($query) {
                    $query->full();
                }])
                ->whereNotNull("event_items.start_date")->orderBy("start_date", "asc");

            //Do fulltext search search if value for it exists
            if (!empty($searchString)) {
                $fullSearchString = fulltext_search_term($searchString, TRUE, FALSE);
                if (!empty($fullSearchString)) {
                    $query->whereRaw("MATCH(event_items_lang.content, event_items_lang.keywords_csv, event_items_lang.people_csv) AGAINST (? IN BOOLEAN MODE)",
                        [$fullSearchString]);
                }

            }

            //Search for area of event
            if (!empty($areaEvent)) {
                $query->whereIn("area_id", $areaEvent);
            }


            if ($myLife) {
                $dateStartCarbon = db_date_to_carbon($dateStart);
                $bDay = $dateStartCarbon->day;
                $bMonth = $dateStartCarbon->month;
                $bYear = $dateStartCarbon->year;
                $query->whereRaw("exists(select 1 from event_dates as ev1 
                where event_items.id = ev1.event_item_id
                AND (
                        ( ev1.start_date_month = ? AND ev1.start_date_day = ? )
                        OR ( ev1.end_date_month = ? AND ev1.end_date_day = ? )
                        OR (
                                ev1.start_date_month = ? AND ev1.start_date_day <= ? 
                                AND (
                                    ev1.end_date_month > ? 
                                    OR (ev1.end_date_month = ? AND ev1.end_date_day >= ?)
                                )
                            )
                        OR (
                                (ev1.start_date_month < ? AND ev1.end_date_month > ?)
                                OR 
                                (ev1.start_date_month > ev1.end_date_month AND ev1.end_date_month > ?)
                           )
                    )
                AND (ev1.start_date_year >= ?)
                )",[$bMonth, $bDay, $bMonth, $bDay, $bMonth, $bDay, $bMonth, $bMonth, $bDay, $bMonth, $bMonth, $bMonth, $bYear]);
            } else {
                // This needs review
                if (!empty($dateStart) || !empty($dateEnd)) {
                    if (!empty($dateEnd) && !empty($dateStart)) {

                        if ($dateEnd < $dateStart) {
                            $dateEnd = $dateStart;
                        }

                        $query->whereRaw("exists (select 1 from event_dates as ev1 
                    where event_items.id = ev1.event_item_id 
                    AND ((ev1.start_date between ? and ?)
                    OR (ev1.end_date is not null and ev1.end_date between ? and ?)
                    OR (? >= ev1.start_date and ? <= ev1.end_date)))",
                            [$dateStart, $dateEnd, $dateStart, $dateEnd, $dateStart, $dateEnd]);
                    } else if (!empty($dateStart) && empty($dateEnd)) {
                        $query->whereRaw("exists (select 1 from event_dates as ev1 
                    where event_items.id = ev1.event_item_id 
                    AND ev1.start_date >= ?)",
                            [$dateStart]);
                    } else if (!empty($dateEnd) && empty($dateStart)) {
                        $query->whereRaw("exists (select 1 from event_dates as ev1 
                    where event_items.id = ev1.event_item_id 
                    and ((ev1.start_date <= ? and ev1.end_date is null) or ev1.end_date <= ?))",
                            [$dateEnd, $dateEnd]);
                    }
                }

            }


            if (!empty($locationID)) {
                $query->whereExists(function ($query) use ($locationID) {
                    $query->select(DB::raw(1))
                        ->from('event_item_location')
                        ->whereRaw('event_items.id = event_item_location.event_item_id')
                        ->where("event_item_location.location_id", $locationID);
                });

            }

            if (!empty($personID)) {
                $query->whereExists(function ($query) use ($personID) {
                    $query->select(DB::raw(1))
                        ->from('event_item_person')
                        ->whereRaw('event_items.id = event_item_person.event_item_id')
                        ->where("event_item_person.person_id", $personID);
                });
            }

            if (!empty($eventType)) {
                $query->whereExists(function ($query) use ($eventType) {
                    $query->select(DB::raw(1))
                        ->from('event_medias')
                        ->whereRaw('event_items.id = event_medias.event_item_id')
                        ->whereIn("event_medias.media_type", $eventType);
                });
            }

            $results = $query->paginate(20);


            return $results;
        }
    }

    if (!function_exists('getEvent')) {
        function getEvent($eventID, $with = [])
        {
            $nextEvent = '';
            $previousEvent = '';

            //Prepare the query
            $query = EventItem::full()->with($with)
                ->where("event_items.id", $eventID);
            $event = $query->first();

            //If found reference event
            //Get next and previous events IDS
            if (!empty($event)) {
                $nextEventDB = EventItem::full()
                    ->whereNotNull("event_items.start_date")
                    ->whereRaw("((event_items.start_date = ? and event_items.id > ?) OR (event_items.start_date > ?))", [$event->start_date, $event->id, $event->start_date])
                    ->orderBy("event_items.start_date", "asc")
                    ->orderBy("event_items.id", "asc");

                $nextEvent = $nextEventDB->first();

                $previousEventDB = EventItem::full()
                    ->whereNotNull("event_items.start_date")
                    ->whereRaw("((event_items.start_date = ? and event_items.id < ?) OR (event_items.start_date < ?))", [$event->start_date, $event->id, $event->start_date])
                    ->orderBy("event_items.start_date", "desc")
                    ->orderBy("event_items.id", "desc");

                $previousEvent = $previousEventDB->first();
            }

            $response = [
                "event"           => empty($event) ? NULL : $event,
                "nextEventID"     => empty($nextEvent) ? NULL : $nextEvent->id,
                "previousEventID" => empty($previousEvent) ? NULL : $previousEvent->id
            ];

            return $response;
        }
    }

    if (!function_exists('getLastEvent')) {
        function getLastEvent($searchString = '', $areaEvent = '', $dateStart = '', $dateEnd = '', $locationID = '', $personID = '', $eventType = '')
        {
            $searchString = trim($searchString);
            //$searchString = replaceWords($searchString);
            //Prepare the query
            $query = EventItem::full()->whereNotNull("event_items.start_date")
                ->with([
                    "image",
                    "eventMedias" => function ($query) {
                        $query->full();
                    },
                    "area"        => function ($query) {
                        $query->full();
                    }])->orderBy("start_date", "desc");

            //Do fulltext search search if value for it exists
            if (!empty($searchString)) {
                $fullSearchString = fulltext_search_term($searchString, TRUE, FALSE);
                if (!empty($fullSearchString)) {
                    $query->whereRaw("MATCH(event_items_lang.content, event_items_lang.keywords_csv, event_items_lang.people_csv) AGAINST (? IN BOOLEAN MODE)",
                        [$fullSearchString]);
                }

            }

            //Search for area of event
            if (!empty($areaEvent)) {
                $query->whereIn("area_id", $areaEvent);
            }

            // This needs review
            if (!empty($dateStart) || !empty($dateEnd)) {
                if (!empty($dateEnd) && !empty($dateStart)) {

                    $query->whereRaw("exists (select 1 from event_dates as ev1 
                    where event_items.id = ev1.event_item_id 
                    AND ((ev1.start_date between ? and ?)
                    OR (ev1.end_date is not null and ev1.end_date between ? and ?)
                    OR (? >= ev1.start_date and ? <= ev1.end_date)))",
                        [$dateStart, $dateEnd, $dateStart, $dateEnd, $dateStart, $dateEnd]);
                } else if (!empty($dateStart) && empty($dateEnd)) {
                    $query->whereRaw("exists (select 1 from event_dates as ev1 
                    where event_items.id = ev1.event_item_id 
                    AND ev1.start_date >= ?)",
                        [$dateStart]);

                } else if (!empty($dateEnd) && empty($dateStart)) {
                    $query->whereRaw("exists (select 1 from event_dates as ev1 
                    where event_items.id = ev1.event_item_id 
                    and ((ev1.start_date <= ? and ev1.end_date is null) or ev1.end_date <= ?))",
                        [$dateEnd, $dateEnd]);
                }
            }

            if (!empty($locationID)) {
                $query->whereExists(function ($query) use ($locationID) {
                    $query->select(DB::raw(1))
                        ->from('event_item_location')
                        ->whereRaw('event_items.id = event_item_location.event_item_id')
                        ->where("event_item_location.location_id", $locationID);
                });

            }

            if (!empty($personID)) {
                $query->whereExists(function ($query) use ($personID) {
                    $query->select(DB::raw(1))
                        ->from('event_item_person')
                        ->whereRaw('event_items.id = event_item_person.event_item_id')
                        ->where("event_item_person.person_id", $personID);
                });
            }

            if (!empty($eventType)) {
                $query->whereExists(function ($query) use ($eventType) {
                    $query->select(DB::raw(1))
                        ->from('event_medias')
                        ->whereRaw('event_items.id = event_medias.event_item_id')
                        ->where("event_medias.media_type", $eventType);
                });
            }

            $result = $query->take(1)->first();

            return $result;
        }
    }

    if (!function_exists('getEventMonth')) {
        function getEventMonth($month)
        {
            DB::connection()->flushQueryLog();
            //Prepare the query
            $query = EventItem::full()->with(
                [
                    "image",
                    "area" => function ($query) {
                        $query->full();
                    }])
                ->whereRaw("month(event_items.start_date) = ?", [$month])
                ->where("event_items.event_type", 'image')
                ->whereRaw("length(event_items_lang.content) < 600")
                ->orderByRaw("RAND()");
            $event = $query->first();

            $event = empty($event) ? NULL : $event;

            $response = $event;

            return $response;
        }
    }

    if (!function_exists('getTimelineDecadeEvents')) {
        function getTimelineDecadeEvents()
        {

            //Prepare the query
            $query = EventItem::full()
                ->selectRaw("*")
                ->where('event_items.is_decade', TRUE)
                ->whereNotNull("event_items.start_date")
                ->orderBy("start_date", "asc");


            $results = $query->get();

            return $results;
        }
    }

    if (!function_exists('getTimelineYearEvents')) {
        function getTimelineYearEvents($eventID, $firstTime = FALSE)
        {

            $nextEvent = '';
            $previousEvent = '';

            //Prepare the query
            $query = EventItem::full()->with(
                ["image", "area" => function ($query) {
                    $query->full();
                }])
                ->where("event_items.id", $eventID);
            $event = $query->first();
            //If found reference event
            //Get next and previous events IDS
            if (!empty($event)) {
                $nextEventDB = EventItem::full()
                    ->where('event_items.is_year', TRUE)
                    ->whereNotNull("event_items.start_date")
                    ->orderBy("event_items.start_date", "asc")
                    ->orderBy("event_items.id", "asc")
                    ->limit("50");

                if ($firstTime) {
                    $nextEventDB->whereRaw("((event_items.start_date = ? and event_items.id >= ?) OR (event_items.start_date >= ?))", [$event->start_date, $event->id, $event->start_date]);
                } else {
                    $nextEventDB->whereRaw("((event_items.start_date = ? and event_items.id > ?) OR (event_items.start_date > ?))", [$event->start_date, $event->id, $event->start_date]);
                }

                $nextEvent = $nextEventDB->get();

                $previousEventDB = EventItem::full()
                    ->where('event_items.is_year', TRUE)
                    ->whereNotNull("event_items.start_date")
                    ->whereRaw("((event_items.start_date = ? and event_items.id < ?) OR (event_items.start_date < ?))", [$event->start_date, $event->id, $event->start_date])
                    ->orderBy("event_items.start_date", "desc")
                    ->orderBy("event_items.id", "desc")
                    ->limit("50");

                $previousEvent = $previousEventDB->get();
            }

            $response = [
                "nextEvents"     => empty($nextEvent) ? NULL : $nextEvent,
                "previousEvents" => empty($previousEvent) ? NULL : $previousEvent
            ];

            return $response;
        }
    }

    if (!function_exists('getTimelineMonthEvents')) {
        function getTimelineMonthEvents($eventID, $firstTime = FALSE)
        {

            $nextEvent = '';
            $previousEvent = '';

            //Prepare the query
            $query = EventItem::full()->with(
                ["image",
                    "area" => function ($query) {
                        $query->full();
                    }])
                ->where("event_items.id", $eventID);
            $event = $query->first();
            //If found reference event
            //Get next and previous events IDS
            if (!empty($event)) {
                $nextEventDB = EventItem::full()
                    ->whereNotNull("event_items.start_date")
                    ->orderBy("start_date", "asc")
                    ->orderBy("event_items.id", "asc")
                    ->limit("50");

                if ($firstTime) {
                    $nextEventDB->whereRaw("((event_items.start_date = ? and event_items.id >= ?) OR (event_items.start_date >= ?))", [$event->start_date, $event->id, $event->start_date]);
                } else {
                    $nextEventDB->whereRaw("((event_items.start_date = ? and event_items.id > ?) OR (event_items.start_date > ?))", [$event->start_date, $event->id, $event->start_date]);
                }

                $nextEvent = $nextEventDB->get();

                $previousEventDB = EventItem::full()
                    ->whereNotNull("event_items.start_date")
                    ->whereRaw("((event_items.start_date = ? and event_items.id < ?) OR (event_items.start_date < ?))", [$event->start_date, $event->id, $event->start_date])
                    ->orderBy("start_date", "desc")
                    ->orderBy("event_items.id", "desc")
                    ->limit("50");

                $previousEvent = $previousEventDB->get();
            }

            $response = [
                "nextEvents"     => empty($nextEvent) ? NULL : $nextEvent,
                "previousEvents" => empty($previousEvent) ? NULL : $previousEvent
            ];

            return $response;
        }
    }

    if (!function_exists('getAreas')) {
        function getAreas()
        {

            //Prepare the query
            $query = Area::full();
            $results = $query->get();

            return $results;
        }
    }

    if (!function_exists('getAreaIcon')) {
        function getAreaIcon($areaTitle)
        {

            //Prepare the query
            $result = '';
            if ($areaTitle == 'Cultura') {
                $result = 'guitar_white';
            } else if ($areaTitle == 'Economia') {
                $result = 'chart';
            } else if ($areaTitle == 'Internacional') {
                $result = 'globe';
            } else if ($areaTitle == 'Política') {
                $result = 'vote';
            } else {
                $result = 'society';
            }

            return $result;
        }
    }

    if (!function_exists('getAreaColorClass')) {
        function getAreaColorClass($areaTitle)
        {

            //Prepare the query


            $result = '';
            if ($areaTitle == 'Cultura') {
                $result = 'mb-linem';
            } else if ($areaTitle == 'Economia') {
                $result = 'mb-yellow';
            } else if ($areaTitle == 'Internacional') {
                $result = '';
            } else if ($areaTitle == 'Politica') {
                $result = 'mb-pink';
            } else {
                $result = 'mb-blue';
            }

            return $result;
        }
    }

    if (!function_exists('getLocations')) {
        function getLocations()
        {

            //Prepare the query
            $query = Location::full()->select("id", "title as text")->orderBy("title", "asc");
            $results = $query->get();

            return $results;
        }
    }

    if (!function_exists('getMediaItens')) {
        function getMediaItens($eventItemID)
        {

            //Prepare the query
            if (!empty($eventItemID)):
                $query = EventMedia::with('mediaImage')
                    ->where('event_item_id', '=', $eventItemID)
                    ->orderBy('media_type');
                $results = $query->get();

                return $results;
            else:
                return NULL;
            endif;
        }
    }

    if (!function_exists('getPeople')) {
        function getPeople($limit = 4)
        {

            //Prepare the query
            $query = Person::full()->with('image')
                ->where('is_featured', TRUE)
                ->orderByRaw("RAND()")
                ->limit($limit);
            $results = $query->get();

            return $results;
        }
    }

    if (!function_exists('getPerson')) {
        function getPerson($id)
        {
            //Prepare the query
            $results = Person::find($id);

            return $results;
        }
    }

    if (!function_exists('getPeopleBySearchTerm')) {
        function getPeopleBySearchTerm($searchTerm)
        {
            $searchString = trim($searchTerm);
            if (empty($searchString)) {
                return NULL;
            }
            $fullSearchString = fulltext_search_term($searchString, TRUE, FALSE);
            if (empty($fullSearchString)) {
                return NULL;
            }

            $personagem = DB::table("people_lang")->select("person_id")
                ->whereRaw("MATCH(people_lang.title) AGAINST (? IN BOOLEAN MODE)", [$fullSearchString])
                ->orderByRaw("MATCH(people_lang.title) AGAINST (? IN BOOLEAN MODE) asc", [$fullSearchString])
                ->first();

            $response = !empty($personagem) ? $personagem->person_id : NULL;

            return $response;
        }
    }

    if (!function_exists('getPeopleSearchAutoComplete')) {
        function getPeopleSearchAutoComplete($searchTerm = '')
        {

            $searchString = trim($searchTerm);
            if (empty($searchString)) {
                return [];
            }
            $fullSearchString = fulltext_search_term($searchString, TRUE, TRUE);
            if (empty($fullSearchString)) {
                return [];
            }

            //Prepare the query
            $dataToReturn = [];
            $titulos = DB::table("people_lang")->select("title")
                ->whereRaw("MATCH(people_lang.title) AGAINST (? IN BOOLEAN MODE)", [$fullSearchString])
                ->orderByRaw("MATCH(people_lang.title) AGAINST (? IN BOOLEAN MODE) asc", [$fullSearchString])
                ->limit(10)
                ->get();

            foreach ($titulos as $titulo) {
                $dataToReturn[] = $titulo->title;
            }

            return $dataToReturn;

        }
    }

    if (!function_exists('getPortugueseMonthName')) {
        function getPortugueseMonthName($engMonthName)
        {
            $ptMonthName = '';

            switch ($engMonthName) {
                case 'January':
                    $ptMonthName = 'Janeiro';
                    break;
                case 'Jan':
                    $ptMonthName = 'Jan';
                    break;
                case 'February':
                    $ptMonthName = 'Fevereiro';
                    break;
                case 'Feb':
                    $ptMonthName = 'Fev';
                    break;
                case 'March':
                    $ptMonthName = 'Março';
                    break;
                case 'Mar':
                    $ptMonthName = 'Mar';
                    break;
                case 'April':
                    $ptMonthName = 'Abril';
                    break;
                case 'Apr':
                    $ptMonthName = 'Abr';
                    break;
                case 'May':
                    $ptMonthName = 'Maio';
                    break;
                case 'June':
                    $ptMonthName = 'Junho';
                    break;
                case 'Jun':
                    $ptMonthName = 'Jun';
                    break;
                case 'July':
                    $ptMonthName = 'Julho';
                    break;
                case 'Jul':
                    $ptMonthName = 'Jul';
                    break;
                case 'August':
                    $ptMonthName = 'Agosto';
                    break;
                case 'Aug':
                    $ptMonthName = 'Ago';
                    break;
                case 'September':
                    $ptMonthName = 'Setembro';
                    break;
                case 'Sep':
                    $ptMonthName = 'Set';
                    break;
                case 'October':
                    $ptMonthName = 'Outubro';
                    break;
                case 'Oct':
                    $ptMonthName = 'Out';
                    break;
                case 'November':
                    $ptMonthName = 'Novembro';
                    break;
                case 'Nov':
                    $ptMonthName = 'Nov';
                    break;
                case 'December':
                    $ptMonthName = 'Dezembro';
                    break;
                case 'Dec':
                    $ptMonthName = 'Dez';
                    break;
            }

            return $ptMonthName;
        }
    }

    if (!function_exists('getDatesDescriptionAttribute')) {
        function getDatesDescriptionAttribute($eventDates, $hideMonth, $hideDay)
        {
            $dateDesc = '';
            $dateDescYear = '';

            //Event runs during the year
            if ($hideMonth) {
                $dateDescYear = $eventDates[0]->start_date->year;
            } //Event runs during whole month
            else if ($hideDay) {
                $engMonthName = $eventDates[0]->start_date->format('F');
                $ptMonthName = getPortugueseMonthName($engMonthName);
                $dateDesc = $ptMonthName;
                $dateDescYear = $eventDates[0]->start_date->year;
            } else if (count($eventDates) > 1) {
                $dateDescYear = $eventDates[0]->start_date->year;
                $firstTime = TRUE;
                foreach ($eventDates as $eventDate) {
                    if ($firstTime) {
                        $dateDesc .= $eventDate->start_date->format('d');
                        $firstTime = FALSE;
                    } else {
                        $dateDesc .= ', ' . $eventDate->start_date->format('d');
                    }
                }
                $engMonthName = $eventDates[0]->start_date->format('F');
                $ptMonthName = getPortugueseMonthName($engMonthName);
                $dateDesc .= ' de ' . $ptMonthName;
            } else {
                if (!empty($eventDates[0]->end_date)) {
                    $engMonthName = $eventDates[0]->start_date->format('F');
                    $ptMonthName = getPortugueseMonthName($engMonthName);
                    $dateDesc .= $eventDates[0]->start_date->format('d') . ' a ' . $eventDates[0]->end_date->format('d') . ' de ' . $ptMonthName;
                } else {
                    $engMonthName = $eventDates[0]->start_date->format('F');
                    $ptMonthName = getPortugueseMonthName($engMonthName);
                    $dateDesc .= $eventDates[0]->start_date->format('d') . ' de ' . $ptMonthName;
                }
                $dateDescYear = $eventDates[0]->start_date->year;

            }

            $response = [
                "dateDesc"     => $dateDesc,
                "dateDescYear" => $dateDescYear
            ];

            return $response;
        }
    }

    function syncEventDate(EventDate $eventDateItem)
    {
        $startDate = $eventDateItem->start_date;
        $startDay = $startDate->day;
        $startMonth = $startDate->month;
        $startYear = $startDate->year;

        // Insert
        $eventDateItem->start_date_day = $startDay;
        $eventDateItem->start_date_month = $startMonth;
        $eventDateItem->start_date_year = $startYear;

        // EndDate != null?
        if ($eventDateItem->end_date) {
            $endDate = $eventDateItem->end_date;
            $endDay = $endDate->day;
            $endMonth = $endDate->month;
            $endYear = $endDate->year;

            $eventDateItem->end_date_day = $endDay;
            $eventDateItem->end_date_month = $endMonth;
            $eventDateItem->end_date_year = $endYear;
        }
    }




