walletservice/app/Http/Controllers/UserController.php

196 lines
7.8 KiB
PHP
Raw Normal View History

2020-06-11 13:42:35 +00:00
<?php
namespace App\Http\Controllers;
use App\Models\Agent;
use App\Models\AgentPlus;
2020-06-11 13:42:35 +00:00
use App\Models\Identification;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class UserController extends Controller
{
2020-06-11 13:42:35 +00:00
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
public function identification(Request $request)
{
$identification = new Identification();
$this->validate($request, $identification->rules());
$dbIdentification = Identification::where('id_user', $request->id_user)->first();
if ($dbIdentification)
2020-06-11 13:42:35 +00:00
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();
2020-06-11 13:42:35 +00:00
$identification->fill($request->all());
$identification->id_user = $user->id;
2020-06-11 13:42:35 +00:00
$identification->status = 0;
$identification->createdAt = $this->getCurrentTimeByCountryCode($user->network->country->code_country);
2020-06-11 13:42:35 +00:00
$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]));
2020-06-11 13:42:35 +00:00
}
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());
2020-06-11 13:42:35 +00:00
$this->validate($request, [
2021-11-02 16:24:46 +00:00
'document_image_front' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
'document_image_back' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
'user_image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
2020-06-11 13:42:35 +00:00
]);
$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");
2020-06-11 13:42:35 +00:00
$identification->status = 1;
$identification->save();
$this->sendMail($identification->user->email, trans('messages.validated_identification'), trans('messages.validated_identification_message'));
2020-06-11 13:42:35 +00:00
return $this->successResponse(trans('messages.validated_identification'));
}
2020-06-19 18:33:10 +00:00
public function fetchIdentification($user_phone)
2020-06-12 06:11:11 +00:00
{
2020-06-16 11:23:09 +00:00
// return Identification::where('id_user', $id_user)->firstOrFail();
2020-06-19 19:31:32 +00:00
$user = User::where('phone', $user_phone)->first();
if ($user) {
2020-06-19 19:31:32 +00:00
$identification = Identification::where('id_user', $user->id)->first();
$data['isIdentified'] = false;
$data['isIdentifiedValidated'] = false;
$data['data'] = $identification;
if ($identification) {
2020-06-19 19:31:32 +00:00
$data['isIdentified'] = true;
$data['isIdentifiedValidated'] = $identification->status == 1;
2020-06-19 19:31:32 +00:00
}
return $this->successResponse($data);
} else {
return $this->errorResponse(trans('errors.user_phone_not_exist'), Response::HTTP_NOT_FOUND);
2020-06-16 11:23:09 +00:00
}
2020-06-19 19:31:32 +00:00
2020-06-12 06:11:11 +00:00
}
2020-06-14 07:37:30 +00:00
public function verifyIdentification($user_phone)
2020-06-12 06:11:11 +00:00
{
2020-06-19 19:31:32 +00:00
$user = User::where('phone', $user_phone)->first();
if ($user) {
2020-06-19 19:31:32 +00:00
$identification = Identification::where('id_user', $user->id)->first();
if ($identification) {
2020-06-19 19:31:32 +00:00
return $this->errorResponse(trans('messages.user_identificated'));
} else
2020-06-19 19:31:32 +00:00
return $this->successResponse($user);
} else {
return $this->errorResponse(trans('errors.user_phone_not_exist'), Response::HTTP_NOT_FOUND);
2020-06-19 19:31:32 +00:00
}
2020-06-12 06:11:11 +00:00
}
2020-06-11 13:42:35 +00:00
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)
{
2020-06-30 03:41:20 +00:00
$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',
2020-06-30 03:41:20 +00:00
]);
$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'));
}
// Mise a jour du mot de passe
public function updatePassword(Request $request)
{
$this->validate($request, [
'phone' => 'required',
'type' => 'required|in:user,agent',
2021-10-07 14:32:01 +00:00
// '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);
}
2021-10-07 14:32:01 +00:00
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'));
}
2020-06-11 13:42:35 +00:00
}