AnnouncementRepository   A
last analyzed

Complexity

Total Complexity 13

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 13
eloc 23
c 2
b 0
f 0
dl 0
loc 69
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A updateAnnouncement() 0 6 1
A markAsRead() 0 7 4
A editAnnouncement() 0 5 1
A destroyAnnouncement() 0 3 1
A createAnnouncement() 0 5 1
A showAnnouncement() 0 5 1
A storeAnnouncement() 0 5 1
A indexAnnouncement() 0 9 3
1
<?php
2
3
namespace Adminetic\Announcement\Repositories;
4
5
use Adminetic\Announcement\Contracts\AnnouncementRepositoryInterface;
6
use Adminetic\Announcement\Events\AnnouncementMadeEvent;
7
use Adminetic\Announcement\Http\Requests\AnnouncementRequest;
8
use Adminetic\Announcement\Models\Admin\Announcement;
9
use Adminetic\Announcement\Notifications\AnnouncementNotification;
10
use App\Models\User;
0 ignored issues
show
Bug introduced by
The type App\Models\User was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use Illuminate\Support\Facades\Cache;
12
use Illuminate\Support\Facades\Notification;
13
14
class AnnouncementRepository implements AnnouncementRepositoryInterface
15
{
16
    // Announcement Index
17
    public function indexAnnouncement()
18
    {
19
        $announcements = config('coderz.caching', true)
20
            ? (Cache::has('announcements') ? Cache::get('announcements') : Cache::rememberForever('announcements', function () {
21
                return Announcement::latest()->get();
22
            }))
23
            : Announcement::latest()->get();
24
25
        return compact('announcements');
26
    }
27
28
    // Announcement Create
29
    public function createAnnouncement()
30
    {
31
        $users = User::all();
32
33
        return compact('users');
34
    }
35
36
    // Announcement Store
37
    public function storeAnnouncement(AnnouncementRequest $request)
38
    {
39
        $announcement = Announcement::create($request->validated());
40
        // Sending Notification
41
        event(new AnnouncementMadeEvent($announcement));
42
    }
43
44
    // Announcement Show
45
    public function showAnnouncement(Announcement $announcement)
46
    {
47
        $this->markAsRead($announcement);
48
49
        return compact('announcement');
50
    }
51
52
    // Announcement Edit
53
    public function editAnnouncement(Announcement $announcement)
54
    {
55
        $users = User::all();
56
57
        return compact('announcement', 'users');
58
    }
59
60
    // Announcement Update
61
    public function updateAnnouncement(AnnouncementRequest $request, Announcement $announcement)
62
    {
63
        $announcement->update($request->validated());
64
        // Sending Notification
65
        $audiences = User::find($announcement->audience);
66
        Notification::send($audiences, new AnnouncementNotification($announcement));
67
    }
68
69
    // Announcement Destroy
70
    public function destroyAnnouncement(Announcement $announcement)
71
    {
72
        $announcement->delete();
73
    }
74
75
    // Mark As Read
76
    public function markAsRead(Announcement $announcement)
77
    {
78
        foreach (auth()->user()->unreadNotifications as $unread_notification) {
79
            if ($unread_notification->data['id'] != null) {
80
                if ($unread_notification->data['id'] == $announcement->id) {
81
                    $unread_notification->markAsRead();
82
                    $unread_notification->update(['read_at' => now()]);
83
                }
84
            }
85
        }
86
    }
87
}
88