validate($request, $identification->rules()); $dbIdentification = Identification::where('id_user', $request->id_user)->first(); if ($dbIdentification) return $this->errorResponse(trans('errors.identification_carried_out')); if ($request->has('id_user')) $user = User::findOrFail($request->id_user); elseif ($request->has('phone_number')) $user = User::where('phone', $request->phone_number)->firstOrFail(); $identification->fill($request->all()); $identification->id_user = $user->id; $identification->status = 0; $identification->createdAt = $this->getCurrentTimeByCountryCode($user->network->country->code_country); $identification->save(); $this->sendMail($user->email, trans('messages.successful_identification', ['name' => $identification->lastname . ' ' . $identification->firstname]), trans('messages.successful_identification_message', ['name' => $identification->lastname . ' ' . $identification->firstname])); return $this->successResponse(trans('messages.successful_identification', ['name' => $identification->lastname . ' ' . $identification->firstname])); } public function updateIdentification(Request $request) { $identification = Identification::findOrFail($request->id); $identification->fill($request->all()); $identification->status = 0; $this->deleteImageFile($identification->user_image, "photos"); $this->deleteImageFile($identification->document_image_front, "documents"); $this->deleteImageFile($identification->document_image_back, "documents"); $identification->user_image = ''; $identification->document_image_front = ''; $identification->document_image_back = ''; $identification->save(); $this->sendMail($identification->user->email, trans('messages.successful_identification_modification'), trans('messages.successful_identification_modification_message', ['name' => $identification->lastname . ' ' . $identification->firstname])); return $this->successResponse(trans('messages.successful_identification_modification', ['name' => $identification->lastname . ' ' . $identification->firstname])); } public function validateIdentification(Request $request, $id_identification) { $identification = Identification::findOrFail($id_identification); if ($identification->status == 1) { return $this->errorResponse(trans('messages.identification_already_validated')); } // dd($request->all()); $this->validate($request, [ 'document_image_front' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6048', 'document_image_back' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6048', 'user_image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6048', ]); $identification->document_image_front = $this->uploadImage($request, 'document_image_front', 'D-F', "documents"); $identification->document_image_back = $this->uploadImage($request, 'document_image_back', 'D-B', "documents"); $identification->user_image = $this->uploadImage($request, 'user_image', 'U', "photos"); $identification->status = 1; $identification->save(); $this->sendMail($identification->user->email, trans('messages.validated_identification'), trans('messages.validated_identification_message')); return $this->successResponse(trans('messages.validated_identification')); } public function fetchIdentification($user_phone) { // return Identification::where('id_user', $id_user)->firstOrFail(); $user = User::where('phone', $user_phone)->first(); if ($user) { $identification = Identification::where('id_user', $user->id)->first(); $data['isIdentified'] = false; $data['isIdentifiedValidated'] = false; $data['data'] = $identification; if ($identification) { $data['isIdentified'] = true; $data['isIdentifiedValidated'] = $identification->status == 1; } return $this->successResponse($data); } else { return $this->errorResponse(trans('errors.user_phone_not_exist'), Response::HTTP_NOT_FOUND); } } public function verifyIdentification($user_phone) { $user = User::where('phone', $user_phone)->first(); if ($user) { $identification = Identification::where('id_user', $user->id)->first(); if ($identification) { return $this->errorResponse(trans('messages.user_identificated')); } else return $this->successResponse($user); } else { return $this->errorResponse(trans('errors.user_phone_not_exist'), Response::HTTP_NOT_FOUND); } } private function generateRandomString($length = 10) { $characters = '23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } public function rattachCard(Request $request, $id_user) { $this->validate($request, [ // 'id_user' => 'required|integer|min:0|not_in:0', 'numero_carte' => 'required', 'expiration_date' => 'required_if:facade,front|date_format:m/y|after_or_equal:today', ]); $user = User::findOrFail($id_user); $user->numero_carte = $request->numero_carte; $expiration_date = \DateTime::createFromFormat('m/y', $request->expiration_date); if (!$expiration_date) $expiration_date = new \DateTime(); $user->expiration_date = $expiration_date; $user->save(); return $this->successResponse(trans('messages.successful_card_attachment')); } public function uploadImage(Request $request, $key, $imageCode, $folderName) { // if ($request->hasFile('image')) { $original_filename = $request->file($key)->getClientOriginalName(); $original_filename_arr = explode('.', $original_filename); $file_ext = end($original_filename_arr); $image = $imageCode . '-' . time() . '.' . $file_ext; //Check if the directory already exists. $directoryName = './' . $folderName; if (!is_dir($directoryName)) { //Directory does not exist, so lets create it. mkdir($directoryName, 0755); } // Allow certain file formats // $allowTypes = array('jpg', 'png', 'jpeg', 'gif'); // if (in_array(strtolower($file_ext), $allowTypes)) { $compressedImage = $this->compressImage($request->file($key), './' . $folderName . '/' . $image, 70); if ($compressedImage) { return $image; } else { return $this->errorResponse(trans('errors.compression_failed')); } // } else { // return $this->errorResponse('Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.'); // } // } else { // return $this->errorResponse('File not found'); // } } private function deleteImageFile($filename, $folderName) { // unlink(storage_path('./'.$folderName.'/' . $filename)); $path = './' . $folderName . '/' . $filename; if (File::exists($path)) File::delete($path); } /* * Custom function to compress image size and * upload to the server using PHP */ private function compressImage($source, $destination, $quality) { // Get image info $imgInfo = getimagesize($source); $mime = $imgInfo['mime']; // Create a new image from file switch ($mime) { case 'image/jpeg': $image = imagecreatefromjpeg($source); break; case 'image/png': $image = imagecreatefrompng($source); break; case 'image/gif': $image = imagecreatefromgif($source); break; default: $image = imagecreatefromjpeg($source); } // Save image imagejpeg($image, $destination, $quality); // Return compressed image return $destination; } // Mise a jour du mot de passe public function updatePassword(Request $request) { $this->validate($request, [ 'phone' => 'required', 'type' => 'required|in:user,agent', // 'oldPassword' => 'required', 'newPassword' => 'required', ]); if ($request->type == 'user') { $user = User::where('phone', $request->phone)->firstOrFail(); } else { $agent_plus = AgentPlus::where('phone', $request->phone)->orWhere('transactionNumber', $request->phone)->firstOrFail(); $user = Agent::findOrFail($agent_plus->id); } if ($request->has('oldPassword') && !$this->checkPassword($request->oldPassword, $user->encrypted_password, $user->salt)) return $this->errorResponse(trans('messages.incorrect_user_password')); $hash = $this->hashSSHA($request->newPassword); $user->salt = $hash['salt']; $user->encrypted_password = $hash['encrypted']; $user->save(); $this->sendMail($user->email, trans('messages.password_update'), trans('messages.successful_password_update') . ' ' . trans('messages.your_new_password', ['password' => $request->newPassword])); return $this->successResponse(trans('messages.successful_password_update')); } }