SeminarSignUpService.php 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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, $howToKnowAboutTheEvent,
  19. $consentAcceptEmail, $consentPrivacyPolicy)
  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. 'createDate' => date("Y-m-d H:i:s"),
  42. ]);
  43. }
  44. public function overLimitOrNot($trackNo)
  45. {
  46. $nowCount = $this->signupDb
  47. ->where('trackNo', '=', $trackNo)
  48. ->count();
  49. $limit = $this->trackDataDb
  50. ->select('trackLimit')
  51. ->where('trackNo', '=', $trackNo)
  52. ->first();
  53. if ($limit->trackLimit>$nowCount) {
  54. return true;
  55. } else {
  56. return false;
  57. }
  58. }
  59. public function getData()
  60. {
  61. $res = $this->trackDataDb
  62. ->select([
  63. 'trackData.*',
  64. \DB::raw('trackLimit-count(signupData.id) as remain')
  65. ])
  66. ->leftJoin('signupData', 'trackData.trackNo', '=', 'signupData.trackNo')
  67. ->groupBy('signupData.trackNo')
  68. ->get();
  69. // 整理返回值並返回
  70. return $res;
  71. }
  72. }