first commit

This commit is contained in:
ahmadrioyo 2024-07-22 10:13:27 +07:00
parent 37e2f60dfd
commit baa9370eff
8 changed files with 319 additions and 105 deletions

View File

@ -12,17 +12,19 @@ class AdminController extends Controller
{
public function user(Request $request)
{
$data = new User;
if($request->get('search')){
$data = $data->where('name','LIKE', '%'.$request->get('search').'%')
->orWhere('user','LIKE','%'.$request->get('search').'%');
$data = User::whereIn('name', ['owner', 'akuntan']);
if ($request->get('search')) {
$data = $data->where(function ($query) use ($request) {
$query->where('name', 'LIKE', '%' . $request->get('search') . '%')
->orWhere('user', 'LIKE', '%' . $request->get('search') . '%');
});
}
$data = $data->get();
return view('admin.user', compact('data', 'request'));
}
public function create(){
return view('admin.create');
}
@ -60,12 +62,12 @@ public function delete(Request $request, $id){
public function edit(Request $request, $id){
$data = User::find($id);
dd($data);
// dd($data);
return view('admin.edit', compact('data'));
}
public function update(Request $request, $id){
// dd($request->all());
// dd($request->status);
$validator = Validator::make($request->all(),[
'nama' => 'required',
'status' => 'required',
@ -76,7 +78,6 @@ public function update(Request $request, $id){
$data['user'] = $request->nama;
$data['name'] = $request->status;
if($request->password){
$data['password'] = Hash::make($request->password);
}
@ -88,4 +89,34 @@ public function update(Request $request, $id){
return redirect()->route('admin.user')->with('success', 'Berhasil mengubah data pengguna!');
}
public function useradmin(Request $request)
{
$d = auth()->user();
return view('admin.admin', compact('d'));
}
public function updateprofile(Request $request, $id){
// dd($request->status);
$validator = Validator::make($request->all(),[
'nama' => 'required',
'status' => 'required',
'password' => 'nullable'
]);
if($validator->fails()) return redirect()->back()->withInput()->withErrors($validator)->with('failed', 'Salah mengisi data pengguna!');
$data['user'] = $request->nama;
$data['name'] = $request->status;
if($request->password){
$data['password'] = Hash::make($request->password);
}
$user = User::find($id);
$user->update($data);
$user->syncRoles($request->status);
return redirect()->route('admin.user.updateprofile')->with('success', 'Berhasil mengubah data pengguna!');
}
}

View File

@ -0,0 +1,68 @@
@extends('layouts.main')
@section('content')
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0">Pengguna</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">Admin</a></li>
<li class="breadcrumb-item active">Pengguna</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card card-primary card-outline">
<div class="card-body box-profile">
<h3 class="profile-username text-center">{{ $d->user }}</h3>
<p class="text-muted text-center">{{ $d->name }}</p>
<a href="#" class="btn btn-info btn-block" data-toggle="modal" data-target="#modalEdit{{ $d->id }}"><b>Ubah Profil</b></a>
@include('admin.editprofil')
</div>
<!-- /.card-body -->
</div>
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</section>
<!-- /.content -->
</div>
@endsection
@section('scripts')
@if($message = Session::get('failed'))
<script>
Swal.fire({
icon: "error",
title: "Oops...",
text: "{{ $message }}",
});
</script>
@endif
@if($message = Session::get('success'))
<script>
Swal.fire({
icon: "success",
// title: "Oops...",
text: "{{ $message }}",
});
</script>
@endif
@endsection

View File

@ -0,0 +1,46 @@
<div class="modal fade" id="modalEdit{{ $d->id }}" data-backdrop="static" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
<form action="{{ route('admin.user.update',['id' => $d->id]) }}" method="post" enctype="multipart/form-data">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Edit Data Pengguna</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
@csrf
@method('put')
<div class="mb-3">
<label for="exampleInputName" class="form-label">Nama Pengguna</label>
<input type="text" class="form-control" name="nama" value="{{ $d->user }}" id="exampleInputName">
@error('nama')
<small>{{ $message }}</small>
@enderror
</div>
<div class="mb-3">
<label for="exampleInputName" class="form-label">Status</label>
<select class="custom-select" name="status" id="inputGroupSelect02">
<option value="{{ $d->name }}" selected>{{ $d->name }}</option>
</select>
@error('status')
<small>{{ $message }}</small>
@enderror
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Password</label>
<input type="password" class="form-control" name="password" id="exampleInputPassword1">
@error('password')
<small>{{ $message }}</small>
@enderror
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Tutup</button>
<button type="submit" class="btn btn-primary">Edit</button>
</div>
</div>
</div>
</form>
</div>
</div>

View File

@ -1,14 +1,14 @@
@extends('layouts.main')
@section('css')
<style>
.select2-container--default .select2-selection--single {
width: 100% !important;
height: calc(1.5em + .75rem + 2px);
border: 1px solid #ced4da;
border-radius: .25rem;
padding: .375rem .75rem;
}
</style>
<style>
.select2-container--default .select2-selection--single {
width: 100% !important;
height: calc(1.5em + .75rem + 2px);
border: 1px solid #ced4da;
border-radius: .25rem;
padding: .375rem .75rem;
}
</style>
@endsection
@section('content')
<div class="content-wrapper">
@ -57,45 +57,45 @@
</thead>
<tbody>
@foreach($data->detail_jurnal as $i => $detail)
<tr>
<td>
<div class="form-group">
<select class="form-control select2" name="inputs[{{ $i }}][akun]" style="width: 100%" required>
<option selected value="{{ $detail->akun->id }}">{{ $detail->akun->nama_akun }} [{{ $detail->akun->kode_akun }}]</option>
@foreach ($akun as $item)
<option value="{{ $item->id }}">{{ $item->nama_akun }} [{{ $item->kode_akun }}]</option>
@endforeach
</select>
<tr>
<td>
<div class="form-group">
<select class="form-control select2" name="inputs[{{ $i }}][akun]" style="width: 100%" required>
<option selected value="{{ $detail->akun->id }}">{{ $detail->akun->nama_akun }} [{{ $detail->akun->kode_akun }}]</option>
@foreach ($akun as $item)
<option value="{{ $item->id }}">{{ $item->nama_akun }} [{{ $item->kode_akun }}]</option>
@endforeach
</select>
</div>
</td>
<td>
<div class="form-group">
<select class="form-control select2" name="inputs[{{ $i }}][transaksi]" style="width: 100%" required>
<option selected value="{{ $detail->transaksi->id }}">{{ $detail->transaksi->nama_transaksi_perkiraan }}</option>
@foreach ($transaksi as $item)
<option value="{{ $item->id }}" data-value="{{ $item->jumlah }}">{{ $item->nama_transaksi_perkiraan }}</option>
@endforeach
</select>
</div>
</td>
<td>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
</td>
<td>
<div class="form-group">
<select class="form-control select2" name="inputs[{{ $i }}][transaksi]" style="width: 100%" required>
<option selected value="{{ $detail->transaksi->id }}">{{ $detail->transaksi->nama_transaksi_perkiraan }}</option>
@foreach ($transaksi as $item)
<option value="{{ $item->id }}">{{ $item->nama_transaksi_perkiraan }}</option>
@endforeach
</select>
<input type="text" class="form-control debit-input" name="inputs[{{ $i }}][debit]" value="{{ number_format($detail->debit, 0, ',', '.') }}" min="0" {{ $detail->debit ? '' : 'disabled' }}>
</div>
</td>
<td>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
</td>
<td>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
<input type="text" class="form-control debit-input" name="inputs[{{ $i }}][debit]" value="{{ number_format($detail->debit, 0, ',', '.') }}" min="0">
</div>
</td>
<td>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
<input type="text" class="form-control kredit-input" name="inputs[{{ $i }}][kredit]" value="{{ number_format($detail->kredit, 0, ',', '.') }}" min="0">
</div>
</td>
<td><button type="button" class="btn btn-outline-danger remove-table-row"><i class="fas fa-minus"></i></button></td>
</tr>
<input type="text" class="form-control kredit-input" name="inputs[{{ $i }}][kredit]" value="{{ number_format($detail->kredit, 0, ',', '.') }}" min="0" {{ $detail->kredit ? '' : 'disabled' }}>
</div>
</td>
<td><button type="button" class="btn btn-outline-danger remove-table-row"><i class="fas fa-minus"></i></button></td>
</tr>
@endforeach
</tbody>
<tfoot>
@ -126,6 +126,7 @@
@section('scripts')
<script>
var i = {{ $data->detail_jurnal->count() - 1 }};
let isDebitTurn = true;
function initializeSelect2() {
$('.select2').select2({
@ -133,52 +134,75 @@ function initializeSelect2() {
});
}
function updateFieldsBasedOnTransaksi() {
$('select[name^="inputs["][name$="[transaksi]"]').off('change').on('change', function() {
var $this = $(this);
var $row = $this.closest('tr');
var transaksiValue = $this.find(':selected').data('value');
var $debitInput = $row.find('.debit-input');
var $kreditInput = $row.find('.kredit-input');
if (transaksiValue) {
var formattedValue = new Intl.NumberFormat('id-ID', {
style: 'decimal',
}).format(transaksiValue).replace(/,/g, '.');
if (isDebitTurn) {
$debitInput.val(formattedValue);
$debitInput.prop('disabled', false);
$kreditInput.val('');
$kreditInput.prop('disabled', true);
} else {
$kreditInput.val(formattedValue);
$kreditInput.prop('disabled', false);
$debitInput.val('');
$debitInput.prop('disabled', true);
}
isDebitTurn = !isDebitTurn;
} else {
$debitInput.val('');
$debitInput.prop('disabled', true);
$kreditInput.val('');
$kreditInput.prop('disabled', true);
}
hitungTotal();
});
}
function toggleAndFormatInputs() {
$('.debit-input').each(function() {
$('.debit-input').off('input').on('input', function() {
var $this = $(this);
var $row = $this.closest('tr');
var $kreditInput = $row.find('.kredit-input');
if ($this.val() && parseInt($this.val().replace(/\D/g, '')) > 0) {
if ($this.val()) {
$kreditInput.prop('disabled', true);
} else {
$kreditInput.prop('disabled', false);
}
$this.on('input', function() {
if ($this.val()) {
$kreditInput.prop('disabled', true);
} else {
$kreditInput.prop('disabled', false);
}
formatCurrency($this);
hitungTotal();
});
formatCurrency($this);
hitungTotal();
});
$('.kredit-input').each(function() {
$('.kredit-input').off('input').on('input', function() {
var $this = $(this);
var $row = $this.closest('tr');
var $debitInput = $row.find('.debit-input');
if ($this.val() && parseInt($this.val().replace(/\D/g, '')) > 0) {
if ($this.val()) {
$debitInput.prop('disabled', true);
} else {
$debitInput.prop('disabled', false);
}
$this.on('input', function() {
if ($this.val()) {
$debitInput.prop('disabled', true);
} else {
$debitInput.prop('disabled', false);
}
formatCurrency($this);
hitungTotal();
});
formatCurrency($this);
hitungTotal();
});
updateFieldsBasedOnTransaksi();
}
function formatCurrency(input) {
@ -216,6 +240,7 @@ function hitungTotal() {
$('#add').click(function() {
++i;
isDebitTurn = !isDebitTurn;
$('#jurnal tbody').append(
`<tr>
<td>
@ -223,7 +248,7 @@ function hitungTotal() {
<select class="form-control select2" name="inputs[${i}][akun]" style="width: 100%" required>
<option selected disabled>Pilih Akun</option>
@foreach ($akun as $item)
<option value="{{ $item->id }}">{{ $item->nama_akun }} [{{ $item->kode_akun }}]</option>
<option value="{{ $item->id }}">{{ $item->nama_akun }} [{{ $item->kode_akun }}]</option>
@endforeach
</select>
</div>
@ -233,7 +258,7 @@ function hitungTotal() {
<select class="form-control select2" name="inputs[${i}][transaksi]" style="width: 100%" required>
<option selected disabled>Pilih Transaksi</option>
@foreach ($transaksi as $item)
<option value="{{ $item->id }}">{{ $item->nama_transaksi_perkiraan }}</option>
<option value="{{ $item->id }}" data-value="{{ $item->jumlah }}">{{ $item->nama_transaksi_perkiraan }}</option>
@endforeach
</select>
</div>
@ -243,7 +268,7 @@ function hitungTotal() {
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
<input type="text" class="form-control debit-input" name="inputs[${i}][debit]" min="0">
<input type="text" class="form-control debit-input" name="inputs[${i}][debit]" min="0" ${!isDebitTurn ? 'disabled' : ''}>
</div>
</td>
<td>
@ -251,7 +276,7 @@ function hitungTotal() {
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
<input type="text" class="form-control kredit-input" name="inputs[${i}][kredit]" min="0">
<input type="text" class="form-control kredit-input" name="inputs[${i}][kredit]" min="0" ${isDebitTurn ? 'disabled' : ''}>
</div>
</td>
<td><button type="button" class="btn btn-outline-danger remove-table-row"><i class="fas fa-minus"></i></button></td>
@ -259,7 +284,7 @@ function hitungTotal() {
);
toggleAndFormatInputs();
initializeSelect2();
hitungTotal($this);
hitungTotal();
});
$(document).on('click', '.remove-table-row', function() {
@ -271,7 +296,7 @@ function hitungTotal() {
toggleAndFormatInputs();
initializeSelect2();
hitungTotal();
$('#jurnalForm').submit(function(event) {
var totalDebit = parseInt($('#totalDebit').text().replace(/\D/g, ''));
var totalKredit = parseInt($('#totalKredit').text().replace(/\D/g, ''));
@ -281,7 +306,7 @@ function hitungTotal() {
alert('Total debit dan kredit harus sama!');
}
});
@if($message = Session::get('failed'))
Swal.fire({
icon: "error",

View File

@ -74,9 +74,9 @@
<select class="form-control select2" name="inputs[0][transaksi]" style="width: 100%;" required>
<option selected disabled>Pilih Transaksi</option>
@foreach ($transaksi as $item)
<option value="{{ $item->id }}">{{ $item->nama_transaksi_perkiraan }}</option>
<option value="{{ $item->id }}" data-value="{{ $item->jumlah }}">{{ $item->nama_transaksi_perkiraan }}</option>
@endforeach
</select>
</select>
</div>
</td>
<td>
@ -130,12 +130,51 @@ function initializeSelect2() {
});
}
let isDebitTurn = true;
function updateFieldsBasedOnTransaksi() {
$('select[name^="inputs["][name$="[transaksi]"]').off('change').on('change', function() {
var $this = $(this);
var $row = $this.closest('tr');
var transaksiValue = $this.find(':selected').data('value');
var $debitInput = $row.find('.debit-input');
var $kreditInput = $row.find('.kredit-input');
if (transaksiValue) {
var formattedValue = new Intl.NumberFormat('id-ID', {
style: 'decimal',
}).format(transaksiValue).replace(/,/g, '.');
if (isDebitTurn) {
$debitInput.val(formattedValue);
$debitInput.prop('disabled', false);
$kreditInput.val('');
$kreditInput.prop('disabled', true);
} else {
$kreditInput.val(formattedValue);
$kreditInput.prop('disabled', false);
$debitInput.val('');
$debitInput.prop('disabled', true);
}
isDebitTurn = !isDebitTurn;
} else {
$debitInput.val('');
$debitInput.prop('disabled', true);
$kreditInput.val('');
$kreditInput.prop('disabled', true);
}
hitungTotal();
});
}
function toggleAndFormatInputs() {
$('.debit-input').off('input').on('input', function() {
var $this = $(this);
var $row = $this.closest('tr');
var $kreditInput = $row.find('.kredit-input');
if ($this.val()) {
$kreditInput.prop('disabled', true);
} else {
@ -160,6 +199,8 @@ function toggleAndFormatInputs() {
formatCurrency($this);
hitungTotal();
});
updateFieldsBasedOnTransaksi();
}
function formatCurrency(input) {
@ -214,7 +255,7 @@ function hitungTotal() {
<select class="form-control select2" name="inputs[${i}][transaksi]" style="width: 100%;" required>
<option selected disabled>Pilih Transaksi</option>
@foreach ($transaksi as $item)
<option value="{{ $item->id }}">{{ $item->nama_transaksi_perkiraan }}</option>
<option value="{{ $item->id }}" data-value="{{ $item->jumlah }}">{{ $item->nama_transaksi_perkiraan }}</option>
@endforeach
</select>
</div>
@ -224,7 +265,7 @@ function hitungTotal() {
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
<input type="text" class="form-control debit-input" name="inputs[${i}][debit]" min="0">
<input type="text" class="form-control debit-input" name="inputs[${i}][debit]" min="0" disabled>
</div>
</td>
<td>
@ -232,12 +273,13 @@ function hitungTotal() {
<div class="input-group-prepend">
<span class="input-group-text">Rp.</span>
</div>
<input type="text" class="form-control kredit-input" name="inputs[${i}][kredit]" min="0">
<input type="text" class="form-control kredit-input" name="inputs[${i}][kredit]" min="0" disabled>
</div>
</td>
<td><button type="button" class="btn btn-outline-danger remove-table-row"><i class="fas fa-minus"></i></button></td>
</tr>`
);
toggleAndFormatInputs();
initializeSelect2();
hitungTotal($this);
@ -248,7 +290,7 @@ function hitungTotal() {
});
$(document).ready(function() {
toggleAndFormatInputs();
toggleAndFormatInputs();
initializeSelect2();
hitungTotal();
@ -261,18 +303,11 @@ function hitungTotal() {
alert('Total debit dan kredit harus sama!');
}
});
@if($message = Session::get('failed'))
Swal.fire({
icon: "error",
title: "Oops...",
text: "{{ $message }}",
});
@endif
@if($message = Session::get('success'))
Swal.fire({
icon: "success",
title: "Oops",
text: "{{ $message }}",
});
@endif

View File

@ -9,7 +9,7 @@
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Akuntan</a></li>
<li class="breadcrumb-item">Akuntan</a></li>
<li class="breadcrumb-item active">Dashboard</li>
</ol>
</div><!-- /.col -->

View File

@ -12,6 +12,14 @@
</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.user.admin') }}" class="nav-link {{ \Route::is('admin.user.admin') ? 'active' : '' }}">
<i class="nav-icon far fa-user"></i>
<p>
Profil Admin
</p>
</a>
</li>
@endcan
@can('view_akuntan')

View File

@ -35,6 +35,7 @@
Route::get('/edit/{id}', [AdminController::class, 'edit'])->name('user.edit');
Route::put('/update/{id}', [AdminController::class, 'update'])->name('user.update');
Route::delete('/delete/{id}', [AdminController::class, 'delete'])->name('user.delete');
Route::get('/user/profile', [AdminController::class, 'useradmin'])->name('user.admin');
});
// akuntan