cms-token/@core/app/Http/Controllers/OrderManageController.php

279 lines
11 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Facades\EmailTemplate;
use App\Helpers\LanguageHelper;
use App\Helpers\NexelitHelpers;
use App\Language;
use App\Mail\BasicMail;
use App\Mail\OrderReply;
use App\Mail\PaymentSuccess;
use App\Mail\PlaceOrder;
use App\Mail\QuoteReply;
use App\Order;
use App\PaymentLogs;
use App\PricePlan;
use App\Quote;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class OrderManageController extends Controller
{
public function __construct()
{
$this->middleware('auth:admin');
}
public function all_orders(){
$all_orders = Order::all();
return view('backend.package-order-manage.order-manage-all')->with(['all_orders' => $all_orders]);
}
public function pending_orders(){
$all_orders = Order::where('status','pending')->get();
return view('backend.package-order-manage.order-manage-pending')->with(['all_orders' => $all_orders]);
}
public function completed_orders(){
$all_orders = Order::where('status','completed')->get();
return view('backend.package-order-manage.order-manage-completed')->with(['all_orders' => $all_orders]);
}
public function in_progress_orders(){
$all_orders = Order::where('status','in_progress')->get();
return view('backend.package-order-manage.order-manage-in-progress')->with(['all_orders' => $all_orders]);
}
public function change_status(Request $request){
$this->validate($request,[
'order_status' => 'required|string|max:191',
'order_id' => 'required|string|max:191'
]);
$order_details = Order::find($request->order_id);
$order_details->status = $request->order_status;
$order_details->save();
$payment_log = PaymentLogs::where('order_id',$order_details->id)->first();
if(!empty($payment_log)){
try {
$order_details = Order::find($request->order_id);
Mail::to($payment_log->email)->send(new BasicMail(EmailTemplate::packageOrderStatusChangeMail($order_details)));
}catch (\Exception $e){
return redirect()->back()->with(NexelitHelpers::item_delete($e->getMessage()));
}
}
return redirect()->back()->with(['msg' => __('Order Status Update Success...'),'type' => 'success']);
}
public function order_reminder(Request $request){
$order_details = Order::find($request->id);
$payment_log = PaymentLogs::where('order_id',$order_details->id)->first();
try {
//send mail while order status change
Mail::to($payment_log->email)->send(new BasicMail(EmailTemplate::packageOrderReminderMail($order_details)));
}catch (\Exception $e){
return redirect()->back()->with(NexelitHelpers::item_delete($e->getMessage()));
}
return redirect()->back()->with(['msg' => __('Order Reminder Mail Send Success...'),'type' => 'success']);
}
public function order_delete(Request $request,$id){
Order::find($id)->delete();
return redirect()->back()->with(['msg' => __('Order Deleted Success...'),'type' => 'danger']);
}
public function send_mail(Request $request){
$this->validate($request,[
'email' => 'required|string|max:191',
'name' => 'required|string|max:191',
'subject' => 'required|string',
'message' => 'required|string',
]);
$subject = str_replace('{site}',get_static_option('site_'.get_default_language().'_title'),$request->subject);
$data = [
'name' => $request->name,
'message' => $request->message,
];
try {
Mail::to($request->email)->send(new OrderReply($data,$subject));
}catch (\Exception $e){
return redirect()->back()->with(NexelitHelpers::item_delete($e->getMessage()));
}
return redirect()->back()->with(['msg' => __('Order Reply Mail Send Success...'),'type' => 'success']);
}
public function all_payment_logs(){
$paymeng_logs = PaymentLogs::all();
return view('backend.payment-logs.payment-logs-all')->with(['payment_logs' => $paymeng_logs]);
}
public function payment_logs_delete(Request $request,$id){
PaymentLogs::find($id)->delete();
return redirect()->back()->with(['msg' => __('Payment Log Delete Success...'),'type' => 'danger']);
}
public function payment_logs_approve(Request $request,$id){
$payment_logs = PaymentLogs::find($id);
$payment_logs->status = 'complete';
$payment_logs->save();
Order::where('id',$payment_logs->order_id)->update(['payment_status' => 'complete']);
$order_details = Order::find($payment_logs->order_id);
$payment_details = PaymentLogs::where('order_id',$payment_logs->order_id)->first();
try {
Mail::to($payment_details->email)->send(new BasicMail(EmailTemplate::packageOrderPaymentApproveMail($order_details)));
}catch (\Exception $e){
return redirect()->back()->with(NexelitHelpers::item_delete($e->getMessage()));
}
return redirect()->back()->with(['msg' => __('Manual Payment Accept Success'),'type' => 'success']);
}
public function order_success_payment(){
$all_languages = Language::all();
return view('backend.package-order-manage.order-success-page')->with(['all_languages' => $all_languages]);
}
public function update_order_success_payment(Request $request){
$all_language = Language::all();
foreach ($all_language as $lang) {
$this->validate($request, [
'site_order_success_page_' . $lang->slug . '_title' => 'nullable',
'site_order_success_page_' . $lang->slug . '_description' => 'nullable',
]);
$title = 'site_order_success_page_' . $lang->slug . '_title';
$description = 'site_order_success_page_' . $lang->slug . '_description';
update_static_option($title, $request->$title);
update_static_option($description, $request->$description);
}
return redirect()->back()->with(['msg' => __('Order Success Page Update Success...'),'type' => 'success']);
}
public function order_cancel_payment(){
$all_languages = Language::all();
return view('backend.package-order-manage.order-cancel-page')->with(['all_languages' => $all_languages]);
}
public function update_order_cancel_payment(Request $request){
$all_language = Language::all();
foreach ($all_language as $lang) {
$this->validate($request, [
'site_order_cancel_page_' . $lang->slug . '_title' => 'nullable',
'site_order_cancel_page_' . $lang->slug . '_subtitle' => 'nullable',
'site_order_cancel_page_' . $lang->slug . '_description' => 'nullable',
]);
$title = 'site_order_cancel_page_' . $lang->slug . '_title';
$subtitle = 'site_order_cancel_page_' . $lang->slug . '_subtitle';
$description = 'site_order_cancel_page_' . $lang->slug . '_description';
update_static_option($title, $request->$title);
update_static_option($subtitle, $request->$subtitle);
update_static_option($description, $request->$description);
}
return redirect()->back()->with(['msg' => __('Order Cancel Page Update Success...'),'type' => 'success']);
}
public function bulk_action(Request $request){
Order::whereIn('id',$request->ids)->delete();
return response()->json(['status' => 'ok']);
}
public function payment_log_bulk_action(Request $request){
PaymentLogs::whereIn('id',$request->ids)->delete();
return response()->json(['status' => 'ok']);
}
public function order_report(Request $request){
$order_data = '';
$query = Order::query();
if (!empty($request->start_date)){
$query->whereDate('created_at','>=',$request->start_date);
}
if (!empty($request->end_date)){
$query->whereDate('created_at','<=',$request->end_date);
}
if (!empty($request->order_status)){
$query->where(['status' => $request->order_status ]);
}
if (!empty($request->payment_status)){
$query->where(['payment_status' => $request->payment_status ]);
}
$error_msg = __('select start & end date to generate order report');
if (!empty($request->start_date) && !empty($request->end_date)){
$query->orderBy('id','DESC');
$order_data = $query->paginate($request->items);
$error_msg = '';
}
return view('backend.package-order-manage.order-report')->with([
'order_data' => $order_data,
'start_date' => $request->start_date,
'end_date' => $request->end_date,
'items' => $request->items,
'order_status' => $request->order_status,
'payment_status' => $request->payment_status,
'error_msg' => $error_msg
]);
}
public function payment_report(Request $request){
$order_data = '';
$query = PaymentLogs::query();
if (!empty($request->start_date)){
$query->whereDate('created_at','>=',$request->start_date);
}
if (!empty($request->end_date)){
$query->whereDate('created_at','<=',$request->end_date);
}
if (!empty($request->payment_status)){
$query->where(['status' => $request->payment_status ]);
}
$error_msg = __('select start & end date to generate payment report');
if (!empty($request->start_date) && !empty($request->end_date)){
$query->orderBy('id','DESC');
$order_data = $query->paginate($request->items);
$error_msg = '';
}
return view('backend.payment-logs.payment-report')->with([
'order_data' => $order_data,
'start_date' => $request->start_date,
'end_date' => $request->end_date,
'items' => $request->items,
'payment_status' => $request->payment_status,
'error_msg' => $error_msg
]);
}
public function settings(){
return view('backend.package-order-manage.settings')->with(['all_languages' => LanguageHelper::all_languages()]);
}
public function update_settings(Request $request){
$this->validate($request,[
'disable_guest_mode_for_package_module' => 'nullable|string'
]);
$fields_list = [
'disable_guest_mode_for_package_module'
];
foreach ($fields_list as $field){
update_static_option($field,$request->$field);
}
return back()->with(NexelitHelpers::settings_update());
}
}