Passed
Branch tests1.5 (af713c)
by Wanderson
01:19
created

Alert::success()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Win\Message;
4
5
use Win\Mvc\Block;
6
use Win\Request\Session;
7
8
/**
9
 * Alertas
10
 */
11
class Alert {
12
13
	/** @var Session */
14
	private $session;
15
16
	/** @var static */
17
	static $instance = null;
18
19
	/** @param string $session */
20
	public function __construct($session = 'default') {
21
		$this->session = Session::instance($session);
22
	}
23
24
	/**
25
	 * @return static
26
	 * @param string $group
27
	 */
28
	public static function instance($group = 'default') {
29
		static::$instance = new Alert($group);
30
		return static::$instance;
31
	}
32
33
	/**
34
	 * @param string $message
35
	 * @param string $type
36
	 */
37
	public function alert($message, $type = 'default') {
38
		$messages = $this->session->get($type, []);
39
		array_push($messages, $message);
40
		$this->session->set($type, $messages);
41
	}
42
43
	/** @return mixed[] */
44
	public function all() {
45
		return $this->session->all(true);
46
	}
47
48
	/**
49
	 * @return mixed[]
50
	 * @param string $type
51
	 */
52
	public function get($type) {
53
		return $this->session->get($type, null, true);
54
	}
55
56
	/** Limpa mensagens */
57
	public function clear() {
58
		$this->session->clear();
59
	}
60
61
	/**
62
	 * Exibe html dos alertas
63
	 * @return Block
64
	 */
65
	public function html() {
66
		return new Block('layout/html/alerts', ['alerts' => $this->session->all(true)]);
67
	}
68
69
	/** @param string $message */
70
	public static function success($message) {
71
		static::instance()->alert($message, 'success');
72
	}
73
74
	/** @param string $message */
75
	public static function error($message) {
76
		static::instance()->alert($message, 'danger');
77
	}
78
79
	/** @param string $message */
80
	public static function info($message) {
81
		static::instance()->alert($message, 'info');
82
	}
83
84
	/** @param string $message */
85
	public static function warning($message) {
86
		static::instance()->alert($message, 'warning');
87
	}
88
89
	/**
90
	 * Cria um alerta de erro ou sucesso em um único método
91
	 * @param string|null $error
92
	 * @param string $success
93
	 */
94
	public static function create($error, $success) {
95
		if (!is_null($error)) {
96
			static::error($error);
97
		} else {
98
			static::success($success);
99
		}
100
	}
101
102
}
103