• File: UserDocumentController.php.save
  • Full Path: /var/www/lastworkingimaliapi/app/Http/Controllers/UserDocumentController.php.save
  • Date Modified: 01/04/2023 11:01 PM
  • File size: 20.28 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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);

    }
}