<?php

namespace App\Http\Controllers\user;

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

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\user\UserModel;
use App\Models\teamstore\TeamStoreModel;
use App\Models\MainModel;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Storage;


class UserController extends Controller
{

	public function index()
	{
		$m 		= new UserModel;
		$userRole = Auth::user()->role;

		if ($userRole == "store_owner") {
			$storeId = Auth::user()->store_id;

			$countStoreOrder = $m->countStoreOrder($storeId);
			$storeIncome = $m->storeIncome($storeId);
			$countStoreProduct = $m->countStoreProduct($storeId);
			$countStorePublishedProduct = $m->countStorePublishedProduct($storeId);

			$post_data = array(
				'isStoreOwner' => true,
				'store_order' => $countStoreOrder[0]->count_order,
				'store_income' => $storeIncome[0]->store_income,
				'store_product_count' => $countStoreProduct[0]->store_product_count,
				'store_published_product' =>  $countStorePublishedProduct[0]->store_published_product
			);
		} else {
			$post_data = array(
				'isStoreOwner' => false,
				'store_order' => "",
				'store_income' => "",
				'store_product_count' => "",
				'store_published_product' => ""
			);
		}

		// $post_data = json_encode($post_data, JSON_FORCE_OBJECT);
		return view('user-layouts.index')->with('data', $post_data);
	}

	public function addressBook()
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;

		$array_address_book 	= 	$m->selectAddresBook('UserId', $userId);

		return view('user-layouts.address_book')
			->with('array_address_book', $array_address_book);
	}

	public function createAddressBook()
	{

		return view('user-layouts.create_address_book');
	}

	public function saveAddressBook(Request $request)
	{
		$post 	=	$request->all();
		$m 		= new UserModel;

		$userId = Auth::user()->id;

		$data = array(
			'UserId'			=> $userId,
			'Fullname'			=> $post['fullname'],
			'ContactNumber'		=> $post['mobilenumber'],
			'OtherNotes' 	 	=> $post['othernotes'],
			'Address' 			=> $post['address'],
			'Address2' 			=> $post['address2'],
			'State'	 			=> $post['state'],
			'City' 		 		=> $post['city'],
			'ZipCode'     		=> $post['zipcode'],
			'CountryCode'     		=> $post['countryCode'],
			'Country'     		=> $post['country']
		);
		echo $i 	= 	$m->insertAddressBook($data);
	}

	public function editAddressBook($id)
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;

		$array_address_book 	= 	$m->selectAddresBook('Id', $id);

		if ($array_address_book[0]->UserId != $userId) {
			return redirect('user/address-book');
		}

		return view('user-layouts.edit_address_book')
			->with('array_address_book', $array_address_book);
	}

	public function updateAddressBook(Request $request)
	{
		$post 	=	$request->all();
		$m 		= new UserModel;

		$userId = Auth::user()->id;
		$id = $post['id'];

		$data = array(
			'UserId'			=> $userId,
			'Fullname'			=> $post['fullname'],
			'ContactNumber'		=> $post['mobilenumber'],
			'OtherNotes' 	 	=> $post['othernotes'],
			'Address' 			=> $post['address'],
			'Address2' 			=> $post['address2'],
			'State'	 			=> $post['state'],
			'City' 		 		=> $post['city'],
			'ZipCode'     		=> $post['zipcode'],
			'CountryCode'     		=> $post['countryCode'],
			'Country'     		=> $post['country']
		);


		echo $i 	= 	$m->saveUpdateAddressBook($data, $id);
	}

	public function profile()
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;

		$array_profile_info 	= 	$m->selectProfileInfo($userId);
		return view('user-layouts.profile')
			->with('array_profile_info', $array_profile_info);
	}

	public function editProfile()
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;

		$array_profile_info 	= 	$m->selectProfileInfo($userId);
		return view('user-layouts.edit_profile')
			->with('array_profile_info', $array_profile_info);
	}

	public function updateProfile(Request $request)
	{
		$post 	=	$request->all();
		$m 		= new UserModel;

		$userId = Auth::user()->id;

		$user_logins_data = array(
			'name'			=> $post['fullname'],
			'email'			=> $post['email']
		);

		$user_info_data = array(
			'UserId'			=> $userId,
			'ContactNumber'		=> $post['contactnumber'],
			'Gender'			=> $post['gender'],
			'Birthday'			=> date('Y-m-d', strtotime($post['birthday']))
		);

		$i = $m->saveUpdateUserLogins($user_logins_data, $userId);
		$i1 = $m->saveUpdateUserInfo($user_info_data, $userId);


		return $i;
	}

	public function changePassword()
	{
		return view('user-layouts.change_password');
	}

	public function updatePassword(Request $request)
	{
		$post 	=	$request->all();
		$m 		= new UserModel;
		$c_password = Auth::user()->password;
		$userId = Auth::user()->id;

		if (!(Hash::check($post['current_password'], $c_password))) {
			$message = "Your current password does not matches with the password you provided. Please try again.";
			return $message;
		}

		if (strcmp($post['current_password'], $post['new_password']) == 0) {
			//Current password and new password are same
			$message = "New Password cannot be same as your current password. Please choose a different password.";
			return $message;
		}

		if ($post['new_password'] != $post['con_new_password']) {
			// The passwords matches
			$message = "Password confirmation and New Password must match. Please try again.";
			return $message;
		}


		$i = $m->saveUpdatePassword(bcrypt($post['new_password']), $userId);

		return $i;
	}

	public function orders()
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;
		$array_payment_details 	= 	$m->selectPaymentDetails('UserId', $userId);

		// var_dump($array_payment_details);

		// var_dump($array_payment_details);
		return view('user-layouts.orders')->with('array_payment_details', $array_payment_details);
	}


	public function myDesigns()
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;

		$array_client_designs 	= 	$m->selectClientDesigns($userId);
		// var_dump($array_client_designs);
		return view('user-layouts.my-design')->with('array_client_designs', $array_client_designs);
	}

	public function viewDesign($designCode)
	{
		$m 		= new UserModel;
		$newMainModel 		= new MainModel;
		$userId = Auth::user()->id;
		$array_client_designs 	= 	$m->selectClientDesignsbyCode($designCode);

		// check if its your design	
		if ($userId != $array_client_designs[0]->ClientId) {
			return redirect()->back();
		}

		$array_template_paths 	= 	$m->selectTemplatePaths('TemplateCode', $array_client_designs[0]->TemplateCode);
		$array_cat_name = $newMainModel->selectCategoryName($array_client_designs[0]->TemplateCode);

		return view('user-layouts.view-design')
			->with('array_client_designs', $array_client_designs)
			->with('array_template_paths', $array_template_paths)
			->with('array_cat_name', $array_cat_name);
	}

	public function updateDesignDetails(Request $request)
	{
		$post 	=	$request->all();
		$m 		= new UserModel;

		$design_name = $post['design_name'];
		$design_code = $post['design_code'];

		$client_design_data = array(
			'DesignName'	=> $design_name
		);

		$i = $m->updateClientDesign($client_design_data, $design_code);

		return $i;
	}

	public function store()
	{
		$m 		= new UserModel;
		$userRole = Auth::user()->role;
		$array_store_info = array();

		if ($userRole == "store_owner") {
			$storeId = Auth::user()->store_id;

			$array_store_info 	= 	$m->selectStoreInfo($storeId);

			return redirect('teamstore/' . $array_store_info[0]->StoreUrl);
		}
	}

	public function storeItems()
	{
		$thumbnails = array();
		$newUserModel 		= new UserModel;
		$newTeamStoreModel 	= new TeamStoreModel;

		$user_role = Auth::user()->role;
		$store_id = Auth::user()->store_id;

		$store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);
		$product_array 	= $newTeamStoreModel->selectTeamStoreProducts('TeamStoreId', $store_id);

		foreach ($product_array as $p => $pr_arr) {

			$thumbnails_array 			= 	$newTeamStoreModel->getProductThumbnails($pr_arr->Id);

			if (!empty($thumbnails_array)) {
				$displayThumbnails = "product-image-placeholder.png";
				
				foreach ($thumbnails_array as $t => $thumb) {

					if ($thumb->ImageClass == 'custom') {
						$displayThumbnails = $thumb->Image;
						break;
					}

					if ($thumb->ImageClass == 'active') {
						$displayThumbnails = $thumb->Image;
						break;
					}
				}

				$thumbnails[] = array(
					'folder' 	=>	$store_array[0]->ImageFolder,
					'product_id' =>  $pr_arr->Id,
					'thumb'	     =>  $displayThumbnails
				);
			} else {
				$thumbnails[] = array(
					'folder' 	=>	$store_array[0]->ImageFolder,
					'product_id' =>  $pr_arr->Id,
					'thumb'	     =>  "product-image-placeholder.png"
				);
			}
		}

		return view('user-layouts.store_items')->with('store_array', $store_array)
			->with('product_array', $product_array)
			->with('thumbnails', $thumbnails);
	}

	public function viewStoreItem($url)
	{
		$product_array = array();
		$newUserModel 		= new UserModel;
		$newTeamStoreModel 	= new TeamStoreModel;

		$product_array 		= $newTeamStoreModel->selectTeamStoreProducts('ProductURL', $url);
		$thumbnails_array 	= $newTeamStoreModel->getThumbnails($product_array[0]->Id);
		$available_size = explode(",", $product_array[0]->AvailableSizes);
		$shipping_cost = $newUserModel->selectShippingCost();

		return view('user-layouts.view-store-item')->with('product_array', $product_array)
			->with('available_size', $available_size)
			->with('thumbnails_array', $thumbnails_array)
			->with('shipping_cost', $shipping_cost);
	}


	public function storeItemUpdate(Request $request)
	{
		$post 	=	$request->all();
		$newTeamStoreModel 	= new TeamStoreModel;

		if ($post['shipping_cost'] == 0) {
			$shipping_cost_id = null;
		} else {
			$shipping_cost_id = $post['shipping_cost'];
		}

		$item_url = $post['item_url'];
		$data = array(
			'ProductName'			=> $post['itemName'],
			'ProductPrice'			=> str_replace('$ ', '', $post['item_price']),
			'ProductDescription'	=> $post['itemDescription'],
			'PrivacyStatus' 	 	=> $post['item_privacy'],
			'ProductForm'			=> $post['itemForm'],
			'AvailableSizes'		=> implode(",", $post['available_size']),
			'ShippingCostId'		=> $shipping_cost_id

		);

		$i 	= $newTeamStoreModel->updateStoreItem($data, $item_url);

		return $i;
	}

	public function storeSetting()
	{
		$TeamStoreModel 	= new TeamStoreModel;
		$store_id = Auth::user()->store_id;

		$store_array 	= $TeamStoreModel->selectTeamStore('Id', $store_id);
		return view('user-layouts.store_setting')
			->with('store_array', $store_array);
	}

	public function emailVerify()
	{
		$m 		= new UserModel;
		$userId = Auth::user()->id;
		$email_is_verified = Auth::user()->email_is_verified;

		if ($email_is_verified == 0) {
			$array_profile_info 	= 	$m->selectProfileInfo($userId);
			return view('user-layouts.email_verify')
				->with('array_profile_info', $array_profile_info);
		}

		return redirect('user/profile');
	}


	public function resendVericationCode(Request $request)
	{
		$post 	=	$request->all();
		$random_hash =  rand(1000, 9999);

		$newUserModel 		= new UserModel;

		$emailDetails = [
			'receiver'   => $post['email'],
			'subject' => 'CREW Sportswear Email Verification Code',
			'verification_code' 		=> $random_hash
		];

		Mail::send('emails.resend_code', $emailDetails, function ($message) use ($emailDetails) {

			$message->from('no-reply@crewsportswear.com', 'CREW Sportswear');
			$message->to($emailDetails['receiver'])->subject('CREW Sportswear Email Verification Code');
		});

		if (count(Mail::failures()) > 0) {

			echo '0';
		} else {
			$data = array(
				'EmailAddress'		=> $post['email'],
				'VerCode'		=> $random_hash
			);

			$i 	= $newUserModel->saveResendCode($data);
			echo $i;
		}
	}


	public function verifyCode(Request $request)
	{
		$post 	=	$request->all();

		$verification_code = $post['verification_code'];
		$userEmail = Auth::user()->email;

		$newUserModel 		= new UserModel;
		$userId = Auth::user()->id;

		$data = array(
			'EmailAddress'		=> $userEmail,
			'Code'				=> $verification_code
		);

		$i 	= $newUserModel->validateCode($data);
		// var_dump($i);

		if ($i) {

			$user_logins_data = array(
				'email_is_verified'		=> 1
			);

			$newUserModel->saveUpdateUserLogins($user_logins_data, $userId);

			return response()->json(array(
				'success' => true,
				'message' => 'Your email is successfully verified.'
			));
		} else {
			return response()->json(array(
				'success' => false,
				'message' => 'Invalid verification code.'
			));
		}
	}

	public function orderDetails($ck)
	{
		$newUserModel 		= new UserModel;
		$order_item_array 	= $newUserModel->selectOrderItem($ck);
		$item_goup_array 	= $newUserModel->itemGroup($ck);
		$item_thumbs 		= $newUserModel->selectDisplayItemThumb();
		$array_payment_details 	= 	$newUserModel->selectPaymentDetails('CartKey', $ck);
		return view('user-layouts.order_details')
			->with('array_payment_details', $array_payment_details)
			->with('img_thumb', $item_thumbs)
			->with('item_goup_array', $item_goup_array)
			->with('order_item_array', $order_item_array);
	}

	public function sellDesign($designCode)
	{
		$m 		= new UserModel;
		$newMainModel 		= new MainModel;
		$newTeamStoreModel 	= new TeamStoreModel;
		$userId 	= Auth::user()->id;
		$store_id 	= Auth::user()->store_id;
		$array_client_designs 	=	$m->selectClientDesignsbyCode($designCode);
		$store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);
		// check if its your design	
		if ($userId != $array_client_designs[0]->ClientId) {
			return redirect()->back();
		}

		// var_dump($store_array);

		$array_template_paths 	= 	$m->selectTemplatePaths('TemplateCode', $array_client_designs[0]->TemplateCode);
		$array_cat_name = $newMainModel->selectCategoryName($array_client_designs[0]->TemplateCode);

		return view('user-layouts.sell_design')
			->with('array_client_designs', $array_client_designs)
			->with('array_template_paths', $array_template_paths)
			->with('store_array', $store_array)
			->with('array_cat_name', $array_cat_name);
	}

	public function buyDesign($designCode)
	{
		$m 		= new UserModel;
		$newMainModel 		= new MainModel;
		$newTeamStoreModel 	= new TeamStoreModel;
		$userId 	= Auth::user()->id;
		// $store_id 	= Auth::user()->store_id;
		$array_client_designs 	=	$m->selectClientDesignsbyCode($designCode);
		// $store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);
		// check if its your design	
		if ($userId != $array_client_designs[0]->ClientId) {
			return redirect()->back();
		}

		// var_dump($store_array);

		$array_template_paths 	= 	$m->selectTemplatePaths('TemplateCode', $array_client_designs[0]->TemplateCode);
		$array_cat_name = $newMainModel->selectCategoryName($array_client_designs[0]->TemplateCode);

		return view('user-layouts.buy_design')
			->with('array_client_designs', $array_client_designs)
			->with('array_template_paths', $array_template_paths)
			// ->with('store_array', $store_array)
			->with('array_cat_name', $array_cat_name);
	}

	//save item from my design //
	public function saveNewStoreItem(Request $request)
	{
		$post 	=	$request->all();
		$UserModel		= new UserModel;
		$newTeamStoreModel 	= new TeamStoreModel;
		$getYear = date('y');

		$store_id 	= Auth::user()->store_id;
		$store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);

		$templateCode = $post['templateCode'];
		$designCode = $post['designCode'];
		$itemName = $post['itemName'];
		$itemDescription = $post['itemDescription'];
		$itemPrice = $post['itemPrice'];
		$itemForm = $post['itemForm'];
		$itemUrl = $store_array[0]->StoreUrl . '-' . $post['itemUrl'];
		$itemPrivacy = $post['itemPrivacy'];
		$available_size = implode(",", $_POST['available_size']);

		$check_product_url = array(
			'ProductURL' => $itemUrl
		);

		$validator = Validator::make(
			$check_product_url,
			[
				'ProductURL' 			=> 'unique:teamstore_products'
			],
			[
				'ProductURL.unique' => 'The Item URL has already been taken.',
			]
		);


		if ($validator->fails()) {
			$errors = "";
			// var_dump(($validator->errors()->all()));
			foreach ($validator->errors()->all() as $error) {
				$errors .= "<li>" . $error . "</li>";
			}

			$message = '
			<div class="alert alert-danger alert-dismissible">
				<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
					<h4><i class="icon fa fa-ban"></i> ERROR:</h4>
					' . $errors .
				'</div>';

			return response()->json(array(
				'success' => false,
				'message' => $message
			));
		}

		$data = array(
			'TeamStoreId'		=> $store_id,
			'ProductName'		=> $itemName,
			'ProductPrice'		=> str_replace('$ ', '', $itemPrice),
			'ProductDescription' => $itemDescription,
			'ProductURL'		=> $itemUrl,
			'ProductForm'		=> $itemForm,
			'AvailableSizes'	=> $available_size,
			'PrivacyStatus'		=> $itemPrivacy,
			'TemplateCode'		=> $templateCode,
			'DesignCode'		=> $designCode,
		);

		$id 	= $UserModel->insertNewProduct($data); // product item id
		// echo $i;

		$array_template_paths 	= 	$UserModel->selectTemplatePaths('TemplateCode', $templateCode);

		foreach ($array_template_paths as $key => $row1) {
			if ($key  == 0) {
				$thumb =  $designCode . '-front-thumbnail.png';
				$class = "active";
			} else {
				$thumb =  $designCode . '-' . strtolower($row1->Side) . '-thumbnail.png';
				$class = null;
			}

			$thumbs = 	$data = array(
				'ProductId' => $id,
				'Image' => $thumb,
				'ImageClass' => $class
			);

			$UserModel->insertNewProductThumbnails($thumbs);
		}

		$prod_code = array('ProductCode' => $getYear . '-' . str_pad($id, 10, '0', STR_PAD_LEFT));
		$i = $UserModel->updateProductCode($prod_code, $id);

		return response()->json(array(
			'success' => true
		));
	}

	function addStoreItem()
	{
		$newTeamStoreModel 	= new TeamStoreModel;

		$user_role = Auth::user()->role;
		$store_id = Auth::user()->store_id;

		$store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);
		return view('user-layouts.add_item')->with('store_array', $store_array);
	}

	//manually uploading item
	function saveNewItem(Request $request)
	{

		$post 	=	$request->all();
		// var_dump($post['imgupload']);
		$UserModel		= new UserModel;
		$newTeamStoreModel = new TeamStoreModel;
		$getYear = date('y');

		$store_id 	= Auth::user()->store_id;
		$store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);

		$templateCode = $post['templateCode'];
		$designCode = $post['designCode'];
		$itemName = $post['itemName'];
		$itemDescription = $post['itemDescription'];
		$itemPrice = $post['itemPrice'];
		$itemForm = $post['itemForm'];
		$itemUrl = $store_array[0]->StoreUrl . '-' . $post['itemUrl'];
		$itemPrivacy = $post['itemPrivacy'];
		$available_size = implode(",", $_POST['available_size']);



		$check_product_url = array(
			'ProductURL' => $itemUrl
		);

		$validator = Validator::make(
			$check_product_url,
			[
				'ProductURL' 			=> 'unique:teamstore_products'
			],
			[
				'ProductURL.unique' => 'The Item URL has already been taken.',
			]
		);


		if ($validator->fails()) {
			$errors = "";
			// var_dump(($validator->errors()->all()));
			foreach ($validator->errors()->all() as $error) {
				$errors .= "<li>" . $error . "</li>";
			}

			$message = '
			<div class="alert alert-danger alert-dismissible">
				<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
					<h4><i class="icon fa fa-ban"></i> ERROR:</h4>
					' . $errors .
				'</div>';

			return response()->json(array(
				'success' => false,
				'message' => $message
			));
		}

		$data = array(
			'TeamStoreId'		=> $store_id,
			'ProductName'		=> $itemName,
			'ProductPrice'		=> str_replace('$ ', '', $itemPrice),
			'ProductDescription' => $itemDescription,
			'ProductURL'		=> $itemUrl,
			'ProductForm'		=> $itemForm,
			'AvailableSizes'	=> $available_size,
			'PrivacyStatus'		=> $itemPrivacy,
			'TemplateCode'		=> $templateCode,
			'DesignCode'		=> $designCode,
		);

		$id 	= $UserModel->insertNewProduct($data); // product item id
		// echo $id;

		for ($i = 0; $i < count($post['imgupload']); $i++) {
			$rawName = date('Ymd') . "-" . time() . '-' . $request->file('imgupload')[$i]->getClientOriginalName();
			$imageExt = $request->file('imgupload')[$i]->getClientOriginalExtension();

			$custom_file_name	=	str_replace(' ', '-', strtolower($rawName));
			$custom_file_name	= preg_replace("/\.[^.\s]{3,4}$/", "", $custom_file_name);
			$NewImageName = $custom_file_name . '.' . $imageExt;
			$thumbnail =  $NewImageName;

			if ($i == 0) {
				$imageClass = "active";
			} else {
				$imageClass = null;
			}

			$thumbs = 	$data = array(
				'ProductId' => $id,
				'Image' => $thumbnail,
				'ImageClass' => $imageClass
			);

			$u = $UserModel->insertNewProductThumbnails($thumbs);
			// var_dump($thumbs);
			Storage::disk('sftp')->put($thumbnail, fopen($request->file('imgupload')[$i], 'r+')); //live
			//Storage::disk('localdir')->put($thumbnail, fopen($request->file('imgupload')[$i], 'r+'));
			// var_dump($s);
		}

		$prod_code = array('ProductCode' => $getYear . '-' . str_pad($id, 10, '0', STR_PAD_LEFT));
		$i = $UserModel->updateProductCode($prod_code, $id);


		return response()->json(array(
			'success' => true,
			'message' => 'success'
		));
	}

	function saveNewItemImage(Request $request)
	{
		$post 	=	$request->all();
		$UserModel		= new UserModel;
		$getYear = date('y');
		$id = $post['_id'];

		$getActiveDisplay = $UserModel->selectDisplayItemThumbById($id);

		for ($i = 0; $i < count($post['upload_images']); $i++) {
			$rawName = date('Ymd') . "-" . time() . '-' . $request->file('upload_images')[$i]->getClientOriginalName();
			$imageExt = $request->file('upload_images')[$i]->getClientOriginalExtension();

			$custom_file_name	=	str_replace(' ', '-', strtolower($rawName));
			$custom_file_name	= preg_replace("/\.[^.\s]{3,4}$/", "", $custom_file_name);
			$NewImageName = $custom_file_name . '.' . $imageExt;
			$thumbnail =  $NewImageName;

			if ($i == 0 && empty($getActiveDisplay)) {
				$imageClass = "active";
			} else {
				$imageClass = null;
			}

			$thumbs = 	$data = array(
				'ProductId' => $id,
				'Image' => $thumbnail,
				'ImageClass' => $imageClass
			);

			$u = $UserModel->insertNewProductThumbnails($thumbs);
			Storage::disk('sftp')->put($thumbnail, fopen($request->file('upload_images')[$i], 'r+')); //live
			//Storage::disk('localdir')->put($thumbnail, fopen($request->file('upload_images')[$i], 'r+'));

		}


		return response()->json(array(
			'success' => true,
			'message' => 'success'
		));
	}

	function deleteImageThumb(Request $request)
	{
		$file =  $request->thumb_filename;
		$id	  =  $request->thumb_id;
		$UserModel		= new UserModel;

		$storagePath  = Storage::disk('sftp')->getDriver()->getAdapter()->getPathPrefix();
		if (file_exists($storagePath . $file)) {
			unlink($storagePath . $file);
		}

		$i = $UserModel->deleteImageThumb('Id', $id);

		return response()->json(array(
			'success' 		=> true,
			'message' 		=> 'success',
			'delete_row' 	=> 'item-' . $id
		));
	}

	function updateActiveThumbnail(Request $request)
	{
		$post 	=	$request->all();
		$UserModel		= new UserModel;
		$i = $UserModel->updateActiveThumb($post['id'], $post['product_id']);
		// var_dump($i);

	}

	function saveThumbnailOrdering(Request $request)
	{
		$post 	=	$request->all();
		$arrayItems = $post['item'];
		$order = 1;
		$UserModel		= new UserModel;

		foreach ($arrayItems as $item) {
			$i = $UserModel->updateThumbnailOrdering($order, $item);
			$order++;
		}

		return response()->json(array(
			'success' => true,
			'message' => 'success'
		));
	}

	function saveItemOrdering(Request $request)
	{
		$post 	=	$request->all();
		$arrayItems = $post['order_number'];
		$order = 1;
		$UserModel		= new UserModel;

		foreach ($arrayItems as $item) {
			$i = $UserModel->updateItemOrdering($order, $item);
			$order++;
		}

		return response()->json(array(
			'success' => true,
			'message' => 'success'
		));
	}



	function storeSettingUpdate(Request $request)
	{
		$post 	=	$request->all();
		$UserModel 	    = new UserModel;

		$store_id   	= Auth::user()->store_id;
		$store_name     = $post['store_name'];
		$store_url      = $post['store_url'];
		$orig_store_url = $post['orig_store_url'];


		if ($post['store_status'] == "Public") {
			$store_status = "true";
		} else {
			$store_status = "false";
		}

		if (isset($post['set_store_password'])) {
			$store_password = $post['store_password'];
		} else {
			$store_password = null;
		}

		if ($request->file('store_logo') != null) {
			$store_logo_name    = 'logo.' . $request->file('store_logo')->getClientOriginalExtension();
		} else {
			$store_logo_name = $post['orig_store_logo'];
		}

		if ($request->file('store_banner') != null) {
			$store_banner_name = 'banner.' . $request->file('store_banner')->getClientOriginalExtension();
		} else {
			$store_banner_name = $post['orig_store_banner'];
		}


		if ($orig_store_url != $store_url) {

			$check_store_url = array(
				'StoreUrl' => $store_url
			);

			$validator = Validator::make(
				$check_store_url,
				[
					'StoreUrl' 			=> 'unique:teamstores'
				],
				[
					'StoreUrl.unique' => 'The Store URL has already been taken.',
				]
			);


			if ($validator->fails()) {
				$errors = "";

				foreach ($validator->errors()->all() as $error) {
					$errors .= "<li>" . $error . "</li>";
				}

				return response()->json(array(
					'success' => false,
					'clearform'  => false,
					'message' => $errors
				));
			}
		}

		$data = array(
			'StoreUrl'		=> $store_url,
			// 'ImageFolder'	=> $store_url,
			'Password'		=> $store_password,
			'HashId' 	 	=> md5($store_url),
			'StoreName' 	=> $store_name,
			'StoreLogo'	    => $store_logo_name,
			'StoreBanner' 	=> $store_banner_name,
			'IsActive'      => $store_status
		);

		// var_dump($data);


		$res 	= $UserModel->updateTeamstore($store_id, $data);
		// var_dump($res);
		// if($res){
		if ($request->file('store_logo') != null) {
			Storage::disk('uploads')->put('/teamstore/' .   $orig_store_url . '/'  . $store_logo_name, fopen($request->file('store_logo'), 'r+'));
		}

		if ($request->file('store_banner') != null) {
			Storage::disk('uploads')->put('/teamstore/' .   $orig_store_url . '/'  . $store_banner_name, fopen($request->file('store_banner'), 'r+'));
		}

		return response()->json(array(
			'success' => true,
			'clearform'  => false,
			'message' => 'Store is successfully updated.'
		));

		// }else{
		//     return response()->json(array(
		//         'success' => false, 
		//         'clearform'  => true,
		// 		'message' => 'Something went wrong. Please refresh the page and try again.'
		// 	));
		// }

	}

	function storeOrders()
	{
		$UserModel				= new UserModel;
		$newTeamStoreModel		= new TeamStoreModel;
		$store_id 			= Auth::user()->store_id;

		$array_store_orders = $UserModel->selectStoreOrders($store_id);
		$store_array 	= 	$newTeamStoreModel->selectTeamStore('Id', $store_id);

		return view('user-layouts.store-orders')
			->with('store_array', $store_array)
			->with('array_store_orders', $array_store_orders);
	}

	function showStoreOrderDetails(Request $request)
	{

		$post 					=	$request->all();
		// var_dump($post['pid']);
		$UserModel				= new UserModel;
		$array_payment_details 	= $UserModel->selectPaymentDetails('CartKey', $post['ck']);
		$array_shipping_add 	= $UserModel->selectShippingAddress('PaymentDetail_Id', $array_payment_details[0]->Id);

		$array_thumbnail_display = $UserModel->selectDisplayItemThumbById($post['pid']);
		$array_item = $UserModel->selectOrder('Id', $post['id']);
		$handle_order_detail_body = view('user-layouts.order-details-body')
			->with('array_payment_details', $array_payment_details)
			->with('array_shipping_add', $array_shipping_add)
			->with('array_thumbnail_display', $array_thumbnail_display)
			->with('array_item', $array_item)
			->render();


		return response()->json(array(
			'success' => true,
			'payment_details_response' => $handle_order_detail_body,
			'thumb' => $array_thumbnail_display,
			'item' => $array_item
		));
	}


	function itemStoreReArrange()
	{
		$thumbnails = array();
		$newUserModel 		= new UserModel;
		$newTeamStoreModel 	= new TeamStoreModel;

		$user_role = Auth::user()->role;
		$store_id = Auth::user()->store_id;

		$store_array 	= $newTeamStoreModel->selectTeamStore('Id', $store_id);
		$product_array 	= $newTeamStoreModel->selectTeamStoreProducts('TeamStoreId', $store_id);

		foreach ($product_array as $p => $pr_arr) {

			$thumbnails_array 			= 	$newTeamStoreModel->getProductThumbnails($pr_arr->Id);

			if (!empty($thumbnails_array)) {
				$displayThumbnails = "product-image-placeholder.png";

				foreach ($thumbnails_array as $t => $thumb) {

					if ($thumb->ImageClass == 'custom') {
						$displayThumbnails = $thumb->Image;
						break;
					}

					if ($thumb->ImageClass == 'active') {
						$displayThumbnails = $thumb->Image;
						break;
					}
				}

				$thumbnails[] = array(
					'folder' 	=>	$store_array[0]->ImageFolder,
					'product_id' =>  $pr_arr->Id,
					'thumb'	     =>  $displayThumbnails
				);
			} else {
				$thumbnails[] = array(
					'folder' 	=>	$store_array[0]->ImageFolder,
					'product_id' =>  $pr_arr->Id,
					'thumb'	     =>  "product-image-placeholder.png"
				);
			}
		}

		return view('user-layouts.store_items_arrange')->with('store_array', $store_array)
			->with('product_array', $product_array)
			->with('thumbnails', $thumbnails);
	}

	function deleteStoreItem(Request $request)
	{
		// 
		$post 					=	$request->all();

		$UserModel				= new UserModel;
		$res 	= $UserModel->deleteStoreItem($post['id']);

		if ($res) {
			return response()->json(array(
				'success' => true,
				'message' => "Store item is successfully delete."
			));
		} else {
			return response()->json(array(
				'success' => false,
				'message' => "Something went wrong. Please try again!"
			));
		}
	}


	function announcementIndex()
	{
		$UserModel				= new UserModel;
		$storeId = Auth::user()->store_id;

		$getAnnouncement 	= $UserModel->getAnnouncement($storeId);

		if (count($getAnnouncement) > 0) {
			$data = $getAnnouncement[0];
		} else {
			$data =  (object) array(
				'Id' => 0,
				'StoreId' => "",
				'Announcement' => "",
				'IsActive' => 0,
				'DateCreated' => ""
			);
		}
		return view('user-layouts.announcement')
			->with("data", $data)
			->render();
	}


	function announcementUpdateSave(Request $request)
	{
		$post 					=	$request->all();
		$UserModel				= new UserModel;

		$storeId = Auth::user()->store_id;

		$getAnnouncement 	= $UserModel->getAnnouncement($storeId);
		$data = array(
			'StoreId' => $storeId,
			'Announcement' => htmlentities($post['announcementInput'])
		);

		// var_dump($getAnnouncement[0]->Id);

		if (count($getAnnouncement) > 0) {
			$response = $UserModel->updateAnnouncement($getAnnouncement[0]->Id, $data);
		} else {
			$data['IsActive'] = 0;
			$response = $UserModel->saveNewAnnouncement($data);
		}

		try {
			return response()->json(array(
				'success' => true,
				'message' => "Announcement is successfully updated."
			));
		} catch (\Throwable $th) {
			//throw $th;
			return response()->json(array(
				'success' => false,
				'message' => $th
			));
		}
	}

	function announcementUpdateStatus(Request $request)
	{
		$post 					=	$request->all();
		$UserModel				= new UserModel;

		$storeId = Auth::user()->store_id;

		$getAnnouncement 	= $UserModel->getAnnouncement($storeId);

		if (!count($getAnnouncement)) {
			return response()->json(array(
				'success' => false,
				'message' => 'Please update your announcement first.'
			));
		}


		$data = array(
			'IsActive' => ($post['IsActive'] == 'true') ? 1 : 0
		);

		$UserModel->updateAnnouncement($getAnnouncement[0]->Id, $data);

		return response()->json(array(
			'success' => true,
			'message' => "Announcement is successfully updated."
		));

		// var_dump($data);

		// $response = $UserModel->updateAnnouncement($getAnnouncement[0]->Id, $data);

	}
}
