HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/APIReturnController.php
<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use DB;
use App\Library\UserLib;
use App\Models\User;
use App\Models\Product;
use App\Models\Customer;
use App\Models\PriceBookEntry;
use App\Models\Order;
use App\Models\OrderItems;
use App\Models\OrderStatus;
use App\Models\Countries;
use App\Models\PaymentType;

use App\Models\Returns;
use App\Models\ReturnProducts;

use DateTime;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;


class APIReturnController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected $userLib;
    protected $dateFormat = 'dd-mm-yyyy';
    public function __construct(UserLib $userLib)
	{
		$this->userLib = $userLib;
	}

    //createVisits
public function createReturn(Request $request) {
    //TODO What is device_token
    $data = $request->json()->all();
    $ReturnId = $this->userLib->useridGenrator();
    $CreatedDate = date('Y-m-d H:i:s',time());

    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    $Products = isset($data['ReturnProducts']) ? $data['ReturnProducts'] : array();
    $Products = json_decode(json_encode($Products), true);
    $cvdata = array();
    $cvdata['ReturnNo'] = "Return-" . time() . '-' . rand();
    $cvdata['CustomerId'] =  $data['CustomerId'];
    $cvdata['ReturnId'] = $ReturnId;
    $cvdata['UserId'] =  $UserId;
    $cvdata['Status'] = '1';
    $cvdata['IsDeleted'] = '0';
    $cvdata['ReturnDate'] = $CreatedDate;
    $cvdata['Updated_at'] = $CreatedDate;
    $cvdata['Created_at'] = $CreatedDate;
    $cvdata['Created_by'] = $UserId;
    $cvdata['Updated_by'] = $UserId;
    $cvdata['AssignTo'] = $UserId;
    $ReturnInsert = Returns::insert($cvdata);

        if(count($Products) > 0)
        {
            for($i = 0; $i < count($Products); $i++)
            {
                $ProductData = $Products[$i];
                $cvstdata = array();
                $cvstdata['CustomerId'] = isset($data['CustomerId']) ? $data['CustomerId'] : '';
                $cvstdata['ReturnId'] = $ReturnId;
                $cvstdata['ProductId'] =  isset($ProductData['ProductId']) ? $ProductData['ProductId'] : '';
                $cvstdata['ProductName'] =  isset($ProductData['ProductName']) ? $ProductData['ProductName'] : '';
                $cvstdata['ProductPrice'] =  isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '0';
                $cvstdata['ProductQuantity'] =  isset($ProductData['ProductQuantity']) ? $ProductData['ProductQuantity'] : '0';
                $cvstdata['ReturnReason'] =  isset($ProductData['ReturnReason']) ? $ProductData['ReturnReason'] : '';
                $cvstdata['UserId'] =  $UserId;
                $cvstdata['Status'] = '1';
                $cvstdata['IsDeleted'] = '0';
                $cvstdata['Updated_at'] = $CreatedDate;
                $cvstdata['Created_at'] = $CreatedDate;
                $cvstdata['Created_by'] = $UserId;
                $cvstdata['Updated_by'] = $UserId;
                $cvstdata['AssignTo'] = $UserId;

                $ReturnProductInsert = ReturnProducts::insert($cvstdata);
            }
        }
        $Returns = Returns::select('*')
        ->where('ReturnId',$ReturnId)
        ->where('AssignTo',$UserId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get()->first();

        $CustomerId = $Returns->CustomerId;
        $CustomerName = '';
        $Customers = Customer::where('CustomerId', $CustomerId)->get();
        if ($Customers->count() > 0)
        {   //email is not exist

            $CustomerData = $Customers->first();
            $CustomerName = $CustomerData->CustomerName;
        }
        $Returns->CustomerName = $CustomerName;

        $ReturnProducts = ReturnProducts::where('ReturnId', $ReturnId)->get();
        $Returns->Products = array();
        if ($ReturnProducts->count() > 0)
        {   //email is not exist
            $ReturnProductData = $ReturnProducts;
            $Returns->Products = $ReturnProductData;

        }

        foreach ($Returns->Products as $key => $ReturnProductValue)
        {
            $CustomerId = $ReturnProductValue->CustomerId;
            $CustomerName='';
            $custmer = Customer::where('CustomerId', $CustomerId)->get();
            if ($custmer->count() > 0)
            {   //email is not exist

                $custmer = $custmer->first();
                $CustomerName = $custmer->CustomerName;
            }
            $ReturnProductValue->CustomerName = $CustomerName;
        }
        $response = [
            'Success' => true,
            'ResponseMessage' => "Return has been added",
            'ResponseCode' => "200",
            'Return' => $Returns,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
}


public function updateReturn(Request $request) {
    //TODO What is device_token
    $data = $request->json()->all();
    $ReturnId = $this->userLib->useridGenrator();
    $CreatedDate = date('Y-m-d H:i:s',time());

    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    $Products = isset($data['ReturnProducts']) ? $data['ReturnProducts'] : array();
    if($Products){
    $Products = json_decode(json_encode($Products), true);
    }
    $cvdata = array();
    $ReturnId = $data['ReturnId'];
    unset($data['ReturnId']);
    $cvdata['CustomerId'] =  $data['CustomerId'];
    $cvdata['Status'] =  $data['Status'];
    $cvdata['IsDeleted'] =  $data['IsDeleted'];
    $cvdata['Updated_at'] = $CreatedDate;
    $cvdata['Updated_by'] = $UserId;
    $update = Returns::where('ReturnId',$ReturnId)->update($cvdata);

        if(count($Products) > 0)
        {
            for($i = 0; $i < count($Products); $i++)
            {
                $ProductData = $Products[$i];

                $ProductId = $ProductData['ProductId'];
                $CheckReturnProducts = ReturnProducts::where('ReturnId',$ReturnId)->where('ProductId',$ProductId)->get();
                if(count($CheckReturnProducts) > 0)
                {
                    $cvstdata = array();

                    $cvstdata['CustomerId'] = isset($data['CustomerId']) ? $data['CustomerId'] : '';
                    $cvstdata['ProductId'] =  isset($ProductData['ProductId']) ? $ProductData['ProductId'] : '';
                    $cvstdata['ProductName'] =  isset($ProductData['ProductName']) ? $ProductData['ProductName'] : '';
                    $cvstdata['ProductPrice'] =  isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '';
                    $cvstdata['ProductQuantity'] =  isset($ProductData['ProductQuantity']) ? $ProductData['ProductQuantity'] : '';
                    $cvstdata['ReturnReason'] =  isset($ProductData['ReturnReason']) ? $ProductData['ReturnReason'] : '';

                    $cvstdata['Status'] = $ProductData['Status'];
                    $cvstdata['IsDeleted'] = $ProductData['IsDeleted'];
                    $cvstdata['Updated_by'] = $UserId;
                    $cvstdata['Updated_at'] = $CreatedDate;
                    $update = ReturnProducts::where('ReturnId',$ReturnId)->where('ProductId',$ProductId)->update($cvstdata);
                }
                else
                {
                    $cvstdata = array();
                    $cvstdata['CustomerId'] = isset($data['CustomerId']) ? $data['CustomerId'] : '';
                    $cvstdata['ReturnId'] = $ReturnId;
                    $cvstdata['ProductId'] =  isset($ProductData['ProductId']) ? $ProductData['ProductId'] : '';
                    $cvstdata['ProductName'] =  isset($ProductData['ProductName']) ? $ProductData['ProductName'] : '';
                    $cvstdata['ProductPrice'] =  isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '';
                    $cvstdata['ProductQuantity'] =  isset($ProductData['ProductQuantity']) ? $ProductData['ProductQuantity'] : '';
                    $cvstdata['ReturnReason'] =  isset($ProductData['ReturnReason']) ? $ProductData['ReturnReason'] : '';
                    $cvstdata['UserId'] =  $UserId;
                    $cvstdata['Status'] = '1';
                    $cvstdata['IsDeleted'] = '0';
                    $cvstdata['Updated_at'] = $CreatedDate;
                    $cvstdata['Created_at'] = $CreatedDate;
                    $cvstdata['Created_by'] = $UserId;
                    $cvstdata['Updated_by'] = $UserId;
                    $ReturnProductInsert = ReturnProducts::insert($cvstdata);
                }
            }
        }
        $Returns = Returns::select('*')
        ->where('ReturnId',$ReturnId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get()->first();

        $Returns = json_decode(json_encode($Returns),true);
        $CustomerId = isset($Returns['CustomerId']) ? $Returns['CustomerId'] : '';
        $CustomerName = '';
        if($CustomerId)
        { $Customers = Customer::where('CustomerId', $CustomerId)->get();
            if ($Customers->count() > 0)
            {   //email is not exist

                $CustomerData = $Customers->first();
                $CustomerName = $CustomerData->CustomerName;
            }
        }


        if($CustomerName)
        {
            $Returns['CustomerName'] = $CustomerName;

        }
        $Returns['Products'] = array();
        $ReturnProducts = ReturnProducts::where('ReturnId', $ReturnId)->where('Status', '=', '1')->where('IsDeleted', '=', 0)->get();
        if ($ReturnProducts->count() > 0)
        {   //email is not exist
            $ReturnProductData = $ReturnProducts;
            $Returns['Products'] = $ReturnProductData;
        }

        if(count($Returns['Products']) > 0) {
            foreach ($Returns['Products'] as $key => $ReturnProductValue)
            {
                $CustomerId = $ReturnProductValue->CustomerId;
                $CustomerName='';
                $custmer = Customer::where('CustomerId', $CustomerId)->get();
                if ($custmer->count() > 0)
                {   //email is not exist

                    $custmer = $custmer->first();
                    $CustomerName = $custmer->CustomerName;
                }

                $ReturnProductValue->CustomerName = $CustomerName;
            }
        }
        $response = [
            'Success' => true,
            'ResponseMessage' => "Return has been updated",
            'ResponseCode' => "200",
            'Return' => $Returns,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
}


//getReturn List
public function getReturnList(Request $request, $ReturnId='') {
    $data = $request->json()->all();

    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');

    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }



    $Returns = Returns::select('*')
    ->leftJoin('tbl_customer', 'tbl_customer.CustomerId', '=', 'tbl_returns.CustomerId')
    ->where('tbl_customer.Status', '=', '1')
    ->where('tbl_customer.IsDeleted', '=', '0')
    ->where('tbl_returns.Status', '=', '1')
    ->where('tbl_returns.IsDeleted', '=', '0')
    ->where('tbl_returns.Created_by', '=', $UserId)
    ->orderBy('tbl_returns.id', 'desc')
    ->get();

    foreach ($Returns as $key => $ReturnsValue)
    {
        $CustomerId = $ReturnsValue->CustomerId;

        $ReturnsValue->CustomerName='';
        $CustomerName='';
        $custmer = Customer::where('CustomerId', $CustomerId)->get();
        if ($custmer->count() > 0)
        {   //email is not exist

            $custmer = $custmer->first();
            $CustomerName = $custmer->CustomerName;
        }

        $ReturnsValue->CustomerName = $CustomerName;
        $CreatedFormatedDate = $ReturnsValue->Created_at;
        $CreatedFormatedDate = date("j M Y, g:i a",strtotime($CreatedFormatedDate));
        $ReturnsValue->CreatedFormatedDate = $CreatedFormatedDate;
    }

    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",
        'Returns' => $Returns,
        'ApiUrl' => env('APP_URL'),
        'ApiVersion' => env('APP_VERSION'),
    ];
    return response()->json($response);
}

//getVisitsDetails
public function getReturnDetails(Request $request, $ReturnId='') {
    $data = $request->json()->all();

    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');

    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    if($ReturnId == '')
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Please provide ReturnId",
            'ResponseCode' => "305",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    $Returns = Returns::select('*')
    ->where('ReturnId',$ReturnId)
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->orderBy('id', 'desc')
    ->get()->first();

    if ($Returns->count() == 0)
    {
        $response = [
            'Success' => true,
            'ResponseMessage' => "Data Not Found",
            'ResponseCode' => "202",
            'Return' => $Returns,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    $CustomerId = $Returns->CustomerId;
    $CustomerName = '';
    $Customers = Customer::where('CustomerId', $CustomerId)->get();
    if ($Customers->count() > 0)
    {   //email is not exist

        $CustomerData = $Customers->first();
        $CustomerName = $CustomerData->CustomerName;
    }
    $Returns->CustomerName = $CustomerName;
    $CreatedFormatedDate = $Returns->Created_at;
    $CreatedFormatedDate = date("j M Y, g:i a",strtotime($CreatedFormatedDate));
    $Returns->CreatedFormatedDate = $CreatedFormatedDate;

    $ReturnProducts = ReturnProducts::where('ReturnId', $ReturnId)
                    ->where('Status', '=', '1')
                    ->where('IsDeleted', '=', 0)
                   // ->groupBy('Created_at')
                    ->orderBy('Created_at', 'desc')
                    ->get();
    $Returns->Products = array();
    if ($ReturnProducts->count() > 0)
    {   //email is not exist
        $ReturnProductData = $ReturnProducts;
        $Returns->Products = $ReturnProductData;
    }

    foreach ($Returns->Products as $key => $ReturnProductValue)
    {
        $CustomerId = $ReturnProductValue->CustomerId;
        $CustomerName='';
        $custmer = Customer::where('CustomerId', $CustomerId)->get();
        if ($custmer->count() > 0)
        {   //email is not exist

            $custmer = $custmer->first();
            $CustomerName = $custmer->CustomerName;
        }
        $ReturnProductValue->CustomerName = $CustomerName;

        $CreatedFormatedDate = $ReturnProductValue->Created_at;
        $CreatedFormatedDate = date("j M Y, g:i a",strtotime($CreatedFormatedDate));
        $ReturnProductValue->CreatedFormatedDate = $CreatedFormatedDate;
    }

    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",
        'Return' => $Returns,
        'ApiUrl' => env('APP_URL'),
        'ApiVersion' => env('APP_VERSION'),
    ];
    return response()->json($response);
}



function count_digit($number) {
    return strlen($number);
}

function divider($number_of_digits)
{
    $tens="1";

    if($number_of_digits>8)
        return 10000000;

    while(($number_of_digits-1)>0)
    {
        $tens.="0";
        $number_of_digits--;
    }
    return $tens;
}

//getReturn List
public function getReturnListSearch(Request $request, $SearchText ='') {
    $data = $request->json()->all();

    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');

    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    $Returns = Returns::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->where('Created_by', '=', $UserId)
    ->orderBy('id', 'desc')
    ->get();

    if($SearchText)
    {
        $Customers = Customer::select('*')
        ->where('CustomerName', 'iLIKE', '%'.$SearchText.'%')
        ->where('IsDeleted', '=','0')
        ->where('Status', '=', '1')
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'desc')
        ->get();

        $CustomerIds = array();
        if($Customers->count() > 0)
        {   //email is exist
            foreach ($Customers as $key => $CValue)
            {
                $CustomerId = $CValue['CustomerId'];
                $CustomerIds[] = $CustomerId;
            }
        }

        $CustomerIds2 = implode(',',$CustomerIds);
        $Returns = Returns::select('*')
        ->where('IsDeleted', '=', 0)
        ->where('Status', '=', '1')
        ->where('Created_by', '=', $UserId)
        ->whereIn('CustomerId', $CustomerIds)
        //->orWhere('CollectionType', 'like', '%'.$SearchText.'%')
        ->orderBy('id', 'desc')
        ->get();

    }
    else
    {
        $Returns = Returns::select('*')
        ->where('IsDeleted', '=', '0')
        ->where('Status', '=', '1')
        ->where('Created_by', '=', $UserId)
        ->orderBy('id', 'desc')
        ->get();
    }

    foreach ($Returns as $key => $ReturnsValue)
    {
        $CustomerId = $ReturnsValue->CustomerId;

        $ReturnsValue->CustomerName='';
        $CustomerName='';
        $custmer = Customer::where('CustomerId', $CustomerId)->get();
        if ($custmer->count() > 0)
        {   //email is not exist

            $custmer = $custmer->first();
            $CustomerName = $custmer->CustomerName;
        }

        $ReturnsValue->CustomerName = $CustomerName;
        $CreatedFormatedDate = $ReturnsValue->Created_at;
        $CreatedFormatedDate = date("j M Y, g:i a",strtotime($CreatedFormatedDate));
        $ReturnsValue->CreatedFormatedDate = $CreatedFormatedDate;
    }

    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",
        'Returns' => $Returns,
        'ApiUrl' => env('APP_URL'),
        'ApiVersion' => env('APP_VERSION'),
    ];
    return response()->json($response);
}

}