SeminarSignUpService.php 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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)
  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. 'createDate' => date("Y-m-d H:i:s"),
  43. ]);
  44. }
  45. public function overLimitOrNot($trackNo)
  46. {
  47. $nowCount = 0;
  48. $nowCount = $this->signupDb
  49. ->where('trackNo', '=', $trackNo)
  50. ->count();
  51. $limit = $this->trackDataDb
  52. ->select('trackLimit')
  53. ->where('trackNo', '=', $trackNo)
  54. ->first();
  55. if ($limit->trackLimit>$nowCount) {
  56. return true;
  57. } else {
  58. return false;
  59. }
  60. }
  61. public function duplicatedOrNot($trackNo, $companyEmail, $phoneNumber)
  62. {
  63. $cnt = 0;
  64. $cnt = $this->signupDb
  65. ->where('trackNo', '=', $trackNo)
  66. ->where('companyEmail', '=', $companyEmail)
  67. // ->where('phoneNumber', '=', $phoneNumber)
  68. ->count();
  69. \Log::info($cnt);
  70. if ($cnt==0) {
  71. return true;
  72. } else {
  73. return false;
  74. }
  75. }
  76. public function getData()
  77. {
  78. $res = $this->trackDataDb
  79. ->select([
  80. 'trackData.*',
  81. \DB::raw('trackLimit-count(signupData.id) as remain')
  82. ])
  83. ->leftJoin('signupData', 'trackData.trackNo', '=', 'signupData.trackNo')
  84. ->groupBy('trackData.trackNo')
  85. ->get();
  86. // 整理返回值並返回
  87. return $res;
  88. }
  89. public function getReMailData()
  90. {
  91. // \DB::enableQueryLog();
  92. $res = $this->signupDb
  93. ->select(['*'])
  94. ->where('id', '>', '1170')
  95. ->where('id', '<', '1191')
  96. ->get()
  97. ->toArray();
  98. // \Log::debug(print_r(DB::getQueryLog(), true));
  99. // 整理返回值並返回
  100. return $res;
  101. }
  102. }