IMMREX7

aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/School/
File Up :
aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/School/StudentExtraTransactionController.php

<?php

namespace App\Http\Controllers\School;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use DB;
use PDF;
use Carbon\Carbon;
use Session;

class StudentExtraTransactionController extends SchoolController {

    public $total_amount = 0;

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request) {
        
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create() {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request) {
        $rules = [];
        if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' ) {
            $rules += ['paymentAmount' => 'required'];
        } else if ($request->paymentMode == 'Online') {
            $rules += ['paymentAmount' => 'required'];
        } else if ($request->paymentMode == 'IMPS') {
            $rules += ['paymentAmount' => 'required'];
        } else{
            $rules += [
                'idBank' => 'required',
                'chequeDate' => 'required',
                'chequeNo' => 'required',
                'amount' => 'required'
            ];
        }
        $messages = [
            'cardNo.required' => 'Card No or Trans ID field is required',
            'totalPaid.required' => 'Enter The Amount.',
            'idBank.required' => 'Bank must be selected',
            'chequeDate.required' => 'Cheque / DD Date must be filled.',
            'chequeNo.required' => 'Cheque / DD No. must be filled.'
        ];

        $this->validate($request, $rules, $messages);

        DB::beginTransaction();
        try{
            $stdtransaction = new \App\StudentExtraTransaction();
            $stdtransaction->fill($request->all());
            if ($request->has('paymentDate') && $request->paymentDate != null) {
                $stdtransaction->paymentDate = $request->paymentDate;
            } else {
                $stdtransaction->paymentDate = today_date();
            }

            if($request->has('remarks')){
                $stdtransaction->remarks = $request->remarks;
            }

            if($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
                $stdtransaction->totalPaid = $request->paymentAmount;
            } else {
                $stdtransaction->totalPaid = $request->paymentAmount;
                $stdtransaction->status = 'In-Process';
            }

            $next_receiptno = extra_receiptno();
            $stdtransaction->receiptNo = 'SEP000' . $next_receiptno;
            $stdtransaction->idSchool = Auth::guard('school')->user()->idSchool;
            $stdtransaction->penaltyAmount = 0;
            $stdtransaction->fine = 0;
            $stdtransaction->discount = 0;
            $stdtransaction->created_by = Auth::guard('school')->user()->idSchoolUser;
            $stdtransaction->save();

            if($stdtransaction->idSchool == 25){
                if($request->idHeader != "" && $request->idHeader != 0){
                    $this->storeTransactionDetails($request,$stdtransaction,$request->idHeader,$request->paymentAmount);
                }else if(isset($request->headerName)){
                    $feeheads = new \App\ExtraFeehead();
                    $feeheads->type = "Offline";
                    $feeheads->feeheadName = $request->headerName;
                    $feeheads->amount = $request->paymentAmount;
                    $feeheads->idSchool = Auth::guard('school')->user()->idSchool;
                    $feeheads->idFinancialYear = Session::get('idFinancialYear');
                    $feeheads->created_by =Auth::guard('school')->user()->idSchoolUser;
                    $feeheads->save();
                    $this->storeTransactionDetails($request,$stdtransaction,$feeheads->idExtraFeehead,$request->paymentAmount);
                }
            }else{
                if(isset($request->headerName)){
                    $feeheads = new \App\ExtraFeehead();
                    $feeheads->type = "Offline";
                    $feeheads->feeheadName = $request->headerName;
                    $feeheads->amount = $request->paymentAmount;
                    $feeheads->idSchool = Auth::guard('school')->user()->idSchool;
                    $feeheads->idFinancialYear = Session::get('idFinancialYear');
                    $feeheads->created_by =Auth::guard('school')->user()->idSchoolUser;
                    $feeheads->save();
                    $this->storeTransactionDetails($request,$stdtransaction,$feeheads->idExtraFeehead,$request->paymentAmount);
                }else{
                    foreach($request->idHeader as $header){
                        $feehead = \App\ExtraFeehead::where('idExtraFeehead',$header)->first();
                        $this->storeTransactionDetails($request,$stdtransaction,$header,$feehead->amount);
                    }
                }
                
            }            

            DB::commit();
            if ($request->ajax()) {
                return response()->json(['success' => 1], 200, ['app-status' => 'success']);
            }
        }catch(\Exception $e){
            DB::rollback();
            if ($request->ajax()) {
                return response()->json(['success' => 0, "message" => $e->getMessage()], 200, ['app-status' => 'success']);
            }
        }
    }

    private function storeTransactionDetails(Request $request, $stdtransaction,$idHeader,$amount){
        $stdtransaction_detail = new \App\StudentExtraTransactionDetail();
        $stdtransaction_detail->created_by = Auth::guard('school')->user()->idSchoolUser;
        $stdtransaction_detail->idStudent = $request->idStudent;
        $stdtransaction_detail->idTransaction = $stdtransaction->idTransaction;
        $stdtransaction_detail->idFeehead = $idHeader;

        if ($request->has('paymentDate') && $request->paymentDate != null) {
            $stdtransaction_detail->paymentDate = $request->paymentDate;
        } else {
            $stdtransaction_detail->paymentDate = today_date();
        }

        $stdtransaction_detail->amountPaid =$amount;
        $stdtransaction_detail->fine = 0;
        $stdtransaction_detail->discount = 0;

        if ($request->paymentMode == 'Cheque' || $request->paymentMode == 'DD') {
            $stdtransaction_detail->status = 'In-Process';
        }
        $stdtransaction_detail->save();
    }

    public function getFeeDetails($id,Request $request) {
        $student = \App\AdmEntry::where('idStudent', '=', $id)->first();
        $paidfees =\App\StudentExtraTransaction::where('idStudent', '=', $student->idStudent)
                    ->where('idFinancialYear', '=', Session::get('idFinancialYear'))
                    ->where(function($query) {
                        $query->whereNull('status');
                        $query->orWhere('status', '=', 'In-Process');
                        $query->orWhere('status', '=', 'Cleared');
                        $query->orWhere('status', '=', 'Success');
                    })->get();
        $cancelledfees =\App\StudentExtraTransaction::where('idStudent', '=', $student->idStudent)
                    ->where('idFinancialYear', '=', Session::get('idFinancialYear'))
                    ->where(function($query) {
                        $query->where('status', '=', 'Cancelled');
                    })->get();
        $feeheads = \App\ExtraFeehead::where(function($q) use ($student){ 
            $q->where('idClass', '=', $student->idClass)->orWhereNull('idClass');
        })
        ->where('extra_feehead.idSchool', '=', Auth::guard('school')->user()->idSchool)
        ->where('extra_feehead.idFinancialYear','=', Session::get('idFinancialYear'))
        ->get()->pluck('feeheadName','idExtraFeehead')->toArray();

        if($student->idSchool == 25)
        return view('schools.transaction.feedetails_extra_royal', compact('student', 'feeheads','paidfees','cancelledfees'));
        else return view('schools.transaction.feedetails_extra_amcha', compact('student', 'feeheads','paidfees','cancelledfees'));
      }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id) {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id) {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id) {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id) {
        //
    }

    
    public function printReceipt($id) {
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        $transaction = \App\StudentExtraTransaction::where('idTransaction', '=', $id)->first();
        $student = \App\AdmEntry::where('idStudent', '=', $transaction->idStudent)->first();
        $pdf = PDF::loadView('schools.transaction.print_receipt_extra', ['margin_top' => 20], compact('transaction', 'school', 'student'));
        return $pdf->stream('feereceipt.pdf');
    }


    public function getFeewiseData(Request $request) {
        //$feeheader_ids = array_map('intval', explode(',', $id));
        //return $feeheader_ids;
        if(isset($request->feeId) && Auth::guard('school')->user()->idSchool != 25){
            $feeheader_ids = $request->feeId ;
        }else
        $feeheader_ids = [$request->id];
        $student = \App\AdmEntry::where('idStudent', '=', $request->idStudent)->first();
        $selectedHeaders = \App\ExtraFeehead::whereIn('idExtraFeehead', $feeheader_ids)->get();
        $totalAmount = 0;
        for ($i = 0; $i < sizeof($selectedHeaders); $i++) {
            $headerObject = $selectedHeaders[$i];
            $totalAmount = $totalAmount + $headerObject['amount'] ;
        }

        $response = array(
            "amount" => $totalAmount
        );
        return json_encode($response);
    }

}

Copyright © 2021 - 2025 IMMREX7