PATH:
home
/
rwabteecom
/
project_11
/
app
/
Http
/
Controllers
/
Dashboard
/
Analytics
/
Editing: AnalyticsController.php
<?php namespace App\Http\Controllers\Dashboard\Analytics; use App\Http\Controllers\Controller; use App\Models\Analytics; use App\Models\DomainSocial; use App\Models\Link; use App\Services\Domain\DomainServices; use App\Services\Link\LinkServices; use App\Services\Socials\DomainSocialServices; use Illuminate\Http\Request; use App\Services\Socials\SocialServices; use Carbon\Carbon; use Exception; use Log; class AnalyticsController extends Controller { public function __construct( private readonly DomainServices $domainServices, private readonly SocialServices $socialIconsServices, private readonly LinkServices $linkservices, private readonly DomainSocialServices $domainSocialIconsServices, ) { } public function index(Request $request) { $startDate = $request->from ? Carbon::parse($request->from) : Carbon::now()->startOfMonth(); $endDate = $request->to ? Carbon::parse($request->to)->addDays(1) : Carbon::now(); $from= $startDate->startOfDay()->format('Y-m-d H:i'); $to= $endDate->endOfDay()->format('Y-m-d H:i'); $all_click=Analytics::where('domain_id',currentDomain()->id) ->where(function($q){ $q->whereNotNull('link_id')->OrwhereNotNull('domain_socials_id'); }) ->when(request()->from && request()->to,function($q) use($from,$to) { $q->whereBetween('created_at',[$from,$to]); }) ->get(); $all_view=Analytics::where('domain_id',currentDomain()->id) ->whereNull('link_id') ->whereNull('domain_socials_id') ->when(request()->from && request()->to,function($q) use($from,$to) { $q->whereBetween('created_at',[$from,$to]); }) ->get(); $links=Link::where('domain_id',currentDomain()->id) ->where('link_type','link') ->withCount('analytics') ->orderByDesc('analytics_count') ->get(); $clickedLinks = $all_click->pluck('link_id')->toArray(); $filteredLinks = $links->reject(function ($link) use ($clickedLinks) { return !in_array($link->id, $clickedLinks); }); $links = $filteredLinks; $socials=DomainSocial::where('domain_id',currentDomain()->id) ->withCount('analytics') ->orderByDesc('analytics_count') ->get(); $clickedSocials = $all_click->pluck('domain_socials_id')->toArray(); $filteredSocials = $socials->reject(function ($social) use ($clickedSocials) { return !in_array($social->id, $clickedSocials); }); $socials = $filteredSocials; $analytics_day=[]; $analytics_day_view=[]; $days=[]; $start = Carbon::parse($startDate)->startOfDay(); $diffInDays = $startDate->diffInDays($endDate); for($i = 0 ; $i < $diffInDays ; $i++){ $ii[]=$i; $currentDayStart = $start->copy()->addDays($i)->startOfDay()->format('Y-m-d H:i'); $currentDayEnd = $start->copy()->addDays($i)->endOfDay()->format('Y-m-d H:i'); $analytics_day[]= Analytics::where('domain_id',currentDomain()->id) ->where(function($q){ $q->whereNotNull('link_id')->OrwhereNotNull('domain_socials_id'); }) ->whereBetween('created_at', [$currentDayStart, $currentDayEnd]) ->count(); $analytics_day_view[]= Analytics::where('domain_id',currentDomain()->id) ->whereNull('link_id') ->whereNull('domain_socials_id') ->whereBetween('created_at', [$currentDayStart, $currentDayEnd]) ->count(); $days[] = Carbon::parse($currentDayStart)->format('D'); } return view('dashboard.pages.analytics')->with([ 'links' => $links, 'socials' => $socials, 'all_click'=>$all_click->count(), 'all_view'=>$all_view->count(), 'analytics_day'=>$analytics_day, 'days'=>$days, 'analytics_day_view'=>$analytics_day_view ]); } public function statisticSocial(Request $request, $id){ $startDate = $request->from ? Carbon::parse($request->from) : Carbon::now()->startOfMonth(); $endDate = $request->to ? Carbon::parse($request->to)->addDays(1) : Carbon::now(); $start= $startDate->startOfDay()->format('Y-m-d H:i'); $end= $endDate->endOfDay()->format('Y-m-d H:i'); $link= DomainSocial::where('domain_id',currentDomain()->id) ->where('id',$id) ->first(); $start = Carbon::parse($startDate)->startOfDay(); $diffInDays = $startDate->diffInDays($endDate); for($i = 0 ; $i < $diffInDays ; $i++){ $ii[]=$i; $currentDayStart = $start->copy()->addDays($i)->startOfDay()->format('Y-m-d H:i'); $currentDayEnd = $start->copy()->addDays($i)->endOfDay()->format('Y-m-d H:i'); $analytics[]= Analytics::where('domain_id',currentDomain()->id) ->where('domain_socials_id',$id) ->whereBetween('created_at',[$currentDayStart,$currentDayEnd]) ->count(); $days[]=Carbon::parse($currentDayStart)->format('D'); } return view('dashboard.pages.link-status')->with([ 'analytics_day'=>$analytics, 'days'=>$days, 'link'=>$link ]); } public function statistic(Request $request, $id){ $startDate = $request->from ? Carbon::parse($request->from) : Carbon::now()->startOfMonth(); $endDate = $request->to ? Carbon::parse($request->to)->addDays(1) : Carbon::now(); $start= $startDate->startOfDay()->format('Y-m-d H:i'); $end= $endDate->endOfDay()->format('Y-m-d H:i'); $link= Link::where('domain_id',currentDomain()->id) ->where('id',$id) ->where('link_type','link') ->first(); $start = Carbon::parse($startDate)->startOfDay(); $diffInDays = $startDate->diffInDays($endDate); for($i = 0 ; $i < $diffInDays ; $i++){ $ii[]=$i; $currentDayStart = $start->copy()->addDays($i)->startOfDay()->format('Y-m-d H:i'); $currentDayEnd = $start->copy()->addDays($i)->endOfDay()->format('Y-m-d H:i'); $analytics[]= Analytics::where('domain_id',currentDomain()->id) ->where('link_id',$id) ->whereBetween('created_at',[$currentDayStart,$currentDayEnd]) ->count(); $days[]=Carbon::parse($currentDayStart)->format('D'); } return view('dashboard.pages.link-status')->with([ 'analytics_day'=>$analytics, 'days'=>$days, 'link'=>$link ]); } }
SAVE
CANCEL