middleware(['superadmin', '2fa']); } public function fewo() { $data = [ 'filter_fewo_options' => FewoLodging::get()->pluck('name', 'id'), ]; return view('admin.report.fewo', $data); } //checkFewoDatatable private function prozessFewoSearch() { $query = TravelUserBookingFewo::with('travel_booking_fewo_channel')->with('fewo_lodging') ->select('travel_user_booking_fewos.*') ->where('deleted_at', '=', null); if(Request::get('filter_option_fewo_id') != ""){ $query->where('fewo_lodging_id', '=', Request::get('filter_option_fewo_id')); } $date_from = ReportDateFilterService::parseDate(Request::get('filter_date_from'), 'report fewo date from'); if($date_from){ $query->where("from_date", '>=', $date_from); } $date_to = ReportDateFilterService::parseDate(Request::get('filter_date_to'), 'report fewo date to'); if($date_to){ $query->where("from_date", '<=', $date_to); } $booking_date_from = ReportDateFilterService::parseDate(Request::get('filter_booking_date_from'), 'report fewo booking date from'); if($booking_date_from){ $query->where("booking_date", '>=', $booking_date_from); } $booking_date_to = ReportDateFilterService::parseDate(Request::get('filter_booking_date_to'), 'report fewo booking date to'); if($booking_date_to){ $query->where("booking_date", '<=', $booking_date_to); } return $query; } public function fewoDatatable() { $query = $this->prozessFewoSearch(); return \DataTables::eloquent($query) ->with('price_total_sum', function() use ($query) { if($query->count() > 2000){ return 'max 2000 '; } $all = $query->get(); $proceeds = 0; foreach ($all as $v){ $proceeds += $v->getPriceTotalRaw(); } return Util::_number_format($proceeds); }) ->addColumn('id', function (TravelUserBookingFewo $travel_user_booking_fewo) { return '' . $travel_user_booking_fewo->id . ''; // return '' . $travel_user_booking_fewo->id . ''; }) ->addColumn('travel_user', function (TravelUserBookingFewo $travel_user_booking_fewo) { return ''.$travel_user_booking_fewo->travel_user->first_name.' '.$travel_user_booking_fewo->travel_user->last_name.''; }) /* ->addColumn('start_date', function (TravelUserBookingFewo $travel_user_booking_fewo) { return $travel_user_booking_fewo->getStartDateFormat(); }) ->addColumn('end_date', function (TravelUserBookingFewo $travel_user_booking_fewo) { return $travel_user_booking_fewo->getEndDateFormat(); }) /* ->addColumn('booking_date', function (TravelUserBookingFewo $travel_user_booking_fewo) { return $travel_user_booking_fewo->getBookingDateFormat(); }) */ ->orderColumn('id', 'id $1') ->orderColumn('from_date', 'from_date $1') ->orderColumn('to_date', 'to_date $1') ->orderColumn('price_total', 'price_total $1') ->orderColumn('booking_date', 'booking_date $1') ->orderColumn('invoice_number', 'invoice_number $1') //->orderColumn('lead.status_id', 'lead.status_id $1') //->orderColumn('is_cleared', 'is_cleared $1') ->rawColumns(['id', 'travel_user']) ->make(true); } public function fewoExport(){ $query = $this->prozessFewoSearch(); $order = explode(",", Request::get('order')); $orderByNum = [ 0 => 'id', 1 => 'fewo_lodging.name', 2 => 'travel_user', 3 => 'from_date', 4 => 'to_date', 5 => 'adults', 6 => 'children', 7 => 'persons', 8 => 'price_total', 9 => 'booking_date', 10 => 'invoice_number', ]; if(isset($order[0])) { $column = isset($orderByNum[$order[0]]) ? $orderByNum[$order[0]] : "id"; $direction = isset($order[1]) ? strtoupper($order[1]) : "ASC"; $query->orderBy($column, $direction); } $filename = "file-".date('Y-m-d-H-i-s'); $exports = $query->get(); $columns = []; if(Request::get('export') === "export"){ $filename = "Buchungen_Fewo_".date('Y-m-d-H-i-s'); $headers = array( 'BuchungsID', 'FeWo', 'Kunde', 'vom', 'bis', 'Erwachsene', 'Kinder', 'Gesamt', 'Betrag', 'Buchungsdatum', 'R-Nr', ); $total_price_total = 0; foreach($exports as $export) { $total_price_total += $export->getPriceTotalRaw(); $columns[] = array( 'BuchungsID' => $export->id, 'FeWo' => $export->fewo_lodging->name, 'Kunde' => $export->travel_user_id ? $export->travel_user->first_name.' '.$export->travel_user->last_name : " ", 'vom' => $export->from_date, 'bis' => $export->to_date, 'Erwachsene' => $export->adults, 'Kinder' => $export->children, 'Gesamt' => $export->persons, 'Betrag' => $export->price_total, 'Buchungsdatum' => $export->booking_date, 'R-Nr' => $export->invoice_number, ); } $columns[] = array( 'BuchungsID' => "Total", 'FeWo' => "", 'Kunde' => "", 'vom' => "", 'bis' => "", 'Erwachsene' => "", 'Kinder' => "", 'Gesamt' => Util::_number_format($total_price_total), 'Betrag' => "", 'Buchungsdatum' => "", 'R-Nr' => "", ); } return Excel::download(new ReportCollectionExport($columns, $headers), $filename.'.xls'); } }