SeminarSignUpService.php 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace App\Http\Services\Api;
  3. use App\Models\SignupData;
  4. use App\Models\TrackData;
  5. use DB;
  6. use GuzzleHttp\Client;
  7. class SeminarSignUpService
  8. {
  9. protected $signupDb;
  10. protected $trackDataDb;
  11. public function __construct()
  12. {
  13. $this->signupDb = new SignupData();
  14. $this->trackDataDb = new TrackData();
  15. }
  16. public function insertData(
  17. $firstName, $lastName, $companyName, $companyEmail, $backupEmail, $phoneNumber, $country, $trackNo,
  18. $registeredSession, $lunchOptions, $typeOfIndustry, $typeOfJob, $jobTitle, $trackOfInterest, $areaOfInterest,
  19. $howToKnowAboutTheEvent, $consentAcceptEmail, $consentPrivacyPolicy, $media, $utm_source, $utm_medium, $utm_content, $utm_term, $utm_campaign)
  20. {
  21. $this->signupDb
  22. ->insert([
  23. 'firstName' => $firstName,
  24. 'lastName' => $lastName,
  25. 'companyName' => $companyName,
  26. 'companyEmail' => $companyEmail,
  27. 'backupEmail' => $backupEmail,
  28. 'phoneNumber' => $phoneNumber,
  29. 'country' => $country,
  30. 'trackNo' => $trackNo,
  31. 'registeredSession' => $registeredSession,
  32. 'lunchOptions' => $lunchOptions,
  33. 'typeOfIndustry' => $typeOfIndustry,
  34. 'typeOfJob' => $typeOfJob,
  35. 'jobTitle' => $jobTitle,
  36. 'trackOfInterest' => $trackOfInterest,
  37. 'areaOfInterest' => $areaOfInterest,
  38. 'howToKnowAboutTheEvent' => $howToKnowAboutTheEvent,
  39. 'consentAcceptEmail' => $consentAcceptEmail,
  40. 'consentPrivacyPolicy' => $consentPrivacyPolicy,
  41. 'media' => $media,
  42. 'utm_source' => $utm_source,
  43. 'utm_medium' => $utm_medium,
  44. 'utm_content' => $utm_content,
  45. 'utm_term' => $utm_term,
  46. 'utm_campaign' => $utm_campaign,
  47. 'createDate' => date("Y-m-d H:i:s"),
  48. ]);
  49. }
  50. public function overLimitOrNot($trackNo)
  51. {
  52. $nowCount = 0;
  53. $nowCount = $this->signupDb
  54. ->where('trackNo', '=', $trackNo)
  55. ->count();
  56. $limit = $this->trackDataDb
  57. ->select('trackLimit')
  58. ->where('trackNo', '=', $trackNo)
  59. ->first();
  60. if ($limit->trackLimit>$nowCount) {
  61. return true;
  62. } else {
  63. return false;
  64. }
  65. }
  66. public function duplicatedOrNot($trackNo, $companyEmail, $phoneNumber)
  67. {
  68. $cnt = 0;
  69. $cnt = $this->signupDb
  70. ->where('trackNo', '=', $trackNo)
  71. ->where('companyEmail', '=', $companyEmail)
  72. // ->where('phoneNumber', '=', $phoneNumber)
  73. ->count();
  74. \Log::info($cnt);
  75. if ($cnt==0) {
  76. return true;
  77. } else {
  78. return false;
  79. }
  80. }
  81. public function getData()
  82. {
  83. $res = $this->trackDataDb
  84. ->select([
  85. 'trackData.*',
  86. \DB::raw('trackLimit-count(signupData.id) as remain')
  87. ])
  88. ->leftJoin('signupData', 'trackData.trackNo', '=', 'signupData.trackNo')
  89. ->groupBy('trackData.trackNo')
  90. ->get();
  91. // 整理返回值並返回
  92. return $res;
  93. }
  94. public function getReMailData()
  95. {
  96. // \DB::enableQueryLog();
  97. $res = $this->signupDb
  98. ->select(['*'])
  99. ->where('id', '>', '1370')
  100. ->where('id', '<', '1384')
  101. ->get()
  102. ->toArray();
  103. // \Log::debug(print_r(DB::getQueryLog(), true));
  104. // 整理返回值並返回
  105. return $res;
  106. }
  107. public function getUTMData()
  108. {
  109. // \DB::enableQueryLog();
  110. $res = $this->signupDb
  111. ->select(['id', 'media'])
  112. ->where('id', '3')
  113. ->get()
  114. ->toArray();
  115. // \Log::debug(print_r(DB::getQueryLog(), true));
  116. // 整理返回值並返回
  117. return $res;
  118. }
  119. }