Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/joglocell.fixmate.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/public_html/joglocell.fixmate.id/app/Http/Controllers/DashboardController.php

<?php

namespace App\Http\Controllers;

use App\Models\Countdown;
use App\Models\DetailPenjualan;
use App\Models\Item;
use App\Models\KategoriItem;
use App\Models\LaporanKasir;
use App\Models\PembayaranHutang;
use App\Models\PembayaranPiutang;
use App\Models\Pembelian;
use App\Models\Pengguna;
use App\Models\Penjualan;
use App\Models\refund;
use App\Models\ReturPembelian;
use App\Models\ReturPenjualan;
use App\Models\Service;
use App\Models\TransaksiGudang;

use Carbon\Carbon;
use DateInterval;
use DatePeriod;
use DateTime;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index(Request $request)
    {   
        if (str_contains(request()->getHost(), "fixmate")){
            $countdown = Countdown::latest()->first()->countdown ?? env("COUNTDOWN");
            $countdown = $countdown ? date("Y-m-d H:i:s", strtotime($countdown)) : null;
            if ($countdown && now()->isAfter($countdown)) {
                return redirect()->route('invalid');
            }
        }
        if (!auth()->guard('penggunas')->check()) {

            return view('dashboard.user');
        }

        $omsetPenjualan = 0;
        $pengembalian = 0;
        $service = 0;
        $omsetKotor = 0;
        $diskon = 0;
        $penjualanBersih = 0;
        $labaKotor = 0;
        $t_laporan_kasir = 0;

        // this will default to a time of 00:00:00
        $begin = new DateTime('-1 month');
        $end = new DateTime();

        $periode = [
            $begin->format('d/m/Y'),
            $end->format('d/m/Y'),
        ];

        if (request()->periode) {
            $periode = explode(" - ", request()->periode);
            $begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
            $end = DateTime::createFromFormat('d/m/Y', $periode[1]);
        }
        $end->modify('+1 day');

        




        $interval = new DateInterval('P1D');
        $daterange = new DatePeriod($begin, $interval, $end);
        $periodeTanggals = [];
        foreach ($daterange as $date) {

            $periodeTanggals[] = strftime("%d-%m", strtotime($date->format("Y-m-d")));
        }

        $end = $end->modify('-1 day');
        $start = $begin->format('Y-m-d');
        $finish = $end->format('Y-m-d');

        
        

        $queryServicesSelesai = Service::query();
        $queryServices = Service::query();
        if ($start == $finish) {

            $data_service = Service::filterToko()->with('detail','sparepart_luar')->whereDate("tanggal", $begin->format('Y-m-d'))->latest()->get();
            $data_service_selesai = Service::where('status_transaksi', 'success')->filterToko()->with('detail','sparepart_luar')->whereDate("tanggal_selesai", $begin->format('Y-m-d'))->latest()->get();
            //$data_lapraon_kasir = LaporanKasir::whereDate("tanggal", $begin->format('Y-m-d'))->latest()->get();

          
            $penjualans = Penjualan::with('detail_penjualan.detail_pengembalians')->whereDate('jam_selesai', $begin)->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->filterToko();
            $queryServicesSelesai = $queryServicesSelesai->whereDate('tanggal_selesai', $begin)->filterToko();
            $queryServices = $queryServices->whereDate('tanggal', $begin)->filterToko();
            $queryPenjualans = Penjualan::with('detail_penjualan.detail_pengembalians')->whereDate('jam_selesai', $begin)->filterToko();
        } else {
            $data_service = Service::filterToko()->with('detail','sparepart_luar')->tanggal($begin, $end)->latest()->get();
            $data_service_selesai = Service::where('status_transaksi', 'success')->filterToko()->with('detail','sparepart_luar')->selesai($begin, $end)->latest()->get();
            // $data_lapraon_kasir = LaporanKasir::whereBetween("tanggal", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->latest()->get();

            $penjualans = Penjualan::with('detail_penjualan.detail_pengembalians')->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko();
            $queryServicesSelesai = $queryServicesSelesai->selesai($begin, $end)->filterToko();
            $queryServices = $queryServices->tanggal($begin, $end)->filterToko();
            $queryPenjualans = Penjualan::with('detail_penjualan.detail_pengembalians')->whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko();

        
        }


        

        if (isset($request->pengguna_id) && $request->pengguna_id != "") {
            $penggunaId = $request->pengguna_id;
            $penjualans = $penjualans->where('pengguna_id', $penggunaId);
            $queryServicesSelesai = $queryServicesSelesai->where('pengguna_id', $penggunaId);
            $queryServices = $queryServices->where('pengguna_id', $penggunaId);
            $queryPenjualans = $queryPenjualans->where('pengguna_id', $penggunaId);
        }

        
         
        $service_lunas = (clone $queryServicesSelesai)->where('status_transaksi', 'success')->where('status_pembayaran', 'lunas');
        $dp_total_service = (clone $queryServices)->where('status_pembayaran', '!=', 'lunas')->where('status_transaksi', '!=', 'cancel')->where('uang_bayar','>',0)->sum('uang_bayar');
        $lunas_total_service = (clone $queryServices)->where('status_pembayaran', '!=', 'lunas')->where('status_transaksi', '!=', 'cancel')->where('uang_bayar','>',0)->get()->sum('grand_total');
        $dp_total_penjualan = $queryPenjualans->where('status_pembayaran', 'belum lunas')->sum('uang_bayar');




        $omsetPenjualan = $penjualans->get()->sum('total');
        $penjualan_o = $penjualans->get();

        foreach ($penjualan_o as $penjualans) {
            foreach ($penjualans->detail_penjualan as $dp) {

                $hargaBeli = $dp->item->biaya_item ?? 0;
                $total = ($dp->harga_item * $dp->qty);
                $totalDiskon = 0;

                $pengembalian += $dp->detail_pengembalians->sum('total');
                $diskon += $totalDiskon;
                $penjualanBersih += $total - $totalDiskon - $dp->detail_pengembalians->sum('total');
                $labaKotor += ($total - $totalDiskon - $dp->detail_pengembalians->sum('total')) - ($hargaBeli * $dp->qty);
            }
        }




        $service = $service_lunas->get()->sum('grand_total');
       
     
        $omsetKotor = $omsetPenjualan + $service;

        $charts = [
            'omsetPenjualan' => [],
            'pengembalian' => [],
            'service' => [],
            'omsetKotor' => [],

            'diskon' => [],
            'penjualanBersih' => [],
            'hargaPokok' => [],
            'labaKotor' => []
        ];
        foreach ($daterange as $key => $date) {

            $time = Carbon::createFromTime(8, 0, 0);

            $g_omsetPenjualan = Penjualan::whereDate('jam_selesai', $date->format('Y-m-d'))->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->filterToko()->sum('uang_masuk');
            $g_service = 0;
            $g_diskon = 0;
            $g_penjualanBersih = 0;
            $g_hargaPokok = 0;
            $g_labaKotor = 0;
            $detail_penjualans = DetailPenjualan::with('detail_pengembalians')->whereDate('created_at', $date->format('Y-m-d'))->whereHas('penjualan', function ($w) {
                $w->filterToko();
            })->get();


            foreach ($detail_penjualans as $dp) {

                $hargaBeli = $dp->item->biaya_item ?? 0;
                $total = ($dp->harga_item * $dp->qty);
                $totalDiskon = 0;

                $g_diskon += $totalDiskon;
                $g_penjualanBersih += $total - $totalDiskon - $dp->detail_pengembalians->sum('total');
                $g_hargaPokok += ($hargaBeli * $dp->qty);
                $g_labaKotor += ($total - $totalDiskon - $dp->detail_pengembalians->sum('total')) - ($hargaBeli * $dp->qty);
            }


            $service_lunas = Service::whereDate('tanggal_selesai', $date->format('Y-m-d'))->filterToko()->get();

            if (isset($service_lunas)) {
                foreach ($service_lunas as $ds) {
                    $g_service += $ds->grand_total;
                }
            }


            $charts['omsetPenjualan'][] = $g_omsetPenjualan;
            $charts['service'][] = $g_service;
            $charts['diskon'][] = $g_diskon;
            $charts['penjualanBersih'][] = $g_penjualanBersih;
            $charts['hargaPokok'][] = $g_hargaPokok;
            $charts['labaKotor'][] = $g_labaKotor;
        }


        //  data perjam
        $omset_penjualan_perjam = 0;
        $omset_service_perjam = 0;
        $jam = [];
        for ($hour = 0; $hour < 24; $hour++) {

            $startTime = $hour . ':00:00';
            $endTime = $hour . ':59:59';
            $jam[] = $hour;
            if ($start == $finish) {
                $service_jam = Service::whereDate('jam_selesai', $begin)->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
                    ->whereTime('jam_selesai', '<=', $endTime)
                    ->filterToko()
                    ->get();
                $penjualan_jam = Penjualan::whereDate('jam_selesai', $begin)->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->whereTime('jam_selesai', '>=', $startTime)
                    ->whereTime('jam_selesai', '<=', $endTime)
                    ->filterToko()
                    ->get();
            } else {

                $service_jam = Service::selesai($begin, $end)->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
                    ->whereTime('jam_selesai', '<=', $endTime)
                    ->filterToko()
                    ->get();
                $penjualan_jam = Penjualan::whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->whereTime('jam_selesai', '>=', $startTime)
                    ->whereTime('jam_selesai', '<=', $endTime)
                    ->filterToko()
                    ->get();
            }

            $omset_penjualan_perjam = 0;
            foreach ($penjualan_jam as $penjualan) {
                $omset_penjualan_perjam += $penjualan->uang_masuk;
            }
            $omset_service_perjam = 0;
            foreach ($service_jam as $s) {
                $omset_service_perjam += $s->grand_total;
            }

            $charts_perjam['penjualanPerjam'][] = $omset_penjualan_perjam;
            $charts_perjam['servicePerjam'][] = $omset_service_perjam;
        }

        $karyawans = Pengguna::get();
        $kategoris = KategoriItem::get();


        if ($start == $finish) {

            $t_service = Service::whereDate('tanggal', $begin)->filterToko();
            $t_refund = refund::whereDate('created_at', $begin);
            $t_penjualan = Penjualan::whereDate('created_at', $begin)->filterToko();
            $t_pembelian = Pembelian::whereDate('created_at', $begin)->filterToko();
            $t_retur_pembelian = ReturPembelian::whereDate('created_at', $begin)->filterToko();
            $t_retur_penjualan = ReturPenjualan::whereDate('created_at', $begin)->filterToko();
            $t_pembayaran_piutang = PembayaranPiutang::whereDate('created_at', $begin);
            $t_pembayaran_hutang = PembayaranHutang::whereDate('created_at', $begin);
            $t_transaksi_gudang = TransaksiGudang::whereDate('created_at', $begin);
            $laporan_kasir = LaporanKasir::whereDate('tanggal', $begin->format('Y-m-d'))->filterToko();
        } else {

            $t_service = Service::whereDateBetween('tanggal', [$begin, $end])->filterToko();
            $t_refund = refund::whereBetween('created_at', [$begin, $end]);
            $t_penjualan = Penjualan::whereBetween('created_at', [$begin, $end])->filterToko();
            $t_pembelian = Pembelian::whereBetween('created_at', [$begin, $end])->filterToko();
            $t_retur_pembelian = ReturPembelian::whereBetween('created_at', [$begin, $end])->filterToko();
            $t_retur_penjualan = ReturPenjualan::whereBetween('created_at', [$begin, $end])->filterToko();
            $t_pembayaran_piutang = PembayaranPiutang::whereBetween('created_at', [$begin, $end]);
            $t_pembayaran_hutang = PembayaranHutang::whereBetween('created_at', [$begin, $end]);
            $t_transaksi_gudang = TransaksiGudang::whereBetween('created_at', [$begin, $end]);
            $laporan_kasir = LaporanKasir::whereBetween('tanggal', [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko();
        }
        // dd($laporan_kasir->get());

        if (isset($request->pengguna_id)) {

            $t_service->where('pengguna_id', $request->pengguna_id);
            $t_penjualan->where('pengguna_id', $request->pengguna_id);
            $t_pembelian->where('pengguna_id', $request->pengguna_id);
            $t_retur_pembelian->where('pengguna_id', $request->pengguna_id);
            $t_retur_penjualan->where('pengguna_id', $request->pengguna_id);
            $t_transaksi_gudang->where('pengguna_id', $request->pengguna_id);
            $laporan_kasir->where('pengguna_id', $request->pengguna_id);
        }

        $dp_service_lunas = Service::where(function ($w) {
            $w->where('status_transaksi', 'success')->where('status_pembayaran', 'lunas');
        })->filterToko();
        $dp_service_lunas = $dp_service_lunas->selesai($begin, $end)->get();
        $dp_total_service_lunas = $dp_service_lunas->sum('uang_bayar');


        $laporan_kasir = $laporan_kasir->get();
        $t_laporan_kasir = $laporan_kasir->sum('omset_cash') + $laporan_kasir->sum('omset_transfer');
        $t_laporan_uang_muka = 0;
        $t_refund = $t_refund->get();
        $refund = $t_refund->sum('uang_refund');
        if (isset($refund)) {
            $refund = $refund;
        } else {
            $refund = 0;
        }

        $t_laporan_uang_muka +=$laporan_kasir->sum('uang_muka_cash') + $laporan_kasir->sum('uang_muka_transfer');
     

        $t_laporan_kasir = $t_laporan_kasir + $dp_total_service_lunas;

        // Transaksi
        $pengguna = Pengguna::all();
        $t_service_proses = (clone $t_service)->where('status_transaksi', 'proses')->count();
        // status
        $pending = (clone $t_service)->where('status', 'pending')->where('status_transaksi', 'proses')->count();
        $indent = (clone $t_service)->where('status', 'indent')->where('status_transaksi', 'proses')->count();
        $pengecekan = (clone $t_service)->where('status', 'pengecekan')->where('status_transaksi', 'proses')->count();
        $konfirmasi = (clone $t_service)->where('status', 'konfirmasi')->where('status_transaksi', 'proses')->count();
        $hp_bisa_diperbaiki = (clone $t_service)->where('status', 'hp_bisa_diperbaiki')->where('status_transaksi', 'proses')->count();
        $hp_normal = (clone $t_service)->where('status', 'hp_normal')->where('status_transaksi', 'proses')->count();
        $pending_perbaikan = (clone $t_service)->where('status', 'pending_perbaikan')->where('status_transaksi', 'proses')->count();
        $proses_perbaikan = (clone $t_service)->where('status', 'proses_perbaikan')->where('status_transaksi', 'proses')->count();
        $selesai = (clone $t_service)->where('status', 'selesai')->where('status_transaksi', 'proses')->count();
        $batal = (clone $t_service)->where('status', 'batal')->where('status_transaksi', 'proses')->count();
        $tidak_bisa_diperbaiki = (clone $t_service)->where('status', 'tidak_bisa_diperbaiki')->where('status_transaksi', 'proses')->count();
        $gagal_perbaikan = (clone $t_service)->where('status', 'gagal_perbaikan')->where('status_transaksi', 'proses')->count();
        $tidak_deal = (clone $t_service)->where('status', 'tidak_deal')->where('status_transaksi', 'proses')->count();
        $countdown = Countdown::get();

        $uang_bayar_penjualan = Penjualan::tanggal($begin, $end)->filterToko()->sum('uang_bayar');
        $uang_bayar_service = Service::tanggal($begin, $end)->filterToko()->sum('uang_bayar');

        $uang_bayar_penjualan_lunas = Penjualan::selesai($begin, $end)->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->filterToko()->sum('uang_bayar');
        $uang_bayar_service_lunas = Service::tanggal($begin, $end)->where('status_pembayaran', 'lunas')->where('status_transaksi', 'success')->filterToko()->sum('uang_bayar');
        $data = [
            'uang_bayar_penjualan' => $uang_bayar_penjualan,
            'uang_bayar_service' => $uang_bayar_service,
            'uang_bayar_penjualan_lunas' => $uang_bayar_penjualan_lunas,
            'uang_bayar_service_lunas' => $uang_bayar_service_lunas,
            't_service' => $t_service->count(),
            't_penjualan' => $t_penjualan->count(),
            't_pembelian' => $t_pembelian->count(),
            'countdown' => $countdown,
            't_retur_penjualan' => $t_retur_penjualan->count(),
            't_retur_pembelian' => $t_retur_pembelian->count(),
            't_transaksi_gudang' => $t_transaksi_gudang->count(),
            't_pembayaran_hutang' => $t_pembayaran_hutang->count(),
            't_pembayaran_piutang' => $t_pembayaran_piutang->count(),
            't_laporan_kasir' => $t_laporan_kasir,
            't_laporan_uang_muka' => $t_laporan_uang_muka,
            't_service_proses' => $t_service_proses,


            'pending' => $pending,
            'indent' => $indent,
            'pengecekan' => $pengecekan,
            'konfirmasi' => $konfirmasi,
            'hp_bisa_diperbaiki' => $hp_bisa_diperbaiki,
            'hp_normal' => $hp_normal,
            'pending_perbaikan' => $pending_perbaikan,
            'proses_perbaikan' => $proses_perbaikan,
            'selesai' => $selesai,
            'batal' => $batal,
            'tidak_bisa_diperbaiki' => $tidak_bisa_diperbaiki,
            'gagal_perbaikan' => $gagal_perbaikan,
            'tidak_deal' => $tidak_deal,
            'omsetPenjualan' => $omsetPenjualan,
            'omsetKotor' => $omsetKotor,
            'dp_total_penjualan' => $dp_total_penjualan,
            'dp_total_service' => $dp_total_service,
            'pengembalian' => $pengembalian,
            'service' => $service,
            'diskon' => $diskon,
            'penjualanBersih' => $penjualanBersih,
            'labaKotor' => $labaKotor,
            'periodeTanggals' => $periodeTanggals,
            'charts' => $charts,
            'charts_perjam' => $charts_perjam,
            'periode' => $periode,
            'jam' => $jam,
            'karyawans' => $karyawans,
            'kategoris' => $kategoris,
            'pengguna' => $pengguna,
            'request' => $request,
            'data_service' => $data_service,
            'data_service_selesai' => $data_service_selesai,
            'data_laporan_kasir' => $laporan_kasir,
            'lunas_total_service' => $lunas_total_service
        ];
        return view('dashboard.pengguna', $data);
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]