MessagePolicy::view()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 3
rs 10
c 1
b 0
f 1
1
<?php
2
3
namespace FaithGen\Messages\Policies;
4
5
use Carbon\Carbon;
6
use FaithGen\Messages\Models\Message;
7
use FaithGen\SDK\Helpers\Helper;
8
use FaithGen\SDK\Models\Ministry;
9
use Illuminate\Auth\Access\HandlesAuthorization;
10
11
class MessagePolicy
12
{
13
    use HandlesAuthorization;
14
15
    /**
16
     * Determine whether the user can view the message.
17
     *
18
     * @param Ministry $user
19
     * @param Message $message
20
     * @return mixed
21
     */
22
    public static function view(Ministry $user, Message $message)
23
    {
24
        return $user->id === $message->ministry_id;
25
    }
26
27
    /**
28
     * Determine whether the user can create messages.
29
     *
30
     * @param Ministry $user
31
     * @return mixed
32
     */
33
    public function create(Ministry $user)
34
    {
35
        if ($user->account->level !== 'Free') {
36
            return true;
37
        } else {
38
            $messagesCount = Message::where('ministry_id', $user->id)->whereBetween('created_at', [Carbon::now()->firstOfMonth(), Carbon::now()->lastOfMonth()])->count();
39
            if ($messagesCount >= Helper::$freeMessagesCount) {
40
                return false;
41
            } else {
42
                return true;
43
            }
44
        }
45
    }
46
47
    /**
48
     * Determine whether the user can update the message.
49
     *
50
     * @param Ministry $user
51
     * @param Message $message
52
     * @return mixed
53
     */
54
    public function update(Ministry $user, Message $message)
55
    {
56
        return $user->id === $message->ministry_id;
57
    }
58
59
    /**
60
     * Determine whether the user can delete the message.
61
     *
62
     * @param Ministry $user
63
     * @param Message $message
64
     * @return mixed
65
     */
66
    public function delete(Ministry $user, Message $message)
67
    {
68
        return $user->id === $message->ministry_id;
69
    }
70
}
71