PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Http/Controllers/Admin/AdminController.php

https://gitlab.com/tutaalexandr/ukrbride4u.local
PHP | 340 lines | 274 code | 50 blank | 16 comment | 40 complexity | 3822470e2da251e61643beb1c6a4506e MD5 | raw file
  1. <?php namespace App\Http\Controllers\Admin;
  2. use App\Http\Controllers\Controller;
  3. use App\Models\BillingLog;
  4. use App\Models\News;
  5. use App\Models\User;
  6. use Illuminate\Database\Eloquent\Model;
  7. use Illuminate\Http\Request;
  8. use Image;
  9. use Input;
  10. use Validator;
  11. class AdminController extends Controller
  12. {
  13. /**
  14. * Create a new controller instance.
  15. */
  16. public function __construct()
  17. {
  18. $this->middleware('auth');
  19. }
  20. public function getIndex(Request $request)
  21. {
  22. return \Redirect::to(\Lang::getLocale() . \Config::get('app.default_admin_page'));
  23. }
  24. public function getArticles(Request $request, News $NewsModel)
  25. {
  26. $News = $NewsModel->AdminPablichedNews();
  27. $Story = $NewsModel->AdminPablichedStory();
  28. return view('admin.articles', ['News' => $News, 'Story' => $Story]);
  29. }
  30. public function postStatistics(Request $request)
  31. {
  32. return redirect()->back()->withInput($request->input());
  33. }
  34. public function getStatistics(Request $request)
  35. {
  36. return view('admin.statistics', [
  37. 'out' => $request->old('from') . ' - ' . $request->old('to'),
  38. 'statistics' => BillingLog::getAdminStatistics($request->old('from'), $request->old('to')),
  39. ]);
  40. }
  41. public function getShowDetailed(Request $request , $en , $id , $name)
  42. {
  43. // print_r(BillingLog::getHistoryData($id) );
  44. return view('admin.statistics-detailed', [
  45. 'name' => $name,
  46. 'historyData' => BillingLog::getHistoryDataDesc($id),
  47. 'id_user' => $id,
  48. ]);
  49. }
  50. public function getUsers(Request $request)
  51. {
  52. return view('admin.users', [
  53. 'm_list' => $request->user()->getUsersListBySex('m'),
  54. 'w_list' => $request->user()->getUsersListBySex('w'),
  55. ]);
  56. }
  57. public function postRegisterUser(Request $request)
  58. {
  59. $validator = Validator::make($request->only('sex', 'name', 'email', 'password', 'password_confirmation'), [
  60. 'sex' => 'required|min:1|max:1',
  61. 'name' => 'required|min:2|max:50',
  62. 'email' => 'required|email|min:6|max:50|unique:users',
  63. 'password' => 'required|confirmed|min:6',
  64. ]);
  65. if ($validator->fails()) {
  66. return redirect()->back()->withInput($request->input())->withErrors($validator, 'register');
  67. }
  68. $user = User::create([
  69. 'name' => $request->get('name'),
  70. 'email' => $request->get('email'),
  71. 'password' => bcrypt($request->get('password')),
  72. 'sex' => $request->get('sex'),
  73. 'rights' => 'user',
  74. 'locale' => \Lang::getLocale(),
  75. ]);
  76. $user->billing()->create(['balance' => 0]);
  77. if ($request->input('need_login')) {
  78. \Auth::logout();
  79. \Auth::login($user);
  80. return redirect('/' . \Lang::getLocale() . '/cabinet');
  81. }
  82. return redirect()->back();
  83. }
  84. public function postEditUser(Request $request)
  85. {
  86. $requestData = $request->only('uid', 'name', 'email', 'password', 'password_confirmation');
  87. /**
  88. * @var $user Model
  89. * @var $user User
  90. */
  91. $user = User::find((int)$requestData['uid']);
  92. $rules = [];
  93. if ($user->name != $requestData['name']) {
  94. $rules['name'] = 'required|min:2|max:50';
  95. }
  96. if ($user->email != $requestData['email']) {
  97. $rules['email'] = 'required|email|min:6|max:50|unique:users';
  98. }
  99. if (!empty($requestData['password']) || !empty($requestData['password_confirmation'])) {
  100. $rules['password'] = 'required|confirmed|min:6';
  101. }
  102. $validator = Validator::make($requestData, $rules);
  103. if ($validator->fails()) {
  104. return redirect()->back()->withInput($request->input())->withErrors($validator, 'edit');
  105. }
  106. $data = [];
  107. if ($user->name != $requestData['name']) {
  108. $data = ['name' => $requestData['name']];
  109. }
  110. if ($user->email != $requestData['email']) {
  111. $data = ['email' => $requestData['email']];
  112. }
  113. if (!empty($requestData['password'])) {
  114. $data['password'] = bcrypt($requestData['password']);
  115. }
  116. $user->fill($data);
  117. $user->save();
  118. return redirect()->back();
  119. }
  120. public function postDeleteUser(Request $request)
  121. {
  122. $userId = (int)$request->get('id');
  123. if ($userId < 1) {
  124. return json_encode(false);
  125. }
  126. if ($user = User::find($userId)) {
  127. if ($user->delete()) {
  128. rrmdir(public_path() . "/img/pr/$userId/");
  129. return json_encode(true);
  130. }
  131. } else {
  132. return json_encode(false);
  133. }
  134. }
  135. public function postAddMoneyUser(Request $request)
  136. {
  137. $userId = (int)$request->get('uid');
  138. $amount = (int)$request->get('amount');
  139. if ($userId < 1) {
  140. return json_encode(false);
  141. }
  142. if ($user = User::find($userId)) {
  143. //$amount = 1;
  144. $user_balance = $user->billing['balance'];
  145. $user->billing()->update(['balance' => $user_balance + $amount]);
  146. BillingLog::create([
  147. 'billing_id' => $user->billing['id'],
  148. // 'partner_id' => null,
  149. 'event' => 'recharge',
  150. 'before' => $user_balance,
  151. 'difference' => $amount,
  152. 'after' => $user_balance + $amount,
  153. ]);
  154. return redirect('/' . \Lang::getLocale() . '/admin/users');
  155. return json_encode(true);
  156. } else {
  157. return json_encode(false);
  158. }
  159. }
  160. public function postWithdrawMoneyUser(Request $request)
  161. {
  162. $userId = (int)$request->get('uid');
  163. $amount = (int)$request->get('amount');
  164. if ($userId < 1) {
  165. return json_encode(false);
  166. }
  167. if ($user = User::find($userId)) {
  168. //$amount = 1;
  169. $user_balance = $user->billing['balance'];
  170. $result = $user_balance - $amount ;
  171. if( $result < 0){
  172. $result = 0.000 ;
  173. }
  174. $user->billing()->update(['balance' => $result]);
  175. BillingLog::create([
  176. 'billing_id' => $user->billing['id'],
  177. // 'partner_id' => null,
  178. 'event' => 'admin',
  179. 'before' => $user_balance,
  180. 'difference' => $amount,
  181. 'after' => $result,
  182. ]);
  183. return redirect('/' . \Lang::getLocale() . '/admin/users');
  184. return json_encode(true);
  185. } else {
  186. return json_encode(false);
  187. }
  188. }
  189. public function postMoneyUser(Request $request)
  190. {
  191. $userId = (int)$request->get('id');
  192. // print_r(User::find($userId));
  193. /*return json_encode($userId );
  194. exit();*/
  195. if ($user = User::find($userId)) {
  196. //$amount = 1;
  197. $user_balance = $user->billing['balance'];
  198. return ($user_balance);
  199. } else {
  200. return (false);
  201. }
  202. }
  203. public function postLoginUser(Request $request)
  204. {
  205. if (User::find((int)$request->get('id'))) {
  206. \Auth::logout();
  207. \Auth::loginUsingId((int)$request->get('id'));
  208. return json_encode(true);
  209. }
  210. return json_encode(false);
  211. }
  212. private function saveUserImage($file, $imgName)
  213. {
  214. $imageDirUrl = "/upload/news/";
  215. $imageDirPath = public_path() . $imageDirUrl;
  216. $imagePath = $imageDirPath . '/' . $imgName;
  217. if (empty($file)) {
  218. if (file_exists($imagePath)) {
  219. return $imageDirUrl . $imgName;
  220. } else {
  221. return null;
  222. }
  223. }
  224. @mkdir($imageDirPath, 0755, true);
  225. if (file_exists($imagePath)) {
  226. unlink($imagePath);
  227. }
  228. Image::make($file)->resize(200, 200, function ($constraint) {
  229. $constraint->aspectRatio();
  230. $constraint->upsize();
  231. })->save($imagePath);
  232. return $imgName;
  233. }
  234. private static function generateMicroTimeString()
  235. {
  236. $mtime = explode(" ", microtime());
  237. $msec = explode(".", $mtime[0]);
  238. return $mtime[1] . '.' . $msec[1];
  239. }
  240. public function postRegisterNews(Request $request, News $NewsModel)
  241. {
  242. $validator = Validator::make($request->only('image', 'url_name', 'title', 'text', 'newsOrStories', 'password_confirmation'), [
  243. 'title' => 'required|min:2|max:200',
  244. 'url_name' => 'required|min:2|max:200',
  245. 'newsOrStories' => 'required|min:1',
  246. 'image' => 'image',
  247. ]);
  248. if ($validator->fails()) {
  249. return redirect()->back()->withInput($request->input())->withErrors($validator, 'addArticlesErrors');
  250. }
  251. $url = $request->get('url_name');
  252. if (News::where('newsOrStories', $request->get('newsOrStories'))->where('url_name', $url)->exists()) {
  253. $url .= '-' . time();
  254. }
  255. News::create([
  256. 'image' => $this->saveUserImage(Input::file('image'), self::generateMicroTimeString() . '.png'),
  257. 'title' => $request->get('title'),
  258. 'url_name' => $url,
  259. 'text' => $request->get('text'),
  260. 'newsOrStories' => $request->get('newsOrStories'),
  261. ]);
  262. $newsOrStories = $request->get('newsOrStories');
  263. if($newsOrStories == 0){
  264. \DB::table('view_news')->delete();
  265. }
  266. return redirect('/' . \Lang::getLocale() . '/admin/articles');
  267. }
  268. public function postDeleteNews(Request $request, News $NewsModel)
  269. {
  270. $NewsId = (int)$request->get('id');
  271. if ($NewsId < 1) {
  272. return json_encode(false);
  273. }
  274. if ($News = News::find($NewsId)) {
  275. if ($News->delete()) {
  276. return json_encode(true);
  277. }
  278. } else {
  279. return json_encode(false);
  280. }
  281. }
  282. public function postEditNews(Request $request, News $NewsModel)
  283. {
  284. $requestData = $request->only('uid', 'title', 'url_name', 'text');
  285. $News = News::find((int)$requestData['uid']);
  286. $News->fill($requestData);
  287. $News->save();
  288. return redirect()->back();
  289. }
  290. }