Evercode1\ViewMaker\ChartTemplates::AppendChartToApiControllerTemplate PHP Method

AppendChartToApiControllerTemplate() public method

    public function AppendChartToApiControllerTemplate()
    {
        $content = <<<EOD
// Begin :::model::: Chart Api Method

    public function :::chartApiControllerMethod:::(Request \$request){

        if (\$request->has('period')){

            switch(\$request->get('period')){

                case '3months' :

                    // set first and last date

                    \$currentYear = \\Carbon\\Carbon::now()->toDateString();
                    \$lastYear = \\Carbon\\Carbon::parse('first day of -2 month')->toDateString();

                    \$rows = DB::table(':::tableName:::')->select(DB::raw('Year(created_at) as year'),
                        DB::raw('month(created_at) as month'),
                        DB::raw("count(:::tableName:::.id) as `count`"))
                        ->where(DB::raw('date(created_at)'), '>=', \$lastYear)
                        ->where(DB::raw('date(created_at)'), '<=', \$currentYear)
                        ->groupBy('year', 'month')
                        ->get();

                    // dynamically create range of month/value pairs using carbon

                    for (\$i = 0; \$i <= 2; \$i++) {
                        \$values[intval(\\Carbon\\Carbon::parse("\$lastYear + \$i month")->format('m'))] = 0;
                    }

                    \$months = [1 => 'Jan', 2 => 'Feb', 3 =>'Mar', 4 => 'Apr', 5 => 'May',
                               6 => 'Jun', 7 => 'Jul', 8 => 'Aug', 9 => 'Sep', 10 => 'Oct',
                               11 => 'Nov', 12 => 'Dec'];

                    //replace keys in values where key in months matches key in values with value in months of matching key

                    \$newValues = [];

                    foreach(\$values as \$monthNumber => \$count){

                        \$key = \$months[\$monthNumber];
                        \$newValues[\$key] = \$count;


                    }

                    \$labels= array_keys(\$newValues);


                    foreach(\$rows as \$row){

                        //overwrite values into values array

                        \$values [\$row->month] = \$row->count;
                    }

                    \$values = array_values(\$values);

                    \$data['data'] = compact('labels', 'values');

                    return response()->json(\$data);

                    break;

                case '1week' :

                    // set first and last date

                    \$today = \\Carbon\\Carbon::now()->toDateString();
                    \$lastWeek = \\Carbon\\Carbon::parse('-6 days')->toDateString();

                    \$rows = DB::table(':::tableName:::')->select(DB::raw('day(created_at) as day'),
                        DB::raw('month(created_at) as month'),
                        DB::raw("count(:::tableName:::.id) as `count`"))
                        ->where(DB::raw('date(created_at)'), '>=', \$lastWeek)
                        ->where(DB::raw('date(created_at)'), '<=', \$today)
                        ->groupBy('month', 'day')
                        ->get();

                    // dynamically create range of month/day pairs using carbon

                    for (\$i = 0; \$i <= 6; \$i++) {
                        \$labels[intval(\\Carbon\\Carbon::parse("\$lastWeek + \$i day")->format('m')) . '/' .intval(\\Carbon\\Carbon::parse("\$lastWeek + \$i day")->format('d'))] = 0;
                    }

                    \$labels= array_keys(\$labels);

                    for (\$i = 0; \$i <= 6; \$i++) {
                        \$values[intval(\\Carbon\\Carbon::parse("\$lastWeek + \$i day")->format('d'))] = 0;
                    }

                    //assign each day counts to values


                    foreach(\$rows as \$row){

                        \$values [\$row->day] = \$row->count;
                    }


                    \$values = array_values(\$values);

                    \$data['data'] = compact('labels', 'values');

                    return response()->json(\$data);

                    break;

                case '30days' :

                    \$today = \\Carbon\\Carbon::now()->toDateString();
                    \$lastWeek = \\Carbon\\Carbon::parse('-29 days')->toDateString();

                    \$rows = DB::table(':::tableName:::')->select(DB::raw('day(created_at) as day'),
                        DB::raw('month(created_at) as month'),
                        DB::raw("count(:::tableName:::.id) as `count`"))
                        ->where(DB::raw('date(created_at)'), '>=', \$lastWeek)
                        ->where(DB::raw('date(created_at)'), '<=', \$today)
                        ->groupBy('month', 'day')
                        ->get();


                    // dynamically create range of month/day pairs using carbon

                    for (\$i = 0; \$i <= 29; \$i++) {
                        \$labels[intval(\\Carbon\\Carbon::parse("\$lastWeek + \$i day")->format('m')) . '/' .intval(\\Carbon\\Carbon::parse("\$lastWeek + \$i day")->format('d'))] = 0;
                    }

                    \$labels= array_keys(\$labels);

                    // build values array

                    for (\$i = 0; \$i <= 29; \$i++) {
                        \$values[intval(\\Carbon\\Carbon::parse("\$lastWeek + \$i day")->format('d'))] = 0;
                    }

                    //assign each day counts to values

                    foreach(\$rows as \$row){

                        \$values [\$row->day] = \$row->count;
                    }

                    \$values = array_values(\$values);

                    \$data['data'] = compact('labels', 'values');

                    return response()->json(\$data);

                    break;


            }


        }

        // set first and last date

        \$currentYear = \\Carbon\\Carbon::now()->toDateString();
        \$lastYear = \\Carbon\\Carbon::parse('first day of -11 month')->toDateString();

        \$rows = DB::table(':::tableName:::')->select(DB::raw('Year(created_at) as year'),
            DB::raw('month(created_at) as month'),
            DB::raw("count(:::tableName:::.id) as `count`"))
            ->where(DB::raw('date(created_at)'), '>=', \$lastYear)
            ->where(DB::raw('date(created_at)'), '<=', \$currentYear)
            ->groupBy('year', 'month')
            ->get();

        // dynamically create range of month/value pairs using carbon

        \$values[intval(\\Carbon\\Carbon::parse(\$lastYear)->format('m'))] = 0;

        for (\$i = 0; \$i <= 11; \$i++) {
            \$values[intval(\\Carbon\\Carbon::parse("\$lastYear + \$i month")->format('m'))] = 0;
        }

        \$months = [1 => 'Jan', 2 => 'Feb', 3 =>'Mar', 4 => 'Apr', 5 => 'May',
                   6 => 'Jun', 7 => 'Jul', 8 => 'Aug', 9 => 'Sep', 10 => 'Oct',
                   11 => 'Nov', 12 => 'Dec'];

        //replace keys in values where key in months matches key in values with value in months of matching key

        \$newValues = [];

       foreach(\$values as \$monthNumber => \$count){

           \$key = \$months[\$monthNumber];
           \$newValues[\$key] = \$count;


       }

        \$labels= array_keys(\$newValues);


        foreach(\$rows as \$row){

            //overwrite values into values array

            \$values [\$row->month] = \$row->count;
        }

        \$values = array_values(\$values);


        \$currentYear = \\Carbon\\Carbon::parse(\$currentYear)->format('y');
        \$lastYear = \\Carbon\\Carbon::parse(\$lastYear)->format('y');


        \$data['data'] = compact('labels', 'values', 'currentYear', 'lastYear');

        return response()->json(\$data);



    }

    // End :::model::: Chart Api Method
EOD;
        return $this->tokenBuilder->insertTokensIntoContent($content);
    }