UserController.php 8.8 KB

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