<?php
namespace App\Http\Controllers;
use App\Classes\CurrentPassword;
use App\Imali\ImaliAccount;
use App\User;
use App\UserDocument;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class UserDocumentController extends Controller
{
public function getDocuments($status)
{
$data = UserDocument::query()
->leftJoin('users', 'users.id', '=', 'user_documents.user_id')
->leftJoin('imali_accounts', 'imali_accounts.user_id', '=', 'user_documents.user_id')
->select('users.name', 'users.last_name', 'imali_accounts.account_number', 'user_documents.*')
->where('user_documents.status', $status)
->paginate(10);
return response()->json(['data' => $data], 200);
}
public function getUserDocuments($id)
{
$data = UserDocument::query()
->join('users', 'users.id', '=', 'user_documents.user_id')
->join('imali_accounts', 'imali_accounts.user_id', '=', 'user_documents.user_id')
->select('users.name', 'imali_accounts.account_number', 'user_documents.*')
->where('user_documents.user_id', $id)
->get();
return response()->json(['data' => $data], 200);
}
public function updateUserInformation(Request $request)
{
$this->validate($request, [
'id' => 'required',
'user_id' => 'required',
]);
$userDocument = UserDocument::query()
->where('id', $request->id)
->where('user_id', $request->user_id)
->first();
if ($userDocument) {
$imali = ImaliAccount::query()
->where('user_id', $request->user_id)
->first();
$userDocument->update([
'status' => 'actualizado',
'fathers_name' => $request->fathers_name,
'mothers_name' => $request->mothers_name,
'issue_date' => $request->issue_date,
'expiration_date' => $request->expiration_date,
'document_type' => $request->document_type,
'issuing_place' => $request->issuing_place,
'document_number' => $request->document_number,
'nationality' => $request->nationality,
'place_of_birth' => $request->place_of_birth,
'address1' => $request->address1,
'address2' => $request->address2,
'marital_status' => $request->marital_status,
'sex' => $request->sex,
'birthdate' => $request->birthdate,
'height' => $request->height,
'admin_id' => $request->user()->id,
'imali_account_id' => $imali->id,
]);
User::query()
->where('id', $request->user_id)
->update(['update_info_status' => 'Actualizado', 'info_status' => 1, 'name' => $request->name, 'last_name' => $request->last_name, 'user_update_info_status' => 0
, 'birthday' => $request->birthdate, 'document_id' => $userDocument->id]);
ImaliAccount::query()
->where('user_id', $request->user_id)
->update(['imali_account_config' => 2]);
$notification = array(
// 'icon' => 'ic_imali_logo_verde_01',
'icon' => 'ic_i_mali_cover',
'title' => 'Actualização Documentos',
'body' => 'Caro cliente, os teus documentos foram actualizados com Succeso. Desfrute dos serviços que o iMali disponibiliza.',
'click_action' => 'com.imali.payapp.payment_NOTICIA',
// 'color' => '#008577'
'color' => '#ffffff'
);
$data = array(
'sms' => 'Parabéns, o teu pedido de actualização de documentos foi aprovado com Sucesso. Com os documentos actualizados, vai fazer transacções e pagamentos em montantes maiores.',
'terminal' => 'firebase'
);
$userData = User::query()
->where('id', $request->user_id)
->first();
$this->pushNotifification($userData->firebase_token, $notification, $data);
$userDocumentData = UserDocument::query()
->where('id', $request->id)
->where('user_id', $request->user_id)
->get();
foreach ($userDocumentData as $data) {
UserDocument::query()
->where('status', 'pendente')
->where('id', '=', $data->id)
->update(['status' => 'recusado', 'message' => 'Pedido recusado, pois já foi aceite um pedido que reuniu as codições desejadas.']);
}
return response()->json(['message' => 'Dados Actualizados com Sucesso'], 200);
} else {
return response()->json(['message' => 'Conta Inválida'], 400);
}
}
public function updateUserInformationDash(Request $request)
{
$this->validate($request, [
'document_id' => 'required',
'user_id' => 'required',
],[
'document_id.required'=>'document_id é obrigatório',
'user_id.required'=>'user_id é obrigatório'
]);
$user = UserDocument::query()
->where('id', $request->user_id)
->first();
$imaliUser = ImaliAccount::query()
->where('user_id', $user->id)
->first();
$userDocument = UserDocument::query()
->where('id', $request->document_id)
->where('user_id', $request->user_id)
->orderBy('id','desc')
->first();
if($userDocument){
if($request->image_front && $request->image_back && $request->image_selfie){
$exploded = explode(',', $request->image_front);
$exploded2 = explode(',', $request->image_back);
$exploded3 = explode(',', $request->image_selfie);
$decoded = base64_decode($exploded[1]);
$decoded2 = base64_decode($exploded2[1]);
$decoded3 = base64_decode($exploded3[1]);
if(Str::contains($exploded[0], 'jpeg')) {
$extention = 'jpg';
} else {
$extention = 'png';
}
if (Str::contains($exploded2[0], 'jpeg')) {
$extention2 = 'jpg';
} else {
$extention2 = 'png';
}
if (Str::contains($exploded3[0], 'jpeg')) {
$extention3 = 'jpg';
} else {
$extention3 = 'png';
}
$imageFrontName = Str::random() . $user->id . '.' . $extention;
$imageBackName = Str::random() . $user->id . '.' . $extention2;
$imageSelfie = Str::random() . $user->id . '.' . $extention3;
$userDocument->update([
'status' => 'actualizado',
'fathers_name' => $request->fathers_name,
'mothers_name' => $request->mothers_name,
'issue_date' => $request->issue_date,
'expiration_date' => $request->expiration_date,
'document_type' => $request->document_type,
'issuing_place' => $request->issuing_place,
'document_number' => $request->document_number,
'nationality' => $request->nationality,
'place_of_birth' => $request->place_of_birth,
'address1' => $request->address1,
'address2' => $request->address2,
'marital_status' => $request->marital_status,
'sex' => $request->sex,
'birthdate' => $request->birthdate,
'height' => $request->height,
'admin_id' => $request->user()->id,
'imali_account_id' => $imaliUser->id,
'image_front' => url('/') . '/images/documentos/' . $imageFrontName,
'image_back' => url('/') . '/images/documentos/' . $imageBackName,
'image_selfie' => url('/') . '/images/documentos/' . $imageSelfie,
]);
$user->update([
'update_info_status' => 'Actualizado',
'info_status' => 1,
'user_update_info_status' => 1,
'name' => $request->name,
'last_name'=>$request->last_name,
'birthday' => $request->birthdate,
'document_id' => $userDocument->id
]);
$imaliUser->update(['imali_account_config' => 2]);
$notification = array(
'icon' => 'ic_i_mali_cover',
'title' => 'Actualização Documentos',
'body' => 'Caro cliente, os teus documentos foram actualizados com Succeso. Desfrute dos serviços que o iMali disponibiliza.',
'click_action' => 'com.imali.payapp.payment_NOTICIA',
'color' => '#ffffff'
);
$data = array(
'sms' => 'Parabéns, o teu pedido de actualização de documentos foi aprovado com Sucesso. Com os documentos actualizados, vai fazer transacções e pagamentos em montantes maiores.',
'terminal' => 'firebase'
);
$this->pushNotifification($user->firebase_token, $notification, $data);
return response()->json(['message' => 'Dados Actualizados com Sucesso'], 200);
}else{
return response()->json(['message'=>'As imagens de frente, verso e selfie são obrigatórias'],400);
}
//fim validar imagens
}else{
if($request->image_front && $request->image_back && $request->image_selfie){
$exploded = explode(',', $request->image_front);
$exploded2 = explode(',', $request->image_back);
$exploded3 = explode(',', $request->image_selfie);
$decoded = base64_decode($exploded[1]);
$decoded2 = base64_decode($exploded2[1]);
$decoded3 = base64_decode($exploded3[1]);
if(Str::contains($exploded[0], 'jpeg')) {
$extention = 'jpg';
} else {
$extention = 'png';
}
if (Str::contains($exploded2[0], 'jpeg')) {
$extention2 = 'jpg';
} else {
$extention2 = 'png';
}
if (Str::contains($exploded3[0], 'jpeg')) {
$extention3 = 'jpg';
} else {
$extention3 = 'png';
}
$imageFrontName = Str::random() . $user->id . '.' . $extention;
$imageBackName = Str::random() . $user->id . '.' . $extention2;
$imageSelfie = Str::random() . $user->id . '.' . $extention3;
$userDocument = $userDocument->create([
'status' => 'actualizado',
'fathers_name' => $request->fathers_name,
'mothers_name' => $request->mothers_name,
'issue_date' => $request->issue_date,
'expiration_date' => $request->expiration_date,
'document_type' => $request->document_type,
'issuing_place' => $request->issuing_place,
'document_number' => $request->document_number,
'nationality' => $request->nationality,
'place_of_birth' => $request->place_of_birth,
'address1' => $request->address1,
'address2' => $request->address2,
'marital_status' => $request->marital_status,
'sex' => $request->sex,
'birthdate' => $request->birthdate,
'height' => $request->height,
'admin_id' => $request->user()->id,
'imali_account_id' => $imaliUser->id,
'user_id' => $user->id,
'image_front' => url('/') . '/images/documentos/' . $imageFrontName,
'image_back' => url('/') . '/images/documentos/' . $imageBackName,
'image_selfie' => url('/') . '/images/documentos/' . $imageSelfie,
]);
$user->update([
'update_info_status' => 'Actualizado',
'info_status' => 1,
'user_update_info_status' => 1,
'name' => $request->name,
'last_name'=>$request->last_name,
'birthday' => $request->birthdate,
'document_id' => $userDocument->id
]);
$imaliUser->update(['imali_account_config' => 2]);
}
//fim validar imagem 2
}
//fim validar user docoment
}
//fim funcao
public function negarPedidoActualizacaoDocumentos(Request $request)
{
$this->validate($request, [
'id' => 'required',
'user_id' => 'required',
'message' => 'required|min:10',
]);
$userDocument = UserDocument::query()
->where('id', $request->id)
->where('user_id', $request->user_id)
->first();
if ($userDocument) {
$userDocument->update(['status' => 'recusado', 'message' => $request->message, 'admin_id' => $request->user()->id]);
User::query()
->where('id', $request->user_id)
->update(['info_status' => 0, 'update_info_status' => 'pendente']);
$notification = array(
'icon' => 'ic_imali_logo_verde_01',
// 'icon' => 'ic_i_mali_cover',
'title' => 'Actualização Documentos',
'body' => $request->message,
'click_action' => 'com.imali.payapp.payment_NOTICIA',
'color' => '#ffffff'
);
$data = array(
'sms' => $request->message,
'terminal' => 'firebase'
);
$userData = User::query()
->where('id', $request->user_id)
->first();
$this->pushNotifification($userData->firebase_token, $notification, $data);
return response()->json(['message' => 'Resposta Enviada com Sucesso'], 200);
} else {
return response()->json(['message' => 'Conta Inválida'], 400);
}
}
public function updateDocoment(Request $request)
{
$user = User::find($request->user()->id);
$imaliUser = ImaliAccount::query()
->where('user_id', $user->id)
->first();
$exploded = explode(',', $request->image_front);
$exploded2 = explode(',', $request->image_back);
$exploded3 = explode(',', $request->image_selfie);
$decoded = base64_decode($exploded[0]);
$decoded2 = base64_decode($exploded2[0]);
$decoded3 = base64_decode($exploded3[0]);
// if (Str::contains($exploded[0], 'jpeg')) {
if (Str::contains($exploded[0], 'jpeg')) {
$extention = 'jpg';
} else {
$extention = 'png';
}
if (Str::contains($exploded2[0], 'jpeg')) {
$extention2 = 'jpg';
} else {
$extention2 = 'png';
}
if (Str::contains($exploded3[0], 'jpeg')) {
$extention3 = 'jpg';
} else {
$extention3 = 'png';
}
$imageFrontName = Str::random() . $user->id . '.' . $extention;
$imageBackName = Str::random() . $user->id . '.' . $extention2;
$imageSelfie = Str::random() . $user->id . '.' . $extention3;
// $updateUser = $user->update([
//// 'photo' => 'http://160.242.36.118:81/imaliapitest/public/images/avatar/' . $imageName
//// 'photo' => 'http://160.242.35.226/imaliapi/public/images/documentos/' . $imageName
//// 'photo' => 'http://160.242.35.226/imaliapi/public/images/documentos/' . $imageName
// ]);
$updateUser = UserDocument::create([
// 'image_front' => 'http://localhost:8000/images/documentos/' . $imageFrontName,
// 'image_back' => 'http://localhost:8000/images/documentos/' . $imageBackName,
// 'image_selfie' => 'http://localhost:8000/images/documentos/' . $imageSelfie,
// 'image_front' => 'http://160.242.35.226/imaliapi/public/images/documentos/' . $imageFrontName,
// 'image_back' => 'http://160.242.35.226/imaliapi/public/images/documentos/' . $imageBackName,
// 'image_selfie' => 'http://160.242.35.226/imaliapi/public/images/documentos/' . $imageSelfie,
// 'image_front' => 'http://160.242.36.118:81/imaliapitest/public/images/documentos/' . $imageFrontName,
'image_front' => url('/') . '/images/documentos/' . $imageFrontName,
// 'image_back' => 'http://160.242.36.118:81/imaliapitest/public/images/documentos/' . $imageBackName,
'image_back' => url('/') . '/images/documentos/' . $imageBackName,
// 'image_selfie' => 'http://160.242.36.118:81/imaliapitest/public/images/documentos/' . $imageSelfie,
'image_selfie' => url('/') . '/images/documentos/' . $imageSelfie,
'document_type' => $request->document_type,
'user_id' => $user->id,
'imali_account_id' => $imaliUser->id
]);
User::query()
->where('id', $request->user()->id)
->update(['info_status' => 1, 'user_update_info_status' => 0, 'update_info_status' => 'pendente']);
// ->update(['info_status' => 1, 'document_id' => $updateUser->id]);
if ($updateUser) {
$path = public_path() . '/images/documentos/' . $imageFrontName;
$path2 = public_path() . '/images/documentos/' . $imageBackName;
$path3 = public_path() . '/images/documentos/' . $imageSelfie;
file_put_contents($path, $decoded);
file_put_contents($path2, $decoded2);
file_put_contents($path3, $decoded3);
}
$notification = array(
// 'icon' => 'ic_imali_logo_verde_01',
'icon' => 'ic_i_mali_cover',
'title' => 'Actualização Documentos',
'body' => 'Caro cliente, os teus documentos foram submetidos com Succeso.',
'click_action' => 'com.imali.payapp.payment_NOTICIA',
'color' => '#ffffff'
);
$data = array(
'sms' => 'Parabéns, os teus documentos foram submetidos com Sucesso. Com os documento actualizados, tens a possibilidade de fazer transacções e pagamentos em montantes maiores. Os teus documentos estão em avaliação e o iMali vai responder o teu pedido em breve. iMali, Diferente Como Tu!',
'terminal' => 'firebase'
);
$userData = User::query()
->where('id', $request->user()->id)
->first();
$this->pushNotifification($userData->firebase_token, $notification, $data);
return response()->json(['message' => 'Documento Carregado com Sucesso']);
// }
}
public function pushNotifification($token, $notification = array(), $data = array())
{
$apiKey = 'AAAA8zVzEPQ:APA91bHl_DXB6UGb_6gZlmFnaLTQoANtX_OBjvl3nOy2bSlnFhxedvk6EhGj7cZoIvmlbKeCnqGxXbuyMH_rEPuhRXvuitXzo6Pfl2TMXLar1PlifXqEhYq6tS55UMrY2Kffzj-P_UH-';
$fields = array('to' => $token, 'notification' => $notification, 'data' => $data);
$headers = array('Authorization: key=' . $apiKey, 'Content-Type: application/json');
$url = 'https://fcm.googleapis.com/fcm/send';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($curl);
curl_close($curl);
return json_decode($result, true);
}
}