summaryrefslogtreecommitdiff
path: root/app/Libraries/Helper.php
blob: 43b6ff3f7aed18b33d5ef6f4412110c314a77260 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
namespace App\Libraries;

use Carbon\Carbon;

use App\Libraries\AnimeSchedule;
use App\Libraries\AnimeSeason;
use App\Anime;
use App\AnimeStats;
use App\MALUser;
use App\Calendar;
use App\Airing;

use Eluceo\iCal\Component\Calendar as iCalendar; 
use Eluceo\iCal\Component\Event;

class Helper {
	public function getCalendar( $username ) {
		echo "<pre>";
		$user = MALUser::where('username', $username)->get()->first();

		$vCalendar = new iCalendar('animes.iamfabulous.de');
		$vCalendar->setName('Anime Schedule');

		foreach( $user->calendar()->get() as $anime ) {

			if ( is_null($anime->episodes_completes) ) {
				$episodes_complete = '?';	
			} else {
				$episodes_complete = $anime->episodes_completes;
			}

			$vEvent = new Event();

			$vEvent
				->setDtStart(new \DateTime($anime->airing_at))
                                ->setDtEnd( new \DateTime(Carbon::create($anime->airing_at)->add($anime->duration, 'minutes')) )
                                ->setNoTime(false)
                                ->setSummary( $anime->title . " (" . $anime->episode . "/" . $episodes_complete . ")" )
                                ->setUrl( env("APP_URL") )
                                ->setDescription( "(Episode " . $anime->episode . "/" . $episodes_complete . ") You have watched " . $anime->episodes_watched . " episodes of " . $anime->title . " and scored it with " . $anime->score_user . ". (Public score: ". $anime->score .")\n\n" . $anime->mal_url );

			$vCalendar->addComponent($vEvent);
		}

		return $vCalendar->render();

	}

        public function setCalendar($username) {
                $user = MALUser::where('username', $username)->get()->first();
                echo "<pre>";
                foreach( $user->IsWatching as $anime ) {
                        $stats = $anime->getStats()->get()->first();
                        $airing = $anime->getAiring()->get()->first();

			/**
			 * Check for duplicate entry.
			 */
			$check = Calendar::where('mal_id', $anime->mal_id)->where('user_id', $user->id)->where(
				function($q) use ($airing){
					$q->where('episode', $airing->episode)->orWhere('airing_at', $airing->aired_at);
				})->get()->first();

			if ( ! is_null( $check ) ) {
				echo "duplicate entry. ".$anime->mal_id." continue\n"; continue;
			}

                        $calendar = new Calendar();     
                        $calendar->mal_id = $anime->mal_id;
                        $calendar->user_id = $anime->Watching->user_id;
                        $calendar->username = $username;
                        $calendar->airing_at  = $airing->aired_at;
                        $calendar->duration = $airing->duration;            
                        $calendar->episode = $airing->episode;             
                        $calendar->episodes_watched = $anime->Watching->episodes_watched;
                        $calendar->episodes_complete = $anime->episodes;
                        $calendar->score = $stats->score;
                        $calendar->score_user = $anime->Watching->score_user;
                        $calendar->title = $anime->title_pref;
                        $calendar->mal_url = $anime->url;

                        $calendar->save();
                }
        }


}