/** * Store a point * * @return Response */ public function store() { if (!Input::has('point')) { return new JSend('error', (array) Input::all(), 'Tidak ada data point.'); } $errors = new MessageBag(); DB::beginTransaction(); //1. Validate Point Parameter $point = Input::get('point'); if (is_null($point['id'])) { $is_new = true; } else { $is_new = false; } //1. Get original data $point_data = \App\Models\PointLog::findornew($point['id']); if (!$errors->count()) { $point_rules = ['user_id' => 'required|exists:users,id', 'amount' => 'required|numeric', 'expired_at' => 'required|date_format:"Y-m-d H:i:s"', 'notes' => 'required']; $validator = Validator::make($point, $point_rules); if (!$validator->passes()) { $errors->add('Point', $validator->errors()); } else { $point_data = new \App\Models\PointLog(); $point_data = $point_data->fill($point); if (!$point_data->save()) { $errors->add('Point', $point_data->getError()); } } } if ($errors->count()) { DB::rollback(); return new JSend('error', (array) Input::all(), $errors); } DB::commit(); $final_point = \App\Models\PointLog::id($point_data['id'])->with(['user'])->first()->toArray(); return new JSend('success', (array) $final_point); }