This commit is contained in:
Kevin Adametz 2024-08-05 12:05:24 +02:00
parent 04d677d37a
commit bfa3bb1df4
1191 changed files with 637397 additions and 10619 deletions

View file

@ -0,0 +1,188 @@
<?php
namespace App\Http\Controllers\Admin;
use Util;
use Response;
use Request;
use App\Models\DcTag;
use App\Models\DcFile;
use App\Models\DcCategory;
use App\Http\Controllers\Controller;
use App\Repositories\DC\TagRepository;
use App\Repositories\DC\FileRepository;
class DownloadController extends Controller
{
protected $tagRepository;
protected $fileRepository;
public function __construct(TagRepository $tagRepository, FileRepository $fileRepository)
{
$this->middleware('admin');
$this->tagRepository = $tagRepository;
$this->fileRepository = $fileRepository;
}
public function files(){
$q = DcFile::orderBy('id', 'desc')->get(); //File::all();
$data = [
'files' => $q,
];
return view('admin.downloadcenter.files', $data);
}
public function fileEdit($id = null){
$file = $id ? DcFile::find($id) : new DcFile;
$data = [
'file' => $file,
'categories' => DcCategory::where('active', true)->orderBy('pos')->get(),
'tags' => DcTag::orderBy('pos')->get(),
];
return view('admin.downloadcenter.file_edit', $data);
}
public function fileUpdate($do, $id){
if($do === 'make_thumb'){
$this->fileRepository->makeThumb($id);
\Session()->flash('alert-success', 'Vorschaubild erstellt!');
return back();
}
if($do === 'delete'){
$this->fileRepository->deleteFile($id);
\Session()->flash('alert-success', 'Datei gelöscht!');
return redirect(route('admin_downloadcenter_files'));
}
if($do === 'delete_thumb'){
$this->fileRepository->deleteThumb($id);
\Session()->flash('alert-success', 'Vorschaubild gelöscht!');
return back();
}
if($do === 'deactivate'){
$file = DcFile::findOrFail($id);
$file->active = false;
$file->save();
\Session()->flash('alert-success', 'Datei nicht anzeigen!');
return back();
}
if($do === 'activate'){
$file = DcFile::findOrFail($id);
$file->active = true;
$file->save();
\Session()->flash('alert-success', 'Datei wird angezeigt!');
return back();
}
if($do === 'file_tags_update'){
$file = DcFile::findOrFail($id);
$this->fileRepository->tagsUpdate($id, Request::get('nestable_check'));
\Session()->flash('alert-success', 'Tags aktualisiert!');
return back();
}
}
public function upload(){
return view('admin.downloadcenter.file_upload');
}
public function uploadFile(){
$data = Request::all();
$file = $this->fileRepository->uploadFile($data);
return Response::json([
'error' => false,
'filename' => $file->filename,
'filedata' => '',
'code' => 200
], 200);
//return response()->json(['success'=>basename($file)]);
}
public function tags($flash = false){
$active = DcCategory::orderBy('pos')->get();
$inactive = DcTag::where('category_id', null)->get();
$data = [
'category_active' => $active,
'tags_inactive' => $inactive,
];
if($flash){
\Session()->flash('alert-success', 'gespeichert!');
}
return view('admin.downloadcenter.tags', $data);
}
public function storeItem($obj = false){
$data = Request::all();
return $this->tagRepository->storeItem($obj, $data);
return redirect(route('admin_downloadcenter_tags'));
}
public function deleteItem($obj, $id){
$this->tagRepository->deleteItem($obj, $id);
return redirect(route('admin_downloadcenter_tags'));
}
public function datatable(){
$query = DcFile::with('tags')->select('dc_files.*');
return \DataTables::eloquent($query)
->addColumn('id', function (DcFile $file) {
return '<a href="'.route('admin_downloadcenter_file_edit', [$file->id]).'" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
})
->addColumn('image', function (DcFile $file) {
return ($file->hasThumb() && $file->hasBig()) ?
'<img src="' .route('storage_file', [$file->id, 'dc_thumb', 'image']) . '" class="img-fluid img-responsive" style="max-width: 100px;">' :
'<a href="'.route('admin_downloadcenter_file', ['make_thumb', $file->id]).'" class="btn btn-sm btn-warning"> Vorschaubild<br>erstellen <i class="ion ion-md-refresh-circle"></i></a>';
})
->addColumn('name', function (DcFile $file) {
//Storage::disk('local')->url($file->filename) }}
return '<a target="_blank" href="'.route('storage_file', [$file->id, 'dc_file', 'stream']).'">'.$file->original_name.'</a>';
// return '<a target="_blank" href="">'.$file->original_name.'</a>';
})
->addColumn('category', function (DcFile $file) {
//return $file->category ? $file->category->name : '';
})
->addColumn('tags', function (DcFile $file) {
//return $file->hasTags() ? '<span class="badge badge-pill badge-success">('.$file->fileTag()->count().')</span>' : '<span class="badge badge-pill badge-dange">X</span>';
return $file->tags->implode('name', '<br>');
})
->addColumn('size', function (DcFile $file) {
return Util::formatBytes($file->size);
})
->addColumn('active', function (DcFile $file) {
return get_active_badge($file->active);
//return $file->active ? '<span class="badge badge-pill badge-success"><i class="fa fa-check-circle"></i> aktiv</span>' : '<span class="badge badge-pill badge-danger"><i class="fa fa-times-circle"></i> inaktiv</span>';
})
->addColumn('created_at', function (DcFile $file) {
return $file->created_at->format('d.m.Y H:i');
})
->addColumn('updated_at', function (DcFile $file) {
return $file->updated_at->format('d.m.Y');
})
->addColumn('action', function (DcFile $file) {
return '<a onclick="return confirm(\'Diese Datei wirklich löschen?\');" class="btn btn-sm btn-danger" href="'.route('admin_downloadcenter_file', ['delete', $file->id]).'"><i class="fa fa-trash"></i></a>';
})
->filterColumn('name', function($query, $keyword) {
if($keyword != ""){
$query->where('original_name', 'LIKE', '%'.$keyword.'%');
}
})
->orderColumn('id', 'id $1')
->orderColumn('name', 'original_name $1')
->orderColumn('original_name', 'original_name $1')
->orderColumn('category', 'category $1')
->orderColumn('size', 'size $1')
->orderColumn('active', 'active $1')
->orderColumn('created_at', 'created_at $1')
->rawColumns(['id', 'image', 'name', 'active', 'tags', 'action'])
->make(true);
}
}

