PageRenderTime 51ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Http/Controllers/UserController.php

https://bitbucket.org/inets_company/erb_payment
PHP | 378 lines | 298 code | 30 blank | 50 comment | 148 complexity | 9cb165dd6956276ad69311b99b577a8b MD5 | raw file
Possible License(s): Apache-2.0
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use \App\Model\User;
  5. use \App\Model\Role;
  6. use \App\Model\Fee;
  7. use \App\Model\User_type;
  8. use \App\Model\Event;
  9. use \App\Model\Employer;
  10. use \App\Model\Payment;
  11. use \App\Model\Invoice;
  12. use \App\Model\Profession;
  13. use \App\Model\Financial_entity;
  14. use \App\Model\Sms_template;
  15. use DB;
  16. use PDF;
  17. use Auth;
  18. use Illuminate\Support\Facades\Hash;
  19. use App\Http\Controllers\SettingController;
  20. use App\Http\Controllers\PaymentController;
  21. class UserController extends Controller {
  22. public function __construct() {
  23. if (request('auth') == NULL) {
  24. $this->middleware('auth');
  25. }
  26. }
  27. /**
  28. * Display a listing of the resource.
  29. *
  30. * @return \Illuminate\Http\Response
  31. */
  32. public function index() {
  33. //profile
  34. }
  35. public function profile($id) {
  36. $this->data['user'] = User::find($id);
  37. return view('user.profile', $this->data);
  38. }
  39. public function ticket($id = null) {
  40. $this->data['padding_ticket'] = 1;
  41. $this->data['token'] = request('auth');
  42. if (strlen(request('auth')) > 2) {
  43. $auth_token = decrypt($this->data['token']);
  44. if ($auth_token != $id) {
  45. die('Request is not valid. Please click the link as supplied in your email address');
  46. }
  47. }
  48. $this->data['id'] = $id;
  49. return view('user.ticket', $this->data);
  50. }
  51. public function nametag($id = null) {
  52. // $this->data['user'] = User::find($id);
  53. // $this->data['event'] = Event::first();
  54. // $this->data['barcode'] = (new SettingController())->createBarCode($id);
  55. // $this->data['setting'] = \App\Model\Setting::first();
  56. return redirect('user/bulknametag/?single=1&ids=' . $id);
  57. // return view('user.nametag', $this->data);
  58. }
  59. public function storePrintEvent($ids, $event) {
  60. $ip = $_SERVER['REMOTE_ADDR'] ?: ($_SERVER['HTTP_X_FORWARDED_FOR'] ?: $_SERVER['HTTP_CLIENT_IP']);
  61. foreach ($ids as $id) {
  62. \App\Model\Nametag_printlog::create([
  63. 'user_id' => $id,
  64. 'staff_id' => Auth::user()->id,
  65. 'event_id' => $event->id,
  66. 'user_agent' => json_encode(['printer'=>request('single')==1 ?'EPSON':'HP','IP'=>$ip])
  67. ]);
  68. }
  69. }
  70. public function bulkNameTag() {
  71. $ids = explode(',', trim(request('ids'), ','));
  72. $this->data['users'] = User::whereIn('id', array_filter($ids))->where('is_employer', '<>', 1)->get();
  73. $this->data['event'] = Event::first();
  74. $this->data['setting'] = \App\Model\Setting::first();
  75. $this->storePrintEvent($ids, $this->data['event']);
  76. if (request('single') == 1) {
  77. // return view('user.bulknametag', $this->data);
  78. PDF::setOptions(['dpi' => 10, 'defaultFont' => 'sans-serif']);
  79. $pdf = PDF::loadView('user.bulknametag', $this->data);
  80. $pdf->setPaper('A4', 'portrait');
  81. return $pdf->stream('pdf_nametag.pdf');
  82. }
  83. PDF::setOptions(['dpi' => -10, 'defaultFont' => 'sans-serif']);
  84. $pdf = PDF::loadView('user.bulknametag', $this->data);
  85. $pdf->setPaper('A4', 'landscape');
  86. return $pdf->stream('pdf_nametag.pdf');
  87. }
  88. /**
  89. * Show the form for creating a new resource.
  90. *
  91. * @return \Illuminate\Http\Response
  92. */
  93. public function create() {
  94. //
  95. }
  96. /**
  97. * Store a newly created resource in storage.
  98. *
  99. * @param \Illuminate\Http\Request $request
  100. * @return \Illuminate\Http\Response
  101. */
  102. public function store(Request $request) {
  103. if ($request->user == 'entity') {
  104. Financial_entity::create($request->all());
  105. } else if ($request->user == 'user_type') {
  106. User_type::create($request->all());
  107. } else if ($request->user == 'role') {
  108. Role::create($request->all());
  109. } else if ($request->user == 'user') {
  110. $this->validate(request(), ['phone' => 'required|unique:users,phone',
  111. 'email' => 'required|email|unique:users,email']);
  112. $role_id = request('role_id');
  113. $pass = rand(43434, 4343434);
  114. if ((int) $role_id > 0) {
  115. $message = 'Your Account has been created'
  116. . '<br/>'
  117. . 'Login email:' . $request->email
  118. . '<br/>'
  119. . 'Login password:' . $pass;
  120. $this->send_email($request->email, 'User Account', $message);
  121. }
  122. User::create(array_merge($request->all(), ['password' => bcrypt($pass)]));
  123. } else if ($request->user == 'fee') {
  124. Fee::create($request->all());
  125. } else if ($request->user == 'event') {
  126. Event::create($request->all());
  127. } else if ($request->user == 'employer') {
  128. Employer::create($request->all());
  129. User::create(array_merge($request->all(), ['password' => 123456789, 'is_employer' => 1]));
  130. } else if ($request->user == 'profession') {
  131. Profession::create($request->all());
  132. } else if ($request->user == 'sms_template') {
  133. Sms_template::create($request->all());
  134. } else if ($request->user == 'sms') {
  135. (new \App\Http\Controllers\InboxController())->sendSms();
  136. } else if ($request->user == 'schedule') {
  137. \App\Model\Schedule::create(array_merge($request->except('days', 'time'), ['days' => implode(',', $request->days), 'time' => date('Y-m-d h:i', strtotime($request->time))]));
  138. } else if ($request->user == 'payment') {
  139. return (new PaymentController())->store();
  140. }
  141. return redirect()->back()->with('success', 'success');
  142. }
  143. public function saveUser($basic_param, $other) {
  144. $user = User::orWhere($basic_param)->first();
  145. if (count($user) == 0) {
  146. $record = User::create(array_merge($basic_param, array('user_type_id' => $other['id'])));
  147. } else {
  148. $record = $user;
  149. $user->update(array_merge($basic_param, array('user_type_id' => $other['id'])));
  150. }
  151. return $record;
  152. }
  153. /**
  154. * Display the specified resource.
  155. *
  156. * @param int $id
  157. * @return \Illuminate\Http\Response
  158. */
  159. public function show($id) {
  160. if ($id == 'entity') {
  161. $this->data['entities'] = Financial_entity::all();
  162. return view('user.entity', $this->data);
  163. } else if ($id == 'applicants') {
  164. $type = request('user_type');
  165. $user_types = $type == null || $type == 0 ? User_type::get(['id']) : [$type];
  166. if (request('paid') == 1) {
  167. $this->data['applicants'] = User::whereNull('role_id')->where('user_type_id', 9)->whereIn('id', Invoice::whereIn('id', Payment::get(['invoice_id']))->get(['user_id']))->get();
  168. } else if ($type == null) {
  169. $this->data['applicants'] = [];
  170. } else if ($type == 0) {
  171. $this->data['applicants'] = User::whereNull('role_id')->paginate(40);
  172. } else {
  173. $this->data['applicants'] = $type == 120 ? User::where('is_employer', 1)->paginate(40) :
  174. User::whereNull('role_id')->whereIn('user_type_id', $user_types)->paginate(40);
  175. }
  176. return view('user.applicants', $this->data);
  177. } elseif ($id == 'organizations') {
  178. $this->data['organizations'] = \App\Model\Employer::paginate(15);
  179. return view('user.organizations', $this->data);
  180. } else if ($id == 'bulknametag') {
  181. return $this->bulkNameTag();
  182. } else if ($id == 'getApplicants') {
  183. return $this->getApplicants();
  184. } else if ($id == 'attendance') {
  185. return $this->attendance();
  186. } else if ($id == 'addAttendance') {
  187. return $this->addAttendance();
  188. } else if ($id == 'addBulkAttendance') {
  189. return $this->AddBulkAttendance();
  190. } else if ($id == 'barcodeAttendance') {
  191. return $this->barcodeAttendance();
  192. } else if ($id == 'invite') {
  193. return $this->invite();
  194. } else {
  195. $this->data['users'] = User::whereNotNull('role_id')->get();
  196. return view('user.staff', $this->data);
  197. }
  198. }
  199. public function invite() {
  200. $this->data['applicants'] = User::whereNull('role_id')->where('user_type_id', 13)->get();
  201. return view('user.invite', $this->data);
  202. }
  203. public function barcodeAttendance() {
  204. $number = request('s');
  205. $user = User::where(DB::raw('lower(number)'), strtolower(trim($number)))->first();
  206. if (count($user) == 1) {
  207. $day = request('date');
  208. $add = $this->addSingleUserAttendance($user->id, $day, 1);
  209. echo $add == true ? ('<span class="label label-success">success</span>') :
  210. '<span class="label label-info">updated</span>';
  211. } else {
  212. echo '<span class="label label-danger">Error: User not found</span>';
  213. }
  214. }
  215. public function addBulkAttendance() {
  216. $type = request('type');
  217. $user_types = $type == null || $type == 0 ? User_type::get(['id']) : [$type];
  218. if ($type == null || $type == 0) {
  219. $users = User::whereNull('role_id')->get();
  220. } else {
  221. $users = $type == 120 ? User::where('is_employer', 1)->get() :
  222. User::whereNull('role_id')->whereIn('user_type_id', $user_types)->get();
  223. }
  224. foreach ($users as $user) {
  225. $present = request('status') == 'false' ? 0 : 1;
  226. $this->addSingleUserAttendance($user->id, request('date'), $present);
  227. }
  228. echo 'success';
  229. }
  230. function addAttendance() {
  231. $id = request('user_id');
  232. $day = request('date');
  233. if ((int) $id) {
  234. $present = request('status') == 'false' ? 0 : 1;
  235. $add = $this->addSingleUserAttendance($id, $day, $present);
  236. echo $add == true ? ('success') : 'updated';
  237. }
  238. }
  239. public function addSingleUserAttendance($user_id, $day, $present) {
  240. $where = ['user_id' => $user_id, 'date' => $day];
  241. $found = \App\Model\Attendance::where($where);
  242. if (count($found->first()) == 1) {
  243. //update
  244. $data = array_merge($where, ['created_by' => Auth::user()->id,
  245. 'present' => $present]);
  246. $found->update($data);
  247. return false;
  248. } else {
  249. \App\Model\Attendance::create(array_merge($where, ['created_by' => Auth::user()->id,
  250. 'present' => $present]));
  251. return TRUE;
  252. }
  253. }
  254. public function attendance() {
  255. $type = request('user_type');
  256. $user_types = $type == null || $type == 0 ? User_type::get(['id']) : [$type];
  257. $this->data['event'] = \App\Model\Event::first();
  258. $this->data['applicants'] = User::where('is_employer', 0)->get();
  259. return view('user.attendance', $this->data);
  260. }
  261. public function getApplicants() {
  262. $type = request('type');
  263. $user_types = $type == null || $type == 0 ? User_type::get(['id']) : [$type];
  264. if ((int) request('employer_id') > 0) {
  265. $other_return = [];
  266. if ((int) request('user_id')) {
  267. $invoice = \App\Model\Invoice::where('user_id', request('user_id'))->first();
  268. $other_return = $invoice->invoiceFee()->get(['user_id as id']);
  269. }
  270. $obj = User::where('employer_id', request('employer_id'))->where('is_employer', '<>', 1)->get(['id']);
  271. $returns = $obj->merge($other_return);
  272. } else {
  273. $returns = ($type == null || $type == 0) ?
  274. User::whereNull('role_id')->get(['id']) :
  275. User::whereIn('user_type_id', $user_types)->get();
  276. }
  277. foreach ($returns as $return) {
  278. echo $return->id . ',';
  279. }
  280. }
  281. /**
  282. * Show the form for editing the specified resource.
  283. *
  284. * @param int $id
  285. * @return \Illuminate\Http\Response
  286. */
  287. public function edit($id) {
  288. }
  289. /**
  290. * Update the specified resource in storage.
  291. *
  292. * @param \Illuminate\Http\Request $request
  293. * @param int $id
  294. * @return \Illuminate\Http\Response
  295. */
  296. public function update(Request $request, $id) {
  297. User::find($id)->update($request->all());
  298. \App\Model\Email::where('user_id', $id)->update(['email' => request('email')]);
  299. \App\Model\Sms::where('user_id', $id)->update(['phone' => request('phone')]);
  300. return redirect()->back()->with('success', 'User Updated Successfully');
  301. }
  302. /**
  303. * Remove the specified resource from storage.
  304. *
  305. * @param int $id
  306. * @return \Illuminate\Http\Response
  307. */
  308. public function destroy($id) {
  309. if (request('type') == 'user') {
  310. User::find($id)->delete();
  311. } else if (request('type') == 'user_type') {
  312. User_type::find($id)->delete();
  313. } else if (request('type') == 'role') {
  314. Role::find($id)->delete();
  315. } else if (request('type') == 'fee') {
  316. Fee::find($id)->delete();
  317. } else if (request('type') == 'event') {
  318. Event::find($id)->delete();
  319. } else if (request('type') == 'profession') {
  320. Profession::find($id)->delete();
  321. } else if (request('type') == 'sms_template') {
  322. Sms_template::find($id)->delete();
  323. } else if (request('type') == 'schedule') {
  324. \App\Model\Schedule::find($id)->delete();
  325. } else {
  326. Financial_entity::find($id)->delete();
  327. }
  328. return redirect()->back()->with('success', 'success');
  329. }
  330. public function password() {
  331. if ($_POST) {
  332. $current = request('current');
  333. $user = User::find(Auth::user()->id);
  334. if (Auth::attempt(['email' => $user->email, 'password' => $current])) {
  335. $new1 = request('new1');
  336. $new2 = request('new2');
  337. if ($new1 != $new2) {
  338. return redirect()->back()->with('error', 'New password and confirmed one do not matchs');
  339. }
  340. $user->update(['password' => Hash::make($new1)]);
  341. return redirect()->back()->with('success', 'Password changed successfully');
  342. } else {
  343. return redirect()->back()->with('error', 'Current Password is not valid');
  344. }
  345. }
  346. return view('auth.passwords.change', $this->data);
  347. }
  348. }