diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 8366dc388d07574e57c8e7fab49672a136808d7c..b1107dd2dd04119a36b54033a3794ee6b3d68fe1 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -2,15 +2,82 @@ namespace App\Http\Controllers; +use App\Services\PermohonanService; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Validator; + class PermohonanController extends Controller { + private $permohonanService; + public function __construct() { - + $this->permohonanService = new PermohonanService(); } public function index() { - return view('permohonan.index'); + $user = Auth::user(); + + return view('permohonan.index', [ + 'permohonan' => $user->permohonan + ]); + } + + public function create() + { + $user = Auth::user(); + $this->permohonanService->createPermohonan($user); + + return redirect()->action('PermohonanController@update'); + } + + public function update(Request $request) + { + $user = Auth::user(); + if ($this->permohonanService->userHavePermohonan($user)) { + $permohonan = $user->permohonan; + var_dump($request->session()->all()); + exit; + + return view('permohonan.update', [ + 'permohonan' => $permohonan + ]); + } else { + return redirect()->action('PermohonanController@createPermohonan'); + } + } + + public function postUpdate(Request $request) + { + $rules = [ + 'noKtpPria' => 'required|digits:16', + 'namaPria' => 'required', + 'noKtpWanita' => 'required|digits:16', + 'namaWanita' => 'required', + 'statusPria' => 'required', + 'statusWanita' => 'required', + 'istriPriaSebelumnya' => 'required_if:statusPria,1', + 'suamiWanitaSebelumnya' => 'required_if:statusWanita,1' + ]; + + $messages = [ + 'required'=> 'Field :attribute tidak boleh kosong', + 'digits' => 'Field :attribute harus berupa angka dan memiliki panjang 16 digit' + ]; + + $validator = Validator::make($request->input(), $rules, $messages); + + if ($validator->fails()) { + return redirect('permohonan/update')->with('errorMessages', 'asdasd'); + } else { + + } + } + + private function getPreviousSpouseValidation($previousMaritalStatus) + { + } } \ No newline at end of file diff --git a/app/Http/routes.php b/app/Http/routes.php index 59fcd62b56031779594c5519d5ba76648c913db2..cb1fe23d45bde3ac8ce51c976e0abf03830adfad 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -28,6 +28,12 @@ Route::group(['middleware' => ['web']], function () { Route::group(['middleware' => ['auth']], function () { Route::get('/', 'PermohonanController@index'); + + Route::get('/permohonan/create', 'PermohonanController@create'); + + Route::get('/permohonan/update', 'PermohonanController@update'); + + Route::post('/permohonan/update', 'permohonanController@postUpdate'); }); }); Route::group(['middleware' => 'web'], function () { diff --git a/app/Services/PermohonanService.php b/app/Services/PermohonanService.php new file mode 100644 index 0000000000000000000000000000000000000000..f4d2f6509d3d5a1cd7ce17c4cc3e2af7216e3fe8 --- /dev/null +++ b/app/Services/PermohonanService.php @@ -0,0 +1,55 @@ +<?php + +namespace App\Services; + +use App\Models\Permohonan; +use App\User; +use Carbon\Carbon; + +class PermohonanService +{ + public function __construct() + { + + } + + public function userHavePermohonan(User $user) + { + return !($user->permohonan == NULL); + } + + public function createPermohonan(User $user) + { + if ($user->permohonan != NULL) { + $user->permohonan->delete(); + } + + $permohonan = new Permohonan(); + $permohonan->user_id = $user->id; + $permohonan->status = Permohonan::STATUS_NOT_COMPLETED; + return $permohonan->save(); + } + + public function updatePermohonan(User $user, array $data) + { + $user = User::find($user->id); + $permohonan = $user->permohonan; + + if ($permohonan == NULL) { + return false; + } else { + $permohonan->noKtpPria = $data['noKtpPria']; + $permohonan->namaPria = $data['namaPria']; + $permohonan->noKtpWanita = $data['noKtpWanita']; + $permohonan->namaWanita = $data['namaWanita']; + $permohonan->tanggal = new Carbon(); + $permohonan->statusPria = Permohonan::$STATUS_STRING[$data['statusPria']]; + $permohonan->istriPriaSebelumnya = $data['istriPriaSebelumnya']; + $permohonan->statusWanita = Permohonan::$STATUS_STRING[$data['statusWanita']]; + $permohonan->suamiWanitaSebelumnya = $data['suamiWanitaSebelumnya']; + $permohonan->status = Permohonan::STATUS_PENDING; + + return $permohonan->save(); + } + } +} \ No newline at end of file diff --git a/app/User.php b/app/User.php index 8e40a7fb5966a974e79bcadb30835e6de47c12d1..9bf28d15aa6fe96514d89f5a6103f57d75f5bf5a 100644 --- a/app/User.php +++ b/app/User.php @@ -2,6 +2,7 @@ namespace App; +use App\Models\Permohonan; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable @@ -27,4 +28,9 @@ class User extends Authenticatable protected $hidden = [ 'password', 'remember_token', ]; + + public function permohonan() + { + return $this->hasOne(Permohonan::class); + } } diff --git a/app/models/Permohonan.php b/app/models/Permohonan.php new file mode 100644 index 0000000000000000000000000000000000000000..9c87095d20569155e3a963179c9409785140771c --- /dev/null +++ b/app/models/Permohonan.php @@ -0,0 +1,30 @@ +<?php + +namespace App\Models; + +use App\User; +use Illuminate\Database\Eloquent\Model; + +class Permohonan extends Model +{ + const STATUS_NOT_COMPLETED = 0; + const STATUS_PENDING = 1; + const STATUS_APPROVED = 2; + + const STATUS_BELUM_PERNAH_MENIKAH = 0; + const STATUS_PERNAH_MENIKAH = 1; + + public static $STATUS_STRING = [ + "Belum pernah menikah", + "Pernah menikah" + ]; + + protected $table = "permohonan"; + + public $timestamps = false; + + public function user() + { + return $this->belongsTo(User::class, 'user_id'); + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index 4943e17d00d4769130934258197af919f0b5afc8..9439eaaa8c01d1867837fa006acfbb57c7a5596b 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,9 @@ "type": "project", "require": { "php": ">=5.5.9", - "laravel/framework": "5.2.*" + "laravel/framework": "5.2.*", + "laravelcollective/html": "5.2.*", + "illuminate/html": "5.*" }, "require-dev": { "fzaninotto/faker": "~1.4", diff --git a/config/app.php b/config/app.php index 4fc7a63ffea4ec8ad7b8e6dabc45600ef6b24cf9..9dcdf016e0f436a66d23d39123b72855583cd40f 100644 --- a/config/app.php +++ b/config/app.php @@ -156,6 +156,8 @@ return [ App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, + Collective\Html\HtmlServiceProvider::class, + ], /* @@ -201,7 +203,8 @@ return [ 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, - + 'Form' => Collective\Html\FormFacade::class, + 'Html' => Collective\Html\HtmlFacade::class, ], ]; diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php index 3f3c4c8a6d4bbbdd7c9d9197e3af2bd6518c3d26..6308850ec704f612f92bbc4973cd0c01bdb28afd 100644 --- a/resources/views/layouts/base.blade.php +++ b/resources/views/layouts/base.blade.php @@ -2,7 +2,7 @@ <html lang="en" class=""> <head> <meta charset="utf-8" /> - <title>Bandung Web Kit | BDGWEBKIT</title> + <title>Pencatatan Pernikahan</title> <link rel="stylesheet" type="text/css" href="{{ URL::asset('assets/libs/assets/animate.css/animate.css') }}"> <link rel="stylesheet" type="text/css" href="{{ URL::asset('assets/libs/assets/font-awesome/css/font-awesome.min.css') }}"> <link rel="stylesheet" type="text/css" href="{{ URL::asset('assets/libs/assets/simple-line-icons/css/simple-line-icons.css') }}"> @@ -243,115 +243,115 @@ <li class="hidden-folded m-t text-dark-grey text-xs padder-md padder-v-sm"> <span>Navigation</span> </li> - <li> - <a href="index.html" class="text-dark-grey" > + <li class="active"> + <a href="/" class="text-dark-grey" > <i class="icon-bdg_dashboard icon-grey"></i> <span class="font-bold">Dashboard</span> </a> </li> - <li class="line1 dg"></li> + {{--<li class="line1 dg"></li>--}} - <li class="hidden-folded text-dark-grey text-xs padder-md padder-v-sm"> - <span>Components</span> - </li> + {{--<li class="hidden-folded text-dark-grey text-xs padder-md padder-v-sm">--}} + {{--<span>Components</span>--}} + {{--</li>--}} - <li class="active"> - <a href class="auto"> - <span class="pull-right text-muted"> - <i class="text8 icon-bdg_arrow3 text"></i> - <i class="text8 icon-bdg_arrow1 text-active"></i> - </span> - <i class="icon-bdg_uikit"></i> - <span class="font-bold">UI Kits</span> - </a> - <ul class="nav nav-sub dk"> - <li class="nav-sub-header"> - <a href> - <span>UI Kits</span> - </a> - </li> - <li> - <a href="ui_button.html"> - <span>Buttons</span> - </a> - </li> - <li > - <a href="ui_icons.html"> - <b class="badge bg-danger pull-right">3</b> - <span>Icons</span> - </a> - </li> - <li class="active"> - <a href="ui_grid.html"> - <span>Grid</span> - </a> - </li> + {{--<li class="active">--}} + {{--<a href class="auto">--}} + {{--<span class="pull-right text-muted">--}} + {{--<i class="text8 icon-bdg_arrow3 text"></i>--}} + {{--<i class="text8 icon-bdg_arrow1 text-active"></i>--}} + {{--</span>--}} + {{--<i class="icon-bdg_uikit"></i>--}} + {{--<span class="font-bold">UI Kits</span>--}} + {{--</a>--}} + {{--<ul class="nav nav-sub dk">--}} + {{--<li class="nav-sub-header">--}} + {{--<a href>--}} + {{--<span>UI Kits</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href="ui_button.html">--}} + {{--<span>Buttons</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li >--}} + {{--<a href="ui_icons.html">--}} + {{--<b class="badge bg-danger pull-right">3</b>--}} + {{--<span>Icons</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li class="active">--}} + {{--<a href="ui_grid.html">--}} + {{--<span>Grid</span>--}} + {{--</a>--}} + {{--</li>--}} - </ul> - </li> - <li> - <a href="table_static.html" class="auto"> + {{--</ul>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href="table_static.html" class="auto">--}} - <b class="badge bg-info pull-right">2</b> - <i class="icon-bdg_table"></i> - <span class="font-bold">Table</span> - </a> + {{--<b class="badge bg-info pull-right">2</b>--}} + {{--<i class="icon-bdg_table"></i>--}} + {{--<span class="font-bold">Table</span>--}} + {{--</a>--}} - </li> - <li> - <a href="form_element.html" class="auto"> - <i class="icon-bdg_form"></i> - <span class="font-bold">Form</span> - </a> - </li> - <li> - <a href="ui_chart.html"> - <i class="icon-bdg_chart2"></i> - <span class="font-bold">Chart</span> - </a> - </li> - <li> - <a href class="auto"> - <span class="pull-right text-muted"> - <i class="text8 icon-bdg_arrow3 text"></i> - <i class="text8 icon-bdg_arrow1 text-active"></i> - </span> - <i class="icon-bdg_layout"></i> - <span class="font-bold">Pages</span> - </a> - <ul class="nav nav-sub dk"> - <li class="nav-sub-header"> - <a href> - <span>Pages</span> - </a> - </li> + {{--</li>--}} + {{--<li>--}} + {{--<a href="form_element.html" class="auto">--}} + {{--<i class="icon-bdg_form"></i>--}} + {{--<span class="font-bold">Form</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href="ui_chart.html">--}} + {{--<i class="icon-bdg_chart2"></i>--}} + {{--<span class="font-bold">Chart</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href class="auto">--}} + {{--<span class="pull-right text-muted">--}} + {{--<i class="text8 icon-bdg_arrow3 text"></i>--}} + {{--<i class="text8 icon-bdg_arrow1 text-active"></i>--}} + {{--</span>--}} + {{--<i class="icon-bdg_layout"></i>--}} + {{--<span class="font-bold">Pages</span>--}} + {{--</a>--}} + {{--<ul class="nav nav-sub dk">--}} + {{--<li class="nav-sub-header">--}} + {{--<a href>--}} + {{--<span>Pages</span>--}} + {{--</a>--}} + {{--</li>--}} - <li> - <a href="lockscreen.html"> - <span>Lock screen</span> - </a> - </li> - <li> - <a href="signin.html"> - <span>Signin</span> - </a> - </li> - <li> - <a href="register.html"> - <span>Signup</span> - </a> - </li> - <li> - <a href="forgot_password.html"> - <span>Forgot password</span> - </a> - </li> + {{--<li>--}} + {{--<a href="lockscreen.html">--}} + {{--<span>Lock screen</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href="signin.html">--}} + {{--<span>Signin</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href="register.html">--}} + {{--<span>Signup</span>--}} + {{--</a>--}} + {{--</li>--}} + {{--<li>--}} + {{--<a href="forgot_password.html">--}} + {{--<span>Forgot password</span>--}} + {{--</a>--}} + {{--</li>--}} - </ul> - </li> + {{--</ul>--}} + {{--</li>--}} </ul> diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index fe14e9840959799bacd10c3d8955744193e27cca..854f002d800b8ab548f5437d88cab77fd3d4ac3e 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -1,11 +1,37 @@ +@inject('permohonanModel', 'App\Models\Permohonan') + @extends('layouts.base') @section('title') - Daftar Permohonan + Permohonan Pengajuan Catatan Perkawinan @endsection @section('content') - <div class="col-md-12"> - <h1>Aha!!</h1> + <div class="col-sm-8"> + <div class="panel panel-default"> + <div class="panel-heading font-bold">Permohonan</div> + <div class="panel-body"> + @if($permohonan == NULL) + <p>Anda belum mengajukan permohonan pengajuan catatan perkawinan.</p> + <a href="/permohonan/create" class="btn m-b-sm m-r-sm btn-success btn-addon"> + <i class="fa fa-plus"></i> + Buat Permohonan + </a> + @elseif($permohonan->status == $permohonanModel->STATUS_NOT_COMPLETE) + <div class="col-md-8"> + <p>Anda sudah mengajukan permohonan</p> + <a href="/permohonan/update" class="btn btn-info"> + <i class="fa fa-edit"></i> + Update Data + </a> + </div> + <div class="col-md-4"> + <span class="label label-danger pull-right"> + Data Belum Lengkap + </span> + </div> + @endif + </div> + </div> </div> @endsection \ No newline at end of file diff --git a/resources/views/permohonan/update.blade.php b/resources/views/permohonan/update.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..a9a837ee53bce1942116274e354bb6f40a85b12c --- /dev/null +++ b/resources/views/permohonan/update.blade.php @@ -0,0 +1,88 @@ +@extends('layouts.base') + +@section('title') + Permohonan Pengajuan Catatan Perkawinan +@endsection + +@section('content') + <div class="col-sm-12"> + @if(Session::has('errorMessages')) + {{ var_dump(Session::get('errorMessages')->all()) }} + <div class="alert alert-danger"> + Harap betulkan kesalahan pada form + <ul> + @foreach(Session::get('errorMessages') as $error) + <li>{{ $error }}</li> + @endforeach + </ul> + </div> + @endif + + <div class="panel panel-default"> + <div class="panel-heading font-bold"> + Form Permohonan + </div> + <div class="panel-body"> + <form method="POST"> + <div class="row"> + <div class="col-md-6"> + <h4>Mempelai Pria</h4> + + <div class="form-group"> + <label>No. KTP</label> + <input type="text" class="form-control" name="noKtpPria"> + </div> + + <div class="form-group"> + <label>Nama Lengkap</label> + <input type="text" class="form-control" name="namaPria"> + </div> + + <div class="form-group"> + <label>Status Pernikahan Sebelumnya</label> + <select class="form-control" name="statusPria"> + <option value="0">Belum Pernah Menikah</option> + <option value="1">Sudah Pernah Menikah</option> + </select> + </div> + + <div class="form-group"> + <label>Nama Istri Sebelumnya</label> + <input type="text" class="form-control" name="istriPriaSebelumnya"> + </div> + </div> + + <div class="col-md-6"> + <h4>Mempelai Wanita</h4> + + <div class="form-group"> + <label>No. KTP</label> + <input type="text" class="form-control" name="noKtpWanita"> + </div> + + <div class="form-group"> + <label>Nama Lengkap</label> + <input type="text" class="form-control" name="namaWanita"> + </div> + + <div class="form-group"> + <label>Status Pernikahan Sebelumnya</label> + <select class="form-control" name="statusWanita"> + <option value="0">Belum Pernah Menikah</option> + <option value="1">Sudah Pernah Menikah</option> + </select> + </div> + + <div class="form-group"> + <label>Nama Suami Sebelumnya</label> + <input type="text" class="form-control" name="suamiWanitaSebelumnya"> + </div> + </div> + </div> + + <button type="submit" class="btn btn-success">Submit</button> + </form> + </div> + </div> + </div> +@endsection \ No newline at end of file