FIX_ISSUE

This commit is contained in:
VENKATESHWARAN 2026-02-25 19:26:37 +05:30
parent 49ca11bdfb
commit a863e37623

View File

@ -7,6 +7,7 @@ use App\Models\SalesActualLeadModel;
use App\Models\SalesContactPersonModel; use App\Models\SalesContactPersonModel;
use App\Models\SalesActivityModel; use App\Models\SalesActivityModel;
use App\Models\SalesLeadNoteModel; use App\Models\SalesLeadNoteModel;
use App\Models\UserModel;
use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\API\ResponseTrait; use CodeIgniter\API\ResponseTrait;
@ -18,6 +19,7 @@ class SalesController extends BaseController
protected $contactModel; protected $contactModel;
protected $activityModel; protected $activityModel;
protected $noteModel; protected $noteModel;
protected $userModel;
public function __construct() public function __construct()
{ {
@ -25,6 +27,7 @@ class SalesController extends BaseController
$this->contactModel = new SalesContactPersonModel(); $this->contactModel = new SalesContactPersonModel();
$this->activityModel = new SalesActivityModel(); $this->activityModel = new SalesActivityModel();
$this->noteModel = new SalesLeadNoteModel(); $this->noteModel = new SalesLeadNoteModel();
$this->userModel = new UserModel();
} }
@ -142,9 +145,11 @@ class SalesController extends BaseController
]); ]);
// 2. Handle follow-up if requested // 2. Handle follow-up if requested
$google_calender_response = [];
if (!empty($data['schedule_followup']) && $data['schedule_followup'] === 'yes') { if (!empty($data['schedule_followup']) && $data['schedule_followup'] === 'yes') {
$activity = $this->activityModel->find($id); $activity = $this->activityModel->find($id);
$this->activityModel->insert([ $activity_data = [
'lead_id' => $activity['lead_id'], 'lead_id' => $activity['lead_id'],
'activity_type' => $data['followup_type'], 'activity_type' => $data['followup_type'],
'notes' => $data['followup_notes'], 'notes' => $data['followup_notes'],
@ -152,10 +157,14 @@ class SalesController extends BaseController
'assigned_to' => $activity['assigned_to'], 'assigned_to' => $activity['assigned_to'],
'status' => 'pending', 'status' => 'pending',
'created_by' => $this->getUserId() 'created_by' => $this->getUserId()
]); ];
$this->activityModel->insert($activity_data);
// add google calender event
$google_calender_response = $this->addCalenderEvent($activity_data);
} }
return $this->respond(['status' => 'success', 'message' => 'Activity updated']); return $this->respond(['status' => 'success', 'message' => 'Activity updated', 'google_calender_response' => $google_calender_response]);
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->failServerError($e->getMessage()); return $this->failServerError($e->getMessage());
} }
@ -463,7 +472,8 @@ class SalesController extends BaseController
'total' => $result['total'], 'total' => $result['total'],
'limit' => $limit, 'limit' => $limit,
'offset' => $offset 'offset' => $offset
]); ], 200);
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->fail($e->getMessage(), ResponseInterface::HTTP_INTERNAL_SERVER_ERROR); return $this->fail($e->getMessage(), ResponseInterface::HTTP_INTERNAL_SERVER_ERROR);
} }
@ -543,13 +553,17 @@ class SalesController extends BaseController
return $this->fail($this->activityModel->errors(), ResponseInterface::HTTP_BAD_REQUEST); return $this->fail($this->activityModel->errors(), ResponseInterface::HTTP_BAD_REQUEST);
} }
// add google calender event
$response = $this->addCalenderEvent($data);
$activityId = $this->activityModel->getInsertID(); $activityId = $this->activityModel->getInsertID();
$activity = $this->activityModel->find((int)$activityId); $activity = $this->activityModel->find((int)$activityId);
return $this->respondCreated([ return $this->respondCreated([
'status' => 'success', 'status' => 'success',
'message' => 'Activity created successfully', 'message' => 'Activity created successfully',
'data' => $activity 'data' => $activity,
'google_calender_response' => $response
]); ]);
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->fail($e->getMessage(), ResponseInterface::HTTP_INTERNAL_SERVER_ERROR); return $this->fail($e->getMessage(), ResponseInterface::HTTP_INTERNAL_SERVER_ERROR);
@ -928,4 +942,84 @@ class SalesController extends BaseController
return $achievedAmountData[0]['achieved_amount'] ?? 0.00; return $achievedAmountData[0]['achieved_amount'] ?? 0.00;
} }
public function addCalenderEvent($input)
{
try {
log_message('error', '[GOOGLE_CALENDER] Calendar Event Input: ' . json_encode($input));
/* ---------------- VALIDATION ---------------- */
if (empty($input['lead_id']) || empty($input['assigned_to']) || empty($input['scheduled_date'])) {
log_message('error', '[GOOGLE_CALENDER] Calendar Event Missing Required Data');
return [
'status' => false,
'message' => 'Required data missing'
];
}
/* ---------------- FETCH DATA ---------------- */
$lead_data = $this->leadModel
->where('lead_id', $input['lead_id'])
->first();
if (!$lead_data) {
log_message('error', '[GOOGLE_CALENDER] Lead Not Found: ' . $input['lead_id']);
return [
'status' => false,
'message' => 'Lead not found'
];
}
$user_data = $this->userModel
->where('id', $input['assigned_to'])
->first();
if (!$user_data) {
log_message('error', '[GOOGLE_CALENDER] User Not Found: ' . $input['assigned_to']);
return [
'status' => false,
'message' => 'Assigned user not found'
];
}
/* ---------------- SUMMARY ---------------- */
$summary = ucfirst($input['activity_type']) .
' with ' .
$lead_data['company_name'];
/* ---------------- GOOGLE PAYLOAD ---------------- */
$eventData = [
'summary' => $summary,
'meeting_date' => $input['scheduled_date'],
'description' => $input['notes'] ?? '',
'emails' => [$user_data['email']],
];
log_message('error', '[GOOGLE_CALENDER] Google Calendar Payload: ' . json_encode($eventData));
/* ---------------- API CALL ---------------- */
$response = add_google_calender_event($eventData);
log_message('error', '[GOOGLE_CALENDER] Google Calendar Response: ' . json_encode($response));
return $response;
} catch (\Throwable $e) {
log_message('error', '[GOOGLE_CALENDER] Calendar Event Exception: ' . $e->getMessage());
log_message('error', '[GOOGLE_CALENDER] Calendar Event Trace: ' . $e->getTraceAsString());
return [
'status' => false,
'message' => 'Calendar event failed',
'error' => $e->getMessage()
];
}
}
} }