123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Services\LiquidRenderer;
- use App\Models\DistInquiry;
- use App\Services\MailService;
- class ContactController extends Controller
- {
- protected $liquidRenderer;
- public function __construct(LiquidRenderer $liquidRenderer)
- {
- $this->liquidRenderer = $liquidRenderer;
- }
- function create()
- {
-
- $breadcrumbs = [
- [
- 'url' => '/',
- 'name' => 'Home',
- ]
- ];
- $breadcrumbs[] = [
- 'url' => '#',
- 'name' => 'Contact Us',
- ];
-
- $output = LiquidRenderer::render('pages_sp_contact.liquid', [
- 'breadcrumbs' => $breadcrumbs,
- ]);
- return response($output);
- }
- function store(Request $request)
- {
- try {
-
- if ($request->has('_token')) {
- if ($request->input('_token') !== csrf_token()) {
- return response()->json([
- 'status' => 'error',
- 'message' => 'Invalid token.',
- ], 403);
- }
- }
-
- $validatedData = $request->validate([
- 'customer_name' => 'required|string|max:255',
- 'content' => 'required|string',
-
- ]);
-
- $data = $request->all();
-
- $data['dist_id'] = 0;
- $data['referer_url']=$request->headers->get('referer');
- $data['ip_address'] = $request->server('HTTP_X_REAL_IP');
- if (empty($data['ip_address'])) {
- $forwardedFor = $request->server('HTTP_X_FORWARDED_FOR');
- if ($forwardedFor) {
- $ips = explode(',', $forwardedFor);
- $data['ip_address'] = trim($ips[0]);
- } else {
- $data['ip_address'] = $request->ip();
- }
- }
- $data['order_number']= generateOrderNumber('ORD');
-
- $distInquiry = DistInquiry::create($data);
-
- if (!$distInquiry) {
- throw new \Exception('submit failed, please try again later. ');
- }
-
- $inquiryData = [
- 'order_number' => $distInquiry->order_number,
- 'customer_name' => $distInquiry->customer_name,
- 'email' => $distInquiry->email,
- 'whats_app' => $distInquiry->whats_app,
- 'consulting_products' => $distInquiry->consulting_products,
- 'freight_forwarder' => $distInquiry->freight_forwarder,
- 'business_model' => $distInquiry->business_model,
- 'content' => $distInquiry->content,
- 'referer_url' => $distInquiry->referer_url,
- 'ip'=> $data['ip_address'],
- ];
-
- $mailSent = MailService::sendInquiryMail($inquiryData);
-
- $response = [
- 'status' => 'success'
- ];
- return response()->json($response, 200);
- } catch (\Exception $e) {
-
- $response = [
- 'status' => 'error',
- 'message' => 'submit failed, please try again later. ',
- ];
- return response()->json($response, 500);
- }
- }
- }
|