Advertisement
Guest User

Untitled

a guest
Feb 5th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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');  <-- убрать в роут группу
  28.  
  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.         //подключаемся к БД Оракла <- убрать в конфиг
  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); <- дать нормальные имена переменным как минимум.
  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', ''); <-- че за жесть?
  87.     }
  88.  
  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.         $user = Auth::user();
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement