Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.68 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Illuminate\Http\Request;
  6. use App\Order;
  7. use App\Recipient;
  8. use App\Sector;
  9. use App\User;
  10. use App\Log;
  11. use Excel;
  12. use Verta;
  13. use Illuminate\Support\Facades\DB;
  14.  
  15. class ReportController extends Controller
  16. {
  17.  
  18. public function getReport(){
  19. $recipient = Recipient::userBasedRecipient(auth()->user())->get();
  20. $sector=Sector::userBasedSector(auth()->user())->get();
  21. $user=User::userBasedUser(auth()->user())->get();
  22. return view('reports.index')->with(['recipients'=>$recipient,'sectors'=>$sector,'users'=>$user]);
  23. }
  24.  
  25. public function getOrderReports(Request $request){
  26. $date['single'] = $request->single_date;
  27. $date['from'] = $request->from_date;
  28. $date['to'] = $request->to_date;
  29.  
  30.  
  31. $status=$request->status;
  32. $sector=$request->sector;
  33. $recipient=$request->recipient;
  34. $user=$request->user;
  35. $type=$request->type;
  36.  
  37.  
  38. $title='';
  39. $type_title='';
  40. $status_title='';
  41. $date_title='';
  42. $sector_title='';
  43. $recipient_title='';
  44. $user_title='';
  45.  
  46. //status
  47. if($status !='') {
  48. switch($status) {
  49. case 0:
  50. $status_title = 'اجراء‌ نا شده ';
  51. break;
  52. case 1:
  53. $status_title = 'درحال اجراء‌ ';
  54. break;
  55. case 2:
  56. $status_title = 'اجراء شده ';
  57. break;
  58.  
  59. }
  60. }
  61.  
  62. //type
  63. if($type !='') {
  64. switch($type) {
  65. case 0:
  66. $type_title = 'کتبی';
  67. break;
  68. case 1:
  69. $type_title = 'شفاهی';
  70. break;
  71.  
  72. }
  73. }
  74.  
  75. //date
  76. if($date['single']) {
  77. $date_title = ' به تاریخ '.$date['single'];
  78.  
  79. }
  80. else if($date['to'] && $date['from']) {
  81. $date_title = ' از تاریخ '.$date['from'].' الی تاریخ '.$date['to'];
  82. }
  83.  
  84. //sectors
  85. $sector_title = $sector ? Sector::find($sector)->name_dr : '';
  86. // if($sector) {
  87. // $sector_title = Sector::find($sector)->name_dr;
  88. // }
  89.  
  90. //recipients
  91. $recipient_title = $recipient ? 'وزارت / اداره '.Recipient::find($recipient)->name_dr : '';
  92. // if($recipient) {
  93. // $recipient_title = 'وزارت / اداره'.Recipient::find($recipient)->name_dr;
  94. // }
  95.  
  96. //users
  97. $user_title = $user ? 'توسط '.User::find($user)->name_dr : '';
  98. // if($user) {
  99. // $user_title = 'توسط '.User::find($user)->name_dr;
  100. // }
  101.  
  102. $title = 'نمایش هدایات '.$type_title.' '.$status_title.' '.$date_title.' '.$sector_title.' '.$recipient_title.' '.$user_title;
  103.  
  104. $orders = Order::with(['follow_ups', 'recipient', 'sector'])->date($date)->status($status)->type($type)->recipientsInSector($sector)->recipient($recipient)->user($user)->OrwhereHas('order_copies', function($q) use ($date, $status, $type, $sector, $recipient, $user) {
  105. return $q->date($date)->status($status)->type($type)->recipientsInSector($sector)->recipient($recipient)->user($user);
  106. })->get();
  107.  
  108. $orders->put('title', $title);
  109.  
  110. return view('reports.report_data', compact('orders', 'request'));
  111.  
  112. }
  113. public function exportReport(Request $request){
  114. $data = json_decode($request->data,true);
  115. $request_data = json_decode($request->request_data, true);
  116. // return view('reports.pdf_report', ['orders'=>$data, 'request' => $request_data]);
  117.  
  118. if($request->type == 'pdf') {
  119. $snappy = \PDF::loadView('reports.pdf_report', ['orders'=>$data,'request' => $request_data]);
  120. return $snappy->download('pdf_report.pdf');
  121. }
  122. else if($request->type == 'excel') {
  123. Excel::create('New file', function($excel) use ($data,$request_data) {
  124. $excel->sheet('New sheet', function($sheet) use ($data,$request_data){
  125. $sheet->setRightToLeft(true);
  126. return $sheet->loadView('reports.excel_report', ['orders'=>$data,'request' => $request_data]);
  127. });
  128.  
  129. })->download('xlsx');
  130. }
  131. }
  132.  
  133.  
  134. public function viewLogs(){
  135. return view('reports.view_logs');
  136. }
  137.  
  138. public function getLogs(Request $request){
  139. $single_date = $request->single_date;
  140. $from = $request->from_date;
  141. $to = $request->to_date;
  142.  
  143. if($single_date==''){
  144. $logs = Log::whereBetween('date',[$from." 00:00:00",$to." 23:59:59"])->orderby('id','desc')->get();
  145. }
  146. else{
  147. $logs = Log::whereBetween('date',[$single_date." 00:00:00",$single_date." 23:59:59"])->orderby('id','desc')->get();
  148. }
  149. return view('reports.logs_data')->with(['logs'=>$logs]);
  150. }
  151. public function getOrderSearch(Request $request){
  152. // $orders = Order::status($request->status)->type($request->type)->sector($request->sector)->recipient($request->recipient)->get();
  153. // $orders = Order::status($request->status)->count();
  154. // $orders = Order::status($request->status)->recipient($request->recipient)->sector($request->sector)->type($request->type)->get();
  155. // $order_copies = Order::whereHas('order_copies', function($q) use ($request) {
  156. // $q->status($request->status)->recipient($request->recipient)->sector($request->sector)->type($request->type);
  157. // })->get();
  158. $internal_recipients = Recipient::where('type', '0')->get();
  159.  
  160. $recipients = Recipient::userBasedRecipient(auth()->user())->get();
  161. $sectors = Sector::userBasedSector(auth()->user())->get();
  162.  
  163. // $orders = DB::select(DB::raw(
  164. // "
  165. // SELECT
  166. // `ord`.`id`
  167. // FROM
  168. // `orders` AS `ord`
  169. // LEFT JOIN `order_copies` AS `cop`
  170. // ON
  171. // `ord`.`id` = `cop`.`order_id`
  172. // WHERE
  173. // ( (`ord`.`recipient_id` = '1' AND `ord`.`status` = '1') OR (`cop`.`recipient_id` = '1' AND `cop`.`status` = '1') )
  174. // "
  175. // ));
  176. // $orders = array_map(create_function('$o', 'return $o->id;'), $orders);
  177. // $orders = Order::whereIn('id', $orders)->get();
  178.  
  179. // elquent version of the above query
  180. $orders=Order::select('orders.*')
  181. ->distinct('orders.id')
  182. ->leftJoin('order_copies','orders.id','=','order_copies.order_id')
  183. ->where(function($q) use($request) {
  184. if($request->recipient != '' && $request->status != '') {
  185. $q->where(function($sq1) use ($request) {
  186.  
  187. $sq1->where('orders.recipient_id', $request->recipient)
  188. ->where('orders.status', $request->status);
  189.  
  190. })
  191. ->orWhere(function($sq2) use ($request) {
  192.  
  193. $sq2->where('order_copies.status', $request->status)
  194. ->where('order_copies.recipient_id', $request->recipient);
  195.  
  196. });
  197. }else if($request->sector != '' && $request->status != '') {
  198. $q->where(function($sq1) use ($request) {
  199.  
  200. $sq1->where('orders.sector_id', $request->sector)
  201. ->where('orders.status', $request->status);
  202.  
  203. })
  204. ->orWhere(function($sq2) use ($request) {
  205.  
  206. $sq2->where('order_copies.status', $request->status)
  207. ->where('order_copies.recipient_id', $request->recipient);
  208.  
  209. });
  210. }else if($request->sector != '') {
  211.  
  212. $q->where('orders.sector_id', $request->sector)
  213. ->orWhere('order_copies.sector_id', $request->sector);
  214.  
  215. }else if($request->recipient != '') {
  216.  
  217. $q->where('orders.recipient_id', $request->recipient)
  218. ->orWhere('order_copies.recipient_id', $request->recipient);
  219.  
  220. }else if($request->status != '') {
  221. $q->where('orders.status', $request->status)
  222. ->orWhere('order_copies.status', $request->status);
  223. }
  224.  
  225. })
  226. ->get();
  227.  
  228.  
  229. return view('orders.index')->with(['orders'=>$orders,
  230. 'internal_recipients'=>$internal_recipients,'recipients'=>$recipients,'sectors'=>$sectors,
  231. 'sector_id' => $request->sector,
  232. 'recipient_id' => $request->recipient,
  233. 'status' => $request->status,
  234. 'type' => $request->type,
  235. 'search' => 1,
  236. // // 'original_orders_count' => $original_orders_count
  237. ]
  238. );
  239. }
  240.  
  241.  
  242. public function relatedRecipient($id){
  243. $recipients=Recipient::where('sector_id',$id)->get();
  244.  
  245. return view('orders.related_recipient',compact('recipients'));
  246. }
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement