Files
a.montask/routes/api.php
T
2025-10-11 13:38:30 +00:00

231 lines
8.9 KiB
PHP
Executable File

<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\DB;
use App\Models\Attendance;
use App\Models\ai;
use App\Models\User;
use Illuminate\Support\Facades\Http;
use \Carbon\Carbon;
use Morilog\Jalali\Jalalian;
use function PHPUnit\Framework\returnSelf;
Route::get('/', function () {
return view('attendance.index');
return view('welcome');
});
Route::get('/ai', function () {
$response = Http::withHeaders([
'Authorization' => 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjA2OWZlZGJiLTk2ZDctNGU4MC1iMDA0LWFmZDZjMmU4YmZkZiIsImxhc3RfcGFzc3dvcmRfY2hhbmdlIjoxNzUwNjYwODczLCJleHAiOjE3NTQ3NTcxMDR9.qAQF8XDOU8NRz5vSiFlQfnrj8dhGhJ5uvJqjblQWmr8',
'Cookie' => 'x-ap=eu-central-1; acw_tc=0a03e56c17521661095906021e3cacb270c127c80eb3a20489a465ab4beae1',
])->post('https://chat.qwen.ai/api/v2/chat/completions?chat_id=7ce2a60a-2b40-4ae8-8536-0cd346642de3', [
'stream' => false,
'incremental_output' => true,
'chat_id' => '7ce2a60a-2b40-4ae8-8536-0cd346642de3',
'chat_mode' => 'normal',
'model' => 'qwen3-235b-a22b',
'messages' => [
[
'role' => 'user',
'content' => 'یه جمله انگیزشی بده که خاص، کوبنده و غیرکلیشه‌ای باشه. نه مثل بقیه.',
'user_action' => 'chat',
'files' => [],
'timestamp' => 1752165316,
'models' => ['qwen3-235b-a22b'],
'chat_type' => 't2t',
'feature_config' => [
'thinking_enabled' => false,
'output_schema' => 'phase'
],
'extra' => [
'meta' => [
'subChatType' => 't2t'
]
],
'sub_chat_type' => 't2t',
'parent_id' => 'df0a0c91-53d5-4a04-b5da-b8ac53d6d821'
]
],
'timestamp' => 1752165316
]);
// Get the response
$responseData = $response->json();
$content = $responseData['data']['choices'][0]['message']['content'];
$ai = new ai(); // Or use your correct namespace
$ai->key = 'angizeh'; // Assuming you fixed 'kay' to 'key' in migration
$ai->prompt = 'فقط یک جمله کوتاه انگیزشی بگو';
$ai->response = $content;
$ai->save();
dd($ai);
});
Route::post('attendance/enter', function (Request $request) {
// return $request;
// 32.6504751, 51.6936045
$user_identity = $request->input('name');
setcookie('user_identity', $user_identity, time() + (60 * 60 * 24 * 365 * 5), "/");
$userLat = $request->input('latitude');
$userLng = $request->input('longitude');
$officeLat = 32.6504751;
$officeLng = 51.6936045;
if (!$userLat || !$userLng) {
return response()->json(['error' => 'مختصات دریافت نشد.'], 422);
}
$attendance = Attendance::where('user_identity', $user_identity)
->whereNull('exited_at')
->latest('entered_at')
->first();
if ($attendance) {
$attendance->exited_at = now();
$attendance->exit_location = ['lat' => $userLat, 'lng' => $userLng];
$attendance->ip_exit = $userLng;
$attendance->distance_exit = $request->input('distance');
$attendance->save();
return redirect()->back()->with('message', [
'color' => '#3b82f6',
'text' => 'خروج با موفقیت ثبت شد.',
]);
} else {
$attendance = new Attendance();
$attendance->user_id = 0;
$attendance->user_identity = $user_identity ?? '';
$attendance->distance = $request->input('distance');
$attendance->ip_address = $request->ip();
$attendance->entered_at = now();
$attendance->entry_location = ['lat' => $userLat, 'lng' => $userLng];
$attendance->office_location = ['lat' => $officeLat, 'lng' => $officeLng];
$attendance->save();
return redirect()->back()->with('message', [
'color' => '#22c55e',
'text' => 'ورود با موفقیت ثبت شد.',
]);
}
});
Route::post('/pplain', function (Request $request) {
//functions
function savedb($d)
{
DB::table('tst')->insert([
'data' => json_encode($d),
]);
}
function sendbot($chatid, $mssg)
{
// ارسال به پیوی تلگرام
$sent = Http::get("https://api.wwwapp.ir/telegran_send.php", [
'botToken' => "7467099619:AAF2V6yYcbAb8oSIRSCyH5i2GKfdWVO3a7k",
'chatId' => $chatid,
'message' => $mssg,
'parse_mode' => 'Markdown'
]);
}
$data = $request->all();
savedb($data);
$message = "";
$aclist = [
'updated' => '🔄',
'created' => '🆕',
// 'urgent'=>'🟥',
// 'high'=>'🟧',
// 'medium'=>'🟨',
// 'low'=>'🟩',
// 'none'=>'⚪'
];
//create message
if ($data['event'] == 'project') {
$prjlead = $data['data']['project_lead'] ?? "";
$action = $data['action'] ?? "";
if ($prjlead != "" && $action != "") {
$desc = "\nتوضیحات:\nعملیات ({$action}) توسط کاربر ({$prjlead}) انجام شده است.";
}
!empty($data['action']) && $message .= "{$aclist[$data['action']]}\n";
!empty($data['data']['name']) && $message .= "{$data['data']['name']} ";
if (!$data['data']['priority'] == 'none')
!empty($data['data']['priority']) && $message .= "({$data['data']['priority']})";
!empty($desc) && $message .= $desc;
!empty($data['data']['updated_at']) && $message .= "\n" . Jalalian::fromCarbon(Carbon::parse($data['data']['updated_at']))->format('Y/m/d')
. "\n";
!empty($data['description_text']) && $message .= "\n{$data['description_text']}";
} elseif ($data['event'] == 'issue') {
if (isset($data['activity'])) {
$field = $data['activity']['field'] ?? "نامشخص";
$actor = $data['activity']['actor']['last_name'] ?? "نامشخص";
$oldvalue = $data['activity']['old_value'] ?? "نامشخص";
$newvalue = $data['activity']['new_value'] ?? "نامشخص";
if(( $field=='start_date' || $field == 'target_date' ) && $field != 'نامشخص'){
if(strtotime($field)!= 'false'){
$oldvalue = Jalalian::fromCarbon(Carbon::parse($oldvalue))->format('Y/m/d');
$newvalue = Jalalian::fromCarbon(Carbon::parse($newvalue))->format('Y/m/d');
}
}
if ($field == 'sort_order' || $field == 'state_id') {
return;
}
$desc = "کاربر ({$actor}) مقدار ({$field}) را از ({$oldvalue}) به ({$newvalue}) تغییر داد.";
} else {
$desc = "وظیفه در سایت چک شود.";
}
!empty($data['data']['start_date']) && $startdate = Jalalian::fromCarbon(Carbon::parse($data['data']['start_date']))->format('Y/m/d');
!empty($data['data']['target_date']) && $enddate = Jalalian::fromCarbon(Carbon::parse($data['data']['target_date']))->format('Y/m/d');
!empty($data['action']) && $message .= "{$aclist[$data['action']]}";
!empty($data['data']['name']) && $message .= "{$data['data']['name']} ";
if ($data['data']['priority'] != "none") {
$message .= "({$data['data']['priority']})";
}
$message .= "\n" . $desc;
!empty($data['data']['assignees']) && $message .= "\n" . implode(', ', array_column($data['data']['assignees'], 'last_name')) . "\n";
if (!empty($startdate) && !empty($enddate)) {
$message .= "{$startdate} ➡️ {$enddate}";
} elseif (!empty($startdate)) {
$message .= "تاریخ شروع مهلت پروژه: {$startdate}";
} elseif (!empty($enddate)) {
$message .= "تاریخ اتمام مهلت پروژه: {$enddate}";
}
// !empty($data['data']['target_date']) && $message .= "تاریخ اتمام مهلت پروژه: ".Jalalian::fromCarbon(Carbon::parse($data['data']['target_date']))->format('Y/m/d') ."\n";
}
$assignees = array_column($data['data']['assignees'], 'email');
$members = User::select('email', 'chatid')->get();
$gpid = -4742642674;
if (empty($assignees)) {
sendbot($gpid, $message);
} else {
sendbot($gpid, $message);
foreach ($assignees as $item) {
foreach ($members as $member) {
if ($member->email == $item) {
//sent message
sendbot($member->chatid, $message);
}
}
}
}
return response()->json(['status' => 'ok'], 200);
});