<?php
namespace App\Http\Controllers;
use App\Events\AcceptServiceWorkshopProposalEvent;
use App\Mail\AcceptWorkshopProposalEmail;
use App\Models\Order;
use App\Models\User;
use App\Models\Workshop;
use App\Models\WorkshopClientRequest;
use App\Models\WorkshopServiceProposal;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Session;
class CustomerWorkshopRequestsController extends Controller {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\View\View
*/
public function index() {
// Get all children categories From Vehículos and Motocicletas
$availableCategories = CategoryController::getCategoryWithChildrens(['Vehículos', 'Motocicletas']);
$orders = Order::latest()
->where('user_id', Auth::id())
->with([
'orderDetails',
'orderDetails.product',
'orderDetails.product.product_translations',
'pickup_point']
)->get();
$orders->each(function ($order, $key) use ($orders, $availableCategories) {
// Check if some product can be installed
$isAvailableToWorkshop = false;
foreach ($order->orderDetails as $orderDetail) {
// Get the category name of product
$productName = $orderDetail->product->category->name ?? null;
if ($productName && $availableCategories->contains($productName)) {
$isAvailableToWorkshop = true;
break;
}
}
if (!$isAvailableToWorkshop) {
$orders->forget($key);
}
});
return view('frontend.user.workshop_request.index', compact('orders'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {
$workshopService = WorkshopServiceProposal::findOrFail($id);
$workshopService->current_acceptance_request_date = now();
$workshopService->client_accepts_mechanic = 1;
$workshopService->save();
$workshopClientRequest = WorkshopClientRequest::where('order_id', $workshopService->order_id)->first();
if ($workshopClientRequest) {
$workshopClientRequest->estado_solicitud = 'desactivado';
$workshopClientRequest->save();
}
$client = User::findOrFail($workshopService->user_id);
$nombreCliente = $client->name;
$workshop = Workshop::findOrFail($workshopService->workshop_id);
$userTaller = User::findOrFail($workshop->user_id);
$idTaller = $userTaller->id;
//notificar a los talleres
self::make_accept_notification($workshopService);
Mail::to($userTaller->email)->send(new AcceptWorkshopProposalEmail($nombreCliente, $idTaller));
return response()->json(['success' => true]);
}
static function make_accept_notification($workshopService) {
event(new AcceptServiceWorkshopProposalEvent($workshopService));
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) {
//
}
public function purchase_package(Request $request) {
$workshopServiceId = $request->input('workshopService_id');
$workshopService = WorkshopServiceProposal::find($workshopServiceId);
if ($request->payment_type == 'sslcommerz') {
$data['workshopService_id'] = $request->workshopService_id;
$data['payment_method'] = $request->payment_type;
$request->session()->put('payment_type', 'seller_package_payment');
$request->session()->put('payment_data', $data);
if (Session::has('payment_type')) {
if (Session::get('payment_type') == 'cart_payment') {
$post_data = array();
$post_data['total_amount'] = $workshopService->installation_amount; # You cant not pay less than 10
$post_data['currency'] = "BDT";
$post_data['tran_id'] = substr(md5($request->session()->get($request->input('workshopService_id'))), 0, 10); // tran_id must be unique
$post_data['value_a'] = $post_data['tran_id'];
$post_data['value_b'] = $request->session()->get($request->input('workshopService_id'));
$post_data['value_c'] = $request->session()->get('payment_type');
#Start to save these value in session to pick in success page.
// $_SESSION['payment_values']['tran_id']=$post_data['tran_id'];
// $_SESSION['payment_values']['order_id']=$request->session()->get('order_id');
// $_SESSION['payment_values']['payment_type']=$request->session()->get('payment_type');
#End to save these value in session to pick in success page.
# CUSTOMER INFORMATION
// $post_data['cus_name'] = $request->session()->get('shipping_info')['name'];
// $post_data['cus_add1'] = $request->session()->get('shipping_info')['address'];
// $post_data['cus_city'] = $request->session()->get('shipping_info')['city'];
// $post_data['cus_postcode'] = $request->session()->get('shipping_info')['postal_code'];
// $post_data['cus_country'] = $request->session()->get('shipping_info')['country'];
// $post_data['cus_phone'] = $request->session()->get('shipping_info')['phone'];
// $post_data['cus_email'] = $request->session()->get('shipping_info')['email'];
} elseif (Session::get('payment_type') == 'wallet_payment') {
$post_data = array();
$post_data['total_amount'] = $request->session()->get('payment_data')['amount']; # You cant not pay less than 10
$post_data['currency'] = "BDT";
$post_data['tran_id'] = substr(md5(Auth::user()->id), 0, 10); // tran_id must be unique
$post_data['value_a'] = $post_data['tran_id'];
$post_data['value_b'] = $request->session()->get('payment_data')['amount'];
$post_data['value_c'] = $request->session()->get('payment_type');
$post_data['value_d'] = Auth::user()->id;
#Start to save these value in session to pick in success page.
// $_SESSION['payment_values']['tran_id']=$post_data['tran_id'];
// $_SESSION['payment_values']['payment_data']=$request->session()->get('payment_data');
// $_SESSION['payment_values']['payment_type']=$request->session()->get('payment_type');
#End to save these value in session to pick in success page.
} elseif (Session::get('payment_type') == 'customer_package_payment') {
$post_data = array();
$post_data['total_amount'] = $workshopService->installation_amount; # You cant not pay less than 10
$post_data['currency'] = "BDT";
$post_data['tran_id'] = substr(md5(Auth::user()->id), 0, 10); // tran_id must be unique
$post_data['value_a'] = $post_data['tran_id'];
$post_data['value_b'] = $request->session()->get('payment_data')['customer_package_id'];
$post_data['value_c'] = $request->session()->get('payment_type');
$post_data['value_d'] = Auth::user()->id;
#Start to save these value in session to pick in success page.
// $_SESSION['payment_values']['tran_id']=$post_data['tran_id'];
// $_SESSION['payment_values']['payment_data']=$request->session()->get('payment_data');
// $_SESSION['payment_values']['payment_type']=$request->session()->get('payment_type');
#End to save these value in session to pick in success page.
} elseif (Session::get('payment_type') == 'seller_package_payment') {
$post_data = array();
$post_data['total_amount'] = $workshopService->installation_amount; # You cant not pay less than 10
$post_data['currency'] = "BDT";
$post_data['tran_id'] = substr(md5(Auth::user()->id), 0, 10); // tran_id must be unique
$post_data['value_a'] = $post_data['tran_id'];
$post_data['value_b'] = $request->session()->get('payment_data')['workshopService_id'];
$post_data['value_c'] = $request->session()->get('payment_type');
$post_data['value_d'] = Auth::user()->id;
#Start to save these value in session to pick in success page.
// $_SESSION['payment_values']['tran_id']=$post_data['tran_id'];
// $_SESSION['payment_values']['payment_data']=$request->session()->get('payment_data');
// $_SESSION['payment_values']['payment_type']=$request->session()->get('payment_type');
#End to save these value in session to pick in success page.
}
# CUSTOMER INFORMATION
$user = Auth::user();
$post_data['cus_name'] = $user->name;
$post_data['cus_add1'] = $user->address;
$post_data['cus_city'] = $user->city;
$post_data['cus_postcode'] = $user->postal_code;
$post_data['cus_country'] = $user->country;
$post_data['cus_phone'] = $user->phone;
$post_data['cus_email'] = $user->email;
}
$post_data = array();
$post_data['total_amount'] = $workshopService->installation_amount; # No se puede pagar menos de 10
$post_data['currency'] = "BDT";
$server_name = $request->root() . "/";
$post_data['success_url'] = $server_name . "customer/sslcommerz/success";
$post_data['fail_url'] = $server_name . "customer/sslcommerz/fail";
$post_data['cancel_url'] = $server_name . "customer/sslcommerz/cancel";
$sslc = new SSLCommerz();
$payment_options = $sslc->initiate($post_data, false);
if (!is_array($payment_options)) {
print_r($payment_options);
$payment_options = array();
}
} else {
dd('Selecciona un método de pago');
}
}
public function success(Request $request) {
//echo "Transaction is Successful";
dd('Transaction is Successful');
}
public function fail(Request $request) {
dd('Transaction is fail');
}
public function cancel(Request $request) {
dd('Transaction is cancel');
}
}
|