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);
}
}