• File: UserDocumentController.php
  • Full Path: /var/www/lastversionimaliapi/app/Http/Controllers/UserDocumentController.php
  • Date Modified: 01/30/2023 10:01 PM
  • File size: 12.36 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 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);

    }
}