UserController.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use Illuminate\Routing\Controller as BaseController;
  4. use Illuminate\Http\Request;
  5. use Hash;
  6. use Session;
  7. use Illuminate\Support\Facades\Auth;
  8. use Illuminate\Support\Facades\Redirect;
  9. use App\Models\User;
  10. use App\Models\UserData;
  11. use App\Models\UserDocuments;
  12. use App\Models\UserCorporate;
  13. use App\Models\WalletHistoryUsers;
  14. use Illuminate\Support\Facades\Validator;
  15. class UserController extends BaseController
  16. {
  17. /**
  18. * Customer List View
  19. */
  20. public function customers(){
  21. $users = User::with('UserData')->where('user_type', '=', 'Subscribers')->orWhere('user_type', '=', 'Corporate')->get();
  22. return view('admin.users.customers', compact('users'));
  23. }
  24. /**
  25. * Angels(Driver) List View
  26. */
  27. public function angels(){
  28. $users = User::with('UserData')->where('user_type', '=', 'Driver')->get();
  29. return view('admin.users.customers', compact('users'));
  30. }
  31. /**
  32. * Staff (Admin,Manager) List View
  33. */
  34. public function staff(){
  35. $users = User::with('UserData')->where('user_type', '=', 'Staff')->get();
  36. return view('admin.users.customers', compact('users'));
  37. }
  38. /**
  39. * Render Customer add form in GET Method
  40. */
  41. public function add_customer(){
  42. return view('admin.users.add_customer');
  43. }
  44. /**
  45. * Render Angels add form in GET Method
  46. */
  47. public function add_angel(){
  48. return view('admin.users.add_customer');
  49. }
  50. /**
  51. * Validate New user form request in User Model
  52. * return json responsr with HTTP status
  53. */
  54. public function new_user_form_validate(Request $request){
  55. $user = new User();
  56. return $user->signupValidate($request);
  57. }
  58. /**
  59. * Store New Subscriber or Corporate user to table from Admin portal
  60. * User, UserData, UserDocuments, Update Wallet History if wallet amount added
  61. */
  62. public function store_customer(Request $request){
  63. $postData = $request->all();
  64. $user = [
  65. 'name' => $postData['first_name'] .' ' . $postData['last_name'],
  66. 'email' => $postData['email'],
  67. 'phone_number' => $postData['phone_number'],
  68. 'user_type' => $postData['user_type'],
  69. 'password' => '123456'
  70. ];
  71. $user = User::create($user);
  72. $userData = [
  73. 'user_id' => $user['id'],
  74. 'first_name' => $postData['first_name'],
  75. 'last_name' => $postData['last_name'],
  76. 'phone_number' => $postData['phone_number'],
  77. 'wallet_amount' => ( $postData['wallet_amount'] > 0) ? $postData['wallet_amount'] : 0
  78. ];
  79. $userData = UserData::create($userData);
  80. foreach($request['user-docs'] as $userDoc){
  81. if($userDoc['doc']){
  82. (new UserDocuments())->uploadFile($userDoc, $user);
  83. }
  84. }
  85. if($postData['user_type'] == 'Corporate'){
  86. $userCorporate = [
  87. 'user_id' => $user['id'],
  88. 'employee_id' => 'EMP'.$user['id'].$postData['business_name'],
  89. 'business_model' => $postData['business_name'],
  90. 'business_for' => $postData['business_for'],
  91. ];
  92. $userCorporate = UserCorporate::create($userCorporate);
  93. }
  94. if($postData['wallet_amount'] > 0){
  95. $walletHistory = [
  96. 'user_id' => $user['id'],
  97. 'purpose' => $postData['reason'],
  98. 'amount' => $postData['wallet_amount'],
  99. 'transaction_type' => 'Credited',
  100. ];
  101. $walletHistory = WalletHistoryUsers::create($walletHistory);
  102. }
  103. if($postData['user_type'] == 'Driver'){
  104. return Redirect::to(route('admin.angels'));
  105. }
  106. return Redirect::to(route('admin.customers'));
  107. }
  108. /**
  109. * Render Customer Edit form in GET Method
  110. */
  111. public function edit_customer($id){
  112. $user = User::with(['UserData'])->where('id', '=', $id)->first();
  113. //$userDocuments = UserDocuments::where('user_id', $id)->get()->keyBy('doc_page')->toArray();
  114. $userDocuments = UserDocuments::where('user_id', $id)->get()->toArray();
  115. return view('admin.users.edit_customer', compact('user', 'userDocuments'));
  116. }
  117. /**
  118. * Update Subscriber or Corporate user to table from Admin portal
  119. * User, UserData, UserDocuments, Update Wallet History if wallet amount added
  120. */
  121. public function update_customer(Request $request, $id){
  122. $request->validate([
  123. 'email' => 'required|email',
  124. 'first_name' => 'required',
  125. 'last_name' => 'required',
  126. 'phone_number' => 'required',
  127. 'user_type' => 'required',
  128. ]);
  129. $postData = $request->all();
  130. $user = User::findOrFail($id);
  131. $userUpdate = [
  132. 'name' => $postData['first_name'] .' ' . $postData['last_name'],
  133. 'email' => $postData['email'],
  134. 'phone_number' => $postData['phone_number'],
  135. 'user_type' => $postData['user_type'],
  136. 'password' => '123456'
  137. ];
  138. $userDataUpdate = [
  139. 'user_id' => $user['id'],
  140. 'first_name' => $postData['first_name'],
  141. 'last_name' => $postData['last_name'],
  142. 'phone_number' => $postData['phone_number'],
  143. 'wallet_amount' => ( $postData['wallet_amount'] > 0) ? $postData['wallet_amount'] : 0
  144. ];
  145. $userData = UserData::where('user_id', $user['id'])->first();
  146. if($postData['wallet_amount'] != $userData['wallet_amount']){
  147. $amount = $userData['wallet_amount'] > $postData['wallet_amount'] ? $userData['wallet_amount'] - $postData['wallet_amount'] : $postData['wallet_amount'] - $userData['wallet_amount'];
  148. $transaction_type = $userData['wallet_amount'] > $postData['wallet_amount'] ? 'Debited' : 'Credited';
  149. $walletHistory = [
  150. 'user_id' => $user['id'],
  151. 'purpose' => $postData['reason'],
  152. 'amount' => $amount,
  153. 'transaction_type' => $transaction_type,
  154. ];
  155. $walletHistory = WalletHistoryUsers::create($walletHistory);
  156. }
  157. $user->update($userUpdate);
  158. $userData->update($userDataUpdate);
  159. //$userDocs = UserDocuments::where('user_id', $id)->get()->toArray();
  160. // foreach($userDocs as $userDoc){
  161. // $this->destroyUserDoc($userDoc['id']);
  162. // }
  163. foreach($request['user-docs'] as $userDoc){
  164. if($userDoc['doc']){
  165. (new UserDocuments())->uploadFile($userDoc, $user);
  166. }elseif($userDoc['doc_id']){
  167. if($userDocument = UserDocuments::findOrFail($userDoc['doc_id'])){
  168. $userDocUpdate = [
  169. 'user_id' => $user['id'],
  170. 'doc_name' => $userDoc['doc_name'],
  171. 'doc_number' => $userDoc['doc_number'],
  172. 'doc_page' => $userDoc['doc_page'],
  173. 'description' => isset($userDoc['description']) ? $userDoc['description'] : '',
  174. 'verify' => isset($userDoc['verify']) ? $userDoc['verify'] : 0
  175. ];
  176. $userDocument->update($userDocUpdate);
  177. }
  178. }
  179. }
  180. if($postData['user_type'] == 'Driver'){
  181. return Redirect::to(route('admin.angels'));
  182. }
  183. return Redirect::to(route('admin.customers'));
  184. }
  185. /**
  186. * Display the specified resource.
  187. *
  188. * @param int $id
  189. *
  190. * @return \Illuminate\View\View
  191. */
  192. public function show($id)
  193. {
  194. $user = User::with(['UserData'])->where('id', '=', $id)->first();
  195. $userDocuments = UserDocuments::where('user_id', $id)->get()->toArray();
  196. $walletHistories = WalletHistoryUsers::where('user_id', $id)->get();
  197. $userCorporate = UserCorporate::where('user_id', $id)->get()->toArray();
  198. return view('admin.users.show', compact('user', 'userDocuments', 'walletHistories', 'userCorporate'));
  199. }
  200. public function admin_login(Request $request){
  201. if (Auth::check()) {
  202. return Redirect::to('admin/dashboard');
  203. }else{
  204. $request->validate([
  205. 'email' => 'required',
  206. 'password' => 'required',
  207. ]);
  208. $credentials = $request->only('email', 'password');
  209. //print_r($credentials ); exit;
  210. if (Auth::attempt($credentials)) {
  211. return Redirect::to('admin/dashboard');
  212. }else{
  213. echo 'test'; exit;
  214. }
  215. }
  216. }
  217. public function signup(){
  218. }
  219. public function destroy($id)
  220. {
  221. User::destroy($id);
  222. $userDocs = UserDocuments::where('user_id', $id)->get()->toArray();
  223. foreach($userDocs as $userDoc){
  224. $this->destroyUserDoc($userDoc['id']);
  225. }
  226. $userData = UserData::where('user_id', $id)->first();
  227. UserData::destroy($userData['id']);
  228. $walletHistory = WalletHistoryUsers::where('user_id', $id)->get()->toArray();
  229. foreach($walletHistory as $history){
  230. WalletHistoryUsers::destroy($history['id']);
  231. }
  232. return redirect('admin/customers')->with('flash_message', 'users deleted!');
  233. }
  234. public function destroyUserDoc($id){
  235. if(UserDocuments::destroy($id)){
  236. return true;
  237. }
  238. }
  239. }