/** * Store an admin * * @return Response */ public function store() { if (!Input::has('admin')) { return new JSend('error', (array) Input::all(), 'Tidak ada data admin.'); } $errors = new MessageBag(); DB::beginTransaction(); //1. Validate Admin Parameter $admin = Input::get('admin'); if (is_null($admin['id'])) { $is_new = true; } else { $is_new = false; } $admin_rules = ['name' => 'required|max:255', 'email' => 'required|max:255|unique:users,email,' . (!is_null($admin['id']) ? $admin['id'] : ''), 'role' => 'required|in:admin,store_manager,staff', 'is_active' => 'boolean', 'gender' => 'in:male,female', 'date_of_birth' => 'date_format:"Y-m-d H:i:s"']; //1a. Get original data $admin_data = \App\Models\Admin::findornew($admin['id']); //1b. Validate Basic Admin Parameter $validator = Validator::make($admin, $admin_rules); if (!$validator->passes()) { $errors->add('Admin', $validator->errors()); } else { //if validator passed, save admin $admin_data = $admin_data->fill($admin); if (!$admin_data->save()) { $errors->add('Admin', $admin_data->getError()); } } if ($errors->count()) { DB::rollback(); return new JSend('error', (array) Input::all(), $errors); } DB::commit(); $final_admin = \App\Models\Admin::id($admin_data['id'])->with(['audits'])->first()->toArray(); return new JSend('success', (array) $final_admin); }