156 lines
6.6 KiB
PHP
156 lines
6.6 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Website;
|
||
|
|
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use App\Models\ActivityMaster;
|
||
|
|
use App\Models\SubscriptionMaster;
|
||
|
|
use App\Models\ActivitySchedule;
|
||
|
|
use App\Models\ActivityDay;
|
||
|
|
use App\Models\Teacher;
|
||
|
|
use App\Models\ManageFaq;
|
||
|
|
use App\Models\LinkFaqActivityMasterIds;
|
||
|
|
use App\Models\PastSession;
|
||
|
|
use Carbon\Carbon;
|
||
|
|
use DateTimeZone;
|
||
|
|
use DateTime;
|
||
|
|
use Auth;
|
||
|
|
|
||
|
|
use GuzzleHttp\Client;
|
||
|
|
use Illuminate\Support\Facades\Http;
|
||
|
|
use Torann\GeoIP\Facades\GeoIP;
|
||
|
|
use Spatie\TimeZone\GoogleTimeZone;
|
||
|
|
|
||
|
|
class YourActivityController extends Controller
|
||
|
|
{
|
||
|
|
public function index(Request $request){
|
||
|
|
$data=[];
|
||
|
|
$current_day = now()->format('Y-m-d'); // Get the current date in the format "YYYY-MM-DD"
|
||
|
|
$user_data = Auth::user();
|
||
|
|
|
||
|
|
$userIP = \Request::ip();
|
||
|
|
$response = Http::get("https://ipinfo.io/{$userIP}/json");
|
||
|
|
$locationData = $response->json();
|
||
|
|
$userTimeZone = $locationData['timezone'];
|
||
|
|
|
||
|
|
$user_data = Auth::user();
|
||
|
|
$utm_source = $user_data->utm_source;
|
||
|
|
$subscription_data = SubscriptionMaster::where('utm_plan',$utm_source)->first();
|
||
|
|
$subscription_id = $subscription_data->id;
|
||
|
|
$data['live_activity'] = ActivityDay::where('subscription_id', $subscription_id)
|
||
|
|
->where('date', 'LIKE', "%$current_day%")
|
||
|
|
->with('scheduleData', 'activityData')
|
||
|
|
->get();
|
||
|
|
// dd($data['live_activity']);
|
||
|
|
|
||
|
|
// dd($data['live_activity']);
|
||
|
|
// if($data['live_activity']->isEmpty()){
|
||
|
|
// $data['data'] = ['0'];
|
||
|
|
// dd($data);
|
||
|
|
// return view('website.pages.your_activity',compact('data'));
|
||
|
|
// }else{
|
||
|
|
if(!$data['live_activity']->isEmpty()){
|
||
|
|
$timestamp = $data['live_activity'][0]['time'];
|
||
|
|
// dd($timestamp);
|
||
|
|
$gettimezone = $userTimeZone;
|
||
|
|
// $datetime = "2016-02-01 00:00:01";
|
||
|
|
// Target timezone based on the user's IP address
|
||
|
|
$targetTimeZone = new DateTimeZone($userTimeZone);
|
||
|
|
|
||
|
|
// Create a DateTime object for the original timestamp in India timezone
|
||
|
|
$given = new DateTime($timestamp, new DateTimeZone('Asia/Kolkata'));
|
||
|
|
|
||
|
|
// Set the target timezone
|
||
|
|
$given->setTimezone($targetTimeZone);
|
||
|
|
// $given = new DateTime($timestamp, new DateTimeZone($gettimezone));
|
||
|
|
// $given->setTimezone(new DateTimeZone("UTC"));
|
||
|
|
$output = $given->format("H:i");
|
||
|
|
$data['live_activity'][0]['time']=$output;
|
||
|
|
}
|
||
|
|
$data['subscription_data'] = SubscriptionMaster::where('utm_plan',$utm_source)->first();
|
||
|
|
// return $data;
|
||
|
|
//past data
|
||
|
|
$subscription_data = SubscriptionMaster::where('utm_plan',$utm_source)->first();
|
||
|
|
$subscription_id = $subscription_data->id;
|
||
|
|
|
||
|
|
// dd($subscription_id);
|
||
|
|
// Calculate the cutoff date (end date + 7 days)
|
||
|
|
$activity_data = ActivityMaster::where('subscription_id', $subscription_id)->orderBy('end_date', 'desc')->first();
|
||
|
|
// return $activity_data;
|
||
|
|
// dd($activity_data);
|
||
|
|
$end_date = $activity_data->end_date;
|
||
|
|
// dd($end_date);
|
||
|
|
$cutoffDate = Carbon::parse($end_date)->addDays(7)->toDateString();
|
||
|
|
// dd($cutoffDate);
|
||
|
|
// $desired_date = Carbon::createFromDate(2024, 1, 2);
|
||
|
|
// $cutoffDate = $desired_date->format('Y-m-d');
|
||
|
|
$current_date = Carbon::now()->format('Y-m-d');
|
||
|
|
$data['data'] = [];
|
||
|
|
// dd($cutoffDate);
|
||
|
|
// Check if the current date is past the cutoff date
|
||
|
|
if (Carbon::now()->toDateString() > $cutoffDate) {
|
||
|
|
|
||
|
|
$data['data'] = ['0'];
|
||
|
|
// dd($data);
|
||
|
|
return view('website.pages.your_activity',compact('data'));
|
||
|
|
}
|
||
|
|
|
||
|
|
$data['past_activity'] = ActivityMaster::where('subscription_id', $subscription_id)->where('end_date','<',$cutoffDate)->with('teacher_data')->orderBy('start_date', 'desc')->first();
|
||
|
|
// dd($data['past_activity']);
|
||
|
|
if ($data['past_activity'] !== null) {
|
||
|
|
$schedule_data = ActivitySchedule::where('activity_master_id', $data['past_activity']['id'])->with('past_data')->orderBy('start_date', 'asc')->get()->toArray();
|
||
|
|
// dd($schedule_data);
|
||
|
|
} else {
|
||
|
|
$data['past_activity'] = [];
|
||
|
|
$schedule_data = []; // Set an empty array when $data['past_activity'] is null
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
$data_schedule = [];
|
||
|
|
foreach ($schedule_data as $k => $val){
|
||
|
|
if (empty($val['past_data'])){
|
||
|
|
continue;
|
||
|
|
}else{
|
||
|
|
$data_schedule[] = $val;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$data['past_activity']['schedule'] = $data_schedule;
|
||
|
|
|
||
|
|
|
||
|
|
// $userIP = $request->ip();
|
||
|
|
|
||
|
|
// $response = Http::get("https://ipinfo.io/{$userIP}/json");
|
||
|
|
// $locationData = $response->json();
|
||
|
|
// // dd($locationData);
|
||
|
|
// $userTimeZone = $locationData['timezone'];
|
||
|
|
// // dd($userTimeZone);
|
||
|
|
|
||
|
|
// $timestamp = $data['live_activity'][0]->new_time; // Use square brackets to access elements
|
||
|
|
// // dd()
|
||
|
|
// $originalTime = Carbon::parse($timestamp,$userTimeZone);
|
||
|
|
// $date = Carbon::createFromFormat('H:i:s', $timestamp, 'UTC');
|
||
|
|
// $date->setTimezone($userTimeZone);
|
||
|
|
// dd($date);
|
||
|
|
// $userTime = $originalTime->copy();
|
||
|
|
// $userTime->setTimezone($userTimeZone);
|
||
|
|
// $userTimeFormatted = $userTime->format('H:i:s');
|
||
|
|
// // dd($userTimeFormatted);
|
||
|
|
// $data['live_activity'] = $data['live_activity']->map(function ($item) use ($userTimeZone) {
|
||
|
|
// $timestamp = $item->new_time;
|
||
|
|
// // $normalTime = Carbon::createFromFormat('H:i', $timestamp, $userTimeZone); // Replace 'your_timezone' with the actual timezone of the 'time' column
|
||
|
|
// $normalTime = Carbon::parse($timestamp, $userTimeZone);
|
||
|
|
// $convertedTime = $normalTime->setTimezone($userTimeZone); // Convert to the user's time zone
|
||
|
|
// $item->new_time = $convertedTime->format('H:i'); // Update the 'time' value with the user's time zone in 'HH:mm' format
|
||
|
|
// return $item;
|
||
|
|
// })->toArray();
|
||
|
|
|
||
|
|
// echo "<pre>";
|
||
|
|
// print_r($data['live_activity']);
|
||
|
|
// exit;
|
||
|
|
|
||
|
|
return view('website.pages.your_activity',$data);
|
||
|
|
}
|
||
|
|
}
|