<?php
namespace App\Helper;
use Session;
use Auth;
use App\Models\User;
use App\Models\Spatie\Roles;
use App\Models\Divisi;
use App\Models\GrupTandaTangan;
trait Component
{
public static function selectMonth()
{
$bulan = [
1 => 'Januari',
2 => 'Februari',
3 => 'Maret',
4 => 'April',
5 => 'Mei',
6 => 'Juni',
7 => 'Juli',
8 => 'Agustus',
9 => 'September',
10 => 'Oktober',
11 => 'November',
12 => 'Desember',
];
return collect($bulan);
}
public function saveSuccess($save, $url)
{
if ($save->wasRecentlyCreated) {
Session::flash('message', ['type' => 'success', 'text' => '<i class="fa fa-check"></i> data berhasil disimpan']);
} else {
Session::flash('message', ['type' => 'danger', 'text' => '<i class="fa fa-times"></i> data tidak disimpan karena data sudah ada']);
}
redirect($url)->send();
}
public function updateSuccess($update, $url)
{
Session::flash('message', ['type' => 'success', 'text' => '<i class="fa fa-check"></i> data berhasil diperbarui']);
redirect($url)->send();
}
public function deleteSuccess($url)
{
Session::flash('message', ['type' => 'success', 'text' => 'data berhasil dihapus']);
redirect($url)->send();
}
public function saveFail($request)
{
// Session::flash('message',['type'=>'danger','text'=>'data gagal disimpan']);
$request = (object) $request;
redirect()->back()->withInput($request->toArray())->withErrors('gagal menyimpan data')->send();
}
public function updateFail($request)
{
// Session::flash('message',['type'=>'danger','text'=>'data gagal diperbarui']);
$request = (object) $request;
redirect()->back()->withInput($request->toArray())->withErrors('gagal memperbarui data')->send();
}
public function deleteFail()
{
// Session::flash('message',['type'=>'danger','text'=>'data gagal dihapus']);
redirect()->back()->withErrors('gagal menghapus data')->send();
}
public function signatureRules($role_id, $divisi_id,$perusahaan_id = 0,$atasan_id = null)
{
//menentukan atasan untuk tanda tangan
$rule = collect();
$tandaTangans = GrupTandaTangan::orderBy('urutan', 'asc')->get();
$_current_user = Auth::user();
$_current_role = null;
foreach ($tandaTangans as $index => $tandaTangan) {
$_user = null;
if($index == 1 && $atasan_id != 0 && $atasan_id != null){
if(is_array($atasan_id)){
foreach ($atasan_id as $a_id) {
$_user = User::findOrfail($a_id);
$_current_user = $_user;
$_current_role = $_user->customRoles[0];
$rule->push(
[
'type' => str_replace(' ', '_', strtolower($tandaTangan->group)),
'label' => $tandaTangan->group,
'user_id' => $_current_user->id,
'name' => $_current_user->name,
'jabatan' => @$_current_user->divisi->jabatan,
'ttd' => public_path() . '/images/ttd/' . $_current_user->ttd,
'role' => $_current_role,
]
);
}
} else {
$_user = User::findOrfail($atasan_id);
$_current_user = $_user;
$_current_role = $_user->customRoles[0];
$rule->push(
[
'type' => str_replace(' ', '_', strtolower($tandaTangan->group)),
'label' => $tandaTangan->group,
'user_id' => $_current_user->id,
'name' => $_current_user->name,
'jabatan' => @$_current_user->divisi->jabatan,
'ttd' => public_path() . '/images/ttd/' . $_current_user->ttd,
'role' => $_current_role,
]
);
}
}
$roles = ($index > 0) ? $_current_user->customRoles : $_current_user->customRoles()->where('id', $role_id)->get();
if($index > 0){
foreach ($roles as $role) {
if ($role->parentRole && $role->parentRole->parentRole) {
$divisi_ids = $_current_user->divisis()->pluck('divisi_id')->toArray();
$perusahaan_ids = ($perusahaan_id != 0)?[$perusahaan_id]:$_current_user->perusahaans()->pluck('perusahaan_id')->toArray();
//pengecekan pertama mencari atasan dengan divisi dan perusahaan yang sama
$_user = User::whereHas('roles', function ($query) use ($role) {
$query->where('id', $role->parentRole->parentRole->id);
})->where(function($ww)use($divisi_ids,$perusahaan_ids){
$ww->whereHas('divisis', function ($query) use ($divisi_ids) {
$query->whereIn('divisi_id', $divisi_ids);
})->whereHas('perusahaans', function ($query) use ($perusahaan_ids) {
$query->where('perusahaan_id', $perusahaan_ids);
});
})->first();
if (!$_user) {
//jika tidak ditemukan, akan di cek lagi dengan perusahaan yang sama dan divisi kosong
$_user = User::whereHas('roles', function ($query) use ($role) {
$query->where('id', $role->parentRole->parentRole->id);
})->where(function($ww)use($divisi_ids,$perusahaan_ids){
$ww->whereHas('perusahaans', function ($query) use ($perusahaan_ids) {
$query->where('perusahaan_id', $perusahaan_ids);
})->whereDoesntHave('divisis');
})->first();
}
if (!$_user) {
//jika tidak ditemukan, akan di cek lagi dengan divisi yang sama dan perusahaan kosong
$_user = User::whereHas('roles', function ($query) use ($role) {
$query->where('id', $role->parentRole->parentRole->id);
})->where(function($ww)use($divisi_ids,$perusahaan_ids){
$ww->whereHas('divisis', function ($query) use ($divisi_ids) {
$query->whereIn('divisi_id', $divisi_ids);
})->whereDoesntHave('perusahaans');
})->first();
}
}
if ($_user) {
$_current_user = $_user;
$_current_role = $role;
break;
}
}
}
$rule->push(
[
'type' => str_replace(' ', '_', strtolower($tandaTangan->group)),
'label' => $tandaTangan->group,
'user_id' => $_current_user->id,
'name' => $_current_user->name,
'jabatan' => @$_current_user->divisi->jabatan,
'ttd' => public_path() . '/images/ttd/' . $_current_user->ttd,
'role' => $_current_role ?? $roles[0],
]
);
}
$status = 'close';
$rule->map(function ($item, $key) use ($status) {
$item = (object) $item;
if ($item->user_id == Auth::user()->id) {
$status = 'open';
$item->type = 'pembuat';
$item->label = 'dibuat oleh';
}
if ($status == 'open') {
return $item;
}
});
$rule = collect($rule)->unique('user_id')->values();
return response()->json($rule);
}
public function current($signature)
{
$current = $signature->map(function ($item) {
if ($item->status == '0') {
// if ($item->user_id == Auth::user()->id) {
return $item;
// }
}
})->filter(function ($item) {
return $item != null;
})->first();
return $current;
}
public function nexts($signature)
{
$nexts = $signature->map(function ($item, $key) use ($signature) {
$data = $item;
if ($data->user_id == Auth::user()->id) {
if ($data->status == '0') {
return isset($signature[$key + 1]) ? $signature[$key + 1] : null;
} else {
return isset($signature[$key + 3]) ? $signature[$key + 3] : null;
}
}
})->filter(function ($item) {
return $item != null;
})->first();
return $nexts;
}
public function prev($signature)
{
$prev = $signature->map(function ($item, $key) use ($signature) {
$data = $item;
if ($data->user_id == Auth::user()->id) {
return isset($signature[$key - 1]) ? $signature[$key - 1] : null;
}
})->filter(function ($item) {
return $item != null;
})->first();
return $prev;
}
public function checkStatus($surat)
{
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]