diff --git a/Status.php b/Status.php new file mode 100644 index 0000000..5868e98 --- /dev/null +++ b/Status.php @@ -0,0 +1,10 @@ + 'required|int|exists:questions,id', + 'value' => 'required|boolean', + ]; + } + +} diff --git a/VoiceController.php b/VoiceController.php index b0a3f1c..bd43fb9 100644 --- a/VoiceController.php +++ b/VoiceController.php @@ -1,48 +1,56 @@ -public function voice(Request $request){ - $request->validate([ - 'question_id'=>'required|int|exists:questions,id', - 'value'=>'required|boolean', - ]); - - $question=Question::find($request->post('question_id')); - if (!$question) - return response()->json([ - 'status'=>404, - 'message'=>'not found question ..' - ]); - if ($question->user_id==auth()->id()) - return response()->json([ - 'status' => 500, - 'message' => 'The user is not allowed to vote to your question' - ]); +post('question_id')); + + if ($question->user_id == auth()->id()) { + return response()->json([ + 'status' => Status::ERROR, + 'message' => 'The user is not allowed to vote to your question' + ]); + } + + $voice = $question + ->voice() + ->where('question_id', '=', $request->post('question_id')) + ->first(); + + if (is_null($voice)) { + $question->voice()->create([ + 'user_id' => auth()->id(), + 'value' => $request->post('value') + ]); + + return response()->json([ + 'status' => Status::OK, + 'message' => 'Voting completed successfully' + ]); + } + + if ($voice->value === $request->post('value')) { + return response()->json([ + 'status' => Status::ERROR, + 'message' => 'The user is not allowed to vote more than once' + ]); + } - //check if user voted - $voice=Voice::where([ - ['user_id','=',auth()->id()], - ['question_id','=',$request->post('question_id')] - ])->first(); - if (!is_null($voice)&&$voice->value===$request->post('value')) { - return response()->json([ - 'status' => 500, - 'message' => 'The user is not allowed to vote more than once' - ]); - }else if (!is_null($voice)&&$voice->value!==$request->post('value')){ $voice->update([ - 'value'=>$request->post('value') + 'value' => $request->post('value') ]); + return response()->json([ - 'status'=>201, - 'message'=>'update your voice' + 'status' => Status::UPDATED, + 'message' => 'update your voice' ]); } - - $question->voice()->create([ - 'user_id'=>auth()->id(), - 'value'=>$request->post('value') - ]); - - return response()->json([ - 'status'=>200, - 'message'=>'Voting completed successfully' - ]); -} \ No newline at end of file +}