refactor: replace individual attribute assignments and save calls with mass update() calls across service classes

This commit is contained in:
Yoga Pangestu 2026-06-22 12:26:38 +07:00
parent b88c2b4701
commit 747836be91
13 changed files with 111 additions and 86 deletions

View File

@ -14,9 +14,10 @@ class ProfileService
public function update(array $validated, User $user): void public function update(array $validated, User $user): void
{ {
DB::transaction(function () use ($user, $validated): void { DB::transaction(function () use ($user, $validated): void {
$user->email = $validated['email']; $user->update([
$user->username = $validated['username']; 'email' => $validated['email'],
$user->save(); 'username' => $validated['username'],
]);
$user->profile()->updateOrCreate( $user->profile()->updateOrCreate(
['user_id' => $user->id], ['user_id' => $user->id],
@ -36,7 +37,8 @@ public function update(array $validated, User $user): void
*/ */
public function updatePassword(User $user, string $password): void public function updatePassword(User $user, string $password): void
{ {
$user->password = Hash::make($password); $user->update([
$user->save(); 'password' => Hash::make($password),
]);
} }
} }

View File

@ -100,10 +100,11 @@ public function create(array $validated, User $user): void
public function update(EmployeeAdvance $employeeAdvance, array $validated, User $user): void public function update(EmployeeAdvance $employeeAdvance, array $validated, User $user): void
{ {
DB::transaction(function () use ($employeeAdvance, $validated): void { DB::transaction(function () use ($employeeAdvance, $validated): void {
$employeeAdvance->amount = (int) $validated['amount']; $employeeAdvance->update([
$employeeAdvance->description = $validated['description']; 'amount' => (int) $validated['amount'],
$employeeAdvance->due_date = $validated['due_date']; 'description' => $validated['description'],
$employeeAdvance->save(); 'due_date' => $validated['due_date'],
]);
}); });
$this->pushNotificationService->sendToRoles( $this->pushNotificationService->sendToRoles(
@ -146,11 +147,12 @@ public function approve(EmployeeAdvance $employeeAdvance, User $user): void
$user, $user,
); );
$employeeAdvance->cash_transaction_id = $cashTransaction->id; $employeeAdvance->update([
$employeeAdvance->status = EmployeeAdvanceStatus::APPROVED; 'cash_transaction_id' => $cashTransaction->id,
$employeeAdvance->verified_at = now(); 'status' => EmployeeAdvanceStatus::APPROVED,
$employeeAdvance->verified_by_id = $user->id; 'verified_at' => now(),
$employeeAdvance->save(); 'verified_by_id' => $user->id,
]);
}); });
$employeeAdvance->loadMissing('employee.user'); $employeeAdvance->loadMissing('employee.user');
@ -167,10 +169,11 @@ public function approve(EmployeeAdvance $employeeAdvance, User $user): void
public function reject(EmployeeAdvance $employeeAdvance, string $reason, User $user): void public function reject(EmployeeAdvance $employeeAdvance, string $reason, User $user): void
{ {
DB::transaction(function () use ($employeeAdvance, $user, $reason): void { DB::transaction(function () use ($employeeAdvance, $user, $reason): void {
$employeeAdvance->status = EmployeeAdvanceStatus::REJECTED; $employeeAdvance->update([
$employeeAdvance->verified_at = now(); 'status' => EmployeeAdvanceStatus::REJECTED,
$employeeAdvance->verified_by_id = $user->id; 'verified_at' => now(),
$employeeAdvance->save(); 'verified_by_id' => $user->id,
]);
$employeeAdvance->rejection()->create([ $employeeAdvance->rejection()->create([
'reason' => $reason, 'reason' => $reason,
@ -206,11 +209,12 @@ public function pay(EmployeeAdvance $employeeAdvance, User $user): void
$user, $user,
); );
$employeeAdvance->repayment_cash_transaction_id = $cashTransaction->id; $employeeAdvance->update([
$employeeAdvance->paid_at = now(); 'repayment_cash_transaction_id' => $cashTransaction->id,
$employeeAdvance->paid_by_id = $user->id; 'paid_at' => now(),
$employeeAdvance->status = EmployeeAdvanceStatus::PAID; 'paid_by_id' => $user->id,
$employeeAdvance->save(); 'status' => EmployeeAdvanceStatus::PAID,
]);
}); });
} }

View File

@ -72,8 +72,9 @@ public function create(array $validated, User $user): void
$user, $user,
); );
$expense->cash_transaction_id = $cashTransaction->id; $expense->update([
$expense->save(); 'cash_transaction_id' => $cashTransaction->id,
]);
$this->syncPhotos($expense, $validated); $this->syncPhotos($expense, $validated);
@ -97,9 +98,10 @@ public function update(Expense $expense, array $validated): void
$amount = (int) $validated['amount']; $amount = (int) $validated['amount'];
$description = $validated['description']; $description = $validated['description'];
$expense->amount = $amount; $expense->update([
$expense->description = $description; 'amount' => $amount,
$expense->save(); 'description' => $description,
]);
if ($expense->cashTransaction) { if ($expense->cashTransaction) {
$this->cashService->updateReferencedTransaction( $this->cashService->updateReferencedTransaction(

View File

@ -135,11 +135,12 @@ public function checkOut(array $validated, User $user): void
$checkOutAt = now(); $checkOutAt = now();
$workDurationMinutes = (int) $attendance->check_in_at->diffInMinutes($checkOutAt); $workDurationMinutes = (int) $attendance->check_in_at->diffInMinutes($checkOutAt);
$attendance->check_out_at = $checkOutAt; $attendance->update([
$attendance->check_out_latitude = $validated['latitude']; 'check_out_at' => $checkOutAt,
$attendance->check_out_longitude = $validated['longitude']; 'check_out_latitude' => $validated['latitude'],
$attendance->work_duration_minutes = $workDurationMinutes; 'check_out_longitude' => $validated['longitude'],
$attendance->save(); 'work_duration_minutes' => $workDurationMinutes,
]);
$this->mediaService->addBase64Image( $this->mediaService->addBase64Image(
$attendance, $attendance,

View File

@ -92,9 +92,10 @@ public function update(User $user, array $validated): void
$employee = $user->employee; $employee = $user->employee;
DB::transaction(function () use ($validated, $user, $employee): void { DB::transaction(function () use ($validated, $user, $employee): void {
$user->email = $validated['email']; $user->update([
$user->username = $validated['username']; 'email' => $validated['email'],
$user->save(); 'username' => $validated['username'],
]);
$user->profile()->updateOrCreate( $user->profile()->updateOrCreate(
['user_id' => $user->id], ['user_id' => $user->id],
@ -111,10 +112,11 @@ public function update(User $user, array $validated): void
if ($hasEmployee) { if ($hasEmployee) {
if ($employee) { if ($employee) {
$employee->join_date = $validated['join_date']; $employee->update([
$employee->employment_status = $validated['employment_status']; 'join_date' => $validated['join_date'],
$employee->base_salary = $validated['base_salary']; 'employment_status' => $validated['employment_status'],
$employee->save(); 'base_salary' => $validated['base_salary'],
]);
} else { } else {
Employee::create([ Employee::create([
'user_id' => $user->id, 'user_id' => $user->id,
@ -135,8 +137,9 @@ public function update(User $user, array $validated): void
public function toggleStatus(User $user, array $validated): void public function toggleStatus(User $user, array $validated): void
{ {
$user->is_active = $validated['is_active']; $user->update([
$user->save(); 'is_active' => $validated['is_active'],
]);
if (! $validated['is_active']) { if (! $validated['is_active']) {
DB::table('sessions')->where('user_id', $user->id)->delete(); DB::table('sessions')->where('user_id', $user->id)->delete();
@ -145,8 +148,9 @@ public function toggleStatus(User $user, array $validated): void
public function resetPassword(User $user): void public function resetPassword(User $user): void
{ {
$user->password = config('auth.password_default'); $user->update([
$user->save(); 'password' => config('auth.password_default'),
]);
DB::table('sessions')->where('user_id', $user->id)->delete(); DB::table('sessions')->where('user_id', $user->id)->delete();
} }

View File

@ -96,10 +96,11 @@ public function update(LeaveRequest $leaveRequest, array $validated, User $user)
$this->ensureMinimumLeadTime($startDate); $this->ensureMinimumLeadTime($startDate);
$leaveRequest->start_date = $startDate; $leaveRequest->update([
$leaveRequest->end_date = $endDate; 'start_date' => $startDate,
$leaveRequest->total_days = $this->calculateTotalDays($startDate, $endDate); 'end_date' => $endDate,
$leaveRequest->save(); 'total_days' => $this->calculateTotalDays($startDate, $endDate),
]);
$this->pushNotificationService->sendToRoles( $this->pushNotificationService->sendToRoles(
'✏️ Pengajuan Cuti Diperbarui', '✏️ Pengajuan Cuti Diperbarui',
@ -127,10 +128,11 @@ public function delete(LeaveRequest $leaveRequest): void
public function approve(LeaveRequest $leaveRequest, User $user): void public function approve(LeaveRequest $leaveRequest, User $user): void
{ {
DB::transaction(function () use ($leaveRequest, $user): void { DB::transaction(function () use ($leaveRequest, $user): void {
$leaveRequest->status = LeaveRequestStatus::APPROVED; $leaveRequest->update([
$leaveRequest->verified_at = Carbon::now(); 'status' => LeaveRequestStatus::APPROVED,
$leaveRequest->verified_by_id = $user->id; 'verified_at' => Carbon::now(),
$leaveRequest->save(); 'verified_by_id' => $user->id,
]);
}); });
$leaveRequest->loadMissing('employee.user'); $leaveRequest->loadMissing('employee.user');
@ -147,10 +149,11 @@ public function approve(LeaveRequest $leaveRequest, User $user): void
public function reject(LeaveRequest $leaveRequest, string $reason, User $user): void public function reject(LeaveRequest $leaveRequest, string $reason, User $user): void
{ {
DB::transaction(function () use ($leaveRequest, $user, $reason): void { DB::transaction(function () use ($leaveRequest, $user, $reason): void {
$leaveRequest->status = LeaveRequestStatus::REJECTED; $leaveRequest->update([
$leaveRequest->verified_at = Carbon::now(); 'status' => LeaveRequestStatus::REJECTED,
$leaveRequest->verified_by_id = $user->id; 'verified_at' => Carbon::now(),
$leaveRequest->save(); 'verified_by_id' => $user->id,
]);
$leaveRequest->rejection()->create([ $leaveRequest->rejection()->create([
'reason' => $reason, 'reason' => $reason,

View File

@ -237,8 +237,9 @@ public function create(array $validated, User $user): Purchase
]); ]);
foreach ($draftItems as $item) { foreach ($draftItems as $item) {
$item->purchase_id = $purchase->id; $item->update([
$item->save(); 'purchase_id' => $purchase->id,
]);
$this->incrementStock($item); $this->incrementStock($item);
} }
@ -278,13 +279,14 @@ public function update(Purchase $purchase, array $validated): void
$shippingCost = (int) ($validated['shipping_cost'] ?? 0); $shippingCost = (int) ($validated['shipping_cost'] ?? 0);
$total = max($subtotal - $discount + $shippingCost, 0); $total = max($subtotal - $discount + $shippingCost, 0);
$purchase->supplier_id = $validated['supplier_id']; $purchase->update([
$purchase->subtotal = $subtotal; 'supplier_id' => $validated['supplier_id'],
$purchase->discount = $discount; 'subtotal' => $subtotal,
$purchase->shipping_cost = $shippingCost; 'discount' => $discount,
$purchase->total = $total; 'shipping_cost' => $shippingCost,
$purchase->notes = $validated['notes'] ?? null; 'total' => $total,
$purchase->save(); 'notes' => $validated['notes'] ?? null,
]);
foreach ($lineItems as $itemData) { foreach ($lineItems as $itemData) {
$purchaseItem = $purchase->items()->create($itemData); $purchaseItem = $purchase->items()->create($itemData);

View File

@ -41,7 +41,7 @@ public function create(array $validated): void
*/ */
public function update(Category $category, array $validated): void public function update(Category $category, array $validated): void
{ {
$category->fill($validated)->save(); $category->update($validated);
} }
public function delete(Category $category): void public function delete(Category $category): void

View File

@ -43,7 +43,7 @@ public function create(array $validated): void
*/ */
public function update(Customer $customer, array $validated): void public function update(Customer $customer, array $validated): void
{ {
$customer->fill($validated)->save(); $customer->update($validated);
} }
public function delete(Customer $customer): void public function delete(Customer $customer): void

View File

@ -94,9 +94,10 @@ public function create(array $validated): void
public function update(Product $product, array $validated): void public function update(Product $product, array $validated): void
{ {
DB::transaction(function () use ($validated, $product): void { DB::transaction(function () use ($validated, $product): void {
$product->name = $validated['name']; $product->update([
$product->description = $validated['description'] ?? null; 'name' => $validated['name'],
$product->save(); 'description' => $validated['description'] ?? null,
]);
$product->categories()->sync($validated['category_ids']); $product->categories()->sync($validated['category_ids']);
@ -117,9 +118,10 @@ public function update(Product $product, array $validated): void
foreach ($validated['variants'] as $index => $variantData) { foreach ($validated['variants'] as $index => $variantData) {
if (! empty($variantData['id'])) { if (! empty($variantData['id'])) {
$variant = $product->variants()->findOrFail($variantData['id']); $variant = $product->variants()->findOrFail($variantData['id']);
$variant->name = $variantData['name']; $variant->update([
$variant->stock = $variantData['stock']; 'name' => $variantData['name'],
$variant->save(); 'stock' => $variantData['stock'],
]);
$this->syncVariantImages($variant, $variantData, $index); $this->syncVariantImages($variant, $variantData, $index);
continue; continue;
@ -132,8 +134,9 @@ public function update(Product $product, array $validated): void
public function toggleStatus(Product $product, array $validated): void public function toggleStatus(Product $product, array $validated): void
{ {
$product->is_active = $validated['is_active']; $product->update([
$product->save(); 'is_active' => $validated['is_active'],
]);
} }
public function delete(Product $product): void public function delete(Product $product): void

View File

@ -94,8 +94,9 @@ public function create(array $validated): void
public function update(RawMaterial $rawMaterial, array $validated): void public function update(RawMaterial $rawMaterial, array $validated): void
{ {
DB::transaction(function () use ($validated, $rawMaterial): void { DB::transaction(function () use ($validated, $rawMaterial): void {
$rawMaterial->name = $validated['name']; $rawMaterial->update([
$rawMaterial->save(); 'name' => $validated['name'],
]);
$submittedPriceIds = collect($validated['prices']) $submittedPriceIds = collect($validated['prices'])
->pluck('id') ->pluck('id')
@ -114,10 +115,11 @@ public function update(RawMaterial $rawMaterial, array $validated): void
foreach ($validated['prices'] as $index => $priceData) { foreach ($validated['prices'] as $index => $priceData) {
if (! empty($priceData['id'])) { if (! empty($priceData['id'])) {
$price = $rawMaterial->prices()->findOrFail($priceData['id']); $price = $rawMaterial->prices()->findOrFail($priceData['id']);
$price->variant = $priceData['variant']; $price->update([
$price->price = $priceData['price']; 'variant' => $priceData['variant'],
$price->stock = $priceData['stock']; 'price' => $priceData['price'],
$price->save(); 'stock' => $priceData['stock'],
]);
$this->syncPriceImages($price, $priceData, $index); $this->syncPriceImages($price, $priceData, $index);
continue; continue;
@ -130,8 +132,9 @@ public function update(RawMaterial $rawMaterial, array $validated): void
public function toggleStatus(RawMaterial $rawMaterial, array $validated): void public function toggleStatus(RawMaterial $rawMaterial, array $validated): void
{ {
$rawMaterial->is_active = $validated['is_active']; $rawMaterial->update([
$rawMaterial->save(); 'is_active' => $validated['is_active'],
]);
} }
public function delete(RawMaterial $rawMaterial): void public function delete(RawMaterial $rawMaterial): void

View File

@ -43,7 +43,7 @@ public function create(array $validated): void
*/ */
public function update(Supplier $supplier, array $validated): void public function update(Supplier $supplier, array $validated): void
{ {
$supplier->fill($validated)->save(); $supplier->update($validated);
} }
public function delete(Supplier $supplier): void public function delete(Supplier $supplier): void

View File

@ -56,10 +56,11 @@ public function update(Role $role, array $validated): void
{ {
DB::transaction(function () use ($role, $validated): void { DB::transaction(function () use ($role, $validated): void {
// Protect developer and owner names from changing // Protect developer and owner names from changing
$updateData = [];
if (! in_array($role->name, [EnumsRole::DEVELOPER->value, EnumsRole::OWNER->value], true)) { if (! in_array($role->name, [EnumsRole::DEVELOPER->value, EnumsRole::OWNER->value], true)) {
$role->name = Str::slug($validated['name']); $updateData['name'] = Str::slug($validated['name']);
} }
$role->save(); $role->update($updateData);
$role->syncPermissions($validated['permissions'] ?? []); $role->syncPermissions($validated['permissions'] ?? []);
}); });