View difference between Paste ID: t5pFJ9dK and qkuK0jri
SHOW: | | - or go back to the newest paste.
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Http\Requests;
6
use DB;
7
use Illuminate\Http\Request;
8
use Illuminate\Pagination\LengthAwarePaginator;
9
use Exception;
10
use Mail;
11
use Monolog\Logger;
12
use Monolog\Handler\RotatingFileHandler;
13
use Monolog\Processor\WebProcessor;
14
use Monolog\Formatter\LineFormatter;
15
use Auth;
16
17
class DeponController extends Controller
18
{
19
    private $orkl;
20
    private $accs1;
21
    private $logger;
22
23
    public function __construct()
24
        //конструктор
25
    {
26
        //заходят только авторизованные пользователи
27-
        $this->middleware('auth');
27+
        $this->middleware('auth');  <-- убрать в роут группу
28
29-
        //инициализируем файл лога
29+
        //инициализируем файл лога  <-- использовать ларовских логер, только сделать отдельный хендел, ну и вынести все в отдельный класс и подключать через ди
30
        $this->logger = new Logger('Depon_logger');
31
        $handler = new RotatingFileHandler(storage_path('logs\depon.log'), Logger::INFO);
32
        $this->logger->pushHandler($handler);
33
        $handler->setFormatter(new LineFormatter("[%datetime%] %channel%.%level_name%: %message% %extra% %context%\n"));
34
        $this->logger->pushProcessor(new WebProcessor);
35
36-
        //подключаемся к БД Оракла
36+
        //подключаемся к БД Оракла <- убрать в конфиг
37
        try {
38
            $this->orkl = DB::connection('oracle');
39
        } catch (Exception $e) {
40
            $this->logger->addError("Ошибка! " . $e->getMessage());
41
            dd("Ошибка! " . $e->getMessage());
42
        }
43
        //делаем выборку записей для пагинации
44
        $sql2 = 'select t.contnum from MBCONT t';
45-
        $this->accs1 = $this->orkl->select($sql2);
45+
        $this->accs1 = $this->orkl->select($sql2); <- дать нормальные имена переменным как минимум.
46
    }
47
48
    public function  index(Request $request)
49
    //вывод списка депозитных счетов
50
    {
51
        $perPage = 12;
52
        $currentPage = $request->get('page', 1);
53
        $sql1 = "SELECT contnum, totalsum, enddate, closedate, contstatus, rowidtochar (rowid) row1
54
                      FROM (SELECT t.contnum,
55
                                   t.totalsum,
56
                                   t.enddate,
57
                                   t.closedate,
58
                                   t.contstatus,
59
                                   row_number() over(order by t.contstatus asc, t.enddate) rnk
60
                              FROM mbcont t)
61
                     WHERE rnk BETWEEN ? AND ?";
62
        $accs = $this->orkl->select($sql1, array(($currentPage - 1) * $perPage, $currentPage * $perPage));
63
        //пагинация
64
        $paginator = new LengthAwarePaginator($this->accs1, count($this->accs1), $perPage, $currentPage);
65
        $paginator->setPath($request->getBasePath());
66
        return view('main.index', compact('accs', 'paginator'));
67
    }
68
69
70
    public function search(Request $request)
71
    //поиск
72
    {
73
        $this->validate($request, ['search1' => 'required']);
74
        $request->flashOnly('search1');
75
76
        $sql3 = "select t.contnum, t.totalsum, t.enddate, t.closedate, t.contstatus, rowidtochar (rowid) row1 from MBCONT t where contnum like ?";
77
        $param = '%' . $request->search1 . '%';
78
        $accs = $this->orkl->select($sql3, array($param));
79
80
        return view('main.index', compact('accs'));
81
    }
82
83
    public function clear()
84
    //отмена поиска
85
    {
86-
        return redirect('/depon')->with('search1', '');
86+
        return redirect('/depon')->with('search1', ''); <-- че за жесть?
87
    }
88
89-
    public function edit($id = null)
89+
    public function edit($id = null) <- убрать нулл
90
    //редактирование депозитного счета
91
    {
92
        if ($id == null) {<-- убрать
93
            return redirect('/depon');
94
        }
95
        $sql3 = "select t.contnum, t.totalsum, t.enddate, t.closedate, rowidtochar (?) row1 from MBCONT t where rowid = CHARTOROWID(?)";
96
        $param = $id;
97
        $dep = $this->orkl->selectOne($sql3, array($param, $param));
98
        return view('main.edit', compact('dep'));
99
    }
100
101
    private function report1($mas1)
102
    //отчет о проделанной операции (закрытие счета, изменение суммы) - посылаем письмо и пишем в лог
103
    {
104
Убрать отправку в команды, и убрать этот трай и кетч
105
        $email1 = DB::table('settings')->where('name1', 'depon_email')->value('val1');
106
        try {
107
            $data = ['contnum' => $mas1["contnum"], 'totalsum' => $mas1["totalsum"], 'enddate' => $mas1["enddate"], 'closedate' => $mas1["closedate1"], 'email' => $email1, 'subject' => $mas1["str1"]];
108
            Mail::send('email.deponclose', $data, function ($message) use ($data) {
109
                $message->to($data['email']);
110
                $message->subject($data['subject']);
111
            });
112
        } catch (Exception $e) {
113
            $mas1["sess"]->flash('errors', 'Email на' . $email1 . ' не удалось отправить!');
114
            $this->logger->addError('Email на' . $email1 . ' не удалось отправить!');
115
        }
116
117-
        $this->logger->addInfo('User Name: ' . $user->getAttributeValue('name') . ' | User Email: ' . $user->getAttributeValue('email') . ' | ' . $mas1["str1"]);
117+
118
        $this->logger->addInfo('User Name: ' . $user->getAttributeValue('name') . ' | User Email: ' . $user->getAttributeValue('email') . ' | ' . $mas1["str1"]); <- добавить функцию в логер по форматированиб
119
    }
120
121
    public function editpost($id = null, Request $request)
122
    //запись результатов редактирования депозитного счета
123
    {
124
        if ($id == null) {
125
            return redirect('/depon');
126
        }
127
128
разбить на 3 метода и убрать свитч
129
        switch ($request->submit) {
130
            case "cancel_dep":
131
                //нажата кнопка "Отмена"
132
                return redirect('/depon');
133
                break;
134
            case "sum_dep":
135
                //нажата кнопка "Изменить сумму"
136
                $this->validate($request, ['totalsum' => 'required|numeric']);
137
138
                $sql1 = "update mbcont t set t.totalsum = ? where rowid = CHARTOROWID (?)";
139
                $this->orkl->update($sql1, array($request->totalsum, $id));
140
141
                $mas = [
142
                    "str1" => 'Сумма договора ' . $request->contnum . ' успешно изменена на ' . $request->totalsum . '!',
143
                    "contnum" => $request->contnum,
144
                    "totalsum" => $request->totalsum,
145
                    "enddate" => $request->enddate,
146
                    "closedate1" => null,
147
                    "sess" => $request->session()
148
                ];
149
                $this->report1($mas);
150
151
                return redirect('/depon')->with('status', 'success')->with('message', $mas["str1"]);
152
                break;
153
            case "close_dep":
154
                //нажата кнопка "Закрыть счет"
155
                $this->validate($request, ['closedate' => 'required|date']);
156
157
                $sql1 = "update mbcont t set t.closedate = to_date(?, 'dd-mm-yyyy'), t.ContStatus = 2 where rowid = CHARTOROWID(?)";
158
                $this->orkl->update($sql1, array($request->closedate, $id));
159
160
                $mas = [
161
                    "str1" => 'Договор ' . $request->contnum . ' успешно закрыт!',
162
                    "contnum" => $request->contnum,
163
                    "totalsum" => $request->totalsum,
164
                    "enddate" => $request->enddate,
165
                    "closedate1" => $request->closedate,
166
                    "sess" => $request->session()
167
                ];
168
                $this->report1($mas);
169
170
                return redirect('/depon')->with('status', 'success')->with('message', $mas["str1"]);
171
                break;
172
            default:
173
                return redirect('/depon');
174
        }
175
    }
176
177
    public function settget()
178
    //выводим настройки для этого отчета
179
    {
180
        $email1 = DB::table('settings')->where('name1', 'depon_email')->value('val1');
181
        return view('main.sett', ['email' => $email1]);
182
    }
183
184
    public function settpost(Request $request)
185
    //сохраняем настройки отчета (email)
186
    {
187
убрать свитч
188
        switch ($request->submit) {
189
            case "cancel_sett":
190
                return redirect('/depon');
191
                break;
192
            case "ok_sett":
193
                $this->validate($request, ['depon_email' => 'required']);
194
                DB::table('settings')->where('name1', 'depon_email')->update(['val1' => $request->depon_email]);
195
                return redirect('/depon');
196
                break;
197
            default:
198
                return redirect('/depon');
199
        }
200
    }
201
}