You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DocketMobile.php 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use Illuminate\Http\Request;
  4. use App\Http\Requests\RegisterRequest;
  5. use App\Http\Controllers\Api\BaseController;
  6. use Illuminate\Support\Facades\Auth;
  7. use App\Staff;
  8. use App\Model\StaffDetail;
  9. use App\Model\Docket;
  10. use App\Model\WorkOrder;
  11. use App\Model\Company;
  12. use App\Model\Form;
  13. use App\Model\PackageDetail;
  14. use App\Model\Subscriber;
  15. use App\Model\FormStatus;
  16. use App\Jobs\StoreDocket;
  17. use Carbon\Carbon;
  18. use File;
  19. class DocketMobile extends BaseController
  20. {
  21. function random_code($limit) {
  22. return substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, $limit);
  23. }
  24. function createDocketID($limit){
  25. $numberOnly = str_replace('DO-','',Docket::orderBy('docket_id', 'desc')->value('docket_id'));
  26. $numberOnly++;
  27. info($numberOnly);
  28. return $numberOnly;
  29. // $allowedNumbers = range(0, 9);
  30. // shuffle($allowedNumbers);
  31. // $digits = array_rand($allowedNumbers, $limit);
  32. // $number = '';
  33. // foreach($digits as $d){
  34. // $number .= $allowedNumbers[$d];
  35. // }
  36. // $unique_id = $number;
  37. // return $unique_id;
  38. }
  39. public function createDocket(Request $request){
  40. $loginUser = Staff::with('StaffDetail')->where('api_token', $request->api_token)->first();
  41. if(!empty($loginUser)) {
  42. $wo = WorkOrder::where('wo',$request->wo)->first();
  43. if(!empty($wo)){
  44. $woD = Docket::where('work_order_id', $request->wo)->first();
  45. if(empty($woD)){
  46. $subs = Subscriber::where('_id',$wo->_id)->first();
  47. $destinationPath = 'document/'.$subs->subscriber_id;
  48. // create folder/dir if not exist
  49. if(!File::exists(public_path().'/'.$destinationPath)){
  50. File::makeDirectory(public_path().'/'.$destinationPath,0777,true);
  51. }
  52. $uploaded = public_path().'/'.$destinationPath;
  53. // Signature
  54. $signature_docket = $request->data_uris;
  55. $signature_docket = explode(",", $signature_docket)[1];
  56. //convert signature_form
  57. $data = base64_decode($signature_docket);
  58. $file = $uploaded."/signature_docket.png";
  59. $savetoServer = file_put_contents($file,$data);
  60. if (($savetoServer === false) || ($savetoServer == -1)) {
  61. return $this->sendError('', "Couldn't save signature to jpeg");
  62. }else {
  63. do {
  64. $do = 'DO-'.$this->createDocketID(4);
  65. } while (Docket::where("docket_id", "=", $do)->first() instanceof Docket);
  66. $signature = '/'.$destinationPath.'/signature_docket.png';
  67. $this->dispatch(new StoreDocket($request->all(), $do, $wo->nature_work, $loginUser->_id, $signature));
  68. // $docket = new Docket();
  69. // $docket->work_order_id = $request->wo;
  70. // $docket->docket_id = $do;
  71. // $docket->nature_work = $wo->nature_work;
  72. // $docket->installer_id = $loginUser->_id;
  73. // $docket->end_job = Carbon::now()->toDateTimeString();
  74. // $docket->router_serial_number = $request->router_serial_number;
  75. // $docket->mac_router = $request->mac_router;
  76. // $docket->cable_read = $request->cable_read;
  77. // $docket->condition = $request->condition;
  78. // $docket->Note = $request->Note;
  79. // $docket->Rating1 = $request->Rating1;
  80. // $docket->Rating2 = $request->Rating2;
  81. // $docket->Rating3 = $request->Rating3;
  82. // $docket->customer_signature = '/'.$destinationPath.'/signature_docket.png';
  83. // $wo->docket()->save($docket);
  84. // $wo->status = 'Completed';
  85. // $wo->docket_id = $do;
  86. // $wo->save();
  87. // $fm = Form::where('_id',$wo->_id)->first();
  88. // $stat = new FormStatus();
  89. // $stat->form_id = $fm->_id;
  90. // $stat->status_id = 8;
  91. // $stat->date = new \MongoDB\BSON\UTCDateTime(time()*1000);
  92. // $stat->status = 'Completed';
  93. // $stat->desc = 'This work order already been completed';
  94. // $fm->formstatus()->save($stat);
  95. return $this->sendResponse($do, 'Create Docket Successfully');
  96. }
  97. }else{
  98. return $this->sendError('', 'Work Order Already Existed!');
  99. }
  100. }else{
  101. return $this->sendError('', 'Work Order Not Exist!');
  102. }
  103. }else {
  104. return $this->sendError('Invalid User', 'User Not Exist!');
  105. }
  106. }
  107. }