DocWaveHeaderService.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Services;
  3. use App\ValueStore;
  4. use Carbon\Carbon;
  5. use Illuminate\Support\Facades\DB;
  6. use Yajra\Oci8\Query\OracleBuilder;
  7. Class DocWaveHeaderService
  8. {
  9. public function get(array $params, $rule = [])
  10. {
  11. /** @var OracleBuilder $query */
  12. $query = DB::connection("oracle")->table("doc_wave_header")->orderByDesc("edittime");
  13. foreach ($params as $column=>$param){
  14. if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
  15. else $query->where($column,$param);
  16. }
  17. return $query->get();
  18. }
  19. private function rule(OracleBuilder $query, $rule, $column, $value)
  20. {
  21. switch ($rule){
  22. case "gtOrEqual":
  23. $query->where($column,">=",$value);
  24. break;
  25. case "gt":
  26. $query->where($column,">",$value);
  27. break;
  28. case "raw":
  29. $query->whereRaw($value);
  30. break;
  31. case "in":
  32. $query->whereIn($column,$value);
  33. break;
  34. }
  35. return $query;
  36. }
  37. public function getSyncDate()
  38. {
  39. $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->first();
  40. return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
  41. }
  42. public function setSyncDate(string $value)
  43. {
  44. $valueStore = ValueStore::query()->where("name","wave_last_sync_date");
  45. return $valueStore->update(["value"=>$value]);
  46. }
  47. }