Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/derfacell.fixmate.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/public_html/derfacell.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\Pengembalian;
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;
use Illuminate\Support\Facades\DB;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        $user = auth()->user();
        if (auth()->guard('penggunas')->check()) {

            // $omsetPenjualan = Penjualan::where('pengguna_id', $user->id)->get()->sum('total');
            // $pengembalian = Pengembalian::where('pengguna_id', $user->id)->get()->sum('total');
            // $diskon = DetailPenjualan::whereHas('diskons')->whereHas('penjualan', function($query) use ($user){
            //     $query->where('pengguna_id', $user->id);
            // })->get()->sum('total');
            // $penjualanBersih = $omsetPenjualan - $diskon - $pengembalian;
            $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-%b", strtotime($date->format("Y-m-d")));
            }


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


            if ($start == $finish) {

                $penjualans = Penjualan::whereDate('jam_selesai', $begin)->where('status_pembayaran', 'lunas');
            } else {

                $penjualans = Penjualan::where('status_pembayaran', 'lunas')->whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')]);
            }
            // $detail_penjualans = DetailPenjualan::whereBetween('created_at', [$begin, $end]);

            if ($start == $finish) {
                $detail_services = Service::where('status_pembayaran', 'lunas')->whereDate('tanggal_selesai', $begin);
            } else {
                $detail_services = Service::where('status_pembayaran', 'lunas')->selesai($begin, $end);
            }



            $dp_service = Service::tanggal($begin, $end)->where('status_pembayaran', '!=', 'lunas')->get();
            $dp_total_service = $dp_service->sum('uang_bayar');
            $dp_penjualan = Penjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('status_pembayaran', 'belum lunas')->get();
            $dp_total_penjualan = $dp_penjualan->sum('uang_bayar');

            if (isset($request->pengguna_id)) {
                $penggunaId = $request->pengguna_id;
                $penjualans->where('pengguna_id', $penggunaId);

                $detail_services->where('pengguna_id', $request->pengguna_id);
            }




            $omsetPenjualan = $penjualans->sum('uang_masuk');
            // dd($omsetPenjualan);
            $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);
                }
            }






            $detail_services_o = $detail_services->get();
            // dd($detail_services_o);
            $service = 0;
            foreach ($detail_services_o as $srv) {
                $service += $srv->grand_total;
            }
            // $service1 = $detail_services->flatMap->pembayaran_service->sum('total_bayar');
            // $service2 = $detail_services->sum('uang_bayar');
            // $service = $service1 + $service2;


            // dd($omsetPenjualan, $service);
            $omsetKotor = $omsetPenjualan + $service;

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

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


                $penjualans = Penjualan::whereDate('jam_selesai', $date->format('Y-m-d'))->where('status_pembayaran', 'lunas')->get();
                $time = Carbon::createFromTime(8, 0, 0);










                $g_omsetPenjualan = 0;
                $g_service = 0;
                $g_diskon = 0;
                $g_penjualanBersih = 0;
                $g_hargaPokok = 0;
                $g_labaKotor = 0;
                $detail_penjualans = DetailPenjualan::whereDate('created_at', $date->format('Y-m-d'))->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);
                }
                foreach ($penjualans as $p) {
                    $g_omsetPenjualan += $p->uang_masuk;
                }

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

                if (isset($detail_services)) {
                    foreach ($detail_services 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)
                        ->get();
                    $penjualan_jam = Penjualan::whereDate('jam_selesai', $begin)->whereTime('jam_selesai', '>=', $startTime)
                        ->whereTime('jam_selesai', '<=', $endTime)
                        ->get();
                } else {

                    $service_jam = Service::selesai($begin, $end)->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
                        ->whereTime('jam_selesai', '<=', $endTime)
                        ->get();
                    $penjualan_jam = Penjualan::whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('status_pembayaran', 'lunas')->whereTime('jam_selesai', '>=', $startTime)
                        ->whereTime('jam_selesai', '<=', $endTime)
                        ->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;
            }
            // dd($jam);







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

            //    




            // Transaksi



            if ($start == $finish) {

                $t_service = Service::whereDate('created_at', $begin);
                $t_refund = refund::whereDate('created_at', $begin);
                $t_penjualan = Penjualan::whereDate('created_at', $begin);
                $t_pembelian = Pembelian::whereDate('created_at', $begin);
                $t_retur_pembelian = ReturPembelian::whereDate('created_at', $begin);
                $t_retur_penjualan = ReturPenjualan::whereDate('created_at', $begin);
                $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'));
            } else {

                $t_service =   Service::whereBetween('created_at', [$begin, $end]);
                $t_refund =   refund::whereBetween('created_at', [$begin, $end]);
                $t_penjualan =   Penjualan::whereBetween('created_at', [$begin, $end]);
                $t_pembelian =   Pembelian::whereBetween('created_at', [$begin, $end]);
                $t_retur_pembelian =   ReturPembelian::whereBetween('created_at', [$begin, $end]);
                $t_retur_penjualan =   ReturPenjualan::whereBetween('created_at', [$begin, $end]);
                $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')]);
            }
            // 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);
                $t_service->where('pengguna_id', $request->pengguna_id);
            }

            $dp_service_lunas = Service::where('status_transaksi', 'success')->orwhere('status_pembayaran', 'refund');
            $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 = 0;
            $t_laporan_uang_muka = 0;
            $t_refund = $t_refund->get();
            $refund = $t_refund->sum('uang_refund');
            if (isset($refund)) {
                $refund = $refund;
            } else {
                $refund = 0;
            }
            foreach ($laporan_kasir as $lk) {
                $t_laporan_kasir += $lk->omset_cash + $lk->omset_transfer;
                $t_laporan_uang_muka += $lk->uang_muka_cash + $lk->uang_muka_transfer;
            }
            $t_laporan_kasir = $t_laporan_kasir + $dp_total_service_lunas;
            // dd($refund, $dp_total_service_lunas);
            // dd($dp_total_service_lunas + $t_laporan_kasir);
            // data barang terjual






            // Transaksi
            $pengguna = Pengguna::all();
            $t_service_proses =   Service::where('status_transaksi', 'proses')->count();
            // status
            $pending = Service::where('status', 'pending')->where('status_transaksi', 'proses')->count();
            $indent = Service::where('status', 'indent')->where('status_transaksi', 'proses')->count();
            $pengecekan = Service::where('status', 'pengecekan')->where('status_transaksi', 'proses')->count();
            $konfirmasi = Service::where('status', 'konfirmasi')->where('status_transaksi', 'proses')->count();
            $hp_bisa_diperbaiki = Service::where('status', 'hp_bisa_diperbaiki')->where('status_transaksi', 'proses')->count();
            $hp_normal = Service::where('status', 'hp_normal')->where('status_transaksi', 'proses')->count();
            $pending_perbaikan = Service::where('status', 'pending_perbaikan')->where('status_transaksi', 'proses')->count();
            $proses_perbaikan = Service::where('status', 'proses_perbaikan')->where('status_transaksi', 'proses')->count();
            $selesai = Service::where('status', 'selesai')->where('status_transaksi', 'proses')->count();
            $batal = Service::where('status', 'batal')->where('status_transaksi', 'proses')->count();
            $tidak_bisa_diperbaiki = Service::where('status', 'tidak_bisa_diperbaiki')->where('status_transaksi', 'proses')->count();
            $gagal_perbaikan = Service::where('status', 'gagal_perbaikan')->where('status_transaksi', 'proses')->count();
            $tidak_deal = Service::where('status', 'tidak_deal')->where('status_transaksi', 'proses')->count();
            $countdown = Countdown::get();
            $data = [
                '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,




                // 'g_service' => $g_service,
                // 'g_omsetPenjualan' => $g_omsetPenjualan,
                '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
            ];
            return view('dashboard.pengguna', $data);
        } else {
            return view('dashboard.user');
        }
    }
}

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