Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use App\Http\Requests;
- use DB;
- use Illuminate\Http\Request;
- use Illuminate\Pagination\LengthAwarePaginator;
- use Exception;
- use Mail;
- use Monolog\Logger;
- use Monolog\Handler\RotatingFileHandler;
- use Monolog\Processor\WebProcessor;
- use Monolog\Formatter\LineFormatter;
- use Auth;
- class DeponController extends Controller
- {
- private $orkl;
- private $accs1;
- private $logger;
- public function __construct()
- //конструктор
- {
- //заходят только авторизованные пользователи
- $this->middleware('auth'); <-- убрать в роут группу
- //инициализируем файл лога <-- использовать ларовских логер, только сделать отдельный хендел, ну и вынести все в отдельный класс и подключать через ди
- $this->logger = new Logger('Depon_logger');
- $handler = new RotatingFileHandler(storage_path('logs\depon.log'), Logger::INFO);
- $this->logger->pushHandler($handler);
- $handler->setFormatter(new LineFormatter("[%datetime%] %channel%.%level_name%: %message% %extra% %context%\n"));
- $this->logger->pushProcessor(new WebProcessor);
- //подключаемся к БД Оракла <- убрать в конфиг
- try {
- $this->orkl = DB::connection('oracle');
- } catch (Exception $e) {
- $this->logger->addError("Ошибка! " . $e->getMessage());
- dd("Ошибка! " . $e->getMessage());
- }
- //делаем выборку записей для пагинации
- $sql2 = 'select t.contnum from MBCONT t';
- $this->accs1 = $this->orkl->select($sql2); <- дать нормальные имена переменным как минимум.
- }
- public function index(Request $request)
- //вывод списка депозитных счетов
- {
- $perPage = 12;
- $currentPage = $request->get('page', 1);
- $sql1 = "SELECT contnum, totalsum, enddate, closedate, contstatus, rowidtochar (rowid) row1
- FROM (SELECT t.contnum,
- t.totalsum,
- t.enddate,
- t.closedate,
- t.contstatus,
- row_number() over(order by t.contstatus asc, t.enddate) rnk
- FROM mbcont t)
- WHERE rnk BETWEEN ? AND ?";
- $accs = $this->orkl->select($sql1, array(($currentPage - 1) * $perPage, $currentPage * $perPage));
- //пагинация
- $paginator = new LengthAwarePaginator($this->accs1, count($this->accs1), $perPage, $currentPage);
- $paginator->setPath($request->getBasePath());
- return view('main.index', compact('accs', 'paginator'));
- }
- public function search(Request $request)
- //поиск
- {
- $this->validate($request, ['search1' => 'required']);
- $request->flashOnly('search1');
- $sql3 = "select t.contnum, t.totalsum, t.enddate, t.closedate, t.contstatus, rowidtochar (rowid) row1 from MBCONT t where contnum like ?";
- $param = '%' . $request->search1 . '%';
- $accs = $this->orkl->select($sql3, array($param));
- return view('main.index', compact('accs'));
- }
- public function clear()
- //отмена поиска
- {
- return redirect('/depon')->with('search1', ''); <-- че за жесть?
- }
- public function edit($id = null) <- убрать нулл
- //редактирование депозитного счета
- {
- if ($id == null) {<-- убрать
- return redirect('/depon');
- }
- $sql3 = "select t.contnum, t.totalsum, t.enddate, t.closedate, rowidtochar (?) row1 from MBCONT t where rowid = CHARTOROWID(?)";
- $param = $id;
- $dep = $this->orkl->selectOne($sql3, array($param, $param));
- return view('main.edit', compact('dep'));
- }
- private function report1($mas1)
- //отчет о проделанной операции (закрытие счета, изменение суммы) - посылаем письмо и пишем в лог
- {
- Убрать отправку в команды, и убрать этот трай и кетч
- $email1 = DB::table('settings')->where('name1', 'depon_email')->value('val1');
- try {
- $data = ['contnum' => $mas1["contnum"], 'totalsum' => $mas1["totalsum"], 'enddate' => $mas1["enddate"], 'closedate' => $mas1["closedate1"], 'email' => $email1, 'subject' => $mas1["str1"]];
- Mail::send('email.deponclose', $data, function ($message) use ($data) {
- $message->to($data['email']);
- $message->subject($data['subject']);
- });
- } catch (Exception $e) {
- $mas1["sess"]->flash('errors', 'Email на' . $email1 . ' не удалось отправить!');
- $this->logger->addError('Email на' . $email1 . ' не удалось отправить!');
- }
- $user = Auth::user();
- $this->logger->addInfo('User Name: ' . $user->getAttributeValue('name') . ' | User Email: ' . $user->getAttributeValue('email') . ' | ' . $mas1["str1"]); <- добавить функцию в логер по форматированиб
- }
- public function editpost($id = null, Request $request)
- //запись результатов редактирования депозитного счета
- {
- if ($id == null) {
- return redirect('/depon');
- }
- разбить на 3 метода и убрать свитч
- switch ($request->submit) {
- case "cancel_dep":
- //нажата кнопка "Отмена"
- return redirect('/depon');
- break;
- case "sum_dep":
- //нажата кнопка "Изменить сумму"
- $this->validate($request, ['totalsum' => 'required|numeric']);
- $sql1 = "update mbcont t set t.totalsum = ? where rowid = CHARTOROWID (?)";
- $this->orkl->update($sql1, array($request->totalsum, $id));
- $mas = [
- "str1" => 'Сумма договора ' . $request->contnum . ' успешно изменена на ' . $request->totalsum . '!',
- "contnum" => $request->contnum,
- "totalsum" => $request->totalsum,
- "enddate" => $request->enddate,
- "closedate1" => null,
- "sess" => $request->session()
- ];
- $this->report1($mas);
- return redirect('/depon')->with('status', 'success')->with('message', $mas["str1"]);
- break;
- case "close_dep":
- //нажата кнопка "Закрыть счет"
- $this->validate($request, ['closedate' => 'required|date']);
- $sql1 = "update mbcont t set t.closedate = to_date(?, 'dd-mm-yyyy'), t.ContStatus = 2 where rowid = CHARTOROWID(?)";
- $this->orkl->update($sql1, array($request->closedate, $id));
- $mas = [
- "str1" => 'Договор ' . $request->contnum . ' успешно закрыт!',
- "contnum" => $request->contnum,
- "totalsum" => $request->totalsum,
- "enddate" => $request->enddate,
- "closedate1" => $request->closedate,
- "sess" => $request->session()
- ];
- $this->report1($mas);
- return redirect('/depon')->with('status', 'success')->with('message', $mas["str1"]);
- break;
- default:
- return redirect('/depon');
- }
- }
- public function settget()
- //выводим настройки для этого отчета
- {
- $email1 = DB::table('settings')->where('name1', 'depon_email')->value('val1');
- return view('main.sett', ['email' => $email1]);
- }
- public function settpost(Request $request)
- //сохраняем настройки отчета (email)
- {
- убрать свитч
- switch ($request->submit) {
- case "cancel_sett":
- return redirect('/depon');
- break;
- case "ok_sett":
- $this->validate($request, ['depon_email' => 'required']);
- DB::table('settings')->where('name1', 'depon_email')->update(['val1' => $request->depon_email]);
- return redirect('/depon');
- break;
- default:
- return redirect('/depon');
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement