Advertisement
Orion55

Untitled

Feb 5th, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.19 KB | None | 0 0
  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.         $email1 = DB::table('settings')->where('name1', 'depon_email')->value('val1');
  105.         try {
  106.             $data = ['contnum' => $mas1["contnum"], 'totalsum' => $mas1["totalsum"], 'enddate' => $mas1["enddate"], 'closedate' => $mas1["closedate1"], 'email' => $email1, 'subject' => $mas1["str1"]];
  107.             Mail::send('email.deponclose', $data, function ($message) use ($data) {
  108.                 $message->to($data['email']);
  109.                 $message->subject($data['subject']);
  110.             });
  111.         } catch (Exception $e) {
  112.             $mas1["sess"]->flash('errors', 'Email на' . $email1 . ' не удалось отправить!');
  113.             $this->logger->addError('Email на' . $email1 . ' не удалось отправить!');
  114.         }
  115.  
  116.         $user = Auth::user();
  117.         $this->logger->addInfo('User Name: ' . $user->getAttributeValue('name') . ' | User Email: ' . $user->getAttributeValue('email') . ' | ' . $mas1["str1"]);
  118.     }
  119.  
  120.     public function editpost($id = null, Request $request)
  121.     //запись результатов редактирования депозитного счета
  122.     {
  123.         if ($id == null) {
  124.             return redirect('/depon');
  125.         }
  126.         switch ($request->submit) {
  127.             case "cancel_dep":
  128.                 //нажата кнопка "Отмена"
  129.                 return redirect('/depon');
  130.                 break;
  131.             case "sum_dep":
  132.                 //нажата кнопка "Изменить сумму"
  133.                 $this->validate($request, ['totalsum' => 'required|numeric']);
  134.  
  135.                 $sql1 = "update mbcont t set t.totalsum = ? where rowid = CHARTOROWID (?)";
  136.                 $this->orkl->update($sql1, array($request->totalsum, $id));
  137.  
  138.                 $mas = [
  139.                     "str1" => 'Сумма договора ' . $request->contnum . ' успешно изменена на ' . $request->totalsum . '!',
  140.                     "contnum" => $request->contnum,
  141.                     "totalsum" => $request->totalsum,
  142.                     "enddate" => $request->enddate,
  143.                     "closedate1" => null,
  144.                     "sess" => $request->session()
  145.                 ];
  146.                 $this->report1($mas);
  147.  
  148.                 return redirect('/depon')->with('status', 'success')->with('message', $mas["str1"]);
  149.                 break;
  150.             case "close_dep":
  151.                 //нажата кнопка "Закрыть счет"
  152.                 $this->validate($request, ['closedate' => 'required|date']);
  153.  
  154.                 $sql1 = "update mbcont t set t.closedate = to_date(?, 'dd-mm-yyyy'), t.ContStatus = 2 where rowid = CHARTOROWID(?)";
  155.                 $this->orkl->update($sql1, array($request->closedate, $id));
  156.  
  157.                 $mas = [
  158.                     "str1" => 'Договор ' . $request->contnum . ' успешно закрыт!',
  159.                     "contnum" => $request->contnum,
  160.                     "totalsum" => $request->totalsum,
  161.                     "enddate" => $request->enddate,
  162.                     "closedate1" => $request->closedate,
  163.                     "sess" => $request->session()
  164.                 ];
  165.                 $this->report1($mas);
  166.  
  167.                 return redirect('/depon')->with('status', 'success')->with('message', $mas["str1"]);
  168.                 break;
  169.             default:
  170.                 return redirect('/depon');
  171.         }
  172.     }
  173.  
  174.     public function settget()
  175.     //выводим настройки для этого отчета
  176.     {
  177.         $email1 = DB::table('settings')->where('name1', 'depon_email')->value('val1');
  178.         return view('main.sett', ['email' => $email1]);
  179.     }
  180.  
  181.     public function settpost(Request $request)
  182.     //сохраняем настройки отчета (email)
  183.     {
  184.         switch ($request->submit) {
  185.             case "cancel_sett":
  186.                 return redirect('/depon');
  187.                 break;
  188.             case "ok_sett":
  189.                 $this->validate($request, ['depon_email' => 'required']);
  190.                 DB::table('settings')->where('name1', 'depon_email')->update(['val1' => $request->depon_email]);
  191.                 return redirect('/depon');
  192.                 break;
  193.             default:
  194.                 return redirect('/depon');
  195.         }
  196.     }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement