<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Box\Spout\Reader\ReaderFactory;
use Box\Spout\Common\Type;
use DB;

use App\Models\ReturnExchangeItem;
use App\Models\ItemStock;

class ReturnExchangeController extends Controller
{
    public function uploadreturn(Request $request){
    	$fileName = $request->file('data')->getClientOriginalName();

        $c_folder = substr($fileName, 0,4);
        $b_folder = substr($fileName, 4,4);
        $t_folder = substr($fileName, 8,2);
        $destinationPath = storage_path().'/uploads/return/'.$c_folder.'/'.$b_folder.'/'.$t_folder;
        
        if (!\File::exists($destinationPath))
        {
            mkdir($destinationPath, 0755, true); 
        }

        $request->file('data')->move($destinationPath, $fileName);

        $filePath = $destinationPath ."/". $fileName;
       
        DB::beginTransaction();
        try {
            $reader = ReaderFactory::create(Type::CSV); // for XLSX files
            $reader->setFieldDelimiter('|');
            $reader->open($filePath);
            foreach ($reader->getSheetIterator() as $sheet) {
                foreach ($sheet->getRowIterator() as $row) {

                    $company_code = str_pad($row[0], 4, "0", STR_PAD_LEFT);
                    $branch_code = $company_code.str_pad($row[2], 4, "0", STR_PAD_LEFT);
                    $terminal_code = $branch_code.str_pad($row[4], 2, "0", STR_PAD_LEFT);

                    $data['company_code'] = $company_code;
                    $data['company_name'] = $row[1];
                    $data['branch_code'] = $branch_code;
                    $data['branch_name'] = $row[3];
                    $data['terminal_code'] = $terminal_code;
                    $data['terminal_no'] = $row[4];
                    $data['user'] = $row[5];
                    $data['transaction_no'] = $row[6];
                    $data['ref_no'] = $row[7];
                    $data['local_time'] = date('Y-m-d H:i:s', strtotime($row[8].' '.$row[9]));
                    $data['ctr'] = $row[10];
                    $data['barcode'] = $row[11];
                    $data['itemcode'] = $row[12];
                    $data['description'] = $row[13];
                    $data['qty'] = $row[14];
                    $data['price'] = $row[15];
                    $data['amount'] = $row[16];
                    $data['customer_name'] = $row[17];
                    $data['department'] = $row[18];
                    $data['category'] = $row[19];
                    $data['brand'] = $row[20];
                    if(count($row) > 20){
                        if(!empty($row[21])){
                            $data['categ_reason'] = $row[21];
                        }else{
                            $data['categ_reason'] = '';
                        }
                    }else{
                        $data['categ_reason'] = '';
                    }
                    if(count($row) > 21){
                        if(!empty($row[22])){
                            $data['issues'] = $row[22];
                        }else{
                            $data['issues'] = '';
                        }
                    }else{
                        $data['issues'] = '';
                    }
                    if(count($row) > 22){
                        if(!empty($row[23])){
                            $data['source_location'] = $row[23];
                        }else{
                            $data['source_location'] = '';
                        }
                    }else{
                        $data['source_location'] = '';
                    }


                    $item = ReturnExchangeItem::recordExist($data);

                    if(count($item) < 1){
                        ReturnExchangeItem::create([
                        'company_code' => $data['company_code'],
                        'company_name' => $data['company_name'],
                        'branch_code' => $data['branch_code'],
                        'branch_name' => $data['branch_name'],
                        'terminal_code' => $data['terminal_code'],
                        'terminal_no' => $data['terminal_no'],
                        'user' => $data['user'],
                        'transaction_no' => $data['transaction_no'],
                        'ref_no' => $data['ref_no'],
                        'local_time' => $data['local_time'],
                        'ctr' => $data['ctr'],
                        'barcode' => $data['barcode'],
                        'itemcode' => $data['itemcode'],
                        'description' => $data['description'],
                        'qty' => $data['qty'],
                        'price' => $data['price'],
                        'amount' => $data['amount'],
                        'customer_name' => $data['customer_name'],
                        'department' => $data['department'],
                        'category' => $data['category'],
                        'brand' => $data['brand'],
                        'categ_reason' => $data['categ_reason'],
                        'issues' => $data['issues'],
                        'source_location' => $data['source_location']
                        ]);

//                        $data['movement_description'] = 'Return Exchange Items';
//                        $data['move_ref'] = $data['transaction_no'];
//                        $data['purpose'] = 'Return Exchange Items';
//                        $data['cost'] = $row[15];
//                        $data['srp'] = $row[15];
//
//                        ItemStock::addStocks($data);
                    }

                    
                }
            }
            $reader->close();
            DB::commit();
            return response()->json(array('msg' => 'file uploaded', 'status' => 0));
        } catch (Exception $e) {
            DB::rollback();
            return response()->json(array('msg' => 'file uploaded error', 'status' => 1));
        }
    }
}
