Advertisement
Guest User

Untitled

a guest
Mar 20th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. public function userRegisterByList(Request $request)
  2. {
  3.  
  4. $emails_list = $request['emails_list'];
  5. $user_ids = [];
  6.  
  7. //перевод в нижний регистр
  8. $emails_list = strtolower($emails_list);
  9. //вставим разделитель емейлов " selector_of_emails" в текст с емейлами
  10. $emails_list = preg_replace('/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/', '$1 selector_of_emails', $emails_list);
  11. //переобразум струку в масив адрессов с помощью разделителя
  12. $emails_list = explode(' selector_of_emails', $emails_list);
  13. //уберем пробелы и другие символы с начала и конца строки (каждого адреса)
  14. foreach ($emails_list as $email) {
  15. $emails[] = trim($email);
  16. }
  17. //уберем пустые строки из масива адресов
  18. foreach ($emails as $key => $val) {
  19. if ($val == "") unset($emails[$key]);
  20. }
  21.  
  22. //создание списка емейлов что уже зарегистрированы и есть в новом списке для регистрации, а также их удаление из нового списка емейлов
  23. $emails_all = User::all()->pluck('email')->toArray();
  24. $emails_new = array_diff($emails, $emails_all);
  25. $emails_exist = array_diff($emails, $emails_new);
  26.  
  27. //разсылка и регистрация пользователей по списку емейлов
  28. foreach ($emails_new as $email) {
  29.  
  30. $password = $this->setUserPassword();
  31.  
  32. $user = new User();
  33.  
  34. $user->email = $email;
  35. $user->password = bcrypt($password);
  36. $user->password_native = $password;
  37. $user->user_type_id = 1;
  38. $user->visitcount = 1;
  39. $user->activity = true;
  40.  
  41. $user->save();
  42.  
  43. $user_ids[] = $user->id;
  44.  
  45.  
  46. //send register email to user
  47.  
  48. $user_first_name = null;
  49. $user_last_name = null;
  50. $user_email = $user->email;
  51.  
  52. $email_text_template = EmailTemplate::where('id', $request['register_email_template'])->first();
  53. $mail_from = 'info@genio.academy';
  54. $mail_subject = 'info';
  55. $mail_template = $email_text_template;
  56. $mail_text_parameters['user_first_name'] = $user_first_name;
  57. $mail_text_parameters['user_last_name'] = $user_last_name;
  58. $mail_text_parameters['user_email'] = $user_email;
  59. $mail_text_parameters['password'] = $password;
  60. Mail::to($user)->send(new MailByTemplate($mail_from, $mail_subject,$mail_template, $mail_text_parameters));
  61.  
  62. }
  63.  
  64. //get exist user ids
  65. if (isset($emails_exist) && count($emails_exist>0)) $exist_users_ids = User::whereIn('email', $emails_exist)->get()->pluck('id');
  66.  
  67.  
  68. //set groups for added users
  69. if ($request->groups) {
  70. $this->userMultiSetGroups($user_ids, $request->groups);
  71. if(isset($exist_users_ids) && count($exist_users_ids)>0) $this->userMultiSetGroups($exist_users_ids, $request->groups);
  72. }
  73.  
  74. //set courses for added users
  75. if ($request->courses) {
  76. $this->userMultiSetCourses($user_ids, $request->courses);
  77. if(isset($exist_users_ids) && count($exist_users_ids)>0) $this->userMultiSetCourses($exist_users_ids, $request->courses);
  78. }
  79.  
  80. //if admin redirect to users table
  81. if (Auth::check()) {
  82. if (Auth::user()->userType->id == 4) {
  83. //dd($emails_exist);
  84. if(count($emails_new)==0 && count($emails_exist)>0) {
  85. $emails_exist_list = implode(", ", $emails_exist);
  86. $request->session()->flash('alert-danger', 'Пользователи с емейлами ' . $emails_exist_list . ' уже зарегистрированы в системе.');
  87. }
  88. elseif(count($emails_new)>0 && count($emails_exist)>0) {
  89. $emails_new_list = implode(", ", $emails_new);
  90. $emails_exist_list = implode(", ", $emails_exist);
  91. $request->session()->flash('alert-warning', 'Пользователи с емейлами '. $emails_new_list .' в колличестве ' . count($emails_new) . ' чел. зарегистрированы. (пароли высланы на емейлы).
  92. А пользователи с емейлами ' . $emails_exist_list . ' уже были зарегистрированы в системе.');
  93. }
  94. else $request->session()->flash('alert-success', 'Пользователи в колличестве ' . count($emails_new) . ' чел. зарегистрированы. (пароли высланы на емейлы)');
  95. return redirect()->route('allUsers');
  96. }
  97. }
  98.  
  99. return redirect()->back();
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement