/**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     //
     //validation
     $this->validate($request, ['po' => 'required|min:5|max:5', 'size' => 'required', 'qty' => 'required', 'module' => 'min:4|max:10']);
     $forminput = $request->all();
     $ponum = $forminput['po'];
     $size = $forminput['size'];
     $qty = $forminput['qty'];
     $module = $forminput['module'];
     $comment = $forminput['comment'];
     $key = $ponum . '-' . $size;
     //dd($key);
     //$type = "";
     $status = "panding";
     // virfy userId
     if (Auth::check()) {
         $userId = Auth::user()->id;
     } else {
         $msg = 'User is not autenticated';
         return view('BarcodeRequest.error', compact('msg'));
     }
     // verify po_id
     try {
         $poid = Po::where('po_key', $key)->firstOrFail()->id;
         $po_closed = Po::where('po_key', $key)->firstOrFail()->closed_po;
     } catch (ModelNotFoundException $e) {
         $msg = 'Po and size not exist in Po table';
         return view('BarcodeRequest.error', compact('msg'));
     }
     // verify po is closed
     if ($po_closed == True) {
         $msg = 'Po is Closed';
         return view('BarcodeRequest.error', compact('msg'));
     }
     try {
         $barcode = new BarcodeRequest();
         $barcode->po_id = $poid;
         $barcode->user_id = $userId;
         $barcode->ponum = $ponum;
         $barcode->size = $size;
         $barcode->qty = $qty;
         $barcode->module = $module;
         $barcode->leader;
         $barcode->status = $status;
         //$barcode->type = $type;
         $barcode->comment = $comment;
         $barcode->save();
     } catch (\Illuminate\Database\QueryException $e) {
         $msg = "Problem to save in database";
         return view('BarcodeRequest.error', compact('msg'));
     }
     return view('BarcodeRequest.success');
 }
 /**
  * Process datatables ajax request.
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function anyData()
 {
     /*
     $table = Po::select([
         //'id',
         //'po_key',
         //'order_code',
         'pos.po',
         'pos.size',
         'pos.style',
         'pos.color',
         'pos.color_desc',
         'pos.season',
         'pos.total_order_qty',
         //'pos.flash',
         //'pos.closed_po'
         //'pos.brand',
         //'pos.status',
         //'pos.type',
         //'pos.comment',
         //'pos.created_at',
         //'pos.updated_at',
         \DB::raw('sum(barcode_stocks.qty) as stock_b_qty'),
         \DB::raw('sum(barcode_requests.qty) as request_b_qty'),
         \DB::raw('sum(carelabel_stocks.qty) as stock_c_qty'),
         \DB::raw('sum(carelabel_requests.qty) as request_c_qty'),
     
                
     ])
     ->leftJoin('barcode_stocks','barcode_stocks.po_id','=','pos.id')
     ->leftJoin('barcode_requests','barcode_requests.po_id','=','pos.id')
     ->leftJoin('carelabel_stocks','carelabel_stocks.po_id','=','pos.id')
     ->leftJoin('carelabel_requests','carelabel_requests.po_id','=','pos.id')
     //->where('pos.closed_po','=',0)
     ->groupBy('pos.po','pos.size','pos.style','pos.color','pos.color_desc','pos.season','pos.total_order_qty','pos.flash','pos.closed_po','pos.created_at','pos.updated_at');
     */
     /*
     SELECT  pos.id,
     pos.po,
     pos.style,
     (SELECT SUM(barcode_stocks.qty)  FROM barcode_stocks WHERE barcode_stocks.po_id = pos.id ) stock_b,
     (SELECT SUM(barcode_requests.qty)  FROM barcode_requests WHERE barcode_requests.po_id = pos.id ) request_b,
     (SELECT SUM(carelabel_stocks.qty)  FROM carelabel_stocks WHERE carelabel_stocks.po_id = pos.id ) stock_c,
     (SELECT SUM(carelabel_requests.qty)  FROM carelabel_requests WHERE carelabel_requests.po_id = pos.id ) request_c
     FROM pos
     */
     //$stock_b_qty = 0; //\DB::raw("sum(barcode_stocks.qty) as stock_b_qty FROM barcode_stocks WHERE barcode_stocks.po_id = 1");
     //dd($stock_b_qty);
     $table = Po::select(['pos.id', 'pos.size', 'pos.style', 'pos.color', 'pos.color_desc', 'pos.season', 'pos.total_order_qty', DB::raw('sum(barcode_stocks.qty) as stock_b_qty'), DB::raw('sum(barcode_requests.qty) as request_b_qty'), DB::raw('sum(carelabel_stocks.qty)  as stock_c_qty'), DB::raw('sum(carelabel_requests.qty) as request_c_qty')])->leftjoin('barcode_stocks', 'barcode_stocks.po_id', '=', 'pos.id')->leftjoin('barcode_requests', 'barcode_requests.po_id', '=', 'pos.id')->leftjoin('carelabel_stocks', 'carelabel_stocks.po_id', '=', 'pos.id')->leftjoin('carelabel_requests', 'carelabel_requests.po_id', '=', 'pos.id')->groupBy('pos.id', 'pos.po', 'pos.size', 'pos.style', 'pos.color', 'pos.color_desc', 'pos.season', 'pos.total_order_qty');
     //dd($table);
     return Datatables::of($table)->addColumn('b_stock', '{!! $total_order_qty-$stock_b_qty !!}')->addColumn('b_request', '{!! $stock_b_qty-$request_b_qty !!}')->addColumn('c_stock', '{!! $total_order_qty-$stock_c_qty !!}')->addColumn('c_request', '{!! $stock_c_qty-$request_c_qty !!}')->make(true);
 }
 public function postImportPo(Request $request)
 {
     $getSheetName = Excel::load(Request::file('file'))->getSheetNames();
     foreach ($getSheetName as $sheetName) {
         //if ($sheetName === 'Product-General-Table')  {
         //selectSheetsByIndex(0)
         //DB::statement('SET FOREIGN_KEY_CHECKS=0;');
         //DB::table('pos')->truncate();
         //Excel::selectSheets($sheetName)->load($request->file('file'), function ($reader)
         //Excel::selectSheets($sheetName)->load(Input::file('file'), function ($reader)
         //Excel::filter('chunk')->selectSheetsByIndex(0)->load(Request::file('file'))->chunk(50, function ($reader)
         Excel::filter('chunk')->selectSheets($sheetName)->load(Request::file('file'))->chunk(50, function ($reader) {
             foreach ($reader->toArray() as $sheet) {
                 //MainModel::create($sheet);
                 //$sheet->dump();
             }
             $readerarray = $reader->toArray();
             //var_dump($readerarray);
             foreach ($readerarray as $row) {
                 //var_dump($row['po_key']);
                 //var_dump($row['po']);
                 //$order_code = $row->order_code;
                 //$order_code = $row['order_code'];
                 //$po = substr($order_code, 4,10);
                 //$rest = substr("abcdef", -3, 1); // returns "d" 16IC5800050657::00102::M
                 //var_dump($po);
                 $season = $row['season'];
                 $order_code = $row['order_code'];
                 // 16IC5800050657::00102::M
                 $product = $row['product'];
                 // 1MC07A   4619L
                 $product_des = $row['product_description'];
                 $qty = $row['total_qty'];
                 $flash = $row['flash'];
                 $po = substr($order_code, 9, 5);
                 //
                 $size = substr($order_code, 23, 3);
                 $style = substr($product, 0, 8);
                 $color = substr($product, 9, 4);
                 $po_key = $po . "-" . $size;
                 $brand = substr($order_code, 2, 1);
                 if ($brand == "T") {
                     $brand = "TEZENIS";
                 } elseif ($brand == "I") {
                     $brand = "INTIMISSIMI";
                 } elseif ($brand == "C") {
                     $brand = "CALZEDONIA";
                 } else {
                     $brand = "";
                 }
                 if ($flash == 'N') {
                     $flash = '';
                 } else {
                     $flash = $flash;
                 }
                 $closed = 'Open';
                 $style = str_replace(' ', '', $style);
                 $size = str_replace(' ', '', $size);
                 $color = str_replace(' ', '', $color);
                 $porder = new Po();
                 $porder->po_key = $po_key;
                 $porder->order_code = $order_code;
                 $porder->po = $po;
                 $porder->size = $size;
                 $porder->style = $style;
                 $porder->color = $color;
                 $porder->color_desc = $product_des;
                 $porder->season = $season;
                 $porder->total_order_qty = $qty;
                 $porder->flash = $flash;
                 $porder->closed_po = $closed;
                 $porder->brand = $brand;
                 $porder->status;
                 $porder->type;
                 $porder->comment;
                 $porder->save();
                 $barcode = new BarcodeStock();
                 $barcode->po_id = $porder->id;
                 // ???
                 $barcode->user_id = 3;
                 $barcode->ponum = $po;
                 $barcode->size = $size;
                 $barcode->qty = 0;
                 $barcode->module;
                 $barcode->status;
                 $barcode->type = "insert";
                 $barcode->comment;
                 $barcode->save();
                 $carelabel = new CarelabelStock();
                 $carelabel->po_id = $porder->id;
                 // ???
                 $carelabel->user_id = 3;
                 $carelabel->ponum = $po;
                 $carelabel->size = $size;
                 $carelabel->qty = 0;
                 $carelabel->module;
                 $carelabel->status;
                 $carelabel->type = "insert";
                 $carelabel->comment;
                 $carelabel->save();
             }
         });
     }
     //Session::flash('file_uploaded_successfully', 'File has been uploaded successfully and has also updated the database.');
     return redirect('/');
     //return view('import.importresult', compact('reader'));
 }
 public function storep(Request $request2)
 {
     //
     //validation
     //$this->validate($request2, ['po'=>'required|min:5|max:5','size'=>'required|min:1|max:2','qty'=>'required'/*,'module'=>'min:4|max:10'*/]);
     $validator = Validator::make($request2->all(), ['po' => 'required|min:5|max:5', 'size' => 'required|min:1|max:3', 'module' => 'required|min:4|max:5', 'leader' => 'required']);
     if ($validator->fails()) {
         return redirect('/request')->withErrors($validator)->withInput();
     }
     $forminput = $request2->all();
     //dd($forminput);
     $ponum = $forminput['po'];
     $size = $forminput['size'];
     $qty = $forminput['qty'];
     $module = ucfirst($forminput['module']);
     $leader = $forminput['leader'];
     $comment = $forminput['comment'];
     $key = $ponum . '-' . $size;
     if (isset($forminput['barcode'])) {
         $barcode = $forminput['barcode'];
     } else {
         $barcode = '0';
     }
     if (isset($forminput['carelabel'])) {
         $carelabel = $forminput['carelabel'];
     } else {
         $carelabel = '0';
     }
     $type = "preparation";
     if ($qty <= 0 and $qty == NULL) {
         $qty = NULL;
         $status = "pending";
     } else {
         $status = "confirmed";
     }
     // virfy userId
     if (Auth::check()) {
         $userId = Auth::user()->id;
         //$module = Auth::user()->name;
     } else {
         $msg = 'Modul or User is not autenticated';
         return view('Request.errorp', compact('msg'));
     }
     // verify po_id
     try {
         $poid = Po::where('po_key', $key)->firstOrFail()->id;
     } catch (ModelNotFoundException $e) {
         $msg = 'PO and size not exist in Po table';
         return view('Request.errorp', compact('msg'));
     }
     // verify po is closed
     $po_closed = Po::where('po_key', $key)->firstOrFail()->closed_po;
     if ($po_closed == True) {
         $msg = 'Komesa is Closed';
         return view('Request.errorp', compact('msg'));
     }
     $msg = "";
     if ($barcode == '1') {
         try {
             $barcode = new BarcodeRequest();
             $barcode->po_id = $poid;
             $barcode->user_id = $userId;
             $barcode->ponum = $ponum;
             $barcode->size = $size;
             $barcode->qty = $qty;
             $barcode->module = $module;
             $barcode->leader = $leader;
             $barcode->status = $status;
             $barcode->type = $type;
             $barcode->comment = $comment;
             $barcode->save();
         } catch (\Illuminate\Database\QueryException $e) {
             $msg = "Problem to save in barcode request table";
             return view('Request.errorp', compact('msg'));
         }
         //return view('Request.success');
         $msg = '<p style="color:green;">Barcode request successfully saved</p>';
     }
     if ($carelabel == '1') {
         try {
             $carelabel = new CarelabelRequest();
             $carelabel->po_id = $poid;
             $carelabel->user_id = $userId;
             $carelabel->ponum = $ponum;
             $carelabel->size = $size;
             $carelabel->qty = $qty;
             $carelabel->module = $module;
             $carelabel->leader = $leader;
             $carelabel->status = $status;
             $carelabel->type = $type;
             $carelabel->comment = $comment;
             $carelabel->save();
         } catch (\Illuminate\Database\QueryException $e) {
             $msg = "Problem to save in carelabel request table";
             return view('Request.errorp', compact('msg'));
         }
         //return view('Request.success');
         $msg = $msg . '<p style="color:green;">Carelabel request successfully saved</p>';
     }
     if ($msg == "") {
         $msg = '<p style="color:red;"><big>BARCODE AND CARELABEL NOT SELECTED !!!</big></p>';
         return view('Request.errorp', compact('msg'));
     }
     if (time() < mktime(00, 30, 0)) {
         $del = "Delivery at 9:00";
     } else {
         if (time() < mktime(11, 30, 0)) {
             $del = "Delivery at 12:00";
         } else {
             $del = "Delivery tomorow at 07:00";
         }
     }
     return view('Request.success', compact('msg', 'del'));
 }