Created
November 24, 2016 09:46
-
-
Save PetengDedet/738f8b0b970eb974c7c7c41ce84cc355 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers; | |
use Illuminate\Http\Request; | |
use Validator; | |
use App\Http\Requests; | |
use App\Http\Controllers\Controller; | |
use Auth; | |
use Hash; | |
use Input; | |
use Image; | |
use File; | |
use App\User; | |
use App\Library\CekToken; | |
use DB; | |
class ApiController extends Controller | |
{ | |
public function apiPostLogin(Request $request) | |
{ | |
/*----------------------------------------------- | |
| STEP 1 | |
| Validate the input | |
*/ | |
$validator = Validator::make($request->all(), [ | |
'username' => 'required|min:3|max:255', | |
'password' => 'required', | |
'cloud_id' => 'required' | |
]); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data'=> '', 'pesan' => 'Username atau password tidak benar. Jangan lupa kirimkan cloud id.']); | |
} | |
/*------------ | |
| STEP 2 | |
| Try to check the given input in local database record | |
| If the is already registered, then redirect to dashboard | |
| Otherwise, Step 3 | |
*/ | |
$credentials = $request->only('username', 'password'); | |
if (Auth::attempt($credentials, $request->has('remember'))) { | |
$token = CekToken::gen($request->username, $request->cloud_id); | |
$user = User::where('username', $request->username)->first(); | |
$user->cover_photo = \App\Library\CustomLibrary::ambilHeaderCoy($user->id); | |
$user->photo_profile = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
return response()->json(['status'=>true, 'data'=> $user, 'pesan' => '', 'token' => $token]); | |
}else{ | |
$adServer = "ldap://corp.ojk.go.id"; | |
$ldap = @ldap_connect($adServer); | |
if (!$ldap) { | |
return response()->json(['status'=>false, 'data'=> '', 'pesan'=>'Tidak dapat tersambung dengan LDAP']); | |
} | |
$ldaprdn = 'corp' . "\\" . $request->username; | |
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); | |
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); | |
$bind = @ldap_bind($ldap, $ldaprdn, $request->password); | |
if ($bind) { | |
//Cek data user di dalam database | |
$checkInside = User::where('username',$request->username)->first(); | |
//User sudah terdaftar di database | |
if ($checkInside) { | |
Auth::login($checkInside); | |
$checkInside->cover_photo = \App\Library\CustomLibrary::ambilHeaderCoy($checkInside->id); | |
$checkInside->photo_profile = \App\Library\CustomLibrary::ambilGambarCoy($checkInside->id); | |
$token = CekToken::gen($request->username, $request->cloud_id); | |
//Respon request | |
return response()->json(['status' => true, 'data'=> $checkInside, 'pesan' => '', 'token' => $token]); | |
} | |
//User belum tercatat di database | |
//Ambil credential user dari LDAP | |
$filter = "(sAMAccountName=" . $request->username . ")"; | |
$result = @ldap_search($ldap,"OU=User Accounts,OU=Users OJK,DC=corp,DC=ojk,DC=go,DC=id",$filter); | |
//Credential tidak valid | |
if (! $result) { | |
return response()->json(['status' => false, 'data'=> '', 'pesan' => 'Can not query LDAP']); | |
} | |
//Credential valid | |
//Ambil data LDAP | |
$info = @ldap_get_entries($ldap, $result); | |
if (! $info) { | |
return response()->json(['status' => false, 'data'=> '', 'pesan' => 'Can not get user from LDAP']); | |
} | |
//Buat user baru di database sesuai data LDAP | |
$user = new User(); | |
$user->status = "Default Status User"; | |
$user->city = "jakarta"; | |
$dname = @explode(' ',$info[0]['cn'][0]); | |
$user->first_name = $dname[0]; | |
$user->last_name = (array_key_exists(1, $dname)) ? $dname[1] : ''; | |
$user->email = $info[0]['mail'][0]; | |
$usrnm = explode('@', $info[0]['mail'][0]); | |
$user->username = $usrnm[0]; | |
$user->password = Hash::make($request->password); | |
$user->name = $info[0]['cn'][0]; | |
$user->last_login_date = "2016-08-17 00:00:00"; | |
$user->enabled = 1; | |
$user->auth_type = 'internal'; | |
$user->role = 2; | |
$user->save(); | |
$user->cover_photo = \App\Library\CustomLibrary::ambilHeaderCoy($user->id); | |
$user->photo_profile = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
//Buat Role default | |
DB::table('role_user')->insert(['user_id'=>$user->id, 'role_id'=>'2']); | |
//Ambil data SIMFOSIA | |
$url = 'http://10.208.125.36/webservices/rest/?method=MasterDataPegawaiPOINTER&format=xml&pin=d2F5&email=' . $info[0]['mail'][0]; | |
$xml = @simplexml_load_file($url) or die("Can not read simfosia feed"); | |
//Gagal menghubungi data simfosia | |
if(! $xml = @simplexml_load_file($url)) { | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not connect to simfosia'], 500); | |
} | |
//Simfosia merespon tidak baik | |
if($xml->response->total_seluruh_data < 1){ | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Tidak dapat menghubungi simfosia'], 200); | |
} | |
//Respon simfosia sesuai harapan | |
$simDat = $xml->response->data->record[0]; | |
//Update user yang baru dibuat sesuai data dari Simfosia | |
$user = \App\User::find($user->id); | |
$user->email = $simDat->email; | |
$user->nip = $simDat->nip; | |
$user->name = $simDat->nm_peg; | |
$user->nm_jabatan = $simDat->nm_jabatan; | |
$user->designation = $simDat->nm_jabatan; | |
$user->kd_unit_kerja = $simDat->kd_unit_kerja; | |
$user->nm_unit_kerja = $simDat->nm_unit_kerja; | |
$user->kd_bidang = $simDat->kd_bidang; | |
$user->nm_bidang = $simDat->nm_bidang; | |
$user->kd_deputi_komisioner = $simDat->kd_deputi_komisioner; | |
$user->nm_deputi_komisioner = $simDat->nm_deputi_komisioner; | |
$user->kd_deputi_direktur = $simDat->kd_deputi_direktur; | |
$user->nm_deputi_direktur = $simDat->nm_deputi_direktur; | |
$user->kd_bagian = $simDat->kd_bagian; | |
$user->nm_sbagian = $simDat->nm_bagian; | |
$user->kd_subbagian = $simDat->kd_subbagian; | |
$user->nm_subbagian = $simDat->nm_subbagian; | |
$user->kd_kantor = $simDat->kd_kantor; | |
$user->nm_kantor = $simDat->nm_kantor; | |
$user->phone_kantor = $simDat->phone_kantor; | |
$user->phone_kantor_ext = $simDat->phone_kantor_ext; | |
$user->dob = $simDat->tgl_lahir; | |
$user->kd_departemen = $simDat->kd_departemen; | |
$user->nm_departemen = $simDat->nm_departemen; | |
$user->save(); | |
$user->cover_photo = \App\Library\CustomLibrary::ambilHeaderCoy($user->id); | |
$user->photo_profile = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
//Daftarkan user ke Satuan Kerjanya | |
$satkerMember = new SatkerMember(); | |
$satkerMember->user_id = $user->id; | |
$satkerMember->nama_departemen = $user->nm_departemen; | |
$satkerMember->save(); | |
$token = CekToken::gen($request->username, $request->cloud_id); | |
return response()->json(['status'=>true, 'data'=> $user, 'pesan' => '', 'token' => $token]); | |
@ldap_close($ldap); | |
} else { | |
return response()->json(['status'=>false, 'data'=> '', 'pesan'=>'Username atau Password tidak cocok.']); | |
} | |
} | |
} | |
public function apiPostLogout(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//Hapus Token | |
$api_token = \App\ApiToken::where('token', $request->token)->delete(); | |
return response()->json(['status'=>true, 'data'=> '', 'pesan'=>'Berhasil logout']); | |
} | |
public function profile(Request $request) | |
{ | |
//Validasi token | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//Token valid | |
$data['user_detail'] = $userdata['data']; | |
$data['user_detail']['photo_profile'] = \App\Library\CustomLibrary::ambilGambarCoy($userdata['data']['id']); | |
$data['user_detail']['cover_photo'] = \App\Library\CustomLibrary::ambilHeaderCoy($userdata['data']['id']); | |
//Ambil timeline user bersangkutan | |
$posts = \App\Models\ActivityAction::where('activity_type', 'status')->where('object_type', 'user')->where('user_id', $userdata['data']['id'])->orderBy('action_id', 'DESC')->take(20)->skip(0)->get(); | |
//Ada post di timeline YBS | |
if ($posts) { | |
foreach ($posts as $k => $v) { | |
//Post telah di-like oleh YBS | |
$is_liked = \App\Models\ActivityLikes::where('action_id', $v->action_id)->where('user_id', $userdata['data']['id'])->first(); | |
$data['post'][$k]['id'] = $v->action_id; | |
$data['post'][$k]['text'] = $v->body; | |
$data['post'][$k]['image'] = null; | |
$data['post'][$k]['comment_count'] = \App\Models\ActivityComment::where('action_id', $v->action_id)->count(); | |
$data['post'][$k]['like_count'] = \App\Models\ActivityLikes::where('action_id', $v->action_id)->count(); | |
$data['post'][$k]['is_liked'] = ($is_liked) ? '1' : '0'; | |
$data['post'][$k]['timestamp'] = $v->date_added; | |
//Post mengandung gambar? | |
$postImg = \App\Models\ImagesTable::where('parent_type', 'user_status')->where('parent_id', $v->action_id)->first(); | |
//Mengandung gambar | |
if ($postImg) { | |
$data['post'][$k]['image'] = $postImg->path; | |
} | |
//Ambil nama, dan url user pembuat POST | |
$user = User::select('id', 'first_name', 'last_name')->where('id', '=', $v->user_id)->first(); | |
$photo = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['post'][$k]['user']['id'] = $user->id; | |
$data['post'][$k]['user']['first_name'] = $user->first_name; | |
$data['post'][$k]['user']['last_name'] = $user->last_name; | |
$data['post'][$k]['user']['photo_profile'] = $photo; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function profileOrangLain($id, Request $request) | |
{ | |
//Validasi Token | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//Cari user | |
$user = User::find($id); | |
//User tidak ditemukan | |
if (!$user) { | |
return response()->json(['status' => false, 'data' => [], 'message' => 'User tidak ditemukan'], 404); | |
} | |
//User ditemukan | |
$data['user_detail'] = $user; | |
$data['user_detail']['photo_profile'] = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['user_detail']['cover_photo'] = \App\Library\CustomLibrary::ambilHeaderCoy($user->id); | |
//Ambil timeline user bersangkutan | |
$posts = \App\Models\ActivityAction::where('activity_type', 'status')->where('user_id', $user->id)->orderBy('action_id', 'DESC')->take(20)->skip(0)->get(); | |
//Ada post di timeline YBS | |
if ($posts) { | |
foreach ($posts as $k => $v) { | |
$is_liked = \App\Models\ActivityLikes::where('action_id', $v->action_id)->where('user_id', $userdata['data']['id'])->first(); | |
$data['post'][$k]['id'] = $v->action_id; | |
$data['post'][$k]['text'] = $v->body; | |
$data['post'][$k]['image'] = null; | |
$data['post'][$k]['comment_count'] = \App\Models\ActivityComment::where('action_id', $v->action_id)->count(); | |
$data['post'][$k]['like_count'] = \App\Models\ActivityLikes::where('action_id', $v->action_id)->count(); | |
$data['post'][$k]['is_liked'] = ($is_liked) ? '1' : '0'; | |
$data['post'][$k]['timestamp'] = $v->date_added; | |
$postImg = \App\Models\ImagesTable::where('parent_type', 'user_status')->where('parent_id', $v->action_id)->first(); | |
if ($postImg) { | |
$data['post'][$k]['image'] = $postImg->path; | |
} | |
$user = User::select('id', 'first_name', 'last_name')->where('id', '=', $v->user_id)->first(); | |
$photo = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['post'][$k]['user']['id'] = $user->id; | |
$data['post'][$k]['user']['first_name'] = $user->first_name; | |
$data['post'][$k]['user']['last_name'] = $user->last_name; | |
$data['post'][$k]['user']['photo_profile'] = $photo; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function updateProfile(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
//Initiate user model | |
$user = User::find($userdata['data']['id']); | |
//Get XML from simfosia | |
$url = 'http://10.208.125.36/webservices/rest/?method=MasterDataPegawaiPOINTER&format=xml&pin=d2F5&email=' . $userdata['data']['email']; | |
//Failed while connecting to simfosia | |
if(! $xml = @simplexml_load_file($url)) { | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not connect to simfosia'], 500); | |
} | |
//Simfosia return empty or invalid response | |
if($xml->response->total_seluruh_data < 1){ | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not read simfosia feed'], 200); | |
} | |
//Parse XML to PHP Object | |
$simDat = $xml->response->data->record[0]; | |
//Apply parsed XML to User Object | |
$user->email = $simDat->email; | |
$user->nip = $simDat->nip; | |
$user->name = $simDat->nm_peg; | |
$user->nm_jabatan = $simDat->nm_jabatan; | |
$user->kd_unit_kerja = $simDat->kd_unit_kerja; | |
$user->nm_unit_kerja = $simDat->nm_unit_kerja; | |
$user->kd_bidang = $simDat->kd_bidang; | |
$user->nm_bidang = $simDat->nm_bidang; | |
$user->kd_deputi_komisioner = $simDat->kd_deputi_komisioner; | |
$user->nm_deputi_komisioner = $simDat->nm_deputi_komisioner; | |
$user->kd_deputi_direktur = $simDat->kd_deputi_direktur; | |
$user->nm_deputi_direktur = $simDat->nm_deputi_direktur; | |
$user->kd_bagian = $simDat->kd_bagian; | |
$user->nm_sbagian = $simDat->nm_bagian; | |
$user->kd_subbagian = $simDat->kd_subbagian; | |
$user->nm_subbagian = $simDat->nm_subbagian; | |
$user->kd_kantor = $simDat->kd_kantor; | |
$user->nm_kantor = $simDat->nm_kantor; | |
$user->phone_kantor = $simDat->phone_kantor; | |
$user->phone_kantor_ext = $simDat->phone_kantor_ext; | |
$user->dob = $simDat->tgl_lahir; | |
//Save user | |
if(! $user->save()) { | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not save user'], 200); | |
} | |
//Assign user to Satker | |
$membership1 = \App\Models\SatkerMember::where('user_id', $user->id)->where('nama_departemen', $user->nm_departemen)->count(); | |
if ($membership1 < 1) { | |
$satkerMember = new SatkerMember(); | |
$satkerMember->user_id = $user->id; | |
$satkerMember->nama_departemen = $user->nm_departemen; | |
if(! $satkerMember->save()) { | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not asssign user to Satker'], 200); | |
} | |
} | |
$membership2 = \App\Models\SatkerMember::where('user_id', $user->id)->where('nama_departemen', $user->nm_deputi_direktur)->count(); | |
if ($membership2 < 1) { | |
$satkerMember = new SatkerMember(); | |
$satkerMember->user_id = $user->id; | |
$satkerMember->nama_departemen = $user->nm_deputi_direktur; | |
$satkerMember->save(); | |
if(! $satkerMember->save()) { | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not asssign user to Satker'], 200); | |
} | |
} | |
return response()->json(['status' => true, 'data' => '', 'message' => 'Berhasil memperbaharui data dari simfosia'], 200); | |
} | |
public function ubahProfile(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
//Initiate user model | |
$user = User::find($userdata['data']['id']); | |
$user->about_me = $request->about_me; | |
$user->status = $request->status; | |
//Save user | |
if(! $user->save()) { | |
return response()->json(['status' => false, 'data' => $userdata, 'message' => 'Can not save user'], 200); | |
} | |
//Upload Android | |
if ($request->has('base64Avatar')) { | |
\App\Models\ImagesTable::where('parent_type', 'user_avatar_image')->where('parent_id', $user->id)->delete(); | |
$destinationPath = 'images/avatar/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->base64Avatar; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $user->id; | |
$imageTable->parent_type = 'user_avatar_image'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
//IOS | |
if ($request->hasFile('avatar')) { | |
\App\Models\ImagesTable::where('parent_type', 'user_avatar_image')->where('parent_id', $user->id)->delete(); | |
$intervention = Image::make($request->file('avatar')); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/avatar'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $user->id; | |
$imageTable->parent_type = 'user_avatar_image'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
return response()->json(['status' => true, 'data' => '', 'message' => 'Berhasil memperbaharui data dari simfosia'], 200); | |
} | |
public function profilePost($profile_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$profile = User::find($profile_id); | |
if (! $profile) { | |
return response()->json(['status' => 'false', 'data' => $data, 'message' => 'Profile tidak ditemukan'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$status = new \App\Models\ActivityAction(); | |
$status->activity_type = 'status'; | |
$status->subject_type = 'user'; | |
$status->user_id = $userdata['data']['id']; | |
$status->object_type = 'user'; | |
$status->object_id = $profile->id; | |
$status->body = $request->text; | |
$status->save(); | |
if ($request->hasFile('image')) { | |
$intervention = Image::make($request->file('image')); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/user_status'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $status->action_id; | |
$imageTable->parent_type = 'user_status'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
$data['post']['id'] = $status->action_id; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Behasil mengirimkan post'],200); | |
} | |
public function profilePostAndroid($profile_id, Request $request){ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$profile = User::find($profile_id); | |
if (! $profile) { | |
return response()->json(['status' => 'false', 'data' => $data, 'message' => 'Profile tidak ditemukan'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$status = new \App\Models\ActivityAction(); | |
$status->activity_type = 'status'; | |
$status->subject_type = 'user'; | |
$status->user_id = $userdata['data']['id']; | |
$status->object_type = 'user'; | |
$status->object_id = $profile->id; | |
$status->body = $request->text; | |
$status->save(); | |
if ($request->has('image')) { | |
$destinationPath = 'images/user_status/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->image; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $status->action_id; | |
$imageTable->parent_type = 'user_status'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
$data['post']['id'] = $status->action_id; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Behasil mengirimkan post'],200); | |
} | |
public function fjb(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$cat = []; | |
$categories = \App\Models\FjbCategory::all(); | |
if (!$categories) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Belum ada categori apapun'], 200); | |
} | |
foreach ($categories as $key => $category) { | |
$cat[$key]['category_id'] = $category->cat_id; | |
$cat[$key]['category_title'] = $category->cat_title; | |
$cat[$key]['category_description'] = $category->cat_description; | |
$cat[$key]['category_icon'] = $category->cat_icon; | |
$cat[$key]['thread_count'] = \App\Models\FjbThread::where('forum_category', $category->cat_id)->count(); | |
} | |
$data['categories'] = $cat; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function category($id,Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$category = \App\Models\FjbCategory::find($id); | |
if (!$category) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Category tidak ditemukan'], 200); | |
} | |
$data['category'] = [ | |
'category_id' => $category->cat_id, | |
'category_title' => $category->cat_title, | |
'category_description' => $category->cat_description, | |
'category_icon' => $category->cat_icon, | |
'thread_count' => \App\Models\FjbThread::where('forum_category', $category->cat_id)->count() | |
]; | |
$thread = \App\Models\FjbThread::where('forum_category', $category->cat_id)->orderBy('id', 'DESC')->get(); | |
$data['thread'] = []; | |
if (!$thread) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada theread pada categori ini.'], 200); | |
} | |
foreach ($thread as $key => $value) { | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$value->created_by)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$getDataUser->photo_profile = $image; | |
$data['thread'][$key]['id'] = $value->id; | |
$data['thread'][$key]['title'] = $value->forum_title; | |
$data['thread'][$key]['description'] = $value->forum_description; | |
$data['thread'][$key]['price'] = $value->forum_price; | |
$dataImageCoy = \App\Models\ImagesTable::where('parent_type', 'commerce_photo')->where('parent_id', $value->id); | |
if($dataImageCoy->count() > 0){ | |
$data['thread'][$key]['image'] = $dataImageCoy->first()->path; | |
}else{ | |
$data['thread'][$key]['image'] = ''; | |
} | |
$data['thread'][$key]['timestamp'] = $value->created_date; | |
$data['thread'][$key]['seller'] = $getDataUser; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function thread($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$thread = \App\Models\FjbThread::find($id); | |
if(!$thread){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.']); | |
} | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$thread->created_by)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$commerce_photo = \App\Models\ImagesTable::select('path AS filename' )->where('parent_type','=','commerce_photo')->where('parent_id','=',$thread->id)->get(); | |
$category = \App\Models\FjbCategory::find($thread->forum_category); | |
$data['thread'] = [ | |
'id' => $thread->id, | |
'category_id' => $thread->forum_category, | |
'category_title'=> $category->cat_title, | |
'title' => $thread->forum_title, | |
'excerpt' => str_limit(strip_tags($thread->forum_description), 160), | |
'description' => strip_tags($thread->forum_description), | |
'price' => $thread->forum_price, | |
'timestamp' => $thread->created_date, | |
'seller' => [ | |
'id' => $thread->created_by, | |
'first_name' => $getDataUser->first_name, | |
'last_name' => $getDataUser->last_name, | |
'photo_profile' => $image | |
], | |
'images' => $commerce_photo, | |
'comment_count' => \App\Models\FjbThreadComment::where('action_id', $thread->id)->count(), | |
'created_at' => $thread->created_date | |
]; | |
$comments = \App\Models\FjbThreadComment::where('action_id', $thread->id)->get(); | |
$data['comments'] = []; | |
if ($comments) { | |
foreach ($comments as $key => $value) { | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$value->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['comments'][$key]['id'] = $value->activity_comment_id; | |
$data['comments'][$key]['text'] = $value->body; | |
$data['comments'][$key]['timestamp'] = $value->date_added; | |
$data['comments'][$key]['user'] = [ | |
'id' => $thread->created_by, | |
'first_name' => $getDataUser->first_name, | |
'last_name' => $getDataUser->last_name, | |
'photo_profile' => $image | |
]; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function createThread(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$cats = ''; | |
$categories = \App\Models\FjbCategory::all(); | |
if ($categories) { | |
foreach ($categories as $key => $value) { | |
$cats .= $value->cat_id . ','; | |
} | |
} | |
$rules = [ | |
'category' => 'required|integer|in:' . trim($cats, ','), | |
'title' => 'required|min:3|max:255', | |
'description' => 'required|min:3', | |
'price' => 'required|integer' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$thread = new \App\Models\FjbThread(); | |
$thread->forum_category = $request->category; | |
$thread->forum_title = $request->title; | |
$thread->forum_price = $request->price; | |
$thread->forum_description = $request->description; | |
$thread->status = 1; | |
$thread->created_by = $userdata['data']['id']; | |
if ( ! $thread->save()) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Tidak dapat menyimpan thread.'],200); | |
} | |
if ($request->hasFile('photo')) { | |
foreach ($request->photo as $key => $value) { | |
$intervention = Image::make($request->file('photo')[$key]); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/commerce'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $thread->id; | |
$imageTable->parent_type = 'commerce_photo'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
} | |
return response()->json(['status' => true, 'data' => $thread, 'message' => 'Success membuat thread baru'], 200); | |
} | |
public function createThreadAndroid(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$cats = ''; | |
$categories = \App\Models\FjbCategory::all(); | |
if ($categories) { | |
foreach ($categories as $key => $value) { | |
$cats .= $value->cat_id . ','; | |
} | |
} | |
$rules = [ | |
'category' => 'required|integer|in:' . trim($cats, ','), | |
'title' => 'required|min:3|max:255', | |
'description' => 'required|min:3', | |
'price' => 'required|integer' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$thread = new \App\Models\FjbThread(); | |
$thread->forum_category = $request->category; | |
$thread->forum_title = $request->title; | |
$thread->forum_price = $request->price; | |
$thread->forum_description = $request->description; | |
$thread->status = 1; | |
$thread->created_by = $userdata['data']['id']; | |
if ( ! $thread->save()) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Tidak dapat menyimpan thread.'],200); | |
} | |
if ($request->has('photo')) { | |
foreach ($request->photo as $key => $value) { | |
$destinationPath = 'images/commerce/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->photo[$key]; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $thread->id; | |
$imageTable->parent_type = 'commerce_photo'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
} | |
return response()->json(['status' => true, 'data' => $thread, 'message' => 'Success membuat thread baru'], 200); | |
} | |
public function editThread($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$thread = \App\Models\FjbThread::find($id); | |
if(!$thread){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.'], 200); | |
} | |
if ($thread->created_by != $userdata['data']['id'] AND $userdata['data']['id'] != 1) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.'], 200); | |
} | |
return $this->thread($id, $request); | |
} | |
public function updateThread($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$thread = \App\Models\FjbThread::find($id); | |
if(!$thread){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.'], 200); | |
} | |
if ($thread->created_by != $userdata['data']['id'] AND $userdata['data']['id'] != 1) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.'], 200); | |
} | |
$cats = ''; | |
$categories = \App\Models\FjbCategory::all(); | |
if ($categories) { | |
foreach ($categories as $key => $value) { | |
$cats .= $value->cat_id . ','; | |
} | |
} | |
$rules = [ | |
'category' => 'required|integer|in:' . trim($cats, ','), | |
'title' => 'required|min:3|max:255', | |
'description' => 'required|min:3', | |
'price' => 'required|integer' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$thread_photo = \App\Models\ImagesTable::select('path AS filename' )->where('parent_type','=','commerce_photo')->where('parent_id','=',$thread->id)->get(); | |
if (count($thread_photo) > 0) { | |
foreach ($thread_photo as $key => $value) { | |
if (file_exists($value->filename)) { | |
File::delete('images/commerce/' . $value->filename); | |
} | |
} | |
$image = \App\Models\ImagesTable::where('parent_type','commerce_photo')->where('parent_id','=',$thread->id)->delete(); | |
} | |
if ($request->hasFile('photo')) { | |
foreach ($request->photo as $key => $value) { | |
$intervention = Image::make($request->file('photo')[$key]); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/commerce'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $thread->id; | |
$imageTable->parent_type = 'commerce_photo'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
} | |
$thread->forum_category = $request->category; | |
$thread->forum_title = $request->title; | |
$thread->forum_price = $request->price; | |
$thread->forum_description = $request->description; | |
$thread->status = 1; | |
$thread->created_by = $userdata['data']['id']; | |
if ( ! $thread->save()) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Tidak dapat menyimpan thread.'],200); | |
} | |
return response()->json(['status' => true, 'data' => $thread, 'message' => 'Success memperbaharui thread'],200); | |
} | |
public function updateThreadAndroid($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$thread = \App\Models\FjbThread::find($id); | |
if(!$thread){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.'], 200); | |
} | |
if ($thread->created_by != $userdata['data']['id'] OR $userdata['data']['id'] != 1) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.'], 200); | |
} | |
$rules = [ | |
'category' => 'required|integer', | |
'title' => 'required|min:3|max:255', | |
'description' => 'required|min:3', | |
'price' => 'required|integer' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$thread_photo = \App\Models\ImagesTable::select('path AS filename' )->where('parent_type','=','commerce_photo')->where('parent_id','=',$thread->id)->get(); | |
if (count($thread_photo) > 0) { | |
foreach ($thread_photo as $key => $value) { | |
if (file_exists($value->filename)) { | |
File::delete('images/commerce/' . $value->filename); | |
} | |
} | |
$image = \App\Models\ImagesTable::where('parent_type','commerce_photo')->where('parent_id',$thread->id)->delete(); | |
} | |
if ($request->has('photo')) { | |
foreach ($request->photo as $key => $value) { | |
$destinationPath = 'images/commerce/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->photo[$key]; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $thread->id; | |
$imageTable->parent_type = 'commerce_photo'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
} | |
$thread->forum_category = $request->category; | |
$thread->forum_title = $request->title; | |
$thread->forum_price = $request->price; | |
$thread->forum_description = $request->description; | |
$thread->status = 1; | |
$thread->created_by = $userdata['data']['id']; | |
if ( ! $thread->save()) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Tidak dapat menyimpan thread.'],200); | |
} | |
return response()->json(['status' => true, 'data' => $thread, 'message' => 'Success memperbaharui thread'],200); | |
} | |
public function threadDelete($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$thread = \App\Models\FjbThread::find($id); | |
if(!$thread OR $thread->created_by != $userdata['data']['id']){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.']); | |
} | |
//Delete Comment | |
$comments = \App\Models\FjbThreadComment::where('action_id', $thread->id)->delete(); | |
//Delete Image | |
$thread_photo = \App\Models\ImagesTable::select('path AS filename' )->where('parent_type','=','commerce_photo')->where('parent_id','=',$thread->id)->get(); | |
if (count($thread_photo) > 0) { | |
foreach ($thread_photo as $key => $value) { | |
if (file_exists($value->filename)) { | |
File::delete('images/commerce/' . $value->filename); | |
} | |
} | |
$image = \App\Models\ImagesTable::where('parent_type','commerce_photo')->where('parent_id',$thread->id)->delete(); | |
} | |
//$commerce_photo = \App\Models\ImagesTable::select('path AS filename' )->where('parent_type','=','commerce_photo')->where('parent_id','=',$thread->id)->delete(); | |
//Delete Thread | |
$thread->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus thread'], 200); | |
} | |
public function commentThread($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$thread = \App\Models\FjbThread::find($id); | |
if(!$thread){ | |
return ['status' => false, 'data' => $data, 'message' => 'Thread tidak valid.']; | |
} | |
$rules['comment_text'] = 'required|min:3'; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$comment = new \App\Models\FjbThreadComment(); | |
$comment->user_id = $userdata['data']['id']; | |
$comment->user_type = 'user'; | |
$comment->action_id = $thread->id; | |
$comment->body = $request->comment_text; | |
if (!$comment->save()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Gagal menyimpan komentar'], 503); | |
} | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$comment->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$getDataUser->gambar = $image; | |
$comment->user = $getDataUser; | |
//$comment->user->imageProfile = $image; | |
$data['comment'] = $comment; | |
//$data['comment']['user']['first_name'] =$getDataUser->first_name; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan komentar'], 200); | |
} | |
public function majalah(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$majalah = \App\Models\Majalah::orderBy('majalah_id', 'DESC')->get(); | |
if (!$majalah) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada majalah'], 200); | |
} | |
foreach ($majalah as $k => $v){ | |
$data['majalah'][$k]['id'] = $v->majalah_id; | |
$data['majalah'][$k]['edisi'] = $v->edisi; | |
$data['majalah'][$k]['photo1'] = $v->photo1; | |
$data['majalah'][$k]['photo2'] = $v->photo2; | |
$data['majalah'][$k]['photo3'] = $v->photo3; | |
$data['majalah'][$k]['download_link'] = $v->pdf; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function majalahShow($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$majalah = \App\Models\Majalah::find($id); | |
if (!$majalah) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Majalah tidak valid'], 200); | |
} | |
$data['id'] = $majalah->majalah_id; | |
$data['edisi'] = $majalah->edisi; | |
$data['photo1'] = $majalah->photo1; | |
$data['photo2'] = $majalah->photo2; | |
$data['photo3'] = $majalah->photo3; | |
$data['download_link'] = $majalah->pdf; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function fileSharing(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$categories = \App\Models\FileSharingCategory::all(); | |
if (!$categories) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada kategori'], 200); | |
} | |
foreach ($categories as $k => $v){ | |
$data['categories'][$k]['id'] = $v->id; | |
$data['categories'][$k]['name'] = $v->category_name; | |
$data['categories'][$k]['icon'] = $v->icon; | |
$data['categories'][$k]['background'] = $v->background; | |
$data['categories'][$k]['file_count'] = \App\Models\FileSharing::where('category', $v->id)->count(); | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function fileSharingCategory($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$category = \App\Models\FileSharingCategory::find($id); | |
if (!$category) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Category tidak valid'], 200); | |
} | |
$data['id'] = $category->id; | |
$data['name'] = $category->category_name; | |
$data['icon'] = $category->icon; | |
$data['background'] = $category->background; | |
$data['file_count'] = \App\Models\FileSharing::where('category', $category->id)->count(); | |
$files = \App\Models\FileSharing::where('category', $category->id)->get(); | |
if ($files) { | |
foreach ($files as $k => $file) { | |
$getDataUser = User::select('id', 'first_name', 'last_name')->where('id', '=', $file->user_id)->first(); | |
$getDataUser->profile_photo = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['files'][$k]['id'] = $file->id; | |
$data['files'][$k]['title'] = $file->title; | |
$data['files'][$k]['description'] = $file->description; | |
$data['files'][$k]['file_path'] = \App\Models\ImagesTable::where('parent_type', 'file_sharing')->where('parent_id', $file->id)->first()->path; | |
$data['files'][$k]['category_id'] = $file->category; | |
$data['files'][$k]['category_title'] = \App\Models\FileSharingCategory::where('id', '=', $file->category)->first()->category_name; | |
$data['files'][$k]['uploader'] = $getDataUser; | |
} | |
}else{ | |
$data['files'] = null; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function fileSharingShow($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$file = \App\Models\FileSharing::find($id); | |
if (!$file OR $file->status != '1') { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'File tidak valid'], 200); | |
} | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$file->user_id)->first(); | |
$getDataUser->profile_photo = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['id'] = $file->id; | |
$data['title'] = $file->title; | |
$data['description'] = $file->description; | |
$data['file_path'] = \App\Models\ImagesTable::where('parent_type', 'file_sharing')->where('parent_id', $file->id)->first()->path; | |
$data['category_id'] = $file->category; | |
$data['category_title'] = \App\Models\FileSharingCategory::where('id','=', $file->category)->first()->category_name; | |
$data['uploader'] = $getDataUser; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function news(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$news = \App\Models\ActivityAction::where('activity_type', 'news')->orWhere('activity_type', 'artical')->orderBy('action_id', 'DESC')->get(); | |
if (!$news) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada berita atau article'], 200); | |
} | |
foreach ($news as $k => $v) { | |
$data['news'][$k]['id'] = $v->action_id; | |
$data['news'][$k]['type'] = ($v->activity_type == 'artical') ? 'article' : 'news'; | |
$data['news'][$k]['title'] = $v->title; | |
$data['news'][$k]['excerpt'] = strip_tags(str_limit($v->body, 160)); | |
//Cek image | |
$data['news'][$k]['image'] = ''; | |
$image = \App\Models\ImagesTable::where('parent_type', 'news')->where('parent_id', $v->action_id)->first(); | |
if ($image) { | |
$data['news'][$k]['image'] = $image->path; | |
} | |
# code... | |
$data['news'][$k]['excerpt'] = strip_tags(str_limit($v->body, 160)); | |
$data['news'][$k]['timestamp'] = $v->date_added; | |
$data['news'][$k]['comment_count'] = \App\Models\ActivityComment::where('action_id', $v->action_id)->count(); | |
$data['news'][$k]['like_count'] = \App\Models\ActivityLikes::where('action_id', $v->action_id)->count(); | |
// $data['news'][$k]['body'] = strip_tags($v->body); | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
function newsShow($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$news = \App\Models\ActivityAction::find($id); | |
if (!$news) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berita atau Article tidak valid'], 200); | |
} | |
$data['id'] = $news->action_id; | |
$data['type'] = ($news->activity_type == 'artical') ? 'article' : 'news'; | |
$data['title'] = $news->title; | |
$data['excerpt'] = strip_tags(str_limit($news->body, 160)); | |
$data['text'] = strip_tags($news->body); | |
//Cek image | |
$data['image'] = ''; | |
$image = \App\Models\ImagesTable::where('parent_type', 'news')->where('parent_id', $news->action_id)->first(); | |
if($image) { | |
$data['image'] = $image->path; | |
} | |
$data['timestamp'] = $news->date_added; | |
$data['like_count'] = \App\Models\ActivityLikes::where('action_id', $news->action_id)->count(); | |
$comment = []; | |
if ($news->activity_type == 'artical') { | |
$comments = \App\Models\ActivityComment::where('action_id', $news->action_id)->get(); | |
if ($comments) { | |
foreach ($comments as $k => $v) { | |
$getDataUser = User::select('id', 'first_name', 'last_name')->where('id', '=', $v->user_id)->first(); | |
$getDataUser->profile_photo = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$comment[$k]['id'] = $v->activity_comment_id; | |
$comment[$k]['text'] = $v->body; | |
$comment[$k]['timestamp'] = $v->date_added; | |
$comment[$k]['user'] = $getDataUser; | |
} | |
} | |
$data['comments'] = $comment; | |
$data['comment_count'] = \App\Models\ActivityComment::where('action_id', $news->action_id)->count(); | |
$related = \App\Models\ActivityAction::where('activity_type', 'artical')->where('action_id','!=' ,$id)->limit(4)->orderByRaw("RAND()")->get(); | |
if ($related) { | |
foreach ($related as $k => $v) { | |
$data['related'][$k]['id'] = $v->action_id; | |
$data['related'][$k]['title'] = $v->title; | |
$data['related'][$k]['excerpt'] = strip_tags(str_limit($v->body, 160)); | |
$data['related'][$k]['timestamp'] = $v->date_added; | |
} | |
} | |
}else{ | |
$related = \App\Models\ActivityAction::where('activity_type', 'news')->where('action_id','!=' ,$id)->limit(4)->orderByRaw("RAND()")->get(); | |
if ($related) { | |
foreach ($related as $k => $v) { | |
$data['related'][$k]['id'] = $v->action_id; | |
$data['related'][$k]['title'] = $v->title; | |
$data['related'][$k]['excerpt'] = strip_tags(str_limit($v->body, 160)); | |
$data['related'][$k]['timestamp'] = $v->date_added; | |
} | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
function articleComment($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$news = \App\Models\ActivityAction::find($id); | |
if (!$news OR $news->activity_type != 'artical') { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Article tidak valid'], 200); | |
} | |
$rules = [ | |
'comment_text' => 'required' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$comment = new \App\Models\ActivityComment(); | |
$comment->user_id = $userdata['data']['id']; | |
$comment->action_id = $news->action_id; | |
$comment->body = $request->comment_text; | |
$comment->save(); | |
$data=$comment; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan Komentar'],200); | |
} | |
function newsLike($id, Request $request){ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$news = \App\Models\ActivityAction::find($id); | |
if (!$news) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Like tidak valid'], 200); | |
} | |
$like = new \App\Models\ActivityLikes(); | |
$like->user_id = $userdata['data']['id']; | |
$like->action_id = $news->action_id; | |
$like->save(); | |
$data=$like; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan like'],200); | |
} | |
public function removeArticleComment($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$comment = \App\Models\ActivityComment::find($id); | |
if (!$comment){ | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Comment tidak valid'], 200); | |
} | |
if ($comment->user_id != $userdata['data']['id'] AND $comment->user_id != 1) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Comment tidak valid'], 200); | |
} | |
$comment->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus Komentar'],200); | |
} | |
public function unlike($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$like = \App\Models\ActivityLikes::where('user_id', $userdata['data']['id'])->where('action_id', $id)->first(); | |
if (!$like) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Like tidak valid'], 200); | |
} | |
if ($like->user_id != $userdata['data']['id'] AND $like->user_id != 1) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Comment tidak valid'], 200); | |
} | |
$like->delete(); | |
$data=$like; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus like'],200); | |
} | |
public function pesanAdk(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$pesanAdk = \App\Models\ImagesTable::where('parent_type', 'anggota_dewan_komisioner')->get(); | |
$data['pesan_ketua_adk'] = []; | |
$data['pesan_adk'] = []; | |
$pesanKetuaAdk = \App\Models\ImagesTable::where('parent_type', 'ketua_dewan_komisioner')->get(); | |
if (!$pesanAdk AND !$pesanKetuaAdk) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada pesan ADK'], 200); | |
} | |
foreach ($pesanKetuaAdk as $k => $v) { | |
$data['pesan_ketua_adk'][$k]['id'] = $v->image_id; | |
$data['pesan_ketua_adk'][$k]['image_path'] = $v->path; | |
$data['pesan_ketua_adk'][$k]['description'] = $v->description; | |
$data['pesan_ketua_adk'][$k]['timestamp'] = $v->added_date; | |
} | |
foreach ($pesanAdk as $key => $value) { | |
$data['pesan_adk'][$key]['id'] = $value->image_id; | |
$data['pesan_adk'][$key]['image_path'] = $value->path; | |
$data['pesan_adk'][$key]['description'] = $value->description; | |
$data['pesan_adk'][$key]['timestamp'] = $value->added_date; | |
} | |
$data['total_count'] = $pesanAdk->count(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function pesanAdkShow($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$pesanAdk = \App\Models\ImagesTable::find($id); | |
if (!$pesanAdk) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Pesan ADK tidak valid'], 200); | |
} | |
$data['id'] = $pesanAdk->image_id; | |
$data['image_path'] = $pesanAdk->path; | |
$data['description'] = $pesanAdk->description; | |
$data['timestamp'] = $pesanAdk->added_date; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function calendar(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$calendar = \App\Models\Calendar::where('user_id', $userdata['data']['id'])->orWhere('user_id', 1)->get(); | |
// $todolist = \App\Models\Calendar::where('user_id', $userdata['data']['id'])->where('start')->orderBy('calendar_id','DESC')->get(); | |
if (!$calendar AND !$todolist) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada calendar atau to do list'], 200); | |
} | |
$data['calendar'] = $calendar; | |
// $data['todolist'] = $todolist; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function calendarStore(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$rules = [ | |
'title' => 'required:max255', | |
'start' => 'required|date_format:Y-m-d', | |
// 'end' => 'required|date_format:Y-m-d', | |
'color' => 'sometimes|in:#f44336,#E91E63,#9C27B0,#3F51B5,#009688,#dae027', | |
'icon' => 'sometimes|in:fa-info,fa-warning,fa-check,fa-user,fa-lock,fa-clock-o' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$colors = [ | |
'#f44336', | |
'#E91E63', | |
'#9C27B0', | |
'#3F51B5', | |
'#009688', | |
'#dae027' | |
]; | |
$color = array_rand($colors,1); | |
$event = new \App\Models\Calendar(); | |
$event->user_id = $userdata['data']['id']; | |
$event->start = $request->start; | |
$event->end = $request->end; | |
$event->color = ($request->color) ? $request->color : $colors[$color]; | |
$event->title = $request->title; | |
$event->description = $request->description; | |
$event->allDay= 1; | |
$event->icon= $request->icon; | |
$event->url= $request->url; | |
if (! $event->save()) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Gagal menyimpan event'],500); | |
} | |
$data = $event; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan event'],200); | |
} | |
public function calendarShow($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$event = \App\Models\Calendar::find($id); | |
if (! $event) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Event invalid'],404); | |
} | |
$data = $event; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''],200); | |
} | |
public function calendarDelete($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$event = \App\Models\Calendar::find($id); | |
if (! $event) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Event invalid'],404); | |
} | |
$event->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus event'],200); | |
} | |
public function satker(Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$mySatker = \App\Models\SatkerMember::where('user_id', $userdata['data']['id'])->get(); | |
$satkers = \App\Models\Satker::select('id', 'name', 'description', 'daerah', 'photo')->get(); | |
// $daerah = Petanya::all(); | |
$data['my_satker'] = []; | |
if ($mySatker) { | |
foreach ($mySatker as $k => $v) { | |
$satker = \App\Models\Satker::select('id', 'name', 'description', 'daerah', 'photo')->where('name', $v->nama_departemen)->first(); | |
if ($satker) { | |
$data['my_satker'][$k] = $satker; | |
} | |
} | |
} | |
$data['satker'] = $satkers; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''],200); | |
// $daerah = DB::select('SELECT *, (select count(*) from satker where daerah = hc_key) as jumSat FROM petanya'); | |
} | |
public function satkerShow($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($id); | |
if (! $satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$data['satker']['id'] = $satker->id; | |
$data['satker']['name'] = $satker->name; | |
$data['satker']['description'] = $satker->description; | |
$data['satker']['daerah'] = $satker->daerah; | |
$data['satker']['photo'] = $satker->photo; | |
$data['satker']['isSatkerMember'] = 'no'; | |
//Is member | |
$isMember = \App\Models\SatkerMember::where('nama_departemen', $satker->name)->where('user_id', $userdata['data']['id'])->count(); | |
if ($isMember > 0) { | |
$data['satker']['isSatkerMember'] = 'yes'; | |
} | |
//Member list | |
$member = \App\Models\SatkerMember::where('nama_departemen', $satker->name)->orderBy('id', 'DESC')->limit(20)->get(); | |
if ($member) { | |
foreach ($member as $k => $v) { | |
$user = User::find($v->user_id); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['satker']['member'][$k]['id'] = $user->id; | |
$data['satker']['member'][$k]['first_name'] = $user->first_name; | |
$data['satker']['member'][$k]['last_name'] = $user->last_name; | |
$data['satker']['member'][$k]['photo_profile'] = $image; | |
$data['satker']['member'][$k]['member_type'] = ($v->member_type == 'moderator') ? 'moderator' : 'member'; | |
} | |
} | |
//Gallery | |
$gallery = \App\Models\ImagesTable::where('parent_type', 'satker_photo')->where('parent_id', $satker->id)->get(); | |
if ($gallery) { | |
foreach ($gallery as $k => $v) { | |
$data['satker']['gallery'][$k]['image_id'] = $v->image_id; | |
$data['satker']['gallery'][$k]['file_name'] = $v->path; | |
} | |
} | |
//Timeline | |
$posts = \App\Models\SatkerPost::where('satker_id', $satker->id)->orderBy('id', 'DESC')->limit(20)->get(); | |
if ($posts) { | |
foreach ($posts as $k => $v) { | |
$user = User::find($v->poster_id); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['satker']['post'][$k]['id'] = $v->id; | |
$data['satker']['post'][$k]['text'] = $v->text; | |
$data['satker']['post'][$k]['image'] = $v->image; | |
$data['satker']['post'][$k]['timestamp'] = $v->created_at; | |
//Post Comment | |
$comments = \App\Models\SatkerPostComment::where('post_id', $v->id)->get(); | |
$data['satker']['post'][$k]['comment_count'] = $comments->count(); | |
$data['satker']['post'][$k]['user']['id'] = $user->id; | |
$data['satker']['post'][$k]['user']['first_name'] = $user->first_name; | |
$data['satker']['post'][$k]['user']['last_name'] = $user->last_name; | |
$data['satker']['post'][$k]['user']['photo_profile'] = $image; | |
if ($comments) { | |
foreach ($comments as $key => $value) { | |
$commentUser = User::find($value->poster_id); | |
$commentUserimage = \App\Library\CustomLibrary::ambilGambarCoy($commentUser->id); | |
$data['satker']['post'][$k]['comment']['id'] = $value->id; | |
$data['satker']['post'][$k]['comment']['text'] = $value->text; | |
$data['satker']['post'][$k]['comment']['timestamp'] = $value->created_at; | |
$data['satker']['post'][$k]['comment']['user']['id'] = $commentUser->id; | |
$data['satker']['post'][$k]['comment']['user']['first_name'] = $commentUser->first_name; | |
$data['satker']['post'][$k]['comment']['user']['last_name'] = $commentUser->last_name; | |
$data['satker']['post'][$k]['comment']['user']['photo_profile'] = $commentUserimage; | |
} | |
} | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function satkerGallery($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($id); | |
if (! $satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$data['satker'] = $satker; | |
$gallery = \App\Models\ImagesTable::where('parent_type', 'satker_photo')->where('parent_id', $satker->id)->orderBy('image_id', 'DESC')->limit(100)->get(); | |
if ($gallery) { | |
foreach ($gallery as $index => $item) { | |
$data['gallery'][$index]['id'] = $item->image_id; | |
$data['gallery'][$index]['file_path'] = $item->path; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function satkerMember($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($id); | |
if (! $satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$data['satker'] = $satker; | |
//Member list | |
$member = \App\Models\SatkerMember::where('nama_departemen', $satker->name)->orderBy('id', 'DESC')->get(); | |
if ($member) { | |
foreach ($member as $k => $v) { | |
$user = User::find($v->user_id); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['member'][$k]['id'] = $user->id; | |
$data['member'][$k]['first_name'] = $user->first_name; | |
$data['member'][$k]['last_name'] = $user->last_name; | |
$data['member'][$k]['photo_profile'] = $image; | |
$data['member'][$k]['member_type'] = ($v->member_type == 'moderator') ? 'moderator' : 'member'; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function satkerPostContent($satker_id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
//Cek if the user is a member | |
$member = \App\Models\SatkerMember::where('nama_departemen', $satker->name)->where('user_id', $userdata['data']['id'])->get(); | |
if (! $member AND $userdata['data']['id'] != 1) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Ups..Anda bukan member sarket ini.'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$post = new \App\Models\SatkerPost(); | |
$post->satker_id = $satker->id; | |
$post->poster_id = $userdata['data']['id']; | |
$post->text = $request->text; | |
if ($request->hasFile('image')) { | |
$intervention = Image::make($request->file('image')); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/user_status'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$post->image = $fileName; | |
} | |
$post->save(); | |
$data['satker'] = $satker; | |
$data['post'] = $post; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan kontent post'],200); | |
} | |
public function satkerPostContentAndroid($satker_id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
//Cek if the user is a member | |
$member = \App\Models\SatkerMember::where('nama_departemen', $satker->name)->where('user_id', $userdata['data']['id'])->get(); | |
if (! $member AND $userdata['data']['id'] != 1) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Ups..Anda bukan member sarket ini.'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$post = new \App\Models\SatkerPost(); | |
$post->satker_id = $satker->id; | |
$post->poster_id = $userdata['data']['id']; | |
$post->text = $request->text; | |
if ($request->has('image')) { | |
$destinationPath = 'images/user_status/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->image; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$post->image = $fileName; | |
} | |
$post->save(); | |
$data['satker'] = $satker; | |
$data['post'] = $post; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan kontent post'],200); | |
} | |
public function satkerGetPostContent($satker_id, $content_id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$post = \App\Models\SatkerPost::find($content_id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Content tidak valid'], 404); | |
} | |
$user = User::find($post->poster_id); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['content']['id'] = $post->id; | |
$data['content']['text'] = $post->text; | |
$data['content']['timestamp'] = $post->created_at; | |
//Post Comment | |
$comments = \App\Models\SatkerPostComment::where('post_id', $post->id)->get(); | |
$data['content']['comment_count'] = $comments->count(); | |
$data['content']['user']['id'] = $user->id; | |
$data['content']['user']['first_name'] = $user->first_name; | |
$data['content']['user']['last_name'] = $user->last_name; | |
$data['content']['user']['photo_profile'] = $image; | |
if ($comments) { | |
foreach ($comments as $key => $value) { | |
$commentUser = User::find($value->poster_id); | |
$commentUserimage = \App\Library\CustomLibrary::ambilGambarCoy($commentUser->id); | |
$data['content']['comment'][$key]['id'] = $value->id; | |
$data['content']['comment'][$key]['text'] = $value->text; | |
$data['content']['comment'][$key]['timestamp'] = $value->created_at; | |
$data['content']['comment'][$key]['user']['id'] = $commentUser->id; | |
$data['content']['comment'][$key]['user']['first_name'] = $commentUser->first_name; | |
$data['content']['comment'][$key]['user']['last_name'] = $commentUser->last_name; | |
$data['content']['comment'][$key]['user']['photo_profile'] = $commentUserimage; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan kontent post'],200); | |
} | |
public function satkerDeletePostContent($satker_id, $content_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$post = \App\Models\SatkerPost::find($content_id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Content tidak valid'], 404); | |
} | |
//Check if the user owned the post content | |
if ($post->poster_id != $userdata['data']['id'] AND $userdata['data']['id'] != '1') { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Ups, menghapus content ini, bukan hakmu.'], 404); | |
} | |
//Get Comments | |
$comments = \App\Models\SatkerPostComment::where('post_id', $post->id)->delete(); | |
$post->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus post'],200); | |
} | |
public function satkerGetSinglePostContent($satker_id, $content_id, $comment_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$post = \App\Models\SatkerPost::find($content_id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Content tidak valid'], 404); | |
} | |
$comment = \App\Models\SatkerPostComment::find($comment_id); | |
if (! $comment) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Comment tidak valid'], 404); | |
} | |
$data['satker'] = $satker; | |
$data['content']['id'] = $post->id; | |
$data['content']['text'] = $post->text; | |
$data['content']['timestamp'] = $post->created_at; | |
$postUser = User::find($post->poster_id); | |
$postUserImage = \App\Library\CustomLibrary::ambilGambarCoy($postUser->id); | |
$data['content']['user']['id'] = $post->poster_id; | |
$data['content']['user']['first_name'] = $postUser->first_name; | |
$data['content']['user']['last_name'] = $postUser->last_name; | |
$data['content']['user']['photo_profile'] = $postUserImage; | |
$data['comment']['id'] = $comment->id; | |
$data['comment']['text'] = $comment->text; | |
$data['comment']['timestamp'] = $comment->created_at; | |
$commentUser = User::find($comment->poster_id); | |
$commentUserImage = \App\Library\CustomLibrary::ambilGambarCoy($commentUser->id); | |
$data['comment']['user']['id'] = $comment->poster_id; | |
$data['comment']['user']['first_name'] = $commentUser->first_name; | |
$data['comment']['user']['last_name'] = $commentUser->last_name; | |
$data['comment']['user']['photo_profile'] = $commentUserImage; | |
return response()->json(['status' => true, 'data' => $data, 'message' => '']); | |
} | |
public function satkerPostContentComment($satker_id, $content_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$post = \App\Models\SatkerPost::find($content_id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Content tidak valid'], 404); | |
} | |
//Cek if the user is a member | |
$member = \App\Models\SatkerMember::where('nama_departemen', $satker->name)->where('user_id', $userdata['data']['id'])->get(); | |
if (! $member AND $userdata['data']['id'] != 1) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Ups..Anda bukan member sarket ini.'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$comment = new \App\Models\SatkerPostComment(); | |
$comment->satker_id = $satker->id; | |
$comment->post_id = $post->id; | |
$comment->poster_id = $userdata['data']['id']; | |
$comment->text = $request->text; | |
$comment->save(); | |
$data = $comment; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menimpan comment'],200); | |
} | |
public function satkerDeletePostContentComment($satker_id, $content_id, $comment_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$satker = \App\Models\Satker::find($satker_id); | |
if (!$satker) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Satker tidak valid'], 404); | |
} | |
$post = \App\Models\SatkerPost::find($content_id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Content tidak valid'], 404); | |
} | |
$comment = \App\Models\SatkerPostComment::find($comment_id); | |
if (! $comment) { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Conmment tidak valid'], 404); | |
} | |
if ($comment->poster_id != $userdata['data']['id'] AND $userdata['data']['id'] != '1') { | |
return response()->json(['status' => false, 'data' => '', 'message' => 'Ups, anda tidak berhak menghapus comment ini'], 404); | |
} | |
if (!$comment->delete()) { | |
return response()->json(['status' => false, 'data' => $comment, 'message' => 'Ups, Gagal menghapus comment'], 501); | |
} | |
return response()->json(['status' => false, 'data' => $comment, 'message' => 'Berhasil menghapus comment'], 200); | |
} | |
public function survey(Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$participatingSurvey = \App\Models\SurveyResult::select('survey_id')->where('user_id', $userdata['data']['id'])->distinct()->get(); | |
if (count($participatingSurvey) > 0) { | |
foreach ($participatingSurvey as $k) { | |
$an[] = $k->survey_id; | |
} | |
$survey = \App\Models\Survey::where('is_active', 'y')->whereNotIn('id', $an)->orderBy('id', 'DESC')->get(); | |
}else{ | |
$survey = \App\Models\Survey::where('is_active', 'y')->orderBy('id', 'DESC')->get(); | |
} | |
if ($survey) { | |
foreach ($survey as $k => $v) { | |
$data['survey'][$k]['id'] = $v->id; | |
$data['survey'][$k]['title'] = $v->title; | |
$data['survey'][$k]['description'] = $v->description; | |
$data['survey'][$k]['timestamp'] = $v->created_at; | |
$data['survey'][$k]['question_count'] = \App\Models\SurveyQuestion::where('survey_id', $v->id)->count(); | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function surveyPlay($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$survey = \App\Models\Survey::find($id); | |
if (!$survey OR $survey->is_active == 'n') { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Survey tidak valid'], 404); | |
} | |
//Check if the member already take this survey | |
if (\App\Models\SurveyResult::where('survey_id', $survey->id)->where('user_id', $userdata['data']['id'])->count() > 0) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Anda sudah pernah berpartisipasi dalam survey ini. Terimakasih.'], 404); | |
} | |
$data['survey']['id'] = $survey->id; | |
$data['survey']['title'] = $survey->title; | |
$data['survey']['description'] = $survey->description; | |
$data['survey']['timestamp'] = $survey->created_at; | |
$surveyQuestion = \App\Models\SurveyQuestion::where('survey_id', $survey->id)->get(); | |
$data['survey']['question_count'] = $surveyQuestion->count(); | |
if ($surveyQuestion) { | |
foreach ($surveyQuestion as $k => $v) { | |
$data['question'][$k]['id'] = $v->id; | |
$data['question'][$k]['type'] = $v->type; | |
$data['question'][$k]['text'] = $v->text; | |
$data['question'][$k]['timestamp'] = $v->crated_at; | |
switch ($v->type) { | |
case 'pg' : | |
$data['question'][$k]['option_a'] = $v->pil_a; | |
$data['question'][$k]['option_b'] = $v->pil_b; | |
$data['question'][$k]['option_c'] = $v->pil_c; | |
$data['question'][$k]['option_d'] = $v->pil_d; | |
$data['question'][$k]['option_e'] = $v->pil_e; | |
$data['question'][$k]['option_f'] = $v->pil_f; | |
break; | |
case 'multi' : | |
$data['question'][$k]['option_a'] = $v->pil_a; | |
$data['question'][$k]['option_b'] = $v->pil_b; | |
$data['question'][$k]['option_c'] = $v->pil_c; | |
$data['question'][$k]['option_d'] = $v->pil_d; | |
$data['question'][$k]['option_e'] = $v->pil_e; | |
$data['question'][$k]['option_f'] = $v->pil_f; | |
break; | |
case 'scale' : | |
$data['question'][$k]['option_1'] = 1; | |
$data['question'][$k]['option_2'] = 2; | |
$data['question'][$k]['option_3'] = 3; | |
$data['question'][$k]['option_4'] = 4; | |
$data['question'][$k]['option_5'] = 5; | |
break; | |
default: | |
break; | |
} | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function surveyPlayStore($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$survey = \App\Models\Survey::find($id); | |
if (!$survey OR $survey->is_active == 'n') { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Survey tidak valid'], 404); | |
} | |
//Check if the member already take this survey | |
if (\App\Models\SurveyResult::where('survey_id', $survey->id)->where('user_id', $userdata['data']['id'])->count() > 0) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Anda sudah pernah berpartisipasi dalam survey ini. Terimakasih.'], 404); | |
} | |
if(!is_array($request->question_id)) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
foreach ($request->question_id as $k => $v) { | |
$question = \App\Models\SurveyQuestion::find($k); | |
if (!$question){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, pertanyaan dan jawaban yang anda kirim tidak valid. Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
$answer = $v; | |
switch ($question->type) { | |
case 'pg': | |
$validAnswer = [$question->pil_a, $question->pil_b, $question->pil_c, $question->pil_d, $question->pil_e, $question->pil_f]; | |
if (! in_array($v, $validAnswer)) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, Anda mengirimkan jawaban yang tidak valid untuk pertanyaan ' . $k . '. Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
$answer = $v; | |
break; | |
case 'multi': | |
$validAnswer = [$question->pil_a, $question->pil_b, $question->pil_c, $question->pil_d, $question->pil_e, $question->pil_f]; | |
if (! in_array($v, $validAnswer)) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, Anda mengirimkan jawaban yang tidak valid untuk pertanyaan ' . $k . '. Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
$answer = $v; | |
break; | |
case 'scale': | |
$validAnswer = ['1', '2', '3', '4', '5']; | |
if (! in_array($v, $validAnswer)) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, Anda mengirimkan jawaban yang tidak valid untuk pertanyaan ' . $k . '. Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
$answer = $v; | |
break; | |
case 'essay': | |
$answer = $v; | |
break; | |
default: | |
if (! in_array($v, $validAnswer)) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, pertanyaan dan jawaban yang anda kirim tidak valid. Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
break; | |
} | |
$result = new \App\Models\SurveyResult(); | |
$result->survey_id = $survey->id; | |
$result->question_id = $question->id; | |
$result->user_id = $userdata['data']['id']; | |
$result->answer = $answer; | |
$result->save(); | |
} | |
$data['survey']['id'] = $survey->id; | |
$data['survey']['title'] = $survey->title; | |
$data['survey']['description'] = $survey->description; | |
$data['survey']['timestamp'] = $survey->created_at; | |
$surveyQuestion = \App\Models\SurveyQuestion::where('survey_id', $survey->id)->get(); | |
$data['survey']['question_count'] = $surveyQuestion->count(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan survey. Terimakasih.'], 200); | |
} | |
public function surveyStats($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$survey = \App\Models\Survey::find($id); | |
if (!$survey OR $survey->is_active == 'n') { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Survey tidak valid'], 404); | |
} | |
$question = \App\Models\SurveyQuestion::where('survey_id', $survey->id)->where('type', '<>', 'essay')->get(); | |
if (!$question){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Belum ada pertanyaan untuk survey ini'], 400); | |
} | |
$data['survey']['id'] = $survey->id; | |
$data['survey']['title'] = $survey->title; | |
$data['survey']['description'] = $survey->description; | |
$data['survey']['timestamp'] = $survey->created_at; | |
foreach ($question as $k => $v) { | |
$result = \App\Models\SurveyResult::where('question_id', $v->id)->get(); | |
$data['question'][$k]['id'] = $v->id; | |
$data['question'][$k]['type'] = $v->type; | |
$data['question'][$k]['text'] = $v->text; | |
$data['question'][$k]['timestamp'] = $v->created_at; | |
foreach ($result as $key => $value) { | |
switch ($v->type) { | |
case 'pg' : | |
$data['question'][$k]['answer']['option_a']['answer_text'] = $v->pil_a; | |
$data['question'][$k]['answer']['option_b']['answer_text'] = $v->pil_b; | |
$data['question'][$k]['answer']['option_c']['answer_text'] = $v->pil_c; | |
$data['question'][$k]['answer']['option_d']['answer_text'] = $v->pil_d; | |
$data['question'][$k]['answer']['option_e']['answer_text'] = $v->pil_e; | |
$data['question'][$k]['answer']['option_f']['answer_text'] = $v->pil_f; | |
if( ! isset($data['question'][$k]['answer']['option_a']['sum']) ) { | |
$data['question'][$k]['answer']['option_a']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_b']['sum']) ) { | |
$data['question'][$k]['answer']['option_b']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_c']['sum']) ) { | |
$data['question'][$k]['answer']['option_c']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_d']['sum']) ) { | |
$data['question'][$k]['answer']['option_d']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_e']['sum']) ) { | |
$data['question'][$k]['answer']['option_e']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_f']['sum']) ) { | |
$data['question'][$k]['answer']['option_f']['sum'] = 0; | |
} | |
switch ($value->answer){ | |
case $v->pil_a: | |
$data['question'][$k]['answer']['option_a']['sum']++; | |
break; | |
case $v->pil_b: | |
$data['question'][$k]['answer']['option_b']['sum']++; | |
break; | |
case $v->pil_c: | |
$data['question'][$k]['answer']['option_c']['sum']++; | |
break; | |
case $v->pil_d: | |
$data['question'][$k]['answer']['option_d']['sum']++; | |
break; | |
case $v->pil_e: | |
$data['question'][$k]['answer']['option_e']['sum']++; | |
break; | |
case $v->pil_f: | |
$data['question'][$k]['answer']['option_f']['sum']++; | |
break; | |
default: | |
break; | |
} | |
break; | |
case 'multi': | |
$data['question'][$k]['answer']['option_a']['answer_text'] = $v->pil_a; | |
$data['question'][$k]['answer']['option_b']['answer_text'] = $v->pil_b; | |
$data['question'][$k]['answer']['option_c']['answer_text'] = $v->pil_c; | |
$data['question'][$k]['answer']['option_d']['answer_text'] = $v->pil_d; | |
$data['question'][$k]['answer']['option_e']['answer_text'] = $v->pil_e; | |
$data['question'][$k]['answer']['option_f']['answer_text'] = $v->pil_f; | |
if( ! isset($data['question'][$k]['answer']['option_a']['sum']) ) { | |
$data['question'][$k]['answer']['option_a']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_b']['sum']) ) { | |
$data['question'][$k]['answer']['option_b']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_c']['sum']) ) { | |
$data['question'][$k]['answer']['option_c']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_d']['sum']) ) { | |
$data['question'][$k]['answer']['option_d']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_e']['sum']) ) { | |
$data['question'][$k]['answer']['option_e']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_f']['sum']) ) { | |
$data['question'][$k]['answer']['option_f']['sum'] = 0; | |
} | |
switch ($value->answer){ | |
case $v->pil_a: | |
$data['question'][$k]['answer']['option_a']['sum']++; | |
break; | |
case $v->pil_b: | |
$data['question'][$k]['answer']['option_b']['sum']++; | |
break; | |
case $v->pil_c: | |
$data['question'][$k]['answer']['option_c']['sum']++; | |
break; | |
case $v->pil_d: | |
$data['question'][$k]['answer']['option_d']['sum']++; | |
break; | |
case $v->pil_e: | |
$data['question'][$k]['answer']['option_e']['sum']++; | |
break; | |
case $v->pil_f: | |
$data['question'][$k]['answer']['option_f']['sum']++; | |
break; | |
default: | |
break; | |
} | |
break; | |
case 'scale': | |
$data['question'][$k]['answer']['option_1']['answer_text'] = 'Tidak Setuju'; | |
$data['question'][$k]['answer']['option_2']['answer_text'] = 'Kurang Setuju'; | |
$data['question'][$k]['answer']['option_3']['answer_text'] = 'Netral'; | |
$data['question'][$k]['answer']['option_4']['answer_text'] = 'Setuju'; | |
$data['question'][$k]['answer']['option_5']['answer_text'] = 'Sangat Setuju'; | |
if( ! isset($data['question'][$k]['answer']['option_1']['sum']) ) { | |
$data['question'][$k]['answer']['option_1']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_2']['sum']) ) { | |
$data['question'][$k]['answer']['option_2']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_3']['sum']) ) { | |
$data['question'][$k]['answer']['option_3']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_4']['sum']) ) { | |
$data['question'][$k]['answer']['option_4']['sum'] = 0; | |
} | |
if( ! isset($data['question'][$k]['answer']['option_5']['sum']) ) { | |
$data['question'][$k]['answer']['option_5']['sum'] = 0; | |
} | |
switch ($value->answer){ | |
case '1': | |
$data['question'][$k]['answer']['option_1']['sum']++; | |
break; | |
case '2': | |
$data['question'][$k]['answer']['option_2']['sum']++; | |
break; | |
case '3': | |
$data['question'][$k]['answer']['option_3']['sum']++; | |
break; | |
case '4': | |
$data['question'][$k]['answer']['option_4']['sum']++; | |
break; | |
case '5': | |
$data['question'][$k]['answer']['option_5']['sum']++; | |
break; | |
default: | |
break; | |
} | |
break; | |
default: | |
break; | |
} | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function quiz(Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//MyScore | |
$myScrore = \App\Models\QuizResult::where('user_id', $userdata['data']['id'])->where('is_finished', 'y'); | |
if ($myScrore->count() > 0) { | |
$data['my_score'] = round($myScrore->sum('result') / $myScrore->count(), 1); | |
}else{ | |
$data['my_score'] = round(0,1); | |
} | |
//TopScore | |
$topScore = \App\Models\QuizResult::where('is_finished', 'y')->groupBy('user_id') | |
->selectRaw('user_id, sum(result) as sum, count(*) as jum, sum(result) / count(*) as has') | |
->orderBy('has', 'desc') | |
->take(10)->get(); | |
if ($topScore) { | |
foreach ($topScore as $k => $v) { | |
$user = User::find($v->user_id); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['top_score'][$k]['user_id'] = $v->user_id; | |
$data['top_score'][$k]['first_name'] = $user->first_name; | |
$data['top_score'][$k]['last_name'] = $user->last_name; | |
$data['top_score'][$k]['photo_profile'] = $image; | |
$data['top_score'][$k]['score'] = round($v->has,1); | |
} | |
}else{ | |
$data['top_score'] = null; | |
} | |
//Quiz | |
$quiz = \App\Models\Quiz::where('status', 'live')->orderBy('updated_at', 'desc')->get(); | |
if($quiz) { | |
foreach ($quiz as $k => $v) { | |
$data['quiz'][$k]['id'] = $v->id; | |
$data['quiz'][$k]['title'] = $v->title; | |
$data['quiz'][$k]['description'] = $v->description; | |
$data['quiz'][$k]['timestamp'] = $v->created_at; | |
$data['quiz'][$k]['question_count'] = \App\Models\Question::where('quiz_id', $v->id)->count(); | |
} | |
} | |
//Quiz Module | |
$quizmodule = \App\Models\QuizModule::latest()->get(); | |
if ($quizmodule) { | |
foreach ($quizmodule as $k => $v) { | |
$data['quiz_module'][$k]['id'] = $v->id; | |
$data['quiz_module'][$k]['title'] = $v->id; | |
$data['quiz_module'][$k]['excerp'] = str_limit(strip_tags($v->text), 200); | |
$data['quiz_module'][$k]['timestamp'] = $v->created_at; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function quizPlay($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$quiz = \App\Models\Quiz::find($id); | |
if (!$quiz OR $quiz->is_active == 'n') { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Quiz tidak valid'], 404); | |
} | |
$data['quiz']['id'] = $quiz->id; | |
$data['quiz']['title'] = $quiz->title; | |
$data['quiz']['description'] = $quiz->description; | |
$data['quiz']['timestamp'] = $quiz->created_at; | |
$data['quiz']['question_count'] = \App\Models\Question::where('quiz_id', $quiz->id)->count(); | |
//Check if the member already take this quiz | |
//Check if all question is answered | |
$myResult = \App\Models\QuizResult::where('quiz_id', $quiz->id)->where('user_id', $userdata['data']['id'])->get(); | |
if (count($myResult)) { | |
if ($myResult->first()->is_finished == 'y') { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Anda sudah pernah berpartisipasi dalam quiz ini. Terimakasih.'], 404); | |
}else { | |
//Get last questions he/she left | |
$question = \App\Models\Question::where('quiz_id', $id)->where('id', '>', $myResult->first()->current_question)->get(); | |
} | |
} else{ | |
$question = \App\Models\Question::where('quiz_id', $id)->get(); | |
} | |
if ($question) { | |
foreach ($question as $k => $v) { | |
$data['question'][$k]['id'] = $v->id; | |
$data['question'][$k]['type'] = $v->type; | |
$data['question'][$k]['text'] = $v->text; | |
$data['question'][$k]['timestamp'] = $v->created_at; | |
if ($v->type == 'pg') { | |
$data['question'][$k]['option_1'] = $v->pil_a; | |
$data['question'][$k]['option_2'] = $v->pil_b; | |
$data['question'][$k]['option_3'] = $v->pil_c; | |
$data['question'][$k]['option_4'] = $v->pil_d; | |
$data['question'][$k]['option_5'] = $v->pil_e; | |
$data['question'][$k]['option_6'] = $v->pil_f; | |
}else{ | |
$data['question'][$k]['option_1'] = $v->pil_a; | |
$data['question'][$k]['option_2'] = $v->pil_b; | |
} | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function quizCheckAnswer($quiz_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//Cek Quiz | |
$quiz = \App\Models\Quiz::find($quiz_id); | |
//Quiz tidak ditemukan | |
if (! $quiz) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, Quiz tidak valid',404]); | |
} | |
//Asumsikan user belum pernah mengikuti kuis | |
$didParticipated = false; | |
$didFinished = false; | |
$currentScore = 0; | |
//Pertanyaan aktif adalah pertanyaan quiz yang pertama | |
$currentQuestion = \App\Models\Question::where('quiz_id', $quiz->id)->first()->id; | |
//Apakah user pernah mengikuti quiz ini? | |
$myResult = \App\Models\QuizResult::where('user_id', $userdata['data']['id'])->where('quiz_id', $quiz_id)->first(); | |
//User pernah mengikuti | |
if (count($myResult) > 0) { | |
$didParticipated = true; | |
//Apakah user telah menjawab semua pertanyaan yang ada? | |
if ($myResult->is_finished == 'y') { | |
$didFinished = true; | |
$currentScore = $myResult->result; | |
//Tampilkan pesan dan hasil yang telah dicapai | |
$data['my-score'] = $currentScore; | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Anda sudah menyelesaikan quiz ini',404]); | |
}else{ | |
$didFinished = false; | |
//User pernah mengikuti tapi belum menjawab semua pertanyaan | |
//Definisikan Hasil terakhir user | |
$currentScore = $myResult->result; | |
//Pertanyaan yang seharusnya dijawab oleh user | |
$currentQuestion = $myResult->current_question; | |
//Result adalah record yang sudah ada | |
$result = $myResult; | |
} | |
}else{ | |
//User belum pernah mengikuti quiz ini | |
//Definisikan Quiz Result | |
$result = new \App\Models\QuizResult(); | |
} | |
//User tidak mengirimkan data yang benar | |
if (!is_array($request->question_id)) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, Anda mengirimkan jawaban yang tidak . Harap kirim response dalam bentuk array untuk masing-masing question \'question_id\'[id] => \'answer\''], 400); | |
} | |
//Check the answer | |
foreach ($request->question_id as $k => $v) { | |
// | |
if ($didParticipated) { | |
$currentQuestion = $myResult->current_question; | |
}else{ | |
$currentQuestion = \App\Models\Question::where('id', $k)->first()->id; | |
} | |
if ($currentQuestion !== $k){ | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Ups, Pertanyaan tidak valid. Anda mengirimkan jawaban yang tidak . Harap kirim response dalam bentuk array untuk masing-masing question [\'question_id\' => \'answer\']'], 400); | |
} | |
//Answer Correction | |
$question = \App\Models\Question::where('id', $currentQuestion)->first(); | |
if ($question->correct_key == $request->question_id[$k]){ | |
//Correct | |
$currentScore++; | |
} | |
$nextQuestion = \App\Models\Question::where('quiz_id', $quiz->id)->where('id', '>', $k)->first(); | |
} | |
//Save the result | |
$result->quiz_id = $quiz->id; | |
$result->user_id = $userdata['data']['id']; | |
$result->question_count = \App\Models\Question::where('quiz_id', $quiz->id)->count(); | |
$result->result = $currentScore; | |
if (count($nextQuestion) > 0) { | |
$data['next_question']['id'] = $nextQuestion->id; | |
$data['next_question']['type'] = $nextQuestion->type; | |
$data['next_question']['text'] = $nextQuestion->text; | |
if ($nextQuestion->type == 'pg') { | |
$data['next_question']['option_1'] = $nextQuestion->pil_a; | |
$data['next_question']['option_2'] = $nextQuestion->pil_b; | |
$data['next_question']['option_3'] = $nextQuestion->pil_c; | |
$data['next_question']['option_4'] = $nextQuestion->pil_d; | |
$data['next_question']['option_5'] = $nextQuestion->pil_e; | |
$data['next_question']['option_6'] = $nextQuestion->pil_f; | |
}else{ | |
$data['next_question']['option_1'] = $nextQuestion->pil_a; | |
$data['next_question']['option_2'] = $nextQuestion->pil_b; | |
} | |
$result->is_finished = 'n'; | |
}else{ | |
$result->is_finished = 'y'; | |
} | |
$result->current_question = $currentQuestion+1; | |
$result->save(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function quizModule(Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//Quiz Module | |
$quizmodule = \App\Models\QuizModule::latest()->get(); | |
if ($quizmodule) { | |
foreach ($quizmodule as $k => $v) { | |
$data['quiz_module'][$k]['id'] = $v->id; | |
$data['quiz_module'][$k]['title'] = $v->id; | |
$data['quiz_module'][$k]['excerp'] = str_limit(strip_tags($v->text), 200); | |
$data['quiz_module'][$k]['timestamp'] = $v->created_at; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function quizModuleShow($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
//Quiz Module | |
$quizmodule = \App\Models\QuizModule::find($id); | |
if(! $quizmodule) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Module tidak valid'], 404); | |
} | |
$data['quiz_module']['id'] = $quizmodule->id; | |
$data['quiz_module']['title'] = $quizmodule->id; | |
$data['quiz_module']['text'] = strip_tags($quizmodule->text); | |
$data['quiz_module']['timestamp'] = $quizmodule->created_at; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function notification($take = 10, $skip = 0) | |
{ | |
$userdata = Cektoken::cek(request('token')); | |
$data = []; | |
// $data['notificationCount'] = 0; | |
// $notification = \App\Models\Notification::leftJoin('notification_types', function($join){ | |
// $join->on('notifications.notification_type', '=', 'notification_types.notification_type'); | |
// })->where('user_id', $userdata['data']['id'])->orderBy('date_added', 'DESC')->take($take)->skip($skip)->get(); | |
$notif = \App\Models\Notification::where('user_id', $userdata['data']['id'])->take($take)->skip($skip)->orderBy('notification_id', 'DESC')->get(); | |
if($notif) { | |
foreach($notif as $k => $v) { | |
$getNotifType = DB::table('notification_types')->where('notification_type', $v->notification_type)->first(); | |
if($getNotifType->is_request != "1"){ | |
$data['latestNotification'][$k]['id'] = $v->notification_id; | |
$data['latestNotification'][$k]['subject_id'] = $v->subjectid; | |
$data['latestNotification'][$k]['subject_type'] = $v->subject_type; | |
$data['latestNotification'][$k]['notification_type'] = $v->notification_type; | |
$data['latestNotification'][$k]['object_id'] = $v->object_id; | |
$data['latestNotification'][$k]['object_type'] = $v->object_type; | |
$data['latestNotification'][$k]['kata-kata'] = 'Terdapat pembaruan dari ' . $v->object_type; | |
//$data['latestNotification'][$k]['timestamp'] = $v->created_at; | |
$data['latestNotification'][$k]['content'] = unserialize($v->param); | |
$params = unserialize($v->param); | |
if($params['subject'] == ""){ | |
$vars = array('{SUBJECT}' => "<strong>Admin</strong>", '{OBJECT}' => "<strong>" . $params['object'] . "</strong>"); | |
}else{ | |
$vars = array('{SUBJECT}' => "<strong>" . $params['subject'] . "</strong>", '{OBJECT}' => "<strong>" . $params['object'] . "</strong>"); | |
} | |
$varBody = strtr($getNotifType->body, $vars); | |
$data['latestNotification'][$k]['varBody'] = $varBody; | |
} | |
} | |
} | |
$data['notificationCount'] = \App\Models\Notification::where('user_id', $userdata['data']['id'])->where('read', '0')->get()->count(); | |
//\App\Library\NotificationLibrary::setAsReadAllNotification($userdata['data']['id']); | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function timeline(Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$posts = \App\Models\ActivityAction::where('activity_type', 'status')->where('object_type', 'user')->orderBy('action_id', 'DESC')->take(20)->skip(0)->get(); | |
if ($posts) { | |
foreach ($posts as $k => $v) { | |
$is_liked = \App\Models\ActivityLikes::where('action_id', $v->action_id)->where('user_id', $userdata['data']['id'])->first(); | |
$data['post'][$k]['id'] = $v->action_id; | |
$data['post'][$k]['text'] = $v->body; | |
$data['post'][$k]['image'] = null; | |
$data['post'][$k]['comment_count'] = \App\Models\ActivityComment::where('action_id', $v->action_id)->count(); | |
$data['post'][$k]['like_count'] = \App\Models\ActivityLikes::where('action_id', $v->action_id)->count(); | |
$data['post'][$k]['is_liked'] = ($is_liked) ? '1' : '0'; | |
$data['post'][$k]['timestamp'] = $v->date_added; | |
$postImg = \App\Models\ImagesTable::where('parent_type', 'user_status')->where('parent_id', $v->action_id)->first(); | |
if ($postImg) { | |
$data['post'][$k]['image'] = $postImg->path; | |
} | |
$user = User::select('id', 'first_name', 'last_name')->where('id', '=', $v->user_id)->first(); | |
$photo = \App\Library\CustomLibrary::ambilGambarCoy($user->id); | |
$data['post'][$k]['user']['id'] = $user->id; | |
$data['post'][$k]['user']['first_name'] = $user->first_name; | |
$data['post'][$k]['user']['last_name'] = $user->last_name; | |
$data['post'][$k]['user']['photo_profile'] = $photo; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function timelinePost(Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$status = new \App\Models\ActivityAction(); | |
$status->activity_type = 'status'; | |
$status->subject_type = 'user'; | |
$status->user_id = $userdata['data']['id']; | |
$status->object_type = 'user'; | |
$status->body = $request->text; | |
$status->save(); | |
if ($request->hasFile('image')) { | |
$intervention = Image::make($request->file('image')); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/user_status'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $status->action_id; | |
$imageTable->parent_type = 'user_status'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
$data['post']['id'] = $status->action_id; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Behasil mengirimkan post'],200); | |
} | |
public function timelinePostAndroid(Request $request){ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$status = new \App\Models\ActivityAction(); | |
$status->activity_type = 'status'; | |
$status->subject_type = 'user'; | |
$status->user_id = $userdata['data']['id']; | |
$status->object_type = 'user'; | |
$status->body = $request->text; | |
$status->save(); | |
if ($request->has('image')) { | |
$destinationPath = 'images/user_status/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->image; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $status->action_id; | |
$imageTable->parent_type = 'user_status'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
$data['post']['id'] = $status->action_id; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Behasil mengirimkan post'],200); | |
} | |
public function timelineGetSingle($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$post = \App\Models\ActivityAction::find($id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Post tidak ditemukan'],404); | |
} | |
$data['post']['id'] = $post->action_id; | |
$data['post']['text'] = $post->body; | |
$data['post']['comment_count'] = \App\Models\ActivityComment::where('action_id', $post->action_id)->count(); | |
$data['post']['like_count'] = \App\Models\ActivityLikes::where('action_id', $post->action_id)->count(); | |
$is_liked = \App\Models\ActivityLikes::where('action_id', $post->action_id)->where('user_id', $userdata['data']['id'])->first(); | |
$data['post']['is_liked'] = ($is_liked) ? '1' : '0'; | |
$data['post']['timestamp'] = $post->date_added; | |
//Check if the post has image | |
$cekImage = \App\Models\ImagesTable::where('parent_type', 'user_status')->where('parent_id', $post->action_id)->first(); | |
if ($cekImage) { | |
$data['post']['image'] = $cekImage->path; | |
} | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$post->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['post']['user']['id'] = $getDataUser->id; | |
$data['post']['user']['first_name'] = $getDataUser->first_name; | |
$data['post']['user']['last_name'] = $getDataUser->last_name; | |
$data['post']['user']['photo_profile'] = $image; | |
$data['comment'] = []; | |
$comment = \App\Models\ActivityComment::where('action_id', $post->action_id)->get(); | |
if ($comment) { | |
foreach ($comment as $k => $v) { | |
$data['comment'][$k]['id'] = $v->activity_comment_id; | |
$data['comment'][$k]['text'] = $v->body; | |
$data['comment'][$k]['timestamp'] = $v->date_added; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['comment'][$k]['user']['id'] = $getDataUser->id; | |
$data['comment'][$k]['user']['first_name'] = $getDataUser->first_name; | |
$data['comment'][$k]['user']['last_name'] = $getDataUser->last_name; | |
$data['comment'][$k]['user']['photo_profile'] = $image; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''],200); | |
} | |
public function timelineComment($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$comment = \App\Models\ActivityComment::find($id); | |
if (! $comment) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Comment tidak ditemukan'],404); | |
} | |
$data['comment']['id'] = $comment->activity_comment_id; | |
$data['comment']['text'] = $comment->body; | |
$data['comment']['timestamp'] = $comment->date_added; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$comment->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['comment']['user']['id'] = $getDataUser->id; | |
$data['comment']['user']['first_name'] = $getDataUser->first_name; | |
$data['comment']['user']['last_name'] = $getDataUser->last_name; | |
$data['comment']['user']['photo_profile'] = $image; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function timelineCommentPost($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$post = \App\Models\ActivityAction::find($id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Post tidak ditemukan'],404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$comment = new \App\Models\ActivityComment(); | |
$comment->user_id = $userdata['data']['id']; | |
$comment->action_id = $post->action_id; | |
$comment->body = $request->text; | |
$comment->save(); | |
$data['id'] = $comment->activity_comment_id; | |
$data['text'] = $comment->body; | |
$data['timestamp'] = $comment->date_added; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$comment->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['user']['id'] = $getDataUser->id; | |
$data['user']['first_name'] = $getDataUser->first_name; | |
$data['user']['last_name'] = $getDataUser->last_name; | |
$data['user']['photo_profile'] = $image; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan Comment'], 200); | |
} | |
public function timelineDelete($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$post = \App\Models\ActivityAction::find($id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Post tidak ditemukan'],404); | |
} | |
\App\Models\ActivityComment::where('action_id', $post->action_id)->delete(); | |
$post->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus post beserta komentarnya'],200); | |
} | |
public function timelineCommentDelete($id, Request $request) | |
{ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$comment= \App\Models\ActivityComment::find($id); | |
if (! $comment) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Komentar tidak ditemukan'],404); | |
} | |
$comment->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menghapus komentar'],200); | |
} | |
public function community(Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$community = \App\Models\Community::all(); | |
if (! $community) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Belum ada komunitas.'],200); | |
} | |
foreach ($community as $k => $v) { | |
$data['community'][$k]['id'] = $v->group_id; | |
$data['community'][$k]['title'] = $v->title; | |
$data['community'][$k]['description'] = $v->description; | |
$cover = \App\Models\ImagesTable::where('parent_type','=','community_cover_img')->where('parent_id','=',$v->group_id)->first(); | |
$data['community'][$k]['cover_photo'] = ($cover) ? $cover->path : null; | |
$data['community'][$k]['icon'] = $v->icon; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function communityShow($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$community = \App\Models\Community::find($id); | |
if (! $community) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Komunitas tidak ditemukan'],404); | |
} | |
//Viewer | |
$community_view = \App\Models\CommunityView::where('group_id', $community->group_id)->where('user_id', $userdata['data']['id'])->count(); | |
if ($community_view == 0) { | |
$view = new \App\Models\CommunityView(); | |
$view->group_id = $community->group_id; | |
$view->user_id = $userdata['data']['id']; | |
$view->save(); | |
} | |
$data['community']['id'] = $community->group_id; | |
$data['community']['title'] = $community->title; | |
$data['community']['description'] = $community->description; | |
$cover = \App\Models\ImagesTable::where('parent_type','=','community_cover_img')->where('parent_id','=',$community->group_id)->first(); | |
$data['community']['cover_photo'] = ($cover) ? $cover->path : null; | |
$data['community']['icon'] = $community->icon; | |
$isMember = \App\Models\CommunityMember::where('group_id', $community->group_id)->where('sender_id', $userdata['data']['id'])->get(); | |
if (count($isMember) > 0) { | |
if ($isMember->first()->approved == '1') { | |
$data['community']['membership_status'] = 'joined'; | |
}elseif ($isMember->first()->approved == '0') { | |
$data['community']['membership_status'] = 'waiting_approval'; | |
} | |
}else{ | |
$data['community']['membership_status'] = 'not_joined'; | |
} | |
//Community Timeline | |
$data['post'] = []; | |
$posts = \App\Models\ActivityAction::where('object_type', 'group')->where('group_id', $community->group_id)->orderBy('action_id', 'DESC')->take(20)->get(); | |
if ($posts){ | |
foreach ($posts as $k => $v) { | |
$data['post'][$k]['id'] = $v->action_id; | |
$data['post'][$k]['text'] = $v->body; | |
$data['post'][$k]['image'] = ''; | |
$postImage = \App\Models\ImagesTable::where('parent_type', 'user_status')->where('parent_id', $v->action_id)->first(); | |
if ($postImage) { | |
$data['post'][$k]['image'] = $postImage->path; | |
} | |
//Comment Count | |
$data['post'][$k]['comment_count'] = \App\Models\ActivityComment::where('action_id', $v->action_id)->count(); | |
//Like Count | |
$data['post'][$k]['like_count'] = \App\Models\ActivityLikes::where('action_id', $v->action_id)->count(); | |
//Is Liked post | |
$is_liked = \App\Models\ActivityLikes::where('action_id', $v->action_id)->where('user_id', $userdata['data']['id'])->first(); | |
$data['post'][$k]['is_liked'] = ($is_liked) ? '1' : '0'; | |
$data['post'][$k]['timestamp'] = $v->date_added; | |
//Post User | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['post'][$k]['user']['id'] = $getDataUser->id; | |
$data['post'][$k]['user']['first_name'] = $getDataUser->first_name; | |
$data['post'][$k]['user']['last_name'] = $getDataUser->last_name; | |
$data['post'][$k]['user']['photo_profile'] = $image; | |
} | |
} | |
//Community Member | |
$data['member'] = []; | |
$member = \App\Models\CommunityMember::where('group_id', $community->group_id)->where('approved', '1')->get(); | |
if ($member) { | |
foreach ($member as $k => $v) { | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->member_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['member'][$k]['id'] = $getDataUser->id; | |
$data['member'][$k]['first_name'] = $getDataUser->first_name; | |
$data['member'][$k]['last_name'] = $getDataUser->last_name; | |
$data['member'][$k]['photo_profile'] = $image; | |
} | |
} | |
//Gallery | |
$gallery = \App\Models\ImagesTable::where('parent_type', 'group_photo')->where('parent_id', $community->group_id)->orderBy('image_id', 'DESC')->get(); | |
if ($gallery) { | |
foreach ($gallery as $k => $v) { | |
$data['gallery'][$k]['id'] = $v->image_id; | |
$data['gallery'][$k]['file_path'] = $v->path; | |
$data['gallery'][$k]['title'] = $v->title; | |
$data['gallery'][$k]['description'] = $v->description; | |
$data['gallery'][$k]['timestamp'] = $v->added_date; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function communityJoin($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$community = \App\Models\Community::find($id); | |
if (! $community) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Komunitas tidak ditemukan'],404); | |
} | |
$isMember = \App\Models\CommunityMember::where('group_id', $community->group_id)->where('sender_id', $userdata['data']['id']); | |
if ($isMember->count() > 0) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Permintaan sudah pernah dikirim'],400); | |
} | |
$membership = new \App\Models\CommunityMember(); | |
$membership->sender_id = $userdata['data']['id']; | |
$membership->group_id = $community->group_id; | |
$membership->reciever_id = '1'; | |
$membership->member_id = $userdata['data']['id']; | |
$membership->approved = '0'; | |
$membership->role = '0'; | |
$membership->approved_by = '1'; | |
$membership->group_approved = '0'; | |
$membership->save(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Permintaan bergabung telah dikirim'],200); | |
} | |
public function communityLeave($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$community = \App\Models\Community::find($id); | |
if (! $community) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Komunitas tidak ditemukan'],404); | |
} | |
$membership = \App\Models\CommunityMember::where('group_id', $community->group_id)->where('sender_id', $userdata['data']['id'])->first(); | |
$membership->delete(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil meninggalkan komunitas'],200); | |
} | |
public function communityGetSinglePost($id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$post = \App\Models\ActivityAction::find($id); | |
if (! $post) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Post tidak ditemukan'],404); | |
} | |
$data['post']['id'] = $post->action_id; | |
$data['post']['text'] = $post->body; | |
$data['post']['comment_count'] = \App\Models\ActivityComment::where('action_id', $post->action_id)->count(); | |
$data['post']['like_count'] = \App\Models\ActivityLikes::where('action_id', $post->action_id)->count(); | |
$is_liked = \App\Models\ActivityLikes::where('action_id', $post->action_id)->where('user_id', $userdata['data']['id'])->first(); | |
$data['post']['is_liked'] = ($is_liked) ? '1' : '0'; | |
$data['post']['timestamp'] = $post->date_added; | |
//Check if the post has image | |
$cekImage = \App\Models\ImagesTable::where('parent_type', 'user_status')->where('parent_id', $post->action_id)->first(); | |
if ($cekImage) { | |
$data['post']['image'] = $cekImage->path; | |
} | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$post->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['post']['user']['id'] = $getDataUser->id; | |
$data['post']['user']['first_name'] = $getDataUser->first_name; | |
$data['post']['user']['last_name'] = $getDataUser->last_name; | |
$data['post']['user']['photo_profile'] = $image; | |
$data['comment'] = []; | |
$comment = \App\Models\ActivityComment::where('action_id', $post->action_id)->get(); | |
if ($comment) { | |
foreach ($comment as $k => $v) { | |
$data['comment'][$k]['id'] = $v->activity_comment_id; | |
$data['comment'][$k]['text'] = $v->body; | |
$data['comment'][$k]['timestamp'] = $v->date_added; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['comment'][$k]['user']['id'] = $getDataUser->id; | |
$data['comment'][$k]['user']['first_name'] = $getDataUser->first_name; | |
$data['comment'][$k]['user']['last_name'] = $getDataUser->last_name; | |
$data['comment'][$k]['user']['photo_profile'] = $image; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''],200); | |
} | |
public function communityComment($post_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$comment = \App\Models\ActivityComment::find($post_id); | |
if (! $comment) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Comment tidak ditemukan'],404); | |
} | |
$data['comment']['id'] = $comment->activity_comment_id; | |
$data['comment']['text'] = $comment->body; | |
$data['comment']['timestamp'] = $comment->date_added; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$comment->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['comment']['user']['id'] = $getDataUser->id; | |
$data['comment']['user']['first_name'] = $getDataUser->first_name; | |
$data['comment']['user']['last_name'] = $getDataUser->last_name; | |
$data['comment']['user']['photo_profile'] = $image; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function comunityPost($community_id, Request $request) { | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$community = \App\Models\Community::find($community_id); | |
if (! $community) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Komunitas tidak ditemukan'],404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$status = new \App\Models\ActivityAction(); | |
$status->activity_type = 'status'; | |
$status->subject_type = 'user'; | |
$status->user_id = $userdata['data']['id']; | |
$status->object_type = 'group'; | |
$status->group_id = $community->group_id; | |
$status->body = $request->text; | |
$status->save(); | |
if ($request->hasFile('image')) { | |
$intervention = Image::make($request->file('image')); | |
$fileName = str_random(10) . '.png'; | |
$destinationPath = 'images/user_status'; | |
$intervention->save($destinationPath.'/'.$fileName); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $status->action_id; | |
$imageTable->parent_type = 'group_photo'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
$data['post']['id'] = $status->action_id; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Behasil mengirimkan post'],200); | |
} | |
public function communityPostAndroid($community_id,Request $request){ | |
$userdata = Cektoken::cek($request->token); | |
$data = []; | |
$community = \App\Models\Community::find($community_id); | |
if (! $community) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => 'Komunitas tidak ditemukan'],404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$status = new \App\Models\ActivityAction(); | |
$status->activity_type = 'status'; | |
$status->subject_type = 'user'; | |
$status->user_id = $userdata['data']['id']; | |
$status->object_type = 'group'; | |
$status->group_id = $community->group_id; | |
$status->body = $request->text; | |
$status->save(); | |
if ($request->has('image')) { | |
$destinationPath = 'images/user_status/'; | |
$fileName = uniqid().'.png'; | |
$img = $request->image; | |
$img = str_replace('data:image/png;base64,', '', $img); | |
$img = str_replace(' ', '+', $img); | |
$gam = base64_decode($img); | |
file_put_contents($destinationPath.$fileName, $gam); | |
$imageTable = new \App\Models\ImagesTable(); | |
$imageTable->parent_id = $status->action_id; | |
$imageTable->parent_type = 'group_photo'; | |
$imageTable->path = $fileName; | |
$imageTable->save(); | |
} | |
$data['post']['id'] = $status->action_id; | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Behasil mengirimkan post'],200); | |
} | |
public function adk(Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$adk = \App\Models\Adk::orderBy('id', 'DESC')->get(); | |
if(! $adk) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada ADK'], 200); | |
} | |
foreach ($adk as $k => $v) { | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['adk'][$k]['id'] = $v->id; | |
$data['adk'][$k]['user_id'] = $getDataUser->id; | |
$data['adk'][$k]['first_name'] = $getDataUser->first_name; | |
$data['adk'][$k]['last_name'] = $getDataUser->last_name; | |
$data['adk'][$k]['photo_profile'] = $image; | |
//Jumlah Pertanyaan | |
$data['adk'][$k]['pertanyaan'] = \App\Models\AdkPertanyaan::where('untuk', $v->id)->count(); | |
$data['adk'][$k]['jawaban'] = \App\Models\AdkJawaban::where('user_id', $v->user_id)->count(); | |
} | |
$tiket = \App\Models\AdkPertanyaan::where('dari', $userdata['data']['id'])->get(); | |
if ($tiket) { | |
foreach ($tiket as $k => $v) { | |
$data['my_ticket'][$k]['id'] = $v->id; | |
if($v->status == '2'){ | |
$status = 'closed'; | |
}elseif($v->status == '1'){ | |
$status = 'approved'; | |
}else { | |
$status = 'waiting'; | |
} | |
$data['my_ticket'][$k]['status'] = $status; | |
$data['my_ticket'][$k]['text'] = $v->pertanyaan; | |
$data['my_ticket'][$k]['timestamp'] = $v->created_at; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->dari)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['my_ticket'][$k]['dari']['id'] = $v->dari; | |
$data['my_ticket'][$k]['dari']['user_id'] = $getDataUser->id; | |
$data['my_ticket'][$k]['dari']['first_name'] = $getDataUser->first_name; | |
$data['my_ticket'][$k]['dari']['last_name'] = $getDataUser->last_name; | |
$data['my_ticket'][$k]['dari']['photo_profile'] = $image; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',\App\Models\Adk::find($v->untuk)->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['my_ticket'][$k]['untuk']['id'] = $v->untuk; | |
$data['my_ticket'][$k]['untuk']['user_id'] = $getDataUser->id; | |
$data['my_ticket'][$k]['untuk']['first_name'] = $getDataUser->first_name; | |
$data['my_ticket'][$k]['untuk']['last_name'] = $getDataUser->last_name; | |
$data['my_ticket'][$k]['untuk']['photo_profile'] = $image; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function adkShow($id, Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$adk = \App\Models\Adk::find($id); | |
if(! $adk) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'ADK tidak valid'], 404); | |
} | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$adk->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['adk']['id'] = $adk->id; | |
$data['adk']['user_id'] = $getDataUser->id; | |
$data['adk']['first_name'] = $getDataUser->first_name; | |
$data['adk']['last_name'] = $getDataUser->last_name; | |
$data['adk']['photo_profile'] = $image; | |
//Pertanyaan | |
$tiket = \App\Models\AdkPertanyaan::where('untuk', $adk->id)->where('status', '2')->get(); | |
if ($tiket) { | |
foreach ($tiket as $k => $v) { | |
$data['ticket'][$k]['id'] = $v->id; | |
$data['ticket'][$k]['text'] = $v->pertanyaan; | |
$data['ticket'][$k]['timestamp'] = $v->created_at; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->dari)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['ticket'][$k]['dari']['id'] = $v->dari; | |
$data['ticket'][$k]['dari']['user_id'] = $getDataUser->id; | |
$data['ticket'][$k]['dari']['first_name'] = $getDataUser->first_name; | |
$data['ticket'][$k]['dari']['last_name'] = $getDataUser->last_name; | |
$data['ticket'][$k]['dari']['photo_profile'] = $image; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function adkPostPertanyaan($adk_id, Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$adk = \App\Models\Adk::find($adk_id); | |
if(! $adk) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'ADK tidak valid'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$ticket = new \App\Models\AdkPertanyaan(); | |
$ticket->dari = $userdata['data']['id']; | |
$ticket->untuk = $adk->id; | |
$ticket->pertanyaan = $request->text; | |
$ticket->status = 0; | |
$ticket->save(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan pertanyaan ADK'],200); | |
} | |
public function adkPostJawaban($pertanyaan_id, Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$pertanyaan = \App\Models\AdkPertanyaan::find($pertanyaan_id); | |
if(! $pertanyaan) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Pertanyaan tidak valid'], 404); | |
} | |
$rules = [ | |
'text' => 'required|min:3' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$jawaban = new \App\Models\AdkJawaban(); | |
$jawaban->pertanyaan_id = $pertanyaan->id; | |
$jawaban->user_id = $userdata['data']['id']; | |
$jawaban->jawaban = $request->text; | |
$jawaban->status = '1'; | |
$jawaban->save(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil menyimpan pertanyaan ADK'],200); | |
} | |
public function adkTicketDetail($ticket_id, Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$ticket = \App\Models\AdkPertanyaan::find($ticket_id); | |
if(! $ticket) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Ticket tidak valid'], 404); | |
} | |
if ($ticket->status == 0){ | |
if ($userdata['data']['id'] != '1' AND $userdata['data']['id'] != $ticket->dari){ | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Ticket tidak valid'], 404); | |
} | |
} | |
if ($ticket->status == 1){ | |
if ($userdata['data']['id'] != '1' AND $userdata['data']['id'] != $ticket->dari AND $userdata['data']['id'] != $ticket->untuk){ | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Ticket tidak valid'], 404); | |
} | |
} | |
//Ticket Definition | |
$data['ticket']['id'] = $ticket->id; | |
if($ticket->status == '2'){ | |
$status = 'closed'; | |
}elseif($ticket->status == '1'){ | |
$status = 'approved'; | |
}else { | |
$status = 'waiting'; | |
} | |
$data['ticket']['status'] = $status; | |
$data['ticket']['text'] = $ticket->pertanyaan; | |
$data['ticket']['timestamp'] = $ticket->created_at; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$ticket->dari)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['ticket']['dari']['id'] = $ticket->dari; | |
$data['ticket']['dari']['user_id'] = $getDataUser->id; | |
$data['ticket']['dari']['first_name'] = $getDataUser->first_name; | |
$data['ticket']['dari']['last_name'] = $getDataUser->last_name; | |
$data['ticket']['dari']['photo_profile'] = $image; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',\App\Models\Adk::find($ticket->untuk)->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['ticket']['untuk']['id'] = $ticket->untuk; | |
$data['ticket']['untuk']['user_id'] = $getDataUser->id; | |
$data['ticket']['untuk']['first_name'] = $getDataUser->first_name; | |
$data['ticket']['untuk']['last_name'] = $getDataUser->last_name; | |
$data['ticket']['untuk']['photo_profile'] = $image; | |
//Jawaban | |
$jawaban = \App\Models\AdkJawaban::where('pertanyaan_id', $ticket->id)->get(); | |
if ($jawaban) { | |
foreach ($jawaban as $k => $v) { | |
$data['jawaban'][$k]['id'] = $v->id; | |
$data['jawaban'][$k]['text'] = $v->jawaban; | |
$data['jawaban'][$k]['timestamp'] = $v->created_at; | |
$getDataUser = User::select('id','first_name','last_name')->where('id','=',$v->user_id)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['jawaban'][$k]['user']['user_id'] = $getDataUser->id; | |
$data['jawaban'][$k]['user']['first_name'] = $getDataUser->first_name; | |
$data['jawaban'][$k]['user']['last_name'] = $getDataUser->last_name; | |
$data['jawaban'][$k]['user']['photo_profile'] = $image; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function gallery($take = 20, $skip = 0, Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$gallery = \App\Models\ImagesTable::where('parent_type', 'vid')->orWhere('parent_type', 'img')->take($take)->skip($skip)->get(); | |
if(! $gallery) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada galeri yang tersedia'], 200); | |
} | |
foreach ($gallery as $k => $v) { | |
$data['gallery'][$k]['id'] = $v->image_id; | |
$data['gallery'][$k]['type'] = ($v->parent_type == 'vid') ? 'video' : 'image'; | |
$data['gallery'][$k]['title'] = $v->title; | |
$data['gallery'][$k]['url'] = $v->path; | |
$data['gallery'][$k]['timestamp'] = $v->added_date; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function galleryImage($page = "", Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
if($page == ""){ | |
$page = 1; | |
} | |
$perhalaman = 20; | |
$hitungSkip = ($page - 1 ) * $perhalaman; | |
$gallery = \App\Models\ImagesTable::where('parent_type', 'img')->take($perhalaman)->skip($hitungSkip)->get(); | |
if(! $gallery) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada galeri yang tersedia'], 200); | |
} | |
foreach ($gallery as $k => $v) { | |
$data['gallery'][$k]['id'] = $v->image_id; | |
$data['gallery'][$k]['type'] = ($v->parent_type == 'vid') ? 'video' : 'image'; | |
$data['gallery'][$k]['title'] = $v->title; | |
$data['gallery'][$k]['url'] = $v->path; | |
$data['gallery'][$k]['timestamp'] = $v->added_date; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function galleryVideo($page = "", Request $request) { | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
if($page == ""){ | |
$page = 1; | |
} | |
$perhalaman = 20; | |
$hitungSkip = ($page - 1 ) * $perhalaman; | |
$gallery = \App\Models\ImagesTable::where('parent_type', 'vid')->take($perhalaman)->skip($hitungSkip)->get(); | |
if(! $gallery) { | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Belum ada galeri yang tersedia'], 200); | |
} | |
foreach ($gallery as $k => $v) { | |
$data['gallery'][$k]['id'] = $v->image_id; | |
$data['gallery'][$k]['type'] = ($v->parent_type == 'vid') ? 'video' : 'image'; | |
$data['gallery'][$k]['title'] = $v->title; | |
$data['gallery'][$k]['url'] = $v->path; | |
$data['gallery'][$k]['timestamp'] = $v->added_date; | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function latest_chat(Request $request) | |
{ | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$latest_chat = \App\Models\LatestChat::where('user_id_to', $userdata['data']['id']) | |
->orWhere('user_id_from', $userdata['data']['id']) | |
->orderBy('id', 'DESC') | |
->get(); | |
if ($latest_chat) { | |
foreach ($latest_chat as $k => $v) { | |
$data['chat'][$k]['id'] = $v->id; | |
$data['chat'][$k]['text'] = $v->text; | |
$data['chat'][$k]['timestamp'] = $v->created_at; | |
//From | |
$getDataUser = User::select('id','first_name','last_name')->where('id',$v->user_id_from)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUser->id); | |
$data['chat'][$k]['from']['id'] = $getDataUser->id; | |
$data['chat'][$k]['from']['first_name'] = $getDataUser->first_name; | |
$data['chat'][$k]['from']['last_name'] = $getDataUser->last_name; | |
$data['chat'][$k]['from']['photo_profile'] = $image; | |
//To | |
$getDataUserTo = User::select('id','first_name','last_name')->where('id',$v->user_id_to)->first(); | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($getDataUserTo->id); | |
$data['chat'][$k]['to']['id'] = $getDataUserTo->id; | |
$data['chat'][$k]['to']['first_name'] = $getDataUserTo->first_name; | |
$data['chat'][$k]['to']['last_name'] = $getDataUserTo->last_name; | |
$data['chat'][$k]['to']['photo_profile'] = $image; | |
if ($userdata['data']['id'] == $v->user_id_to) { | |
$data['chat'][$k]['unread'] = \App\Models\LatestChat::where('user_id_from', $v->user_id_from)->where('user_id_to', $v->user_id_to)->where('status', '0')->count(); | |
}elseif ($userdata['data']['id'] == $v->user_id_from) { | |
$data['chat'][$k]['unread'] = \App\Models\LatestChat::where('user_id_from', $v->user_id_to)->where('user_id_to', $v->user_id_from)->where('status', '0')->count(); | |
} | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function latest_chat_count(Request $request) | |
{ | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$latest_chat = \App\Models\LatestChat::where('user_id_to', $userdata['data']['id'])->where('status', '0')->count(); | |
$data['unread_chat'] = $latest_chat; | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function latest_chat_post(Request $request){ | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
$rules = [ | |
'user_id_from' => 'required', | |
'user_id_to' => 'required', | |
'text' => 'required' | |
]; | |
$validator = Validator::make($request->all(), $rules); | |
if ($validator->fails()) { | |
return response()->json(['status' => false, 'data' => $data, 'message' => $validator->messages()],200); | |
} | |
$latestChat = new \App\Models\LatestChat(); | |
$latestChat->user_id_from = $request->user_id_from; | |
$latestChat->user_id_to = $request->user_id_to; | |
$latestChat->text = $request->text; | |
$latestChat->status = '0'; | |
$latestChat->save(); | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
public function readChat($to, Request $request) | |
{ | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
\App\Models\LatestChat::where('user_id_from','=',$to)->where('user_id_to', $userdata['data']['id'])->update(["status"=>"1"]); | |
return response()->json(['status' => true, 'data' => $data, 'message' => 'Berhasil mengupdate status read chat'], 200); | |
} | |
public function search($keyword, Request $request) | |
{ | |
$userdata = \App\Library\CekToken::cek($request->token); | |
$data = []; | |
//User | |
$user = \App\User::where('first_name', 'LIKE', '%' . $keyword . '%') | |
->orWhere('last_name', 'LIKE', '%' . $keyword . '%') | |
->orWhere('username', 'LIKE', '%' . $keyword . '%') | |
->get(); | |
if ($user) { | |
foreach ($user as $k => $v) { | |
$data['user'][$k]['display_name'] = $v->first_name . ' ' . $v->last_name; | |
$data['user'][$k]['url'] = url('profile') . '/' . $v->id; | |
$image = \App\Library\CustomLibrary::ambilGambarCoy($v->id); | |
$data['user'][$k]['avatar'] = url() . $image; | |
$data['user'][$k]['type'] = 'user'; | |
} | |
} | |
//FJB | |
$fjb = \App\Models\FjbThread::where('forum_title', 'LIKE', '%' . $keyword . '%') | |
->orWhere('forum_description', 'LIKE', '%' . $keyword . '%') | |
->get(); | |
if ($fjb) { | |
foreach ($fjb as $k => $v) { | |
$data['fjb'][$k]['display_name'] = $v->forum_title; | |
$data['fjb'][$k]['url'] = url('fjb/thread') . '/' . $v->id; | |
$image = \App\Models\ImagesTable::select('path' )->where('parent_type','=','commerce_photo')->where('parent_id','=',$v->id)->first(); | |
$data['fjb'][$k]['avatar'] = ($image) ? url('images/commerce') . '/' . $image->path : null; | |
$data['fjb'][$k]['type'] = 'fjb'; | |
} | |
} | |
//Community | |
$community = \App\Models\Community::where('title', 'LIKE', '%' . $keyword . '%') | |
->orWhere('description', 'LIKE', '%' . $keyword . '%') | |
->get(); | |
if ($community) { | |
foreach ($community as $k => $v) { | |
$data['community'][$k]['display_name'] = $v->title; | |
$data['community'][$k]['url'] = url('community') . '/' . $v->group_id; | |
$data['community'][$k]['icon'] = $v->icon; | |
$data['community'][$k]['type'] = 'community'; | |
} | |
} | |
return response()->json(['status' => true, 'data' => $data, 'message' => ''], 200); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment