HOME


Mini Shell 1.0
La Pieza.DO | Todo lo que buscas!

Bienvenido de nuevo!

Acceso Cuenta Delivery
DIR: /var/www/devs.lapieza.net/app/Http/Controllers/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Http/Controllers/CustomerWorkshopRequestsController.php
<?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');
    }
}