|
Server : LiteSpeed System : Linux barito.iixcp.rumahweb.net 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64 User : elvh3918 ( 1528) PHP Version : 8.2.31 Disable Function : mail Directory : /home/elvh3918/public_html/pmm/app/Http/Controllers/API/ |
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Storage;
use App\Models\Master\Tenant;
use App\Models\Master\Technician;
use App\Models\Master\Customer;
use App\Models\Master\Item;
use App\Models\Master\Part;
use App\Models\Master\Supplier;
use App\Models\Master\Setting\ServiceType;
use App\Models\Trans\Maintenance;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
class GlobalAPITransController extends Controller
{
public function technician_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:100'],
'phone' => ['required', 'string', 'lowercase', 'max:50'],
]);
if ($validator->fails()) {
return response()->json(['message'=>'input failed', 'value'=>$validator->getMessageBag()->toArray()]);
}
$image = null;
DB::beginTransaction();
try {
// check uploaded image
if (isset($request->image)) {
$files = $request->image;
$filename = $files->store(config('app.dir_file_technician'), 'public');
$image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
} else {
$image = null;
}
$technician = Technician::create([
'name' => $request->name,
'address' => $request->address,
'email' => $request->email,
'phone' => $request->phone,
'map' => $request->map,
'image' => $image,
'description' => $request->description,
'tenant_id' => $request->tenant_id,
'is_active' => $request->is_active != null ? 1: 0,
]);
DB::commit();
return response()->json(['message'=>'store success', 'value'=>$technician]);
} catch (\Exception $e) {
DB::rollBack();
// remove image failed insert data
if (Storage::disk('public')->exists(config('app.dir_file_technician') . '/'. $image)) {
Storage::disk('public')->delete(config('app.dir_file_technician') . '/' . $image);
}
return response()->json(['message'=>'store error', 'value'=>$validator->getMessageBag()->toArray()]);
}
}
public function customer_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:100'],
'phone' => ['required', 'string', 'lowercase', 'max:50'],
]);
if ($validator->fails()) {
return response()->json(['message'=>'input failed', 'value'=>$validator->getMessageBag()->toArray()]);
}
$image = null;
DB::beginTransaction();
try {
// check uploaded image
if (isset($request->image)) {
$files = $request->image;
$filename = $files->store(config('app.dir_file_customer'), 'public');
$image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
} else {
$image = null;
}
$customer = Customer::create([
'name' => $request->name,
'address' => $request->address,
'email' => $request->email,
'phone' => $request->phone,
'map' => $request->map,
'image' => $image,
'description' => $request->description,
'tenant_id' => $request->tenant_id,
'is_active' => $request->is_active != null ? 1: 0,
]);
DB::commit();
return response()->json(['message'=>'store success', 'value'=>$customer]);
} catch (\Exception $e) {
DB::rollBack();
// remove image failed insert data
if (Storage::disk('public')->exists(config('app.dir_file_customer') . '/'. $image)) {
Storage::disk('public')->delete(config('app.dir_file_customer') . '/' . $image);
}
return response()->json(['message'=>'store error', 'value'=>$validator->getMessageBag()->toArray()]);
}
}
public function item_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:100'],
]);
if ($validator->fails()) {
return response()->json(['message'=>'input failed', 'value'=>$validator->getMessageBag()->toArray()]);
}
$image = null;
DB::beginTransaction();
try {
// check uploaded image
if (isset($request->image)) {
$files = $request->image;
$filename = $files->store(config('app.dir_file_item'), 'public');
$image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
} else {
$image = null;
}
$item = item::create([
'code' => $request->code,
'name' => $request->name,
'image' => $image,
'description' => $request->description,
'customer_id' => $request->customer_id,
'is_active' => $request->is_active != null ? 1: 0,
]);
DB::commit();
return response()->json(['message'=>'store success', 'value'=>$item]);
} catch (\Exception $e) {
DB::rollBack();
// remove image failed insert data
if (Storage::disk('public')->exists(config('app.dir_file_item') . '/'. $image)) {
Storage::disk('public')->delete(config('app.dir_file_item') . '/' . $image);
}
return response()->json(['message'=>'store error', 'value'=>$validator->getMessageBag()->toArray()]);
}
}
public function image_item_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$image = null;
DB::beginTransaction();
try {
// check uploaded image
if (isset($request->image)) {
$files = $request->image;
$filename = $files->store(config('app.dir_file_item'), 'public');
$image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
} else {
$image = null;
}
$item = item::where('id', '=', $request->item_id)->update([
'image' => $image,
]);
DB::commit();
return response()->json(['message'=>'update success', 'value'=>$image]);
} catch (\Exception $e) {
DB::rollBack();
// remove image failed insert data
if (Storage::disk('public')->exists(config('app.dir_file_item') . '/'. $image)) {
Storage::disk('public')->delete(config('app.dir_file_item') . '/' . $image);
}
return response()->json(['message'=>'update error']);
}
}
public function service_type_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:100'],
]);
if ($validator->fails()) {
return response()->json(['message'=>'input failed', 'value'=>$validator->getMessageBag()->toArray()]);
}
DB::beginTransaction();
try {
$service_type = ServiceType::create([
'name' => $request->name,
'description' => $request->description,
'tenant_id' => $request->tenant_id,
'is_active' => $request->is_active != null ? 1: 0,
]);
DB::commit();
return response()->json(['message'=>'store success', 'value'=>$service_type]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json(['message'=>'store error', 'value'=>$validator->getMessageBag()->toArray()]);
}
}
public function part_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:100'],
]);
if ($validator->fails()) {
return response()->json(['message'=>'input failed', 'value'=>$validator->getMessageBag()->toArray()]);
}
$image = null;
DB::beginTransaction();
try {
// check uploaded image
if (isset($request->image)) {
$files = $request->image;
$filename = $files->store(config('app.dir_file_part'), 'public');
$image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
} else {
$image = null;
}
$part = part::create([
'code' => $request->code,
'name' => $request->name,
'rate' => $request->rate,
'image' => $image,
'description' => $request->description,
'supplier_id' => $request->supplier_id,
'is_active' => $request->is_active != null ? 1: 0,
]);
DB::commit();
return response()->json(['message'=>'store success', 'value'=>$part]);
} catch (\Exception $e) {
DB::rollBack();
// remove image failed insert data
if (Storage::disk('public')->exists(config('app.dir_file_part') . '/'. $image)) {
Storage::disk('public')->delete(config('app.dir_file_part') . '/' . $image);
}
return response()->json(['message'=>'store error', 'value'=>$validator->getMessageBag()->toArray()]);
}
}
public function supplier_store(Request $request) {
$user = Auth::user()->load('model');
if ($user->model_type == 'App\Models\Master\Tenant' && $user->model->id != $request->tenant_id) {
return response()->json(['message'=>'system blocked, wrong id']);
}
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:100'],
'phone' => ['required', 'string', 'lowercase', 'max:50'],
]);
if ($validator->fails()) {
return response()->json(['message'=>'input failed', 'value'=>$validator->getMessageBag()->toArray()]);
}
$image = null;
DB::beginTransaction();
try {
// check uploaded image
if (isset($request->image)) {
$files = $request->image;
$filename = $files->store(config('app.dir_file_supplier'), 'public');
$image = pathinfo(storage_path($filename), PATHINFO_BASENAME);
} else {
$image = null;
}
$supplier = Supplier::create([
'name' => $request->name,
'address' => $request->address,
'email' => $request->email,
'phone' => $request->phone,
'map' => $request->map,
'image' => $image,
'description' => $request->description,
'tenant_id' => $request->tenant_id,
'is_active' => $request->is_active != null ? 1: 0,
]);
DB::commit();
return response()->json(['message'=>'store success', 'value'=>$supplier]);
} catch (\Exception $e) {
DB::rollBack();
// remove image failed insert data
if (Storage::disk('public')->exists(config('app.dir_file_supplier') . '/'. $image)) {
Storage::disk('public')->delete(config('app.dir_file_supplier') . '/' . $image);
}
return response()->json(['message'=>'store error', 'value'=>$validator->getMessageBag()->toArray()]);
}
}
public function item_show($column, $value, $customer_id) {
$query = Item::with('customer.tenant')->where($column, '=', $value)->where('is_active', '=', 1);
if (Auth::user()->model_type == 'App\Models\Master\Tenant') {
$query = $query->whereRelation('customer.tenant', 'id', '=', Auth::user()->model_id);
}
if ($customer_id != 0) {
$query = $query->where('customer_id', '=', $customer_id);
}
$query = $query->first();
return response()->json($query);
}
public function part_show($column, $value) {
$query = Part::with('supplier', 'supplier.tenant')->where($column, '=', $value)->where('is_active', '=', 1);
if (Auth::user()->model_type == 'App\Models\Master\Tenant') {
$query = $query->whereRelation('supplier.tenant', 'id', '=', Auth::user()->model_id);
}
$query = $query->first();
return response()->json($query);
}
}