FIX_ISSUE
This commit is contained in:
parent
49ca11bdfb
commit
a863e37623
@ -7,6 +7,7 @@ use App\Models\SalesActualLeadModel;
|
||||
use App\Models\SalesContactPersonModel;
|
||||
use App\Models\SalesActivityModel;
|
||||
use App\Models\SalesLeadNoteModel;
|
||||
use App\Models\UserModel;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use CodeIgniter\API\ResponseTrait;
|
||||
|
||||
@ -18,6 +19,7 @@ class SalesController extends BaseController
|
||||
protected $contactModel;
|
||||
protected $activityModel;
|
||||
protected $noteModel;
|
||||
protected $userModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@ -25,6 +27,7 @@ class SalesController extends BaseController
|
||||
$this->contactModel = new SalesContactPersonModel();
|
||||
$this->activityModel = new SalesActivityModel();
|
||||
$this->noteModel = new SalesLeadNoteModel();
|
||||
$this->userModel = new UserModel();
|
||||
}
|
||||
|
||||
|
||||
@ -142,9 +145,11 @@ class SalesController extends BaseController
|
||||
]);
|
||||
|
||||
// 2. Handle follow-up if requested
|
||||
$google_calender_response = [];
|
||||
if (!empty($data['schedule_followup']) && $data['schedule_followup'] === 'yes') {
|
||||
|
||||
$activity = $this->activityModel->find($id);
|
||||
$this->activityModel->insert([
|
||||
$activity_data = [
|
||||
'lead_id' => $activity['lead_id'],
|
||||
'activity_type' => $data['followup_type'],
|
||||
'notes' => $data['followup_notes'],
|
||||
@ -152,10 +157,14 @@ class SalesController extends BaseController
|
||||
'assigned_to' => $activity['assigned_to'],
|
||||
'status' => 'pending',
|
||||
'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) {
|
||||
return $this->failServerError($e->getMessage());
|
||||
}
|
||||
@ -463,7 +472,8 @@ class SalesController extends BaseController
|
||||
'total' => $result['total'],
|
||||
'limit' => $limit,
|
||||
'offset' => $offset
|
||||
]);
|
||||
], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail($e->getMessage(), ResponseInterface::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
@ -542,6 +552,9 @@ class SalesController extends BaseController
|
||||
if (!$this->activityModel->insert($data)) {
|
||||
return $this->fail($this->activityModel->errors(), ResponseInterface::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
// add google calender event
|
||||
$response = $this->addCalenderEvent($data);
|
||||
|
||||
$activityId = $this->activityModel->getInsertID();
|
||||
$activity = $this->activityModel->find((int)$activityId);
|
||||
@ -549,7 +562,8 @@ class SalesController extends BaseController
|
||||
return $this->respondCreated([
|
||||
'status' => 'success',
|
||||
'message' => 'Activity created successfully',
|
||||
'data' => $activity
|
||||
'data' => $activity,
|
||||
'google_calender_response' => $response
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
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;
|
||||
}
|
||||
|
||||
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()
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user