View file

@ -0,0 +1,467 @@
<?php
namespace App\Http\Controllers\Admin;
use Auth;
use Request;
use App\User;
use Carbon\Carbon;
use App\Exports\xExport;
use App\Models\UserInvoice;
use App\Services\HTMLHelper;
use App\Models\ShoppingOrder;
use App\Exports\UserTeamExport;
use App\Models\ShoppingOrderItem;
use App\Http\Controllers\Controller;
use Maatwebsite\Excel\Facades\Excel;
use App\Services\BusinessPlan\ExportBot;
use Illuminate\Database\Eloquent\Collection;
class PaymentSalesController extends Controller
{
public function __construct()
{
$this->middleware('admin');
}
public function index()
{
$this->setFilterVars();
$data = [
'filter_months' => HTMLHelper::getTransMonths(),
'filter_years' => HTMLHelper::getYearRange(2022),
];
return view('admin.payment.salesvolume', $data);
}
public function download(){
/*
EXCEL EXPORT function */
/*
if(Request::get('action') === "exportfull_paid"){
return $this->exportFullList(1);
}
if(Request::get('action') === "exportfull_unpaid"){
return $this->exportFullList(0);
}
*/
if(Request::get('action') === "exportfull_paid_invoice"){
return $this->exportFullListInvoice();
}
if(Request::get('action') === "export"){
return $this->exportKompaktListInvoice();
}
}
private function setFilterVars(){
if(!session('payment_sales_vol_filter_month')){
session(['payment_sales_vol_filter_month' => intval(date('m'))]);
}
if(!session('payment_sales_vol_filter_year')){
session(['payment_sales_vol_filter_year' => intval(date('Y'))]);
}
if(Request::get('payment_sales_vol_filter_month')){
session(['payment_sales_vol_filter_month' => Request::get('payment_sales_vol_filter_month')]);
}
if(Request::get('payment_sales_vol_filter_year')){
session(['payment_sales_vol_filter_year' => Request::get('payment_sales_vol_filter_year')]);
}
}
private function exportKompaktListInvoice(){
$objects = $this->initKompaktList();
$columns = [];
$filename = "mivita-absatzmengen-kompakt".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export";
$headers = array(
'#',
'Produkt',
'Artikelnummer',
'Menge',
);
if($objects){
foreach ($objects as $key => $obj){
$columns[] = array(
'id' => $key,
'name' => $obj['name'],
'number' => $obj['number'],
'value' => $obj['value'],
);
}
}
return Excel::download(new UserTeamExport($columns, $headers), $filename.'.xls');
}
private function exportFullListInvoice(){
$this->setFilterVars();
$UserInvoices = UserInvoice::with('shopping_order')->with('shopping_order.shopping_user')->select('user_invoices.*')
->where('user_invoices.month', '=', session('payment_sales_vol_filter_month'))
->where('user_invoices.year', '=', session('payment_sales_vol_filter_year'))
->get();
$headers = array('Rechnungsnummer','Datum', 'EMail', 'Zahlung', 'ProduktNummer', 'ProduktName', 'Anzahl', 'Summe', 'Kompensation');
$columns = [];
$hasSOID = [];
$total_value = [];
foreach($UserInvoices as $UserInvoice){
if($UserInvoice->shopping_order){
$ShoppingOrder = $UserInvoice->shopping_order;
$object = [];
$object['Rechnungsnummer'] = $UserInvoice->full_number;
$object['Datum'] = $UserInvoice->date;
$object['EMail'] = $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->billing_email : 'n/a';
$object['Zahlung'] = $ShoppingOrder->getPaymentForType();
if($ShoppingOrder->payment_for === 5){ //homeparty
if($ShoppingOrder->homeparty){
foreach($ShoppingOrder->homeparty->homeparty_order_items as $homeparty_item){
$total_value[$homeparty_item->product_id] = isset($total_value[$homeparty_item->product_id]) ? $total_value[$homeparty_item->product_id] + $homeparty_item->qty : $homeparty_item->qty;
$object['ProduktNummer'] = $homeparty_item->product ? $homeparty_item->product->number : "n/a";
$object['ProduktName'] = $homeparty_item->product ? $homeparty_item->product->name : "n/a";
$object['Anzahl'] = $homeparty_item->qty;
$object['Summe'] = $total_value[$homeparty_item->product_id];
$object['Kompensation'] = '';
$columns[] = $object;
}
}
}elseif($ShoppingOrder->payment_for === 8){ //collective_invoice
if($ShoppingOrder->shopping_collect_order){
foreach($ShoppingOrder->shopping_collect_order->shop_items as $shop_item){
$total_value[$shop_item['pid']] = isset($total_value[$shop_item['pid']]) ? $total_value[$shop_item['pid']] + $shop_item['qty'] : $shop_item['qty'];
$object['ProduktNummer'] = $shop_item['number'];
$object['ProduktName'] = $shop_item['name'];
$object['Anzahl'] = $shop_item['qty'];
$object['Summe'] = $total_value[$shop_item['pid']];
$object['Kompensation'] = '';
$columns[] = $object;
}
}
}else{
if($ShoppingOrder->shopping_order_items){
foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){
$total_value[$shopping_order_item->product_id] = isset($total_value[$shopping_order_item->product_id]) ? $total_value[$shopping_order_item->product_id] + $shopping_order_item->qty : $shopping_order_item->qty;
$object['ProduktNummer'] = $shopping_order_item->product ? $shopping_order_item->product->number : "n/a";
$object['ProduktName'] = $shopping_order_item->product ? $shopping_order_item->product->name : "n/a";
$object['Anzahl'] = $shopping_order_item->qty;
$object['Summe'] = $total_value[$shopping_order_item->product_id];
$object['Kompensation'] = ($shopping_order_item->comp ? $shopping_order_item->comp : '');
$columns[] = $object;
}
}
}
$hasSOID[] = $ShoppingOrder->id;
}
}
$filename = "mivita-absatzmengen-voll-".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export";
return Excel::download(new xExport($columns, $headers), $filename.'.xls');
}
private function initKompaktList()
{
$this->setFilterVars();
$UserInvoices = UserInvoice::with('shopping_order')->with('shopping_order.shopping_user')->select('user_invoices.*')
->where('user_invoices.month', '=', session('payment_sales_vol_filter_month'))
->where('user_invoices.year', '=', session('payment_sales_vol_filter_year'))
->get();
$objects = [];
foreach($UserInvoices as $UserInvoice){
if($UserInvoice->shopping_order){
$ShoppingOrder = $UserInvoice->shopping_order;
if($ShoppingOrder->payment_for === 5){ //homeparty
if($ShoppingOrder->homeparty){
foreach($ShoppingOrder->homeparty->homeparty_order_items as $homeparty_item){
if(isset($objects[$homeparty_item->product_id])){
$value = intval($objects[$homeparty_item->product_id]['value'] + $homeparty_item->qty);
$objects[$homeparty_item->product_id]['value'] = $value;
}else{
$objects[$homeparty_item->product_id] = [
'name' => $homeparty_item->product ? $homeparty_item->product->name : "n/a ".$homeparty_item->product_id,
'number' => $homeparty_item->product ? $homeparty_item->product->number : "n/a ".$homeparty_item->product_id,
'value' => $homeparty_item->qty
];
}
}
}
}elseif($ShoppingOrder->payment_for === 8){ //collective_invoice
if($ShoppingOrder->shopping_collect_order){
foreach($ShoppingOrder->shopping_collect_order->shop_items as $shop_item){
if(isset($objects[$shop_item['pid']])){
$value = intval($objects[$shop_item['pid']]['value'] + $shop_item['qty']);
$objects[$shop_item['pid']]['value'] = $value;
}else{
$objects[$shop_item['pid']] = [
'name' => $shop_item['name'],
'number' => $shop_item['number'],
'value' => $shop_item['qty']
];
}
}
}
}else{
if($ShoppingOrder->shopping_order_items){
foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){
if(isset($objects[$shopping_order_item->product_id])){
$value = intval($objects[$shopping_order_item->product_id]['value'] + $shopping_order_item->qty);
$objects[$shopping_order_item->product_id]['value'] = $value;
}else{
$objects[$shopping_order_item->product_id] = [
'name' => $shopping_order_item->product ? $shopping_order_item->product->name : "n/a ".$shopping_order_item->product_id,
'number' => $shopping_order_item->product ? $shopping_order_item->product->number : "n/a ".$shopping_order_item->product_id,
'value' => $shopping_order_item->qty
];
}
}
}
}
$hasSOID[] = $ShoppingOrder->id;
}
}
return $objects;
}
public function datatable(){
/*$collect = collect([
['id' => 1, 'name' => 'John', 'number'=>92012, 'value'=>123],
['id' => 2, 'name' => 'Jane', 'number'=>92012, 'value'=>123],
['id' => 3, 'name' => 'James', 'number'=>92012, 'value'=>123],
]);*/
$objects = $this->initKompaktList();
$collection = collect();
if($objects){
foreach($objects as $key => $obj){
$collection->push([
'id' => $key,
'name' => $obj['name'],
'number' => $obj['number'],
'value' => $obj['value'],
]);
}
}
return \DataTables::of($collection)->toJson();
}
/*
//Auswertung nach ShoppingOrder
//nach Datum created_at wann die Bestellung erstellt wurde
//Ist nicht das Datum der Rechnung, da hier teilweise die Sammelrechnungen oder Zahlungen erst in nächsten Monat erfolgen
public function exportFullList($paid = 1){
$date_start = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->format('Y-m-d H:i:s');
$date_end = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->endOfMonth()->format('Y-m-d H:i:s');
$ShoppingOrders = ShoppingOrder::where('paid', $paid)->where('mode', 'live')->whereBetween('created_at', [$date_start, $date_end])->get();
$txActions = ['prev' => 'keine Zahlung', 'appointed' => 'offen', 'failed' => 'abbruch', 'paid' => 'bezahlt'];
$headers = array('ID', 'Zahlung', 'Datum', 'EMail', 'ProduktID', 'ProduktNummer', 'ProduktName', 'Anzahl', 'Notiz', 'Gesamt');
$objects = [];
$columns = [];
$hasSOID = [];
foreach($ShoppingOrders as $ShoppingOrder){
foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){
$value = "";
if($shopping_order_item->product){
if(isset($objects[$shopping_order_item->product->id])){
$value = intval($objects[$shopping_order_item->product->id]['value'] + $shopping_order_item->qty);
$objects[$shopping_order_item->product->id]['value'] = $value;
}else{
$objects[$shopping_order_item->product->id] = [
'name' => $shopping_order_item->product->name,
'number' => $shopping_order_item->product->number,
'value' => $shopping_order_item->qty
];
$value = $shopping_order_item->qty;
}
}
$object = [];
if(in_array($ShoppingOrder->id, $hasSOID)){
$object['ID'] = '';
$object['EMail'] = '';
$object['Zahlung'] = '';
$object['Datum'] = '';
}else{
$object['ID'] = $ShoppingOrder->id;
$object['EMail'] = $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->billing_email : 'n/a';
$object['Zahlung'] = isset($txActions[$ShoppingOrder->txaction]) ? $txActions[$ShoppingOrder->txaction] : $ShoppingOrder->txaction;
$object['Datum'] = $ShoppingOrder->created_at->format('d.m.Y');
}
$object['ProduktID'] = $shopping_order_item->product_id;
$object['ProduktNummer'] = $shopping_order_item->product ? $shopping_order_item->product->number : "n/a";
$object['ProduktName'] = $shopping_order_item->product ? $shopping_order_item->product->name : "n/a";
$object['Anzahl'] = $shopping_order_item->qty;
$object['Notiz'] = ($shopping_order_item->comp ? 'Compensation '.$shopping_order_item->comp : '') . ($shopping_order_item->shopping_collect_order_id ? 'Sammelbestellung '.$shopping_order_item->shopping_collect_order_id : '');
$object['Gesamt'] = $value;
$columns[] = $object;
$hasSOID[] = $ShoppingOrder->id;
}
}
if($paid){
$filename = "mivita-absatzmengen-full-paid-".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export";
}else{
$filename = "mivita-absatzmengen-full-unpaid-".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export";
}
return Excel::download(new xExport($columns, $headers), $filename.'.xls');
//CSV EXPORT function
$headers = array(
"Content-type" => "text/csv",
"Content-Disposition" => "attachment; filename=$fileName",
"Pragma" => "no-cache",
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
"Expires" => "0"
);
$header = array('ID', 'Zahlung', 'Datum', 'EMail', 'ProduktID', 'ProduktNummer', 'ProduktName', 'Anzahl', 'Notiz', 'Gesamt');
$callback = function() use($columns, $header) {
$file = fopen('php://output', 'w');
fputcsv($file, $header);
$row = [];
foreach ($columns as $row) {
fputcsv($file, $row);
}
fclose($file);
};
return response()->stream($callback, 200, $headers);
}
*/
/*
//alte Funktion auswerung nach ShoppingOrder
private function testCheckFunction(){
//$date_start = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->format('Y-m-d');
//$date_end = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->endOfMonth()->format('Y-m-d');
$date_start = Carbon::parse('01.01.2024')->format('Y-m-d H:i:s');
$date_end = Carbon::parse('01.01.2024')->endOfMonth()->format('Y-m-d H:i:s');
dump($date_start);
dump($date_end);
$ShoppingOrders = ShoppingOrder::where('mode', 'live')->whereBetween('created_at', [$date_start, $date_end])->get();
$objects = [];
$counter = 0;
foreach($ShoppingOrders as $ShoppingOrder){
foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){
if($shopping_order_item->product){
if($shopping_order_item->product->id === 122){
//dump($shopping_order_item->qty);
//$counter += $shopping_order_item->qty;
if(isset($objects[$shopping_order_item->product->id])){
$value = intval($objects[$shopping_order_item->product->id]['value'] + $shopping_order_item->qty);
$objects[$shopping_order_item->product->id]['value'] = $value;
}else{
$objects[$shopping_order_item->product->id] = [
'name' => $shopping_order_item->product->name,
'number' => $shopping_order_item->product->number,
'value' => $shopping_order_item->qty
];
}
}
}
}
}
$ShoppingOrderItems = ShoppingOrderItem::whereProductId(122)->whereBetween('created_at', [$date_start, $date_end])->get();
$counter = 0;
foreach($ShoppingOrderItems as $ShoppingOrderItem){
$counter += $ShoppingOrderItem->qty;
dump($ShoppingOrderItem->id);
}
// dump($objects);
dump($counter);
dd("OKAY");
}*/
/*
// alte Funktion auswerung nach ShoppingOrder
private function initSearch($returnColl = true)
{
$this->setFilterVars();
$date_start = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->format('Y-m-d H:i:s');
$date_end = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->endOfMonth()->format('Y-m-d H:i:s');
$ShoppingOrders = ShoppingOrder::where('paid', 1)->where('mode', 'live')->whereBetween('created_at', [$date_start, $date_end])->get();
$objects = [];
foreach($ShoppingOrders as $ShoppingOrder){
foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){
if($shopping_order_item->product){
if(isset($objects[$shopping_order_item->product->id])){
$value = intval($objects[$shopping_order_item->product->id]['value'] + $shopping_order_item->qty);
$objects[$shopping_order_item->product->id]['value'] = $value;
}else{
$objects[$shopping_order_item->product->id] = [
'name' => $shopping_order_item->product->name,
'number' => $shopping_order_item->product->number,
'value' => $shopping_order_item->qty
];
}
}
}
}
if($returnColl){
$collection = collect();
foreach($objects as $key => $obj){
$collection->push([
'id' => $key,
'name' => $obj['name'],
'number' => $obj['number'],
'value' => $obj['value'],
]);
}
return $collection;
}
return $objects;
}
*/
}