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.

FormController.php 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Http\Controllers\v3\Api;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\v3\Api\BaseController;
  5. use Config;
  6. use File;
  7. use Carbon\Carbon;
  8. use App\LatestModel\Staff;
  9. use App\LatestModel\StaffDetail;
  10. use App\LatestModel\Module\Form;
  11. use App\LatestModel\Module\FormStatus;
  12. use App\LatestModel\Module\Subscriber;
  13. use App\LatestModel\Module\WorkOrder;
  14. use App\LatestModel\Module\Docket;
  15. use App\LatestModel\Module\PackageDetail;
  16. use App\LatestModel\Module\Company;
  17. use App\LatestModel\Module\Coverage;
  18. use App\LatestModel\Module\Product;
  19. class FormController extends BaseController
  20. {
  21. public function storeFormDataResidential(Request $request){
  22. $su_id = ''; $pathIconF = ''; $pathIconB = ''; $pathVisaF = ''; $pathVisaB = '';
  23. do {
  24. $su_id = strtoupper('CBB-'.$this->random_code(6).'R');
  25. } while (Subscriber::where("subscriber_id", "=", $su_id)->first() instanceof Subscriber);
  26. $destinationPath = 'document/'.$su_id;
  27. // create folder/dir if not exist
  28. if(!File::exists(public_path().'/'.$destinationPath)){
  29. File::makeDirectory(public_path().'/'.$destinationPath,0777,true);
  30. }
  31. $uploaded = public_path().'/'.$destinationPath;
  32. // Signature
  33. $signature_form = $request->cuss_signature;
  34. $signature_form = str_replace('data:image/jpeg;base64,','',$signature_form);
  35. $signature_form = str_replace('','+',$signature_form);
  36. //convert signature_form
  37. $data = base64_decode($signature_form);
  38. $file = $uploaded."/signature_form.jpg";
  39. $savetoServer = file_put_contents($file,$data);
  40. if (($savetoServer === false) || ($savetoServer == -1)) {
  41. print "Couldn't save signature to jpeg";
  42. }else {
  43. if($request->hasfile('front_ic')){
  44. $icon = $request->file('front_ic');
  45. $icon->move($destinationPath,'frontic.'.$icon->getClientOriginalExtension());
  46. $pathIconF = '/'.$destinationPath.'/frontic.'.$icon->getClientOriginalExtension();
  47. }
  48. if($request->hasfile('back_ic')){
  49. $icon = $request->file('back_ic');
  50. $icon->move($destinationPath,'backic.'.$icon->getClientOriginalExtension());
  51. $pathIconB = '/'.$destinationPath.'/backic.'.$icon->getClientOriginalExtension();
  52. }
  53. if($request->hasfile('visaF')){
  54. $icon = $request->file('visaF');
  55. $icon->move($destinationPath,'visaF.'.$icon->getClientOriginalExtension());
  56. $pathVisaF = '/'.$destinationPath.'/visaF.'.$icon->getClientOriginalExtension();
  57. }
  58. if($request->hasfile('visaB')){
  59. $icon = $request->file('visaB');
  60. $icon->move($destinationPath,'visaB.'.$icon->getClientOriginalExtension());
  61. $pathVisaB = '/'.$destinationPath.'/visaB.'.$icon->getClientOriginalExtension();
  62. }
  63. // staff
  64. $staff = Staff::with('StaffDetail')->where('_id',$request->dealer_id)->first();
  65. if(!empty($staff)){
  66. $sl = new Form();
  67. $sl->type_service = $request->application;
  68. $sl->type_application = 'R';
  69. $sl->status_payment = 'paid';
  70. $sl->status_email = 'unverified';
  71. $sl->remark_form = '';
  72. $sl->dealer_id = $request->dealer_id;
  73. $sl->company_id = $staff->StaffDetail->company_id;
  74. $sl->status_form = 'Draft';
  75. $staff->form()->save($sl);
  76. $coverage = Coverage::where('_id',$request->coverage)->first();
  77. $product = Product::where('formT','R')->where('package_name',$request->package)->first();
  78. $sdl = new Subscriber();
  79. $sdl->subscriber_id = $su_id;
  80. $sdl->name = $request->name;
  81. $sdl->ic = $request->nric_passport;
  82. $sdl->citizen = $request->citizenship;
  83. $sdl->gender = $request->gender;
  84. $sdl->race = $request->race;
  85. $sdl->email = $request->email;
  86. $sdl->phone1 = $request->contact_primary;
  87. $sdl->phone2 = $request->contact_secondary;
  88. $sdl->unit_no = $request->unit;
  89. $sdl->building_name = $coverage->building_name;
  90. $sdl->street = $request->street;
  91. $sdl->postcode = $coverage->postcode;
  92. $sdl->city = $coverage->city;
  93. $sdl->state = $coverage->state;
  94. $sdl->front_ic = $pathIconF;
  95. $sdl->back_ic = $pathIconB;
  96. $sdl->visaF = $pathVisaF;
  97. $sdl->visaB = $pathVisaB;
  98. $sdl->signature = '/'.$destinationPath.'/signature_form.jpg';
  99. $packageD = new PackageDetail();
  100. $packageD->contract = $request->subscription;
  101. $packageD->name = $product->speed;
  102. $packageD->montly_fee = $request->gst;
  103. $packageD->voice_fee = $request->voice;
  104. $packageD->deposit = $request->deposit;
  105. $packageD->upfront_payment = $request->otc;
  106. $packageD->rfs = $request->rfs;
  107. $sl->subscriber()->save($sdl);
  108. $sl->packagedetail()->save($packageD);
  109. $f_id = $this->sendInvoice($su_id);
  110. $stat = new FormStatus();
  111. $stat->form_id = $f_id;
  112. $stat->status_id = 1;
  113. $stat->date = new \MongoDB\BSON\UTCDateTime(time()*1000);
  114. $stat->status = 'Sumbitted';
  115. $stat->desc = 'The form already been submit';
  116. $sl->formstatus()->save($stat);
  117. $url = url('residential/application-form/success-submit');
  118. return response()->json($response);
  119. }
  120. }
  121. }
  122. }