Przeglądaj źródła

rimessi sospendi e riattiva in lista corsi

FabioFratini 10 miesięcy temu
rodzic
commit
522f580b03

+ 116 - 0
app/Http/Livewire/CourseList.php

@@ -6,6 +6,8 @@ use Livewire\Component;
 
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+use App\Models\MemberCourse;
+use Illuminate\Support\Facades\Log;
 
 class CourseList extends Component
 {
@@ -847,6 +849,120 @@ class CourseList extends Component
         return redirect()->to('/in?new=1&memberId=' . $member_id . (sizeof($newMonths) > 0 ? '&causalId=' . $c->causal_id : '') . '&subCausalId=' . $c->sub_causal_id . '&createSubscription=' . ($subscription ? 1 : 0) . (sizeof($newMonths) > 0 ? '&months=' . implode("|", $newMonths) : '') . (sizeof($newMonths) > 0 ? '&price=' . $m->price : '') . '&subscription_price=' . $m->subscription_price . "&courseId=" . $id);
 
     }
+
+    public function suspendPayment($course_id, $month, $member_id, $id, $subscription)
+    {
+
+        $monthMap = [
+            1 => 9,  // September
+            2 => 10, // October
+            3 => 11, // November
+            4 => 12, // December
+            5 => 1,  // January
+            6 => 2,  // February
+            7 => 3,  // March
+            8 => 4,  // April
+            9 => 5,  // May
+            10 => 6, // June
+            11 => 7, // July
+            12 => 8  // August
+        ];
+
+        $dbMonth = isset($monthMap[$month]) ? $monthMap[$month] : $month;
+
+
+        $memberCourse = MemberCourse::where('id', $id)
+            ->where('member_id', $member_id)
+            ->where('course_id', $course_id)
+            ->first();
+
+
+        if (!$memberCourse) {
+            return response()->json(['error' => 'Non Trovato'], 404);
+        }
+
+        $monthsData = json_decode($memberCourse->months, true);
+        if (!is_array($monthsData)) {
+            return response()->json(['error' => 'Invalid months data format'], 400);
+        }
+
+        $monthUpdated = false;
+        foreach ($monthsData as &$monthData) {
+            if ($monthData['m'] == $dbMonth) {
+                $monthData['status'] = 2;
+                $monthUpdated = true;
+            }
+        }
+
+        if (!$monthUpdated) {
+            return response()->json(['error' => 'Month not found in data'], 404);
+        }
+
+        $memberCourse->months = json_encode($monthsData);
+        $memberCourse->save();
+        session()->flash('success', 'Payment suspended successfully');
+        return redirect()->to('/course_list');
+    }
+
+    public function resumePayment($course_id, $month, $member_id, $id, $subscription)
+    {
+        Log::info('resumePayment');
+        Log::info($course_id);
+        Log::info($month);
+        Log::info($member_id);
+        Log::info($id);
+
+        $monthMap = [
+            1 => 9,  // September
+            2 => 10, // October
+            3 => 11, // November
+            4 => 12, // December
+            5 => 1,  // January
+            6 => 2,  // February
+            7 => 3,  // March
+            8 => 4,  // April
+            9 => 5,  // May
+            10 => 6, // June
+            11 => 7, // July
+            12 => 8  // August
+        ];
+
+        $dbMonth = isset($monthMap[$month]) ? $monthMap[$month] : $month;
+
+
+        $memberCourse = MemberCourse::where('id', $id)
+            ->where('member_id', $member_id)
+            ->where('course_id', $course_id)
+            ->first();
+
+        if (!$memberCourse) {
+            return response()->json(['error' => 'Non Trovato'], 404);
+        }
+
+        $monthsData = json_decode($memberCourse->months, true);
+        Log::info('data mese',$monthsData);
+        if (!is_array($monthsData)) {
+            return response()->json(['error' => 'Invalid months data format'], 400);
+        }
+
+        $monthUpdated = false;
+        foreach ($monthsData as &$monthData) {
+            if ($monthData['m'] == $dbMonth) {
+                $monthData['status'] = "";
+                $monthUpdated = true;
+            }
+        }
+        Log::info($monthUpdated);
+
+        if (!$monthUpdated) {
+            return response()->json(['error' => 'Month not found in data'], 404);
+        }
+
+        $memberCourse->months = json_encode($monthsData);
+        $memberCourse->save();
+        session()->flash('success', 'Payment resumed successfully');
+        return redirect()->to('/course_list');
+    }
     /*
     public function newPayment()
     {

+ 57 - 0
resources/views/livewire/course_list.blade.php

@@ -152,6 +152,8 @@
     <div class="row text-right">
         <div class="col-md-12" style="text-align:right">
             <button style="display:none; width:200px;" class="btn--ui btNewPayment" onclick="newPayment()">NUOVA ENTRATA</button>
+            <button class="btn--ui primary btStopPayment" style="display:none; width:200px; color:white" onclick="suspendPayment()">Sospendi</button>
+            <button class="btn--ui primary btResumePayment" style="display:none; width:200px; color:white" onclick="resumePayment()">Riattiva</button>
         </div>
     </div>
 
@@ -1106,6 +1108,8 @@
         var selectedCourseId = 0;
         var selectedMemberId = 0;
         var selectedMemberCourseId = 0;
+        var selectedMonth = 0;
+
         function setPayMonth(course_id, month, member_id, id)
         {
             if (selectedMemberId > 0 && selectedMemberId != member_id)
@@ -1121,6 +1125,7 @@
             selectedCourseId = course_id;
             selectedMemberId = member_id;
             selectedMemberCourseId = id;
+            selectedMonth = month;
 
             if(!months.includes(month))
             {
@@ -1135,10 +1140,51 @@
             if (months.length > 0)
             {
                 $(".btNewPayment").show();
+                $(".btStopPayment").show();
             }
             else
             {
                 $(".btNewPayment").hide();
+                $(".btStopPayment").hide();
+            }
+        }
+
+        function resumePayMonth(course_id, month, member_id, id)
+        {
+
+            if (selectedMemberId > 0 && selectedMemberId != member_id)
+            {
+                months = [];
+                subscription = false;
+            }
+            if (selectedMemberCourseId != id)
+            {
+                $(".sub_" + selectedMemberCourseId).removeClass("orange").addClass("blue").addClass("selected");
+                $(".lnk_" + selectedMemberCourseId).removeClass("orange").addClass("blue").addClass("selected");
+            }
+            selectedCourseId = course_id;
+            selectedMemberId = member_id;
+            selectedMemberCourseId = id;
+            selectedMonth = month;
+            console.log(month);
+            if(!months.includes(month))
+            {
+                months.push(month);
+                $("#lnk_" + course_id + "_" + month + "_" + member_id).removeClass("blue").removeClass("selected").addClass("orange").addClass("selected");
+            }
+            else
+            {
+                months.splice(months.indexOf(months), 1);
+                $("#lnk_" + course_id + "_" + month + "_" + member_id).removeClass("orange").addClass("blue").addClass("selected");
+            }
+            if (months.length > 0)
+            {
+                $(".btResumePayment").show();
+
+            }
+            else
+            {
+                $(".btResumePayment").hide();
             }
         }
 
@@ -1182,6 +1228,17 @@
 
         });
 
+        function suspendPayment()
+        {
+            @this.suspendPayment(selectedCourseId, selectedMonth, selectedMemberId, selectedMemberCourseId, subscription);
+        }
+
+        function resumePayment()
+        {
+            @this.resumePayment(selectedCourseId, selectedMonth, selectedMemberId, selectedMemberCourseId, subscription);
+        }
+
+
         function setMaxWidth() {
                  $("#resume-table").width( Math.round( $(window ).width() - size ) ) ;
                  //$(".justify-content-between").css({"width": Math.round( $(window ).width() - size) + "px;"}); //.width( Math.round( $(window ).width() - size ) ) ;