ionic-vhframeworks 9.1.7 → 9.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11981,6 +11981,44 @@ export declare class VhQueryAutoWeb {
11981
11981
  private configChanged;
11982
11982
  private renderer;
11983
11983
  constructor(vhMGDB_database: VhMGDB_database, vhMGDB_socketMongoDB: VhMGDB_socketMongoDB, vhQuery: VhQuery, vhAuth: VhAuth, vhMGDB_rootdatabase: VhMGDB_rootdatabase, vhMGDB_auth: VhMGDB_auth, vhOTP: VhOTP, vhAlgorithm: VhAlgorithm, vhBuildAutoWeb: VhBuildAutoWeb, vhDesignAutoWeb: VhDesignAutoWeb, vhEventMediator: VhEventMediator, http: HttpClient, renderFactory: RendererFactory2);
11984
+ /**
11985
+ * Lấy về danh sách các ngân hàng (kèm logo) mà vietqr hỗ trợ tạo mã QR
11986
+ * @example:
11987
+ * this.vhQueryAutoWeb.vietqr_getBanks()
11988
+ .then((rsp:any)=>{
11989
+ if(rsp.vcode === 0){
11990
+ }
11991
+ }, error=>{
11992
+ console.log(error)
11993
+ })
11994
+ * @returns Promise => rsp ={vcode, msg, data(array)} / error
11995
+ * vcode == 0: success
11996
+ */
11997
+ vietqr_getBanks(): Promise<unknown>;
11998
+ /**
11999
+ * Tạo mã QR cho khách hàng quét thanh toán
12000
+ * @example:
12001
+ * this.vhQueryAutoWeb.vietqr_generateQR('0909925354', 'LE DUC HUY', '970422', 'compact2', '674fd94a9ace7267deb685fd', 99000)
12002
+ .then((rsp:any)=>{
12003
+ if(rsp.vcode === 0){
12004
+ }
12005
+ }, error=>{
12006
+ console.log(error)
12007
+ })
12008
+ * @param accountNo: số tài khoản ngân hàng
12009
+ * @param accountName: tên chủ tài khoản
12010
+ * @param acqId: mã bin của ngân hàng (lấy từ hàm vietqr_getBanks())
12011
+ * @param template: compact2, compact, qr_only, print
12012
+ + compact2: 540x640 Bao gồm : Mã QR, các logo , thông tin chuyển khoản
12013
+ + compact: 540x540 QR kèm logo VietQR, Napas, ngân hàng
12014
+ + qr_only: 480x480 Trả về ảnh QR đơn giản, chỉ bao gồm QR
12015
+ + print: 600x776 Bao gồm : Mã QR, các logo và đầy đủ thông tin chuyển khoản
12016
+ * @param id_bill: _id của đơn hàng
12017
+ * @param amount: tổng tiền khách phải thanh toán
12018
+ * @returns Promise => rsp ={vcode, msg, data(img_base64)} / error
12019
+ * vcode == 0: success
12020
+ */
12021
+ vietqr_generateQR(accountNo: string, accountName: string, acqId: string, template: string, id_bill: string, amount: number): Promise<unknown>;
11984
12022
  /**
11985
12023
  * Hàm tạo template theo chuẩn flexbox từ tempplate theo chuẩn position
11986
12024
  * @example:
@@ -12135,10 +12173,9 @@ export declare class VhQueryAutoWeb {
12135
12173
  */
12136
12174
  deployWebAppsource_toBuild_byEmail(build_email: string, build_password: string): Promise<unknown>;
12137
12175
  /**
12138
- * Hàm này Enduser deploy source webapp CHỈ từ dự án webappgiare.vn (chạy trong Autoweb_design autoweb_build) lên máy chủ (server) của dự án Autoweb_build
12139
- * Lưu ý: hàm này tự động kiểm tra enduser đã đăng nhập mới cho deploy
12176
+ * Hàm này Enduser deploy source webapp lên hosting, deploy database lên mysql trong hosting. Nghĩa website sẽ chạy độc lập với hosting và mysql riêng của nó.
12140
12177
  * @example:
12141
- * const cloning_options = {source_webapp:'renew', template_webapp:'renew', commondata_webapp:'renew', database_webapp:'renew'};
12178
+ * const cloning_options = {source_webapp:'renew', template_webapp:'renew', database_webapp:'renew'};
12142
12179
  * this.vhQueryAutoWeb.deployWebAppsource_toMySqlHosting_byEndUser('664483e744da7a03b4d5e1a2', 'domain07.webappgiare.vn', cloning_options)
12143
12180
  .then((rsp:any)=>{
12144
12181
  console.log('rsp', rsp);
@@ -12150,9 +12187,10 @@ export declare class VhQueryAutoWeb {
12150
12187
  },(error:any)=>{
12151
12188
  console.log('error', error)
12152
12189
  })
12153
- * @param db_webapp
12154
- * @param hosting
12155
- * @return Promise object => response = {vcode, msg}
12190
+ * @param db_webapp: là các dự án trong tài khoản thiết kế webappgiare@gmail.com
12191
+ * @param hosting: hosting đã đc chính EndUser tạo trước đây
12192
+ * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
12193
+ * @return Promise object => response = {vcode, msg, data(url)} - Hàm trả về url của chính hosting đó
12156
12194
  * vcode == 0: Message sent to email address successfully
12157
12195
  * vcode == 1: Email address does not exist
12158
12196
  * vcode == 11: 'not logged in'
@@ -12161,7 +12199,7 @@ export declare class VhQueryAutoWeb {
12161
12199
  /**
12162
12200
  * Hàm này đẩy source webapp từ dự án Autoweb_design lên hosting dự án Autoweb_build, dùng database Cloud Mongo của Viethas
12163
12201
  * @example:
12164
- * const cloning_options = {source_webapp:'renew', template_webapp:'renew', commondata_webapp:'renew', database_webapp:'renew'};
12202
+ * const cloning_options = {source_webapp:'renew', template_webapp:'renew', database_webapp:'renew'};
12165
12203
  * this.vhQueryAutoWeb.deployWebAppsource_toMongoHosting_byEmail('domain07.webappgiare.vn', 'userhosting@gmail.com','123456', cloning_options)
12166
12204
  .then((rsp:any)=>{
12167
12205
  console.log('rsp', rsp);
@@ -12175,34 +12213,12 @@ export declare class VhQueryAutoWeb {
12175
12213
  })
12176
12214
  * @param hosting_email
12177
12215
  * @param hosting_password
12178
- * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, commondata_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
12216
+ * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
12179
12217
  * @return Promise object => response = {vcode, msg}
12180
12218
  * vcode == 0: Message sent to email address successfully
12181
12219
  * vcode == 1: Email address does not exist
12182
12220
  */
12183
12221
  deployWebAppsource_toMongoHosting_byEmail(hosting: string, hosting_email: string, hosting_password: string, cloning_options: any): Promise<unknown>;
12184
- /**
12185
- * Hàm này đẩy source webapp từ dự án Autoweb_design lên hosting dự án Autoweb_build, dùng database MySQL của hosting
12186
- * @example:
12187
- * this.vhQueryAutoWeb.deployWebAppsource_toMySqlHosting_byEmail('domain05', 'devdomain05@gmail.com','123456')
12188
- .then((rsp:any)=>{
12189
- console.log('rsp', rsp);
12190
- if(rsp.vcode === 0){
12191
- //-----------your code 0-----------
12192
- }else if(rsp.vcode === 1){
12193
- //-----------your code 1-----------
12194
- }
12195
- },(error:any)=>{
12196
- console.log('error', error)
12197
- })
12198
- * @param hosting_email
12199
- * @param hosting_password
12200
- * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, commondata_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
12201
- * @return Promise object => response = {vcode, msg}
12202
- * vcode == 0: Message sent to email address successfully
12203
- * vcode == 1: Email address does not exist
12204
- */
12205
- deployWebAppsource_toMySqlHosting_byEmail(hosting: string, hosting_email: string, hosting_password: string, cloning_options: any): Promise<unknown>;
12206
12222
  /**
12207
12223
  * Hàm này tải source webapp từ dự án Autoweb_design về dạng package, chép lên hosting, chạy url cài đặt, sau đó vào website bình thường
12208
12224
  * @example:
@@ -12593,15 +12609,51 @@ export declare class VhQueryAutoWeb {
12593
12609
  */
12594
12610
  onAuthStateChangedEndUser(): Promise<any>;
12595
12611
  /**
12612
+ * Lấy về tất cả hosting của EndUser
12613
+ * @example
12596
12614
  * this.vhQueryAutoWeb.getHostings_byEndUser()
12597
- * @returns
12615
+ .then(rsp=>{
12616
+ console.log('getHostings_byEndUser', rsp);
12617
+ if(rsp.vcode === 0){
12618
+ //-----------your code-----------
12619
+ }
12620
+ },(error:any)=>{
12621
+ console.log('error', error)
12622
+ })
12623
+ * @returns Promise object => response = {vcode, msg, data}
12598
12624
  */
12599
12625
  getHostings_byEndUser(): Promise<any>;
12600
12626
  /**
12601
- * this.vhQueryAutoWeb.createHosting_byEndUser()
12602
- * @returns
12627
+ * Tạo mới hosting bởi EndUser
12628
+ * @example
12629
+ * this.vhQueryAutoWeb.createHosting_byEndUser('domain.webappgiare.vn')
12630
+ .then(rsp=>{
12631
+ console.log('createHosting_byEndUser', rsp);
12632
+ if(rsp.vcode === 0){
12633
+ //-----------your code-----------
12634
+ }
12635
+ },(error:any)=>{
12636
+ console.log('error', error)
12637
+ })
12638
+ * @param hosting
12639
+ * @returns Promise object => response = {vcode, msg, data}
12603
12640
  */
12604
12641
  createHosting_byEndUser(hosting: string): Promise<any>;
12642
+ /**
12643
+ * xóa hosting bởi EndUser
12644
+ * @example
12645
+ * this.vhQueryAutoWeb.removeHosting_byEndUser('domain.webappgiare.vn')
12646
+ .then(rsp=>{
12647
+ console.log('removeHosting_byEndUser', rsp);
12648
+ if(rsp.vcode === 0){
12649
+ //-----------your code-----------
12650
+ }
12651
+ },(error:any)=>{
12652
+ console.log('error', error)
12653
+ })
12654
+ * @param hosting
12655
+ * @returns Promise object => response = {vcode, msg, data}
12656
+ */
12605
12657
  removeHosting_byEndUser(hosting: string): Promise<any>;
12606
12658
  /**
12607
12659
  * @example
@@ -14579,6 +14631,113 @@ export declare class VhQueryAutoWeb {
14579
14631
  * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
14580
14632
  */
14581
14633
  getCombos_byFields(query: object, projection?: object, sort?: object, limit?: number, page?: number): Promise<unknown>;
14634
+ /**
14635
+ * @example:
14636
+ * this.vhQueryAutoWeb.admin_addWallet(data)
14637
+ .then((rsp:any)=>{
14638
+ if(rsp.vcode === 0){
14639
+ let branch = rsp.data;
14640
+ }
14641
+ }, error=>{
14642
+ reject(error)
14643
+ })
14644
+ * @param data
14645
+ * @return Promise => rsp ={vcode, msg, data(object)} / error
14646
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
14647
+ * vcode == 0: success
14648
+ * vcode == 11: 'not logged in
14649
+ */
14650
+ admin_addWallet(data: any): Promise<unknown>;
14651
+ /**
14652
+ * @example:
14653
+ * this.vhQueryAutoWeb.admin_updateWallet('5fb6780ca2148e09806c5b01', {hidden:true})
14654
+ .then((rsp:any)=>{
14655
+ if(rsp.vcode === 0){
14656
+ console.log('admin_updateWallet succeed');
14657
+ }
14658
+ }, error=>{
14659
+ console.log('error', error);
14660
+ })
14661
+ * @param id_wallets
14662
+ * @param data
14663
+ * @return Promise object => rsp ={vcode, msg, data(true or false)} / error
14664
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
14665
+ * vcode == 0: success
14666
+ * vcode == 11: 'not logged in
14667
+ */
14668
+ admin_updateWallet(id_wallets: string, data: object): Promise<unknown>;
14669
+ /**
14670
+ * @example:
14671
+ * this.vhQueryAutoWeb.admin_deleteWallet('5fb67fda87c0f21d484cbdf3')
14672
+ .then((rsp:any)=>{
14673
+ if(rsp.vcode === 0){
14674
+ console.log('admin_deleteWallet succeed');
14675
+ }
14676
+ }, error=>{
14677
+ reject(error)
14678
+ })
14679
+ * @param id_wallet
14680
+ * @return Promise => rsp ={vcode, msg, data(true or false)} / error
14681
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
14682
+ * vcode == 0: success
14683
+ * vcode == 11: 'not logged in
14684
+ */
14685
+ admin_deleteWallet(id_wallet: string): Promise<unknown>;
14686
+ /**
14687
+ * @example
14688
+ * this.vhQueryAutoWeb.admin_getWallet('5fb67fda87c0f21d484cbdf3')
14689
+ .then((wallet)=>{
14690
+ console.log('admin_getWallet', wallet);
14691
+ })
14692
+ * @param id_wallet
14693
+ * @return Promise object => rsp ={vcode, msg, data(object or null)} / error
14694
+ * vcode == 0: success
14695
+ * vcode == 11: 'not logged in
14696
+ */
14697
+ admin_getWallet(id_wallet: string): Promise<unknown>;
14698
+ /**
14699
+ * @example:
14700
+ * this.vhQueryAutoWeb.admin_getWallets_byFields({name:{$eq:'name abc'}}, {},{},6)
14701
+ .then(response=>{
14702
+ console.log('response', response);
14703
+ if(response.vcode === 0){
14704
+ //-----------your code-----------
14705
+ let products = response.data;
14706
+ }
14707
+ },(error:any)=>{
14708
+ console.log('error', error)
14709
+ })
14710
+ * @param query
14711
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
14712
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
14713
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
14714
+ * @return Promise object => response = {vcode, msg, data(array)}
14715
+ * vcode == 0: success
14716
+ * vcode == 11: 'not logged in
14717
+ */
14718
+ admin_getWallets_byFields(query: object, projection?: object, sort?: object, limit?: number): Promise<unknown>;
14719
+ /**
14720
+ * @example:
14721
+ * this.vhQueryAutoWeb.admin_getWallets_byFields_byPages({name:{$eq:'name abc'}}, {},{},6,1)
14722
+ .then(response=>{
14723
+ console.log('response', response);
14724
+ if(response.vcode === 0){
14725
+ //-----------your code-----------
14726
+ let products = response.data;
14727
+ }
14728
+ },(error:any)=>{
14729
+ console.log('error', error)
14730
+ })
14731
+ * @param query
14732
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
14733
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
14734
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
14735
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
14736
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
14737
+ * vcode == 0: success
14738
+ * vcode == 11: 'not logged in
14739
+ */
14740
+ admin_getWallets_byFields_byPages(query: object, projection?: object, sort?: object, limit?: number, page?: number): Promise<unknown>;
14582
14741
  /**
14583
14742
  * Hàm này tạo toppings (type=1), blog (type=2),.....
14584
14743
  * @example:
@@ -18567,6 +18726,18 @@ export declare class VhBuildAutoWeb {
18567
18726
  */
18568
18727
  onAuthStateChangedEndUser(): Promise<any>;
18569
18728
  getHostings_byEndUser(): Promise<any>;
18729
+ /**
18730
+ * vhBuildAutoWeb
18731
+ * @param hosting
18732
+ * @returns
18733
+ */
18734
+ createHosting_byEndUser(hosting: string): Promise<any>;
18735
+ /**
18736
+ *
18737
+ * @param hosting
18738
+ * @returns
18739
+ */
18740
+ removeHosting_byEndUser(hosting: string): Promise<any>;
18570
18741
  /**
18571
18742
  * @example
18572
18743
  * this.vhBuildAutoWeb.signoutEndUser();
@@ -18733,8 +18904,8 @@ export declare class VhBuildAutoWeb {
18733
18904
  */
18734
18905
  getDetailObject_byObject(object: any): Promise<unknown>;
18735
18906
  /**
18736
- * @example:
18737
- * this.vhBuildAutoWeb.dynamic_addDoc_fromDatabase('atw_pages',{name:name: 'Quảng cáo 1'})
18907
+ * @example:
18908
+ * this.vhBuildAutoWeb.vietqr_generateQR({})
18738
18909
  .then((rsp)=>{
18739
18910
  if(rsp.vcode === 0){
18740
18911
  console.log('dynamic_addDoc_fromDatabase', rsp.data);
@@ -18744,19 +18915,36 @@ export declare class VhBuildAutoWeb {
18744
18915
  })
18745
18916
  * @param colname
18746
18917
  * @param data
18918
+ * @return Promise => rsp ={vcode, msg, data(img_base64)} / error
18919
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
18920
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
18921
+ * vcode == 0: success
18922
+ */
18923
+ vietqr_generateQR(data: any): Promise<unknown>;
18924
+ /**
18925
+ * @example:
18926
+ * this.vhBuildAutoWeb.admin_dynamic_addDoc('atw_pages',{name:name: 'Quảng cáo 1'})
18927
+ .then((rsp)=>{
18928
+ if(rsp.vcode === 0){
18929
+ console.log('admin_dynamic_addDoc', rsp.data);
18930
+ }
18931
+ }, error=>{
18932
+ console.log('error', error);
18933
+ })
18934
+ * @param colname
18935
+ * @param data
18747
18936
  * @return Promise => response.data ={vcode, msg, data(object)} / error
18748
- * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
18937
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
18749
18938
  * vcode == 0: success
18750
18939
  * vcode == 11: 'not logged in'
18751
- * vcode == 2: wrong projectname
18752
18940
  */
18753
- dynamic_addDoc_fromDatabase(colname: string, data: object): Promise<unknown>;
18941
+ admin_dynamic_addDoc(colname: string, data: object): Promise<unknown>;
18754
18942
  /**
18755
18943
  * @example:
18756
- * this.vhBuildAutoWeb.dynamic_updateDoc_fromDatabase('categories', '5fb6780ca2148e09806c5b01', {name: 'Quảng cáo 1'})
18944
+ * this.vhBuildAutoWeb.admin_dynamic_updateDoc('categories', '5fb6780ca2148e09806c5b01', {name: 'Quảng cáo 1'})
18757
18945
  .then((rsp:any)=>{
18758
18946
  if(rsp.vcode === 0){
18759
- console.log('dynamic_updateDoc_fromDatabase succeed');
18947
+ console.log('admin_dynamic_updateDoc succeed');
18760
18948
  }
18761
18949
  }, error=>{
18762
18950
  console.log('error', error);
@@ -18764,40 +18952,38 @@ export declare class VhBuildAutoWeb {
18764
18952
  * @param colname
18765
18953
  * @param id_doc
18766
18954
  * @param data
18767
- * @return Promise => rsp ={vcode, msg, data(undefined)} / error
18768
- * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
18955
+ * @return Promise => rsp ={vcode, msg, data(true or false)} / error
18956
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
18769
18957
  * vcode == 0: success
18770
18958
  * vcode == 11: 'not logged in
18771
- * vcode == 2: wrong projectname
18772
18959
  */
18773
- dynamic_updateDoc_fromDatabase(colname: string, id_doc: string, value: object): Promise<unknown>;
18960
+ admin_dynamic_updateDoc(colname: string, id_doc: string, value: object): Promise<unknown>;
18774
18961
  /**
18775
18962
  * @example:
18776
- * this.vhBuildAutoWeb.dynamic_deleteDoc_fromDatabase('categories', '5fb67fda87c0f21d484cbdf3')
18963
+ * this.vhBuildAutoWeb.admin_dynamic_deleteDoc('categories', '5fb67fda87c0f21d484cbdf3')
18777
18964
  .then((rsp:any)=>{
18778
18965
  if(rsp.vcode === 0){
18779
- console.log('dynamic_deleteDoc_fromDatabase succeed');
18966
+ console.log('admin_dynamic_deleteDoc succeed');
18780
18967
  }
18781
18968
  }, error=>{
18782
18969
  reject(error)
18783
18970
  })
18784
18971
  * @param colname
18785
18972
  * @param id_doc
18786
- * @return Promise => response.data ={vcode, msg, data(undefined)} / error
18787
- * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
18973
+ * @return Promise => response.data ={vcode, msg, data(true or false)} / error
18974
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
18788
18975
  * vcode == 0: success
18789
18976
  * vcode == 11: 'not logged in
18790
- * vcode == 2: wrong projectname
18791
18977
  */
18792
- dynamic_deleteDoc_fromDatabase(colname: string, id_doc: string): Promise<unknown>;
18978
+ admin_dynamic_deleteDoc(colname: string, id_doc: string): Promise<unknown>;
18793
18979
  /**
18794
18980
  * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng
18795
18981
  * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
18796
18982
  * @example
18797
- * this.vhBuildAutoWeb.dynamic_getDoc_fromDatabase('atw_customers', '5fb67fda87c0f21d484cbdf3')
18983
+ * this.vhBuildAutoWeb.admin_dynamic_getDoc('atw_customers', '5fb67fda87c0f21d484cbdf3')
18798
18984
  .then((rsp)=>{
18799
18985
  if(rsp.vcode === 0){
18800
- console.log('dynamic_getDoc_fromDatabase', rsp.data);
18986
+ console.log('admin_dynamic_getDoc', rsp.data);
18801
18987
  }
18802
18988
  },(error:any)=>{
18803
18989
  console.log('error', error)
@@ -18805,17 +18991,16 @@ export declare class VhBuildAutoWeb {
18805
18991
  * @param colname
18806
18992
  * @param id_doc
18807
18993
  * @return Promise => response.data ={vcode, msg, data(object or null)} / error
18808
- * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
18994
+ * @notice : hàm này chỉ get được dữ liệu sau khi nhân viên (admin) đã đăng nhập
18809
18995
  * vcode == 0: success
18810
18996
  * vcode == 11: 'not logged in
18811
- * vcode == 2: wrong projectname
18812
18997
  */
18813
- dynamic_getDoc_fromDatabase(colname: string, id_doc: string): Promise<unknown>;
18998
+ admin_dynamic_getDoc(colname: string, id_doc: string): Promise<unknown>;
18814
18999
  /**
18815
19000
  * @example:
18816
- * this.vhBuildAutoWeb.dynamic_getDocs_fromDatabase_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
19001
+ * this.vhBuildAutoWeb.admin_dynamic_getDocs_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
18817
19002
  .then(rsp=>{
18818
- console.log('dynamic_getDocs_fromDatabase_byFields', rsp);
19003
+ console.log('admin_dynamic_getDocs_byFields', rsp);
18819
19004
  if(rsp.vcode === 0){
18820
19005
  //-----------your code-----------
18821
19006
  let products = rsp.data;
@@ -18832,61 +19017,11 @@ export declare class VhBuildAutoWeb {
18832
19017
  * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
18833
19018
  * vcode == 0: success
18834
19019
  * vcode == 11: 'not logged in'
18835
- * vcode == 2: wrong projectname
18836
- */
18837
- dynamic_getDocs_fromDatabase_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
18838
- /**
18839
- * @example:
18840
- * this.vhBuildAutoWeb.dynamic_getDocs_fromDatabase_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
18841
- .then(response=>{
18842
- console.log('response', response);
18843
- if(response.vcode === 0){
18844
- //-----------your code-----------
18845
- let products = response.data;
18846
- }
18847
- },(error:any)=>{
18848
- console.log('error', error)
18849
- })
18850
- * @param colname
18851
- * @param query
18852
- * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
18853
- * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
18854
- * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
18855
- * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
18856
- * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
18857
- */
18858
- dynamic_getDocs_fromDatabase_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
18859
- /**
18860
- * @example
18861
- * this.vhBuildAutoWeb.dynamic_getDoc_fromService('categories', '5fb67fda87c0f21d484cbdf3')
18862
- .then((doc)=>{
18863
- console.log('dynamic_getDoc_fromService', doc);
18864
- })
18865
- * @param id_doc
18866
- * @return null or object
18867
- */
18868
- dynamic_getDoc_fromService(colname: string, id_doc: string): Promise<unknown>;
18869
- /**
18870
- * @example:
18871
- * this.vhBuildAutoWeb.dynamic_getDocs_fromService_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
18872
- .then(response=>{
18873
- console.log('response', response);
18874
- //-----------your code-----------
18875
- let products = response;
18876
- },(error:any)=>{
18877
- console.log('error', error)
18878
- })
18879
- * @param colname
18880
- * @param query
18881
- * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
18882
- * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
18883
- * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
18884
- * @return Promise => array(object) = [{},{},..]
18885
19020
  */
18886
- dynamic_getDocs_fromService_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19021
+ admin_dynamic_getDocs_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
18887
19022
  /**
18888
19023
  * @example:
18889
- * this.vhBuildAutoWeb.dynamic_getDocs_fromService_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19024
+ * this.vhBuildAutoWeb.admin_dynamic_getDocs_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
18890
19025
  .then(response=>{
18891
19026
  console.log('response', response);
18892
19027
  if(response.vcode === 0){
@@ -18903,145 +19038,94 @@ export declare class VhBuildAutoWeb {
18903
19038
  * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
18904
19039
  * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
18905
19040
  * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19041
+ * vcode == 0: success
19042
+ * vcode == 11: 'not logged in'
18906
19043
  */
18907
- dynamic_getDocs_fromService_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19044
+ admin_dynamic_getDocs_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
18908
19045
  /**
18909
- * @example
18910
- * this.vhBuildAutoWeb.static_getDoc_fromService('categories', '5fb67fda87c0f21d484cbdf3')
18911
- .then((doc)=>{
18912
- console.log('static_getDoc_fromService', doc);
18913
- })
18914
- * @param id_doc
18915
- * @return null or object
18916
- */
18917
- static_getDoc_fromService(colname: string, id_doc: string): Promise<unknown>;
18918
- /**
18919
- * @example
18920
- * this.vhBuildAutoWeb.static_getDoc_fromDatabase('categories', '5fb67fda87c0f21d484cbdf3')
18921
- .then((doc)=>{
18922
- console.log('static_getDoc_fromDatabase', doc);
18923
- })
18924
- * @param id_doc
18925
- * @return null or object
18926
- */
18927
- static_getDoc_fromDatabase(colname: string, id_doc: string): Promise<unknown>;
18928
- /**
18929
- * @example:
18930
- * this.vhBuildAutoWeb.static_getDocs_fromService_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
18931
- .then(response=>{
18932
- console.log('response', response);
18933
- if(response.vcode === 0){
18934
- //-----------your code-----------
18935
- let products = response.data;
19046
+ * @example:
19047
+ * this.vhBuildAutoWeb.enduser_dynamic_addDoc('atw_pages',{name:name: 'Quảng cáo 1'})
19048
+ .then((rsp)=>{
19049
+ if(rsp.vcode === 0){
19050
+ console.log('enduser_dynamic_addDoc', rsp.data);
18936
19051
  }
18937
- },(error:any)=>{
18938
- console.log('error', error)
19052
+ }, error=>{
19053
+ console.log('error', error);
18939
19054
  })
18940
- * @param colname
18941
- * @param query
18942
- * @param projection đang tìm hiểu, tạm thời để giá trị là {}
18943
- * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
18944
- * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
18945
- * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
18946
- * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
18947
- */
18948
- static_getDocs_fromService_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19055
+ * @param colname
19056
+ * @param data
19057
+ * @return Promise => response.data ={vcode, msg, data(object)} / error
19058
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
19059
+ * vcode == 0: success
19060
+ * vcode == 11: 'not logged in'
19061
+ */
19062
+ enduser_dynamic_addDoc(colname: string, data: object): Promise<unknown>;
18949
19063
  /**
18950
19064
  * @example:
18951
- * this.vhBuildAutoWeb.static_getDocs_fromService_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
18952
- .then(response=>{
18953
- console.log('response', response);
18954
- if(response.vcode === 0){
18955
- //-----------your code-----------
18956
- let products = response.data;
19065
+ * this.vhBuildAutoWeb.enduser_dynamic_updateDoc('categories', '5fb6780ca2148e09806c5b01', {name: 'Quảng cáo 1'})
19066
+ .then((rsp:any)=>{
19067
+ if(rsp.vcode === 0){
19068
+ console.log('enduser_dynamic_updateDoc succeed');
18957
19069
  }
18958
- },(error:any)=>{
18959
- console.log('error', error)
19070
+ }, error=>{
19071
+ console.log('error', error);
18960
19072
  })
18961
- * @param colname
18962
- * @param query
18963
- * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
18964
- * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
18965
- * @param limit null hoặc 0: không giới hạn record get về; 2: get về 2 record
18966
- * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
18967
- * @return Promise => array(object) = [{},{},..]
18968
- */
18969
- static_getDocs_fromService_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19073
+ * @param colname
19074
+ * @param id_doc
19075
+ * @param data
19076
+ * @return Promise => rsp ={vcode, msg, data(true or false)} / error
19077
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
19078
+ * vcode == 0: success
19079
+ * vcode == 11: 'not logged in
19080
+ */
19081
+ enduser_dynamic_updateDoc(colname: string, id_doc: string, value: object): Promise<unknown>;
18970
19082
  /**
18971
19083
  * @example:
18972
- * this.vhBuildAutoWeb.static_getDocs_fromDatabase_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
18973
- .then(webapp_abouts=>{
18974
- console.log('static_getDocs_fromDatabase_byFields', webapp_abouts);
18975
- },(error:any)=>{
18976
- console.log('error', error)
18977
- })
18978
- * @param colname
18979
- * @param query
18980
- * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
18981
- * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
18982
- * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
18983
- * @return Promise => array(object) = [{},{},..]
18984
- */
18985
- static_getDocs_fromDatabase_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
18986
- /**
18987
- * @example:
18988
- * this.vhBuildAutoWeb.dynamic_deleteProduct('categories', '5fb67fda87c0f21d484cbdf3')
18989
- .then((rsp:any)=>{
18990
- if(rsp.vcode === 0){
18991
- console.log('dynamic_deleteDoc_fromDatabase succeed');
18992
- }
18993
- }, error=>{
18994
- reject(error)
18995
- })
18996
- * @param colname
18997
- * @param id_doc
18998
- * @return Promise => response.data ={vcode, msg, data(undefined)} / error
18999
- * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
19000
- * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
19001
- * vcode == 0: success
19002
- * vcode == 1: 'Bạn không thể xóa, bạn phải xóa các thuộc tính của sản phẩm trước'
19003
- * vcode == 2: 'Bạn không thể xóa, vì sản phẩm con này đang liên kết với sản phẩm combo khác'
19004
- * vcode == 3: 'Bạn không thể xóa, vì sản phẩm con này đã phát sinh hóa đơn'
19005
- */
19006
- dynamic_deleteProduct(colname: string, id_doc: string): Promise<unknown>;
19007
- /**
19008
- * @example:
19009
- * this.vhBuildAutoWeb.dynamic_deleteSubProduct('categories', '5fb67fda87c0f21d484cbdf3')
19084
+ * this.vhBuildAutoWeb.enduser_dynamic_deleteDoc('categories', '5fb67fda87c0f21d484cbdf3')
19010
19085
  .then((rsp:any)=>{
19011
19086
  if(rsp.vcode === 0){
19012
- console.log('dynamic_deleteSubProduct succeed');
19087
+ console.log('enduser_dynamic_deleteDoc succeed');
19013
19088
  }
19014
19089
  }, error=>{
19015
19090
  reject(error)
19016
19091
  })
19017
- * @param colname
19018
- * @param id_doc
19019
- * @return Promise => response.data ={vcode, msg, data(undefined)} / error
19020
- * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
19021
- * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
19022
- * vcode == 0: success
19023
- * vcode == 1: 'Bạn không thể xóa, bạn phải xóa các thuộc tính của sản phẩm trước'
19024
- * vcode == 2: 'Bạn không thể xóa, sản phẩm con này đang liên kết với sản phẩm combo khác'
19025
- * vcode == 3: 'Bạn không thể xóa, vì sản phẩm con này đã phát sinh hóa đơn'
19026
- */
19027
- dynamic_deleteSubProduct(colname: string, id_doc: string): Promise<unknown>;
19092
+ * @param colname
19093
+ * @param id_doc
19094
+ * @return Promise => response.data ={vcode, msg, data(true or false)} / error
19095
+ * @notice : hàm này chỉ add được dữ liệu sau khi nhân viên (admin) đã đăng nhập
19096
+ * vcode == 0: success
19097
+ * vcode == 11: 'not logged in
19098
+ */
19099
+ enduser_dynamic_deleteDoc(colname: string, id_doc: string): Promise<unknown>;
19028
19100
  /**
19029
- * @example
19030
- * this.vhBuildAutoWeb.dynamic_getProduct('categories', '5fb67fda87c0f21d484cbdf3')
19031
- .then((doc)=>{
19032
- console.log('dynamic_getProduct', doc);
19033
- })
19034
- * @param id_doc
19035
- * @return null or object
19036
- */
19037
- dynamic_getProduct(colname: string, id_doc: string): Promise<unknown>;
19101
+ * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng
19102
+ * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
19103
+ * @example
19104
+ * this.vhBuildAutoWeb.enduser_dynamic_getDoc('atw_customers', '5fb67fda87c0f21d484cbdf3')
19105
+ .then((rsp)=>{
19106
+ if(rsp.vcode === 0){
19107
+ console.log('enduser_dynamic_getDoc', rsp.data);
19108
+ }
19109
+ },(error:any)=>{
19110
+ console.log('error', error)
19111
+ })
19112
+ * @param colname
19113
+ * @param id_doc
19114
+ * @return Promise => response.data ={vcode, msg, data(object or null)} / error
19115
+ * @notice : hàm này chỉ get được dữ liệu sau khi nhân viên (admin) đã đăng nhập
19116
+ * vcode == 0: success
19117
+ * vcode == 11: 'not logged in
19118
+ */
19119
+ enduser_dynamic_getDoc(colname: string, id_doc: string): Promise<unknown>;
19038
19120
  /**
19039
19121
  * @example:
19040
- * this.vhBuildAutoWeb.dynamic_getProducts_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19041
- .then(response=>{
19042
- console.log('response', response);
19043
- //-----------your code-----------
19044
- let products = response.data;
19122
+ * this.vhBuildAutoWeb.enduser_dynamic_getDocs_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
19123
+ .then(rsp=>{
19124
+ console.log('enduser_dynamic_getDocs_byFields', rsp);
19125
+ if(rsp.vcode === 0){
19126
+ //-----------your code-----------
19127
+ let products = rsp.data;
19128
+ }
19045
19129
  },(error:any)=>{
19046
19130
  console.log('error', error)
19047
19131
  })
@@ -19050,13 +19134,15 @@ export declare class VhBuildAutoWeb {
19050
19134
  * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19051
19135
  * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19052
19136
  * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19053
- * @param page null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19054
- * @return Promise => array(object) = [{},{},..]
19137
+ * @return Promise => rsp.data ={vcode, msg, data(array(object) = [{},{},..])} / error
19138
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19139
+ * vcode == 0: success
19140
+ * vcode == 11: 'not logged in'
19055
19141
  */
19056
- dynamic_getProducts_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19142
+ enduser_dynamic_getDocs_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19057
19143
  /**
19058
19144
  * @example:
19059
- * this.vhBuildAutoWeb.dynamic_getProducts_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19145
+ * this.vhBuildAutoWeb.enduser_dynamic_getDocs_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19060
19146
  .then(response=>{
19061
19147
  console.log('response', response);
19062
19148
  if(response.vcode === 0){
@@ -19073,15 +19159,38 @@ export declare class VhBuildAutoWeb {
19073
19159
  * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19074
19160
  * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19075
19161
  * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19162
+ * vcode == 0: success
19163
+ * vcode == 11: 'not logged in'
19076
19164
  */
19077
- dynamic_getProducts_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19165
+ enduser_dynamic_getDocs_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19166
+ /**
19167
+ * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng
19168
+ * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
19169
+ * @example
19170
+ * this.vhBuildAutoWeb.free_dynamic_getDoc('atw_customers', '5fb67fda87c0f21d484cbdf3')
19171
+ .then((rsp)=>{
19172
+ if(rsp.vcode === 0){
19173
+ console.log('free_dynamic_getDoc', rsp.data);
19174
+ }
19175
+ },(error:any)=>{
19176
+ console.log('error', error)
19177
+ })
19178
+ * @param colname
19179
+ * @param id_doc
19180
+ * @return Promise => response.data ={vcode, msg, data(object or null)} / error
19181
+ * @notice : hàm này chỉ get được dữ liệu sau khi nhân viên (admin) đã đăng nhập
19182
+ * vcode == 0: success
19183
+ */
19184
+ free_dynamic_getDoc(colname: string, id_doc: string): Promise<unknown>;
19078
19185
  /**
19079
19186
  * @example:
19080
- * this.vhBuildAutoWeb.dynamic_getDetailProducts_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19081
- .then(response=>{
19082
- console.log('response', response);
19083
- //-----------your code-----------
19084
- let products = response.data;
19187
+ * this.vhBuildAutoWeb.free_dynamic_getDocs_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
19188
+ .then(rsp=>{
19189
+ console.log('free_dynamic_getDocs_byFields', rsp);
19190
+ if(rsp.vcode === 0){
19191
+ //-----------your code-----------
19192
+ let products = rsp.data;
19193
+ }
19085
19194
  },(error:any)=>{
19086
19195
  console.log('error', error)
19087
19196
  })
@@ -19090,13 +19199,14 @@ export declare class VhBuildAutoWeb {
19090
19199
  * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19091
19200
  * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19092
19201
  * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19093
- * @param page null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19094
- * @return Promise => array(object) = [{},{},..]
19202
+ * @return Promise => rsp.data ={vcode, msg, data(array(object) = [{},{},..])} / error
19203
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19204
+ * vcode == 0: success
19095
19205
  */
19096
- dynamic_getDetailProducts_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19206
+ free_dynamic_getDocs_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19097
19207
  /**
19098
19208
  * @example:
19099
- * this.vhBuildAutoWeb.dynamic_getDetailProducts_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19209
+ * this.vhBuildAutoWeb.free_dynamic_getDocs_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19100
19210
  .then(response=>{
19101
19211
  console.log('response', response);
19102
19212
  if(response.vcode === 0){
@@ -19113,171 +19223,614 @@ export declare class VhBuildAutoWeb {
19113
19223
  * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19114
19224
  * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19115
19225
  * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19226
+ * vcode == 0: success
19116
19227
  */
19117
- dynamic_getDetailProducts_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19228
+ free_dynamic_getDocs_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19118
19229
  /**
19119
- * @example
19120
- * this.vhBuildAutoWeb.dynamic_getDetailProduct('categories', '5fb67fda87c0f21d484cbdf3')
19121
- .then((doc)=>{
19122
- console.log('dynamic_getDetailProduct', doc);
19123
- },(error:any)=>{
19124
- console.log('error', error)
19230
+ * @example:
19231
+ * this.vhBuildAutoWeb.dynamic_addDoc_fromDatabase('atw_pages',{name:name: 'Quảng cáo 1'})
19232
+ .then((rsp)=>{
19233
+ if(rsp.vcode === 0){
19234
+ console.log('dynamic_addDoc_fromDatabase', rsp.data);
19235
+ }
19236
+ }, error=>{
19237
+ console.log('error', error);
19125
19238
  })
19126
- * @param id_sub_or_product
19127
- * @Promise => obj ={} or null
19239
+ * @param colname
19240
+ * @param data
19241
+ * @return Promise => response.data ={vcode, msg, data(object)} / error
19242
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19243
+ * vcode == 0: success
19244
+ * vcode == 11: 'not logged in'
19128
19245
  */
19129
- dynamic_getDetailProduct(id_sub_or_product: any): Promise<unknown>;
19246
+ dynamic_addDoc_fromDatabase(colname: string, data: object): Promise<unknown>;
19130
19247
  /**
19131
- * @example
19132
- * this.vhBuildAutoWeb.dynamic_getDetailProduct_fromService('categories', '5fb67fda87c0f21d484cbdf3')
19133
- .then(response=>{
19134
- console.log('response', response);
19135
- if(response.vcode === 0){
19136
- //-----------your code-----------
19137
- let product = response.data;
19248
+ * @example:
19249
+ * this.vhBuildAutoWeb.dynamic_updateDoc_fromDatabase('categories', '5fb6780ca2148e09806c5b01', {name: 'Quảng cáo 1'})
19250
+ .then((rsp:any)=>{
19251
+ if(rsp.vcode === 0){
19252
+ console.log('dynamic_updateDoc_fromDatabase succeed');
19138
19253
  }
19139
- },(error:any)=>{
19140
- console.log('error', error)
19254
+ }, error=>{
19255
+ console.log('error', error);
19141
19256
  })
19142
- * @param id_sub_or_product
19143
- * @return Promise object => response = {vcode, msg, data(object)}
19257
+ * @param colname
19258
+ * @param id_doc
19259
+ * @param data
19260
+ * @return Promise => rsp ={vcode, msg, data(undefined)} / error
19261
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19262
+ * vcode == 0: success
19263
+ * vcode == 11: 'not logged in
19264
+ * vcode == 2: wrong projectname
19144
19265
  */
19266
+ dynamic_updateDoc_fromDatabase(colname: string, id_doc: string, value: object): Promise<unknown>;
19145
19267
  /**
19146
- * @example
19147
- * this.vhBuildAutoWeb.dynamic_getDetailFood('categories', '5fb67fda87c0f21d484cbdf3')
19148
- .then(response=>{
19149
- console.log('dynamic_getDetailFood', response);
19150
- if(response.vcode === 0){
19151
- //-----------your code-----------
19152
- let product = response.data;
19268
+ * @example:
19269
+ * this.vhBuildAutoWeb.dynamic_deleteDoc_fromDatabase('categories', '5fb67fda87c0f21d484cbdf3')
19270
+ .then((rsp:any)=>{
19271
+ if(rsp.vcode === 0){
19272
+ console.log('dynamic_deleteDoc_fromDatabase succeed');
19153
19273
  }
19154
- },(error:any)=>{
19155
- console.log('error', error)
19274
+ }, error=>{
19275
+ reject(error)
19156
19276
  })
19157
- * @param id_sub_or_food
19158
- * @return Promise object => response = {vcode, msg, data(object)}
19159
- */
19160
- dynamic_getDetailFood(id_sub_or_food: any): Promise<unknown>;
19277
+ * @param colname
19278
+ * @param id_doc
19279
+ * @return Promise => response.data ={vcode, msg, data(undefined)} / error
19280
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19281
+ * vcode == 0: success
19282
+ * vcode == 11: 'not logged in
19283
+ * vcode == 2: wrong projectname
19284
+ */
19285
+ dynamic_deleteDoc_fromDatabase(colname: string, id_doc: string): Promise<unknown>;
19161
19286
  /**
19162
- * @example
19163
- * this.vhBuildAutoWeb.searchList('atw_products',["name", "describe"], 'Điện Thoại', 20, 1)
19164
- .then(response=>{
19165
- console.log('response', response);
19166
- if(response.vcode === 0){
19287
+ * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng
19288
+ * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
19289
+ * @example
19290
+ * this.vhBuildAutoWeb.dynamic_getDoc_fromDatabase('atw_customers', '5fb67fda87c0f21d484cbdf3')
19291
+ .then((rsp)=>{
19292
+ if(rsp.vcode === 0){
19293
+ console.log('dynamic_getDoc_fromDatabase', rsp.data);
19294
+ }
19295
+ },(error:any)=>{
19296
+ console.log('error', error)
19297
+ })
19298
+ * @param colname
19299
+ * @param id_doc
19300
+ * @return Promise => response.data ={vcode, msg, data(object or null)} / error
19301
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19302
+ * vcode == 0: success
19303
+ * vcode == 11: 'not logged in
19304
+ * vcode == 2: wrong projectname
19305
+ */
19306
+ dynamic_getDoc_fromDatabase(colname: string, id_doc: string): Promise<unknown>;
19307
+ /**
19308
+ * @example:
19309
+ * this.vhBuildAutoWeb.dynamic_getDocs_fromDatabase_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
19310
+ .then(rsp=>{
19311
+ console.log('dynamic_getDocs_fromDatabase_byFields', rsp);
19312
+ if(rsp.vcode === 0){
19167
19313
  //-----------your code-----------
19168
- let array_searched_data = response.data;
19314
+ let products = rsp.data;
19169
19315
  }
19170
19316
  },(error:any)=>{
19171
19317
  console.log('error', error)
19172
19318
  })
19173
19319
  * @param colname
19174
- * @param array_field
19175
- * @param value
19176
- * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp date theo ASC; {date:-1}: sắp xếp date theo DESC
19320
+ * @param query
19321
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19322
+ * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19177
19323
  * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19178
- * @param page null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19179
- * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19324
+ * @return Promise => rsp.data ={vcode, msg, data(array(object) = [{},{},..])} / error
19325
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
19326
+ * vcode == 0: success
19327
+ * vcode == 11: 'not logged in'
19328
+ * vcode == 2: wrong projectname
19180
19329
  */
19181
- searchList_textSearch(colname: string, value: string, query?: object, sort?: object): Promise<unknown>;
19182
- searchList_likeSearch(colname: string, fieldsearch: string, value: string, query?: object, sort?: object): Promise<unknown>;
19183
- static ɵfac: i0.ɵɵFactoryDeclaration<VhBuildAutoWeb, never>;
19184
- static ɵprov: i0.ɵɵInjectableDeclaration<VhBuildAutoWeb>;
19185
- }
19186
- export declare class VhDevAutoWeb {
19187
- private vhAlgorithm;
19188
- private vhAuth;
19189
- private vhMGDB_auth;
19190
- private vhMGDB_rootdatabase;
19191
- private vhMGDB_pattern;
19192
- private vhMGDB_database;
19193
- private vhMGDB_image;
19194
- constructor(vhAlgorithm: VhAlgorithm, vhAuth: VhAuth, vhMGDB_auth: VhMGDB_auth, vhMGDB_rootdatabase: VhMGDB_rootdatabase, vhMGDB_pattern: VhMGDB_pattern, vhMGDB_database: VhMGDB_database, vhMGDB_image: VhMGDB_image);
19330
+ dynamic_getDocs_fromDatabase_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19331
+ /**
19332
+ * @example:
19333
+ * this.vhBuildAutoWeb.dynamic_getDocs_fromDatabase_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19334
+ .then(response=>{
19335
+ console.log('response', response);
19336
+ if(response.vcode === 0){
19337
+ //-----------your code-----------
19338
+ let products = response.data;
19339
+ }
19340
+ },(error:any)=>{
19341
+ console.log('error', error)
19342
+ })
19343
+ * @param colname
19344
+ * @param query
19345
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19346
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19347
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19348
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19349
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19350
+ */
19351
+ dynamic_getDocs_fromDatabase_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19352
+ /**
19353
+ * @example
19354
+ * this.vhBuildAutoWeb.dynamic_getDoc_fromService('categories', '5fb67fda87c0f21d484cbdf3')
19355
+ .then((doc)=>{
19356
+ console.log('dynamic_getDoc_fromService', doc);
19357
+ })
19358
+ * @param id_doc
19359
+ * @return null or object
19360
+ */
19361
+ dynamic_getDoc_fromService(colname: string, id_doc: string): Promise<unknown>;
19195
19362
  /**
19196
19363
  * @example:
19197
- * this.vhDevAutoWeb.addPatternBlock({name:'Danh mục 1'})
19198
- .then((block)=>{
19199
- console.log('addPatternBlock', block);
19364
+ * this.vhBuildAutoWeb.dynamic_getDocs_fromService_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19365
+ .then(response=>{
19366
+ console.log('response', response);
19367
+ //-----------your code-----------
19368
+ let products = response;
19200
19369
  },(error:any)=>{
19201
- console.log('error', error);
19370
+ console.log('error', error)
19202
19371
  })
19203
- * @param data
19204
- * @return Promise => obj = {}
19205
- * Luu ý: chỉ có 2 trường hợp, hoặc là thêm thành công, hoặc là báo lỗi error
19206
- */
19207
- private addPatternBlock;
19208
- /**
19209
- * @example:
19210
- * this.vhDevAutoWeb.addPatternBlock_byID('nvliw974854hf848ugrgh3498', {name:'camera 2', quantity:20, price:200000})
19211
- .then((block)=>{
19212
- console.log('addPatternBlock_byID', block);
19213
- }, error=>{
19214
- console.log('error', error);
19215
- })
19216
19372
  * @param colname
19217
- * @param data
19218
- * @return Promise => obj = {}
19219
- * Luu y: truong hop trung _id sẽ báo lỗi error
19373
+ * @param query
19374
+ * @param projection đang tìm hiểu, tạm thời để giá trị là {}
19375
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19376
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19377
+ * @return Promise => array(object) = [{},{},..]
19220
19378
  */
19221
- addPatternBlock_byID(_id: string, data: object): Promise<unknown>;
19379
+ dynamic_getDocs_fromService_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19222
19380
  /**
19223
- * @example:
19224
- * this.vhDevAutoWeb.updatePatternBlock('5fb6780ca2148e09806c5b01', {quantity:400})
19225
- .then((bool:any)=>{
19226
- console.log('updatePatternBlock', bool);
19227
- }, error=>{
19228
- console.log('error', error);
19229
- })
19230
- * @param colname
19231
- * @param _id
19232
- * @param data
19233
- * @return Promise => bool = true or false
19234
- */
19235
- updatePatternBlock(_id: string, data: object): Promise<unknown>;
19381
+ * @example:
19382
+ * this.vhBuildAutoWeb.dynamic_getDocs_fromService_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19383
+ .then(response=>{
19384
+ console.log('response', response);
19385
+ if(response.vcode === 0){
19386
+ //-----------your code-----------
19387
+ let products = response.data;
19388
+ }
19389
+ },(error:any)=>{
19390
+ console.log('error', error)
19391
+ })
19392
+ * @param colname
19393
+ * @param query
19394
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19395
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19396
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19397
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19398
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19399
+ */
19400
+ dynamic_getDocs_fromService_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19236
19401
  /**
19237
- * @example:
19238
- * this.vhDevAutoWeb.deletePatternBlock('5fb67fda87c0f21d484cbdf3')
19239
- .then(bool=>{
19240
- console.log('deletePatternBlock', bool);
19402
+ * @example
19403
+ * this.vhBuildAutoWeb.static_getDoc_fromService('categories', '5fb67fda87c0f21d484cbdf3')
19404
+ .then((doc)=>{
19405
+ console.log('static_getDoc_fromService', doc);
19241
19406
  })
19242
- * @param colname
19243
- * @param _id
19244
- * @return Promise => bool = true or false
19407
+ * @param id_doc
19408
+ * @return null or object
19245
19409
  */
19246
- deletePatternBlock(_id: string): Promise<unknown>;
19410
+ static_getDoc_fromService(colname: string, id_doc: string): Promise<unknown>;
19247
19411
  /**
19248
- * @example
19249
- * this.vhDevAutoWeb.getPatternBlock('5fb67fda87c0f21d484cbdf3')
19250
- .then((product)=>{
19251
- console.log('getPatternBlock', product);
19252
- },(error:any)=>{
19253
- console.log('error', error);
19254
- })
19255
- * @param colname
19256
- * @param _id
19257
- * @return Promise => obj ={} or null
19258
- */
19259
- getPatternBlock(_id: string): Promise<unknown>;
19412
+ * @example
19413
+ * this.vhBuildAutoWeb.static_getDoc_fromDatabase('categories', '5fb67fda87c0f21d484cbdf3')
19414
+ .then((doc)=>{
19415
+ console.log('static_getDoc_fromDatabase', doc);
19416
+ })
19417
+ * @param id_doc
19418
+ * @return null or object
19419
+ */
19420
+ static_getDoc_fromDatabase(colname: string, id_doc: string): Promise<unknown>;
19260
19421
  /**
19261
19422
  * @example:
19262
- * this.vhDevAutoWeb.getPBlocksByFields({group_type:{$eq:10}}, {})
19263
- .then((pblocks)=>{
19264
- console.log('getPBlocksByFields', pblocks);
19265
- },error=>{
19266
- console.log('error', error);
19267
- })
19268
- * @param colname
19269
- * @param query : {}
19270
- * @param projection {} đang tìm hiểu
19271
- * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19272
- * @param limit null hoặc 0: không giới hạn record get về; 2: get về 2 record
19273
- * @return Array -> array = [{},{},...]
19274
- * @notice : trường hợp ko get đc data thì array.length = 0;
19423
+ * this.vhBuildAutoWeb.static_getDocs_fromService_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19424
+ .then(response=>{
19425
+ console.log('response', response);
19426
+ if(response.vcode === 0){
19427
+ //-----------your code-----------
19428
+ let products = response.data;
19429
+ }
19430
+ },(error:any)=>{
19431
+ console.log('error', error)
19432
+ })
19433
+ * @param colname
19434
+ * @param query
19435
+ * @param projection đang tìm hiểu, tạm thời để giá trị là {}
19436
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19437
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19438
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19439
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19275
19440
  */
19276
- private getPatternBlocksByFields;
19441
+ static_getDocs_fromService_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19277
19442
  /**
19278
- * @example:
19279
- * this.vhDevAutoWeb.getPatternBlocks_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19280
- .then(response=>{
19443
+ * @example:
19444
+ * this.vhBuildAutoWeb.static_getDocs_fromService_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19445
+ .then(response=>{
19446
+ console.log('response', response);
19447
+ if(response.vcode === 0){
19448
+ //-----------your code-----------
19449
+ let products = response.data;
19450
+ }
19451
+ },(error:any)=>{
19452
+ console.log('error', error)
19453
+ })
19454
+ * @param colname
19455
+ * @param query
19456
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19457
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19458
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19459
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19460
+ * @return Promise => array(object) = [{},{},..]
19461
+ */
19462
+ static_getDocs_fromService_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19463
+ /**
19464
+ * @example:
19465
+ * this.vhBuildAutoWeb.static_getDocs_fromDatabase_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19466
+ .then(webapp_abouts=>{
19467
+ console.log('static_getDocs_fromDatabase_byFields', webapp_abouts);
19468
+ },(error:any)=>{
19469
+ console.log('error', error)
19470
+ })
19471
+ * @param colname
19472
+ * @param query
19473
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19474
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19475
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19476
+ * @return Promise => array(object) = [{},{},..]
19477
+ */
19478
+ static_getDocs_fromDatabase_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19479
+ /**
19480
+ * @example:
19481
+ * this.vhBuildAutoWeb.dynamic_deleteProduct('categories', '5fb67fda87c0f21d484cbdf3')
19482
+ .then((rsp:any)=>{
19483
+ if(rsp.vcode === 0){
19484
+ console.log('dynamic_deleteDoc_fromDatabase succeed');
19485
+ }
19486
+ }, error=>{
19487
+ reject(error)
19488
+ })
19489
+ * @param colname
19490
+ * @param id_doc
19491
+ * @return Promise => response.data ={vcode, msg, data(undefined)} / error
19492
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
19493
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
19494
+ * vcode == 0: success
19495
+ * vcode == 1: 'Bạn không thể xóa, bạn phải xóa các thuộc tính của sản phẩm trước'
19496
+ * vcode == 2: 'Bạn không thể xóa, vì sản phẩm con này đang liên kết với sản phẩm combo khác'
19497
+ * vcode == 3: 'Bạn không thể xóa, vì sản phẩm con này đã phát sinh hóa đơn'
19498
+ */
19499
+ dynamic_deleteProduct(colname: string, id_doc: string): Promise<unknown>;
19500
+ /**
19501
+ * @example:
19502
+ * this.vhBuildAutoWeb.dynamic_deleteSubProduct('categories', '5fb67fda87c0f21d484cbdf3')
19503
+ .then((rsp:any)=>{
19504
+ if(rsp.vcode === 0){
19505
+ console.log('dynamic_deleteSubProduct succeed');
19506
+ }
19507
+ }, error=>{
19508
+ reject(error)
19509
+ })
19510
+ * @param colname
19511
+ * @param id_doc
19512
+ * @return Promise => response.data ={vcode, msg, data(undefined)} / error
19513
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
19514
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
19515
+ * vcode == 0: success
19516
+ * vcode == 1: 'Bạn không thể xóa, bạn phải xóa các thuộc tính của sản phẩm trước'
19517
+ * vcode == 2: 'Bạn không thể xóa, vì sản phẩm con này đang liên kết với sản phẩm combo khác'
19518
+ * vcode == 3: 'Bạn không thể xóa, vì sản phẩm con này đã phát sinh hóa đơn'
19519
+ */
19520
+ dynamic_deleteSubProduct(colname: string, id_doc: string): Promise<unknown>;
19521
+ /**
19522
+ * @example
19523
+ * this.vhBuildAutoWeb.dynamic_getProduct('categories', '5fb67fda87c0f21d484cbdf3')
19524
+ .then((doc)=>{
19525
+ console.log('dynamic_getProduct', doc);
19526
+ })
19527
+ * @param id_doc
19528
+ * @return null or object
19529
+ */
19530
+ dynamic_getProduct(colname: string, id_doc: string): Promise<unknown>;
19531
+ /**
19532
+ * @example:
19533
+ * this.vhBuildAutoWeb.dynamic_getProducts_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19534
+ .then(response=>{
19535
+ console.log('response', response);
19536
+ //-----------your code-----------
19537
+ let products = response.data;
19538
+ },(error:any)=>{
19539
+ console.log('error', error)
19540
+ })
19541
+ * @param colname
19542
+ * @param query
19543
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19544
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19545
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19546
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19547
+ * @return Promise => array(object) = [{},{},..]
19548
+ */
19549
+ dynamic_getProducts_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19550
+ /**
19551
+ * @example:
19552
+ * this.vhBuildAutoWeb.dynamic_getProducts_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19553
+ .then(response=>{
19554
+ console.log('response', response);
19555
+ if(response.vcode === 0){
19556
+ //-----------your code-----------
19557
+ let products = response.data;
19558
+ }
19559
+ },(error:any)=>{
19560
+ console.log('error', error)
19561
+ })
19562
+ * @param colname
19563
+ * @param query
19564
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19565
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19566
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19567
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19568
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19569
+ */
19570
+ dynamic_getProducts_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19571
+ /**
19572
+ * @example:
19573
+ * this.vhBuildAutoWeb.dynamic_getDetailProducts_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19574
+ .then(response=>{
19575
+ console.log('response', response);
19576
+ //-----------your code-----------
19577
+ let products = response.data;
19578
+ },(error:any)=>{
19579
+ console.log('error', error)
19580
+ })
19581
+ * @param colname
19582
+ * @param query
19583
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19584
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19585
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19586
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19587
+ * @return Promise => array(object) = [{},{},..]
19588
+ */
19589
+ dynamic_getDetailProducts_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19590
+ /**
19591
+ * @example:
19592
+ * this.vhBuildAutoWeb.dynamic_getDetailProducts_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19593
+ .then(response=>{
19594
+ console.log('response', response);
19595
+ if(response.vcode === 0){
19596
+ //-----------your code-----------
19597
+ let products = response.data;
19598
+ }
19599
+ },(error:any)=>{
19600
+ console.log('error', error)
19601
+ })
19602
+ * @param colname
19603
+ * @param query
19604
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19605
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19606
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19607
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19608
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19609
+ */
19610
+ dynamic_getDetailProducts_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19611
+ /**
19612
+ * @example
19613
+ * this.vhBuildAutoWeb.dynamic_getDetailProduct('categories', '5fb67fda87c0f21d484cbdf3')
19614
+ .then((doc)=>{
19615
+ console.log('dynamic_getDetailProduct', doc);
19616
+ },(error:any)=>{
19617
+ console.log('error', error)
19618
+ })
19619
+ * @param id_sub_or_product
19620
+ * @Promise => obj ={} or null
19621
+ */
19622
+ dynamic_getDetailProduct(id_sub_or_product: any): Promise<unknown>;
19623
+ /**
19624
+ * @example
19625
+ * this.vhBuildAutoWeb.dynamic_getDetailProduct_fromService('categories', '5fb67fda87c0f21d484cbdf3')
19626
+ .then(response=>{
19627
+ console.log('response', response);
19628
+ if(response.vcode === 0){
19629
+ //-----------your code-----------
19630
+ let product = response.data;
19631
+ }
19632
+ },(error:any)=>{
19633
+ console.log('error', error)
19634
+ })
19635
+ * @param id_sub_or_product
19636
+ * @return Promise object => response = {vcode, msg, data(object)}
19637
+ */
19638
+ /**
19639
+ * @example
19640
+ * this.vhBuildAutoWeb.dynamic_getDetailFood('categories', '5fb67fda87c0f21d484cbdf3')
19641
+ .then(response=>{
19642
+ console.log('dynamic_getDetailFood', response);
19643
+ if(response.vcode === 0){
19644
+ //-----------your code-----------
19645
+ let product = response.data;
19646
+ }
19647
+ },(error:any)=>{
19648
+ console.log('error', error)
19649
+ })
19650
+ * @param id_sub_or_food
19651
+ * @return Promise object => response = {vcode, msg, data(object)}
19652
+ */
19653
+ dynamic_getDetailFood(id_sub_or_food: any): Promise<unknown>;
19654
+ /**
19655
+ * @example
19656
+ * this.vhBuildAutoWeb.searchList('atw_products',["name", "describe"], 'Điện Thoại', 20, 1)
19657
+ .then(response=>{
19658
+ console.log('response', response);
19659
+ if(response.vcode === 0){
19660
+ //-----------your code-----------
19661
+ let array_searched_data = response.data;
19662
+ }
19663
+ },(error:any)=>{
19664
+ console.log('error', error)
19665
+ })
19666
+ * @param colname
19667
+ * @param array_field
19668
+ * @param value
19669
+ * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp date theo ASC; {date:-1}: sắp xếp date theo DESC
19670
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19671
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19672
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
19673
+ */
19674
+ searchList_textSearch(colname: string, value: string, query?: object, sort?: object): Promise<unknown>;
19675
+ searchList_likeSearch(colname: string, fieldsearch: string, value: string, query?: object, sort?: object): Promise<unknown>;
19676
+ static ɵfac: i0.ɵɵFactoryDeclaration<VhBuildAutoWeb, never>;
19677
+ static ɵprov: i0.ɵɵInjectableDeclaration<VhBuildAutoWeb>;
19678
+ }
19679
+ export declare class VhDevAutoWeb {
19680
+ private vhAlgorithm;
19681
+ private vhAuth;
19682
+ private vhMGDB_auth;
19683
+ private vhMGDB_rootdatabase;
19684
+ private vhMGDB_pattern;
19685
+ private vhMGDB_database;
19686
+ private vhMGDB_image;
19687
+ constructor(vhAlgorithm: VhAlgorithm, vhAuth: VhAuth, vhMGDB_auth: VhMGDB_auth, vhMGDB_rootdatabase: VhMGDB_rootdatabase, vhMGDB_pattern: VhMGDB_pattern, vhMGDB_database: VhMGDB_database, vhMGDB_image: VhMGDB_image);
19688
+ /**
19689
+ * @example:
19690
+ * this.vhDevAutoWeb.addPatternBlock({name:'Danh mục 1'})
19691
+ .then((block)=>{
19692
+ console.log('addPatternBlock', block);
19693
+ },(error:any)=>{
19694
+ console.log('error', error);
19695
+ })
19696
+ * @param data
19697
+ * @return Promise => obj = {}
19698
+ * Luu ý: chỉ có 2 trường hợp, hoặc là thêm thành công, hoặc là báo lỗi error
19699
+ */
19700
+ private addPatternBlock;
19701
+ /**
19702
+ * @example:
19703
+ * this.vhDevAutoWeb.addPatternBlock_byID('nvliw974854hf848ugrgh3498', {name:'camera 2', quantity:20, price:200000})
19704
+ .then((block)=>{
19705
+ console.log('addPatternBlock_byID', block);
19706
+ }, error=>{
19707
+ console.log('error', error);
19708
+ })
19709
+ * @param colname
19710
+ * @param data
19711
+ * @return Promise => obj = {}
19712
+ * Luu y: truong hop trung _id nó sẽ báo lỗi error
19713
+ */
19714
+ addPatternBlock_byID(_id: string, data: object): Promise<unknown>;
19715
+ /**
19716
+ * @example:
19717
+ * this.vhDevAutoWeb.updatePatternBlock('5fb6780ca2148e09806c5b01', {quantity:400})
19718
+ .then((bool:any)=>{
19719
+ console.log('updatePatternBlock', bool);
19720
+ }, error=>{
19721
+ console.log('error', error);
19722
+ })
19723
+ * @param colname
19724
+ * @param _id
19725
+ * @param data
19726
+ * @return Promise => bool = true or false
19727
+ */
19728
+ updatePatternBlock(_id: string, data: object): Promise<unknown>;
19729
+ /**
19730
+ * @example:
19731
+ * this.vhDevAutoWeb.deletePatternBlock('5fb67fda87c0f21d484cbdf3')
19732
+ .then(bool=>{
19733
+ console.log('deletePatternBlock', bool);
19734
+ })
19735
+ * @param colname
19736
+ * @param _id
19737
+ * @return Promise => bool = true or false
19738
+ */
19739
+ deletePatternBlock(_id: string): Promise<unknown>;
19740
+ /**
19741
+ * @example
19742
+ * this.vhDevAutoWeb.getPatternBlock('5fb67fda87c0f21d484cbdf3')
19743
+ .then((product)=>{
19744
+ console.log('getPatternBlock', product);
19745
+ },(error:any)=>{
19746
+ console.log('error', error);
19747
+ })
19748
+ * @param colname
19749
+ * @param _id
19750
+ * @return Promise => obj ={} or null
19751
+ */
19752
+ getPatternBlock(_id: string): Promise<unknown>;
19753
+ /**
19754
+ * @example:
19755
+ * this.vhDevAutoWeb.getPBlocksByFields({group_type:{$eq:10}}, {})
19756
+ .then((pblocks)=>{
19757
+ console.log('getPBlocksByFields', pblocks);
19758
+ },error=>{
19759
+ console.log('error', error);
19760
+ })
19761
+ * @param colname
19762
+ * @param query : {}
19763
+ * @param projection {} đang tìm hiểu
19764
+ * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19765
+ * @param limit null hoặc 0: không giới hạn record get về; 2: get về 2 record
19766
+ * @return Array -> array = [{},{},...]
19767
+ * @notice : trường hợp ko get đc data thì array.length = 0;
19768
+ */
19769
+ private getPatternBlocksByFields;
19770
+ /**
19771
+ * @example:
19772
+ * this.vhDevAutoWeb.getPatternBlocks_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19773
+ .then(response=>{
19774
+ console.log('response', response);
19775
+ if(response.vcode === 0){
19776
+ //-----------your code-----------
19777
+ let products = response.data;
19778
+ }
19779
+ },(error:any)=>{
19780
+ console.log('error', error)
19781
+ })
19782
+ * @param colname
19783
+ * @param query
19784
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19785
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19786
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19787
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19788
+ * @return Promise object => response = {vcode, message, data(array), limit, page, totalpages}
19789
+ */
19790
+ getPatternBlocks_byFields_byPages(query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19791
+ /**
19792
+ * @example:
19793
+ * this.vhDevAutoWeb.addPatternBlock_Thumbnail_byID('nvliw974854hf848ugrgh3498', {name:'camera 2', quantity:20, price:200000})
19794
+ .then((block)=>{
19795
+ console.log('addPatternBlock_Thumbnail_byID', block);
19796
+ }, error=>{
19797
+ console.log('error', error);
19798
+ })
19799
+ * @param colname
19800
+ * @param data
19801
+ * @return Promise => obj = {}
19802
+ * Luu y: truong hop trung _id nó sẽ báo lỗi error
19803
+ */
19804
+ addPatternBlock_Thumbnail_byID(_id: string, data: object): Promise<unknown>;
19805
+ /**
19806
+ * @example:
19807
+ * this.vhDevAutoWeb.updatePatternBlock_Thumbnail('5fb6780ca2148e09806c5b01', {quantity:400})
19808
+ .then((bool:any)=>{
19809
+ console.log('updatePatternBlock_Thumbnail', bool);
19810
+ }, error=>{
19811
+ console.log('error', error);
19812
+ })
19813
+ * @param colname
19814
+ * @param _id
19815
+ * @param data
19816
+ * @return Promise => bool = true or false
19817
+ */
19818
+ updatePatternBlock_Thumbnail(_id: string, data: object): Promise<unknown>;
19819
+ /**
19820
+ * @example:
19821
+ * this.vhDevAutoWeb.deletePatternBlock_Thumbnail('5fb67fda87c0f21d484cbdf3')
19822
+ .then(bool=>{
19823
+ console.log('deletePatternBlock_Thumbnail', bool);
19824
+ })
19825
+ * @param colname
19826
+ * @param _id
19827
+ * @return Promise => bool = true or false
19828
+ */
19829
+ deletePatternBlock_Thumbnail(_id: string): Promise<unknown>;
19830
+ /**
19831
+ * @example:
19832
+ * this.vhDevAutoWeb.getPatternBlocks_Thumbnail_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19833
+ .then(response=>{
19281
19834
  console.log('response', response);
19282
19835
  if(response.vcode === 0){
19283
19836
  //-----------your code-----------
@@ -19294,716 +19847,969 @@ export declare class VhDevAutoWeb {
19294
19847
  * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19295
19848
  * @return Promise object => response = {vcode, message, data(array), limit, page, totalpages}
19296
19849
  */
19297
- getPatternBlocks_byFields_byPages(query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19850
+ getPatternBlocks_Thumbnail_byFields_byPages(query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19851
+ /**
19852
+ * @example:
19853
+ * this.vhDevAutoWeb.getSubProject_byEmail('email@gmail.com')
19854
+ .then((subprojects)=>{
19855
+ console.log('getSubProject_byEmail', subprojects);
19856
+ }, error=>{
19857
+ console.log(error, error);
19858
+ })
19859
+ * @param email
19860
+ * @return Promise => array =[{},{},...] / error
19861
+ */
19862
+ getSubProject_byEmail(email: string): Promise<unknown>;
19863
+ /**
19864
+ * @example
19865
+ * this.vhDevAutoWeb.getSubProject_byID('5fb67fda87c0f21d484cbdf3')
19866
+ .then((subproject)=>{
19867
+ console.log('getSubProject_byID', subproject);
19868
+ })
19869
+ * @param id_subproject
19870
+ * @return Promise => obj ={} or null
19871
+ */
19872
+ getSubProject_byID(id_subproject: string): Promise<unknown>;
19873
+ /**
19874
+ * @example:Lấy hình ảnh từ DOM
19875
+ * let html = document.getElementById('my-node')
19876
+ * this.vhDevAutoWeb.getThumbnailPatternFromHtml(html, 128, 128, id_block, "blocks/thumbnails").then(
19877
+ photoURL => {
19878
+ this.img = photoURL;
19879
+ this.vhComponent.showToast(2000, (this.languageService.translate("Image was loaded successfully")));
19880
+ },
19881
+ () => {
19882
+ this.vhComponent.showToast(2000, (this.languageService.translate("Image was failed")));
19883
+ }
19884
+ );
19885
+ * @param w
19886
+ * @param h
19887
+ * @param folder
19888
+ * @param oldthumbnailURL
19889
+ * @returns
19890
+ */
19891
+ getThumbnailPatternFromHtml(html: any, w: any, h: any, filename: string, folder: string): Promise<any>;
19892
+ private createImageFromDiv;
19893
+ /**
19894
+ *@example
19895
+ this.vhDevAutoWeb.deleteThumbnail([url_img, url_img1])
19896
+ .then(()=>{
19897
+ //-----------your code here-----------
19898
+ },(error:any)=>{
19899
+ console.log('error', error)
19900
+ })
19901
+ * @param thumbnailURL : Array
19902
+ * @returns Promise => true or false : xóa thành công tất cả hình trong mảng về true, xóa không thành công hoặc link một hình sai trả về false
19903
+ */
19904
+ deleteThumbnail(thumbnailURL: any): Promise<any>;
19905
+ static ɵfac: i0.ɵɵFactoryDeclaration<VhDevAutoWeb, never>;
19906
+ static ɵprov: i0.ɵɵInjectableDeclaration<VhDevAutoWeb>;
19907
+ }
19908
+ export declare class VhDesignAutoWeb {
19909
+ private vhAlgorithm;
19910
+ private vhAuth;
19911
+ private vhMGDB_auth;
19912
+ private socket;
19913
+ private signedin;
19914
+ private enduser;
19915
+ private branchs;
19916
+ private database_RAM;
19917
+ private memoryPageZY;
19918
+ private memory_Ctrl_Z;
19919
+ private memory_Ctrl_Y;
19920
+ private database_Ctrl_C;
19921
+ private code_Ctrl_Z;
19922
+ constructor(vhAlgorithm: VhAlgorithm, vhAuth: VhAuth, vhMGDB_auth: VhMGDB_auth);
19923
+ getProjectName(): string;
19924
+ /**
19925
+ * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển theo hướng direction, sau đó dịch chuyển nó và các block bị ảnh hưởng theo hướng direction
19926
+ * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch theo hướng direction, mà đứng im
19927
+ * @example:
19928
+ * this.vhDesignAutoWeb.shiftingBlocks(this, 'bottom', 20)
19929
+ * @param block: khối được chọn và cần dịch chuyển
19930
+ * @param direction: 'top', 'bottom', 'left' or 'right'
19931
+ * @param distance: khoảng cách cần dịch chuyển theo hướng direction
19932
+ * @returns
19933
+ */
19934
+ shiftingBlocks(_this: any, direction: any, distance: any): any;
19935
+ /**
19936
+ * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển xuống dưới, sau đó dịch chuyển nó và các block bị ảnh hưởng xuống dưới
19937
+ * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch xuống dưới
19938
+ * @param block: khối được chọn và cần dịch chuyển
19939
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19940
+ * @param distance: khoảng cách cần dịch chuyển xuống dưới
19941
+ * @returns
19942
+ */
19943
+ private findLimitBottomBlocks_andShifting;
19944
+ /**
19945
+ * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển lên trên, sau đó dịch chuyển nó và các block bị ảnh hưởng lên trên
19946
+ * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch lên trên
19947
+ * @param block: khối được chọn và cần dịch chuyển
19948
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19949
+ * @param distance: khoảng cách cần dịch chuyển lên trên
19950
+ * @returns
19951
+ */
19952
+ private findLimitTopBlocks_andShifting;
19953
+ /**
19954
+ * Hàm dùng đệ quy để tìm kiếm khối cuối cùng (gần đỉnh nhất) mà có ảnh hưởng bởi khối cần dịch chuyển lên trên.
19955
+ * Tìm đc khối này (có trường hợp ko có) sẽ tính được khối dịch chuyển với distance bao nhiêu là hợp lý
19956
+ * @param _this
19957
+ * @param block: khối được chọn và cần dịch chuyển
19958
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19959
+ * @param distance: khoảng cách cần dịch chuyển lên trên
19960
+ * @param last_limittop_block: vì đệ quy nhiều lần để tìm giá trị mới, lúc đầu truyền vào hàm giá trị null
19961
+ * @returns
19962
+ */
19963
+ private findLastLimitTopBlock;
19964
+ /**
19965
+ * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển sang trái, sau đó dịch chuyển nó và các block bị ảnh hưởng sang trái
19966
+ * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch sang trái
19967
+ * @param block: khối được chọn và cần dịch chuyển
19968
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19969
+ * @param distance: khoảng cách cần dịch chuyển sang trái
19970
+ * @returns
19971
+ */
19972
+ private findLimitLeftBlocks_andShifting;
19973
+ /**
19974
+ * Hàm dùng đệ quy để tìm kiếm khối cuối cùng (gần đỉnh nhất) mà có ảnh hưởng bởi khối cần dịch chuyển sang trái.
19975
+ * Tìm đc khối này (có trường hợp ko có) sẽ tính được khối dịch chuyển với distance bao nhiêu là hợp lý
19976
+ * @param _this
19977
+ * @param block: khối được chọn và cần dịch chuyển
19978
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19979
+ * @param distance: khoảng cách cần dịch chuyển sang trái
19980
+ * @param last_limittop_block: vì đệ quy nhiều lần để tìm giá trị mới, lúc đầu truyền vào hàm giá trị null
19981
+ * @returns
19982
+ */
19983
+ private findLastLimitLeftBlock;
19984
+ /**
19985
+ * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển sang phải, sau đó dịch chuyển nó và các block bị ảnh hưởng sang phải
19986
+ * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch sang phải
19987
+ * @param block: khối được chọn và cần dịch chuyển
19988
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19989
+ * @param distance: khoảng cách cần dịch chuyển sang phải
19990
+ * @returns
19991
+ */
19992
+ private findLimitRightBlocks_andShifting;
19993
+ /**
19994
+ * Hàm dùng đệ quy để tìm kiếm khối cuối cùng (gần đỉnh nhất) mà có ảnh hưởng bởi khối cần dịch chuyển sang phải.
19995
+ * Tìm đc khối này (có trường hợp ko có) sẽ tính được khối dịch chuyển với distance bao nhiêu là hợp lý
19996
+ * @param _this
19997
+ * @param block: khối được chọn và cần dịch chuyển
19998
+ * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19999
+ * @param distance: khoảng cách cần dịch chuyển sang phải
20000
+ * @param last_limittop_block: vì đệ quy nhiều lần để tìm giá trị mới, lúc đầu truyền vào hàm giá trị null
20001
+ * @returns
20002
+ */
20003
+ private findLastLimitRightBlock;
20004
+ /**
20005
+ * Hàm tính toán và dịch chuyển khối đã chọn theo hướng direction
20006
+ * Lưu ý: các block khác sẽ ko bị dịch theo hướng direction, mà đứng im
20007
+ * @example:
20008
+ * this.vhDesignAutoWeb.shiftingBlock(this, 'bottom', 20)
20009
+ * @param block: khối được chọn và cần dịch chuyển
20010
+ * @param direction: 'top', 'bottom', 'left' or 'right'
20011
+ * @param distance: khoảng cách cần dịch chuyển theo hướng direction
20012
+ * @returns
20013
+ */
20014
+ shiftingBlock(_this: any, direction: any, distance: any): any;
20015
+ private findLimitTopBlock;
20016
+ private findLimitBottomBlock;
20017
+ private findLimitLeftBlock;
20018
+ private findLimitRightBlock;
20019
+ /****************************************************************************************/
20020
+ /**
20021
+ *Hàm này thực hiện tăng hoặc giảm z-index của object, frame được chọn
20022
+ */
20023
+ changeZIndex(_this: any, layer_type: any): any;
20024
+ /**
20025
+ *Hàm này thực hiện tăng hoặc giảm z-index của block
20026
+ */
20027
+ private changeZindexBlock;
20028
+ /**
20029
+ *Hàm này thực hiện tăng hoặc giảm z-index của object
20030
+ */
20031
+ private changeZindexObject;
20032
+ /**
20033
+ * Khi di chuyển một object trong block hoặc object trong frame đến 1 vị trí nào đó, hàm này sẽ trả về hoặc là giá trị của object nó đè lên
20034
+ * hoặc là null (vị trí đè lên là vị trí trông)
20035
+ * @param id_block
20036
+ * @param x
20037
+ * @param y
20038
+ * @returns
20039
+ */
20040
+ private calculateOverlapObjects;
20041
+ /**
20042
+ * Hàm lấy về mảng tất cả các phần tử object trong block, hoặc tất cả các phần tử object trong object
20043
+ * @returns
20044
+ */
20045
+ private queryElementAllObjectsInBlockOrObject;
20046
+ /**
20047
+ * khi zindex đã xuống lớp thấp nhất (zindex=1) thị cập nhật lại zindex của tất cả các object trong cùng object hoặc cùng block
20048
+ * cha lên 10
20049
+ * @param _this
20050
+ * @returns
20051
+ */
20052
+ private updateZindexOfElementAllInBlockOrObject;
20053
+ /****************************************************************************************/
20054
+ /**
20055
+ * object trong block, object trong object, và có thể qua rất nhiều cấp, do đó cần hàm này để tìm ra object đó,
20056
+ * cách tìm là duyệt qua từng block đến từng object
20057
+ * @param block
20058
+ * @param id_frame
20059
+ * @returns Promise => trả về object có _id là id_object hoặc null(ko tìm thấy)
20060
+ */
20061
+ private findObjectInBlock;
20062
+ /**
20063
+ * Hàm này tìm object trong các block trên page và xóa nó đi
20064
+ * object trong block, object trong object, và có thể qua rất nhiều cấp, do đó cần hàm này để tìm ra object đó,
20065
+ * cách tìm là duyệt qua từng block đến từng object
20066
+ * @param block
20067
+ * @param id_object
20068
+ * @returns Promise => trả về object có _id là id_object hoặc null(ko tìm thấy)
20069
+ */
20070
+ findObjectInBlockAndDelete(block: any, id_object: any): any;
19298
20071
  /**
19299
20072
  * @example:
19300
- * this.vhDevAutoWeb.addPatternBlock_Thumbnail_byID('nvliw974854hf848ugrgh3498', {name:'camera 2', quantity:20, price:200000})
19301
- .then((block)=>{
19302
- console.log('addPatternBlock_Thumbnail_byID', block);
19303
- }, error=>{
19304
- console.log('error', error);
19305
- })
19306
- * @param colname
19307
- * @param data
19308
- * @return Promise => obj = {}
19309
- * Luu y: truong hop trung _id nó sẽ báo lỗi error
20073
+ * this.vhDesignAutoWeb.deployWebAppsource_toBuild_byEmail('nlQaKuDIMi6M7XtwmNMk', 'devdomain01@gmail.com', '******')
20074
+ .then(response=>{
20075
+ console.log('response', response);
20076
+ if(response.vcode === 0){
20077
+ //-----------your code 0-----------
20078
+ }else if(response.vcode === 1){
20079
+ //-----------your code 1-----------
20080
+ }
20081
+ },(error:any)=>{
20082
+ console.log('error', error)
20083
+ })
20084
+ * @param email
20085
+ * @param password
20086
+ * @return Promise object => response = {vcode, msg}
20087
+ * vcode == 0: Message sent to email address successfully
20088
+ * vcode == 1: Email address does not exist
19310
20089
  */
19311
- addPatternBlock_Thumbnail_byID(_id: string, data: object): Promise<unknown>;
20090
+ deployWebAppsource_toBuild_byEmail(database: string, build_email: string, build_password: string): Promise<any>;
19312
20091
  /**
19313
- * @example:
19314
- * this.vhDevAutoWeb.updatePatternBlock_Thumbnail('5fb6780ca2148e09806c5b01', {quantity:400})
19315
- .then((bool:any)=>{
19316
- console.log('updatePatternBlock_Thumbnail', bool);
19317
- }, error=>{
19318
- console.log('error', error);
19319
- })
19320
- * @param colname
19321
- * @param _id
19322
- * @param data
19323
- * @return Promise => bool = true or false
20092
+ * @example:
20093
+ * this.vhDesignAutoWeb.deployWebAppsource_toMySqlHosting_byEndUser('664483e744da7a03b4d5e1a2', 'domain07.webappgiare.vn')
20094
+ .then(response=>{
20095
+ console.log('response', response);
20096
+ if(response.vcode === 0){
20097
+ //-----------your code 0-----------
20098
+ }else if(response.vcode === 1){
20099
+ //-----------your code 1-----------
20100
+ }
20101
+ },(error:any)=>{
20102
+ console.log('error', error)
20103
+ })
20104
+ * @param db_webapp
20105
+ * @param hosting
20106
+ * @return Promise object => response = {vcode, msg}
20107
+ * vcode == 0: Message sent to email address successfully
20108
+ * vcode == 1: Email address does not exist
20109
+ * vcode == 11: 'not logged in'
20110
+ */
20111
+ deployWebAppsource_toMySqlHosting_byEndUser(db_webapp: string, hosting: string, cloning_options: any): Promise<any>;
20112
+ /**
20113
+ * @example:
20114
+ * this.vhDesignAutoWeb.deployWebAppsource_toMongoHosting_byEmail('nlQaKuDIMi6M7XtwmNMk', 'domain05', 'devhosting@gmail.com', '***')
20115
+ .then((response:any)=>{
20116
+ console.log('response', response);
20117
+ if(response.vcode === 0){
20118
+ //-----------your code 0-----------
20119
+ }else if(response.vcode === 1){
20120
+ //-----------your code 1-----------
20121
+ }
20122
+ },(error:any)=>{
20123
+ console.log('error', error)
20124
+ })
20125
+ * @param email
20126
+ * @param password
20127
+ * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
20128
+ * @return Promise object => response = {vcode, msg}
20129
+ * vcode == 0: Message sent to email address successfully
20130
+ * vcode == 1: Email address does not exist
20131
+ */
20132
+ deployWebAppsource_toMongoHosting_byEmail(database: string, hosting: string, hosting_email: string, hosting_password: string, cloning_options: any): Promise<any>;
20133
+ deployWebAppsource_toPackage(database: string): Promise<any>;
20134
+ /**
20135
+ * @example:
20136
+ * this.vhDesignAutoWeb.forgotPasswordEndUser_byEmail('salesf110@gmail.com','h674567')
20137
+ .then(response=>{
20138
+ console.log('response', response);
20139
+ if(response.vcode === 0){
20140
+ //-----------your code 0-----------
20141
+ let user = response.data;
20142
+ }else if(response.vcode === 1){
20143
+ //-----------your code 1-----------
20144
+ }
20145
+ },(error:any)=>{
20146
+ console.log('error', error)
20147
+ })
20148
+ * @param email
20149
+ * @param password
20150
+ * @return Promise object => response = {vcode, msg}
20151
+ * vcode == 0: Message sent to email address successfully
20152
+ * vcode == 1: Email address does not exist
20153
+ */
20154
+ forgotPasswordEndUser_byEmail(database: string, email: string, password: string): Promise<any>;
20155
+ /**
20156
+ * @example:
20157
+ * this.vhDesignAutoWeb.changePasswordEndUser_byEmail('salesf110@gmail.com','h674567', 'V12345678')
20158
+ .then(response=>{
20159
+ console.log('response', response);
20160
+ if(response.vcode === 0){
20161
+ //-----------your code 0-----------
20162
+ let user = response.data;
20163
+ }else if(response.vcode === 1){
20164
+ //-----------your code 1-----------
20165
+ }else if(response.vcode === 2){
20166
+ //-----------your code 2-----------
20167
+ }else if(response.vcode === 3){
20168
+ //-----------your code 3-----------
20169
+ }
20170
+ },(error:any)=>{
20171
+ console.log('error', error)
20172
+ })
20173
+ * @param email
20174
+ * @param oldpassword
20175
+ * @param newpassword
20176
+ * @return Promise object => response = {vcode, msg}
20177
+ * vcode == 0: Message sent to email address successfully
20178
+ * vcode == 1: Email address does not exist
20179
+ * vcode == 2: wrong oldpassword
20180
+ * vcode == 3: please reset your password
19324
20181
  */
19325
- updatePatternBlock_Thumbnail(_id: string, data: object): Promise<unknown>;
20182
+ changePasswordEndUser_byEmail(database: string, email: string, oldpassword: string, newpassword: string): Promise<any>;
19326
20183
  /**
19327
- * @example:
19328
- * this.vhDevAutoWeb.deletePatternBlock_Thumbnail('5fb67fda87c0f21d484cbdf3')
19329
- .then(bool=>{
19330
- console.log('deletePatternBlock_Thumbnail', bool);
20184
+ * @example:
20185
+ * this.vhDesignAutoWeb.signupEndUser_byEmail('salesf110@gmail.com','h674567',{})
20186
+ .then(rsp=>{
20187
+ console.log('signupEndUser_byEmail', rsp);
20188
+ if(rsp.vcode === 0){
20189
+ //-----------your code 1-----------
20190
+ let enduser = rsp.data;
20191
+ }else if(rsp.vcode === 1){
20192
+ //-----------your code 2-----------
20193
+ }
20194
+ },(error:any)=>{
20195
+ console.log('error', error)
19331
20196
  })
19332
- * @param colname
19333
- * @param _id
19334
- * @return Promise => bool = true or false
19335
- */
19336
- deletePatternBlock_Thumbnail(_id: string): Promise<unknown>;
20197
+ * @param email
20198
+ * @param password
20199
+ * @param info : thông tin của enduser
20200
+ * @return Promise object => rsp = {vcode, msg, data}
20201
+ * vcode == 0: User account registered successful
20202
+ * vcode == 1: User Email already exists
20203
+ * @notice : sau khi đăng ký thành công, người dùng phải vào email xác nhận xác nhận việc đăng ký này
20204
+ */
20205
+ signupEndUser_byEmail(database: string, email: string, password: string, info: object): Promise<any>;
19337
20206
  /**
19338
20207
  * @example:
19339
- * this.vhDevAutoWeb.getPatternBlocks_Thumbnail_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
19340
- .then(response=>{
20208
+ * this.vhDesignAutoWeb.signinEndUser_byEmail('salesf110@gmail.com','h674567')
20209
+ .then(response=>{
19341
20210
  console.log('response', response);
19342
20211
  if(response.vcode === 0){
19343
- //-----------your code-----------
19344
- let products = response.data;
20212
+ //-----------your code 0-----------
20213
+ let user = response.data;
20214
+ }else if(response.vcode === 1){
20215
+ //-----------your code 1-----------
20216
+ }else if(response.vcode === 2){
20217
+ //-----------your code 2-----------
20218
+ }else if(response.vcode === 3){
20219
+ //-----------your code 3-----------
20220
+ }else if(response.vcode === 4){
20221
+ //-----------your code 4-----------
19345
20222
  }
19346
20223
  },(error:any)=>{
19347
- console.log('error', error)
19348
- })
19349
- * @param colname
19350
- * @param query
19351
- * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
19352
- * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
19353
- * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
19354
- * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
19355
- * @return Promise object => response = {vcode, message, data(array), limit, page, totalpages}
19356
- */
19357
- getPatternBlocks_Thumbnail_byFields_byPages(query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19358
- /**
19359
- * @example:
19360
- * this.vhDevAutoWeb.getSubProject_byEmail('email@gmail.com')
19361
- .then((subprojects)=>{
19362
- console.log('getSubProject_byEmail', subprojects);
19363
- }, error=>{
19364
- console.log(error, error);
19365
- })
19366
- * @param email
19367
- * @return Promise => array =[{},{},...] / error
19368
- */
19369
- getSubProject_byEmail(email: string): Promise<unknown>;
19370
- /**
19371
- * @example
19372
- * this.vhDevAutoWeb.getSubProject_byID('5fb67fda87c0f21d484cbdf3')
19373
- .then((subproject)=>{
19374
- console.log('getSubProject_byID', subproject);
20224
+ console.log('error', error)
19375
20225
  })
19376
- * @param id_subproject
19377
- * @return Promise => obj ={} or null
19378
- */
19379
- getSubProject_byID(id_subproject: string): Promise<unknown>;
19380
- /**
19381
- * @example:Lấy hình ảnh từ DOM
19382
- * let html = document.getElementById('my-node')
19383
- * this.vhDevAutoWeb.getThumbnailPatternFromHtml(html, 128, 128, id_block, "blocks/thumbnails").then(
19384
- photoURL => {
19385
- this.img = photoURL;
19386
- this.vhComponent.showToast(2000, (this.languageService.translate("Image was loaded successfully")));
19387
- },
19388
- () => {
19389
- this.vhComponent.showToast(2000, (this.languageService.translate("Image was failed")));
19390
- }
19391
- );
19392
- * @param w
19393
- * @param h
19394
- * @param folder
19395
- * @param oldthumbnailURL
19396
- * @returns
19397
- */
19398
- getThumbnailPatternFromHtml(html: any, w: any, h: any, filename: string, folder: string): Promise<any>;
19399
- private createImageFromDiv;
20226
+ * @param email
20227
+ * @param password
20228
+ * @return Promise object => response = {vcode, msg, data}
20229
+ * vcode == 0: Signed in successfully
20230
+ * vcode == 1: Wrong email
20231
+ * vcode == 2: Please login into your email to confirm your account on my website or APP
20232
+ * vcode == 3: Please reset your password
20233
+ * vcode == 4: Wrong password
20234
+ */
20235
+ signinEndUser_byEmail(database: string, email: string, password: string): Promise<any>;
19400
20236
  /**
19401
- *@example
19402
- this.vhDevAutoWeb.deleteThumbnail([url_img, url_img1])
19403
- .then(()=>{
19404
- //-----------your code here-----------
20237
+ * @example:
20238
+ * this.vhDesignAutoWeb.onAuthStateChangedEndUser()
20239
+ .then(response=>{
20240
+ console.log('response', response);
20241
+ if(response.vcode === 0){
20242
+ //-----------your code 0-----------
20243
+ let user = response.data;
20244
+ }else if(response.vcode === 1){
20245
+ //-----------your code 1-----------
20246
+ }else if(response.vcode === 2){
20247
+ //-----------your code 2-----------
20248
+ }else if(response.vcode === 3){
20249
+ //-----------your code 3-----------
20250
+ }else if(response.vcode === 4){
20251
+ //-----------your code 4-----------
20252
+ }
19405
20253
  },(error:any)=>{
19406
- console.log('error', error)
20254
+ console.log('error', error)
19407
20255
  })
19408
- * @param thumbnailURL : Array
19409
- * @returns Promise => true or false : xóa thành công tất cả hình trong mảng về true, xóa không thành công hoặc link một hình sai trả về false
20256
+ * @return Promise object => response = {vcode, msg}
20257
+ * vcode == 0: Signed in successfully
20258
+ * vcode == 1: wrong access_token->email
20259
+ * vcode == 2: wrong access_token->password
20260
+ * vcode == 3: Please login into your email to confirm your account on my website or APP
20261
+ * vcode == 4: Please reset your password
19410
20262
  */
19411
- deleteThumbnail(thumbnailURL: any): Promise<any>;
19412
- static ɵfac: i0.ɵɵFactoryDeclaration<VhDevAutoWeb, never>;
19413
- static ɵprov: i0.ɵɵInjectableDeclaration<VhDevAutoWeb>;
19414
- }
19415
- export declare class VhDesignAutoWeb {
19416
- private vhAlgorithm;
19417
- private vhAuth;
19418
- private vhMGDB_auth;
19419
- private socket;
19420
- private signedin;
19421
- private enduser;
19422
- private branchs;
19423
- private database_RAM;
19424
- private memoryPageZY;
19425
- private memory_Ctrl_Z;
19426
- private memory_Ctrl_Y;
19427
- private database_Ctrl_C;
19428
- private code_Ctrl_Z;
19429
- constructor(vhAlgorithm: VhAlgorithm, vhAuth: VhAuth, vhMGDB_auth: VhMGDB_auth);
19430
- getProjectName(): string;
19431
- /**
19432
- * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển theo hướng direction, sau đó dịch chuyển nó và các block bị ảnh hưởng theo hướng direction
19433
- * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch theo hướng direction, mà đứng im
19434
- * @example:
19435
- * this.vhDesignAutoWeb.shiftingBlocks(this, 'bottom', 20)
19436
- * @param block: khối được chọn và cần dịch chuyển
19437
- * @param direction: 'top', 'bottom', 'left' or 'right'
19438
- * @param distance: khoảng cách cần dịch chuyển theo hướng direction
19439
- * @returns
19440
- */
19441
- shiftingBlocks(_this: any, direction: any, distance: any): any;
20263
+ onAuthStateChangedEndUser(database: string): Promise<any>;
20264
+ getHostings_byEndUser(database: string): Promise<any>;
19442
20265
  /**
19443
- * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển xuống dưới, sau đó dịch chuyển nó và các block bị ảnh hưởng xuống dưới
19444
- * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch xuống dưới
19445
- * @param block: khối được chọn và cần dịch chuyển
19446
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19447
- * @param distance: khoảng cách cần dịch chuyển xuống dưới
20266
+ * vhDesignAutoWeb
20267
+ * @param hosting
19448
20268
  * @returns
19449
20269
  */
19450
- private findLimitBottomBlocks_andShifting;
19451
- /**
19452
- * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển lên trên, sau đó dịch chuyển nó và các block bị ảnh hưởng lên trên
19453
- * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch lên trên
19454
- * @param block: khối được chọn và cần dịch chuyển
19455
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19456
- * @param distance: khoảng cách cần dịch chuyển lên trên
19457
- * @returns
19458
- */
19459
- private findLimitTopBlocks_andShifting;
19460
- /**
19461
- * Hàm dùng đệ quy để tìm kiếm khối cuối cùng (gần đỉnh nhất) mà có ảnh hưởng bởi khối cần dịch chuyển lên trên.
19462
- * Tìm đc khối này (có trường hợp ko có) sẽ tính được khối dịch chuyển với distance bao nhiêu là hợp lý
19463
- * @param _this
19464
- * @param block: khối được chọn và cần dịch chuyển
19465
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19466
- * @param distance: khoảng cách cần dịch chuyển lên trên
19467
- * @param last_limittop_block: vì đệ quy nhiều lần để tìm giá trị mới, lúc đầu truyền vào hàm giá trị null
19468
- * @returns
19469
- */
19470
- private findLastLimitTopBlock;
19471
- /**
19472
- * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển sang trái, sau đó dịch chuyển nó và các block bị ảnh hưởng sang trái
19473
- * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch sang trái
19474
- * @param block: khối được chọn và cần dịch chuyển
19475
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19476
- * @param distance: khoảng cách cần dịch chuyển sang trái
19477
- * @returns
19478
- */
19479
- private findLimitLeftBlocks_andShifting;
20270
+ createHosting_byEndUser(hosting: string): Promise<any>;
20271
+ removeHosting_byEndUser(hosting: string): Promise<any>;
19480
20272
  /**
19481
- * Hàm dùng đệ quy để tìm kiếm khối cuối cùng (gần đỉnh nhất) mà có ảnh hưởng bởi khối cần dịch chuyển sang trái.
19482
- * Tìm đc khối này (có trường hợp ko có) sẽ tính được khối dịch chuyển với distance bao nhiêu là hợp lý
19483
- * @param _this
19484
- * @param block: khối được chọn và cần dịch chuyển
19485
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19486
- * @param distance: khoảng cách cần dịch chuyển sang trái
19487
- * @param last_limittop_block: vì đệ quy nhiều lần để tìm giá trị mới, lúc đầu truyền vào hàm giá trị null
19488
- * @returns
20273
+ * @example
20274
+ * this.vhDesignAutoWeb.signoutEndUser();
20275
+ * @return void
19489
20276
  */
19490
- private findLastLimitLeftBlock;
20277
+ signoutEndUser(database: string): void;
19491
20278
  /**
19492
- * Hàm tính toán và tìm kiếm các block bị ảnh hưởng khi nó dịch chuyển sang phải, sau đó dịch chuyển nó và các block bị ảnh hưởng sang phải
19493
- * Lưu ý: các block không bị ảnh hưởng sẽ ko bị dịch sang phải
19494
- * @param block: khối được chọn và cần dịch chuyển
19495
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19496
- * @param distance: khoảng cách cần dịch chuyển sang phải
19497
- * @returns
19498
- */
19499
- private findLimitRightBlocks_andShifting;
20279
+ * @example
20280
+ * let bool = this.vhDesignAutoWeb.checkSigninEndUser();
20281
+ * @return Boolean => true or false
20282
+ */
20283
+ checkSigninEndUser(): any;
19500
20284
  /**
19501
- * Hàm dùng đệ quy để tìm kiếm khối cuối cùng (gần đỉnh nhất) mà có ảnh hưởng bởi khối cần dịch chuyển sang phải.
19502
- * Tìm đc khối này (có trường hợp ko có) sẽ tính được khối dịch chuyển với distance bao nhiêu là hợp lý
19503
- * @param _this
19504
- * @param block: khối được chọn và cần dịch chuyển
19505
- * @param blocks_of_page: các khối đang ở trong trang hiện hữu
19506
- * @param distance: khoảng cách cần dịch chuyển sang phải
19507
- * @param last_limittop_block: vì đệ quy nhiều lần để tìm giá trị mới, lúc đầu truyền vào hàm giá trị null
19508
- * @returns
19509
- */
19510
- private findLastLimitRightBlock;
20285
+ * @example:
20286
+ * let enduser = this.vhDesignAutoWeb.getlocalEndUser();
20287
+ * @return object => obj = {}
20288
+ */
20289
+ getlocalEndUser(): any;
19511
20290
  /**
19512
- * Hàm tính toán dịch chuyển khối đã chọn theo hướng direction
19513
- * Lưu ý: các block khác sẽ ko bị dịch theo hướng direction, mà đứng im
20291
+ * Hàm này cập nhật thông tin người dùng webapp (người dùng đã nhập vào webapp mới cập nhật được)
19514
20292
  * @example:
19515
- * this.vhDesignAutoWeb.shiftingBlock(this, 'bottom', 20)
19516
- * @param block: khối được chọn và cần dịch chuyển
19517
- * @param direction: 'top', 'bottom', 'left' or 'right'
19518
- * @param distance: khoảng cách cần dịch chuyển theo hướng direction
19519
- * @returns
20293
+ * this.vhDesignAutoWeb.updateEndUser('5fb6780ca2148e09806c5b01', {name:'Nguyễn Văn A'})
20294
+ .then(rsp=>{
20295
+ console.log('updateEndUser', rsp);
20296
+ if(rsp.vcode === 0){
20297
+ //-----------your code-----------
20298
+ }
20299
+ },(error:any)=>{
20300
+ console.log('error', error)
20301
+ })
20302
+ * @param value : object
20303
+ * @return Promise => rsp ={vcode, msg, data(undefined)} / error
20304
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20305
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20306
+ * vcode == 0: success
20307
+ * vcode == 2: wrong projectname
20308
+ */
20309
+ updateEndUser(database: string, value: object): Promise<unknown>;
20310
+ /**
20311
+ * Hàm này xóa email người dùng webapp (người dùng đã nhập vào webapp mới xóa được)
20312
+ * @example:
20313
+ * this.vhDesignAutoWeb.deleteEndUser()
20314
+ .then(response=>{
20315
+ console.log('response', response);
20316
+ if(response.vcode === 0){
20317
+ //-----------your code-----------
20318
+ //thoat ra trang chưa đăng nhập
20319
+ }
20320
+ },(error:any)=>{
20321
+ console.log('error', error)
20322
+ })
20323
+ * @return Promise object => response = {vcode, msg}
20324
+ * vcode == 0: Deleted successfully
20325
+ */
20326
+ deleteEndUser(database: string): Promise<unknown>;
20327
+ /**
20328
+ * Hàm này người thiết kế ở (vhuserweb) tạo tài khoản cho khách hàng của họ ở (vhdevweb)
20329
+ * @example:
20330
+ * this.vhDesignAutoWeb.signUpWebAppOwner('huyleduc92', '123456', '+84909925359',{})
20331
+ .then((owner)=>{
20332
+ console.log('signUpWebAppOwner', owner);
20333
+ },(error:any)=>{
20334
+ console.log('error', error);
20335
+ })
20336
+ * @param email
20337
+ * @param password
20338
+ * @param phoneNumber
20339
+ * @param info
20340
+ * @return Promise => owner={}
19520
20341
  */
19521
- shiftingBlock(_this: any, direction: any, distance: any): any;
19522
- private findLimitTopBlock;
19523
- private findLimitBottomBlock;
19524
- private findLimitLeftBlock;
19525
- private findLimitRightBlock;
19526
- /****************************************************************************************/
20342
+ signUpWebAppOwner(email: string, password: string, phoneNumber: any, info: any): Promise<unknown>;
20343
+ detailPage: any;
20344
+ detailPage_byScroll: any;
20345
+ detailFreeBlock: any;
19527
20346
  /**
19528
- *Hàm này thực hiện tăng hoặc giảm z-index của object, frame được chọn
20347
+ * vhDesignAutoWeb
20348
+ * @param _this
20349
+ * @param scrollTop
19529
20350
  */
19530
- changeZIndex(_this: any, layer_type: any): any;
20351
+ displayBocksOfPage_byScroll(_this: any, scrollTop: number): void;
19531
20352
  /**
19532
- *Hàm này thực hiện tăng hoặc giảm z-index của block
20353
+ * vhDesignAutoWeb
20354
+ * @param _this
20355
+ * @param scrollTop
20356
+ * @param refresh
19533
20357
  */
19534
- private changeZindexBlock;
20358
+ displayBocksOfPage_byScroll_toEnd(_this: any, scrollTop: number, refresh: boolean): void;
19535
20359
  /**
19536
- *Hàm này thực hiện tăng hoặc giảm z-index của object
20360
+ * vhDesignAutoWeb
20361
+ * @param id_page
20362
+ * @returns
19537
20363
  */
19538
- private changeZindexObject;
20364
+ getDetailPage(id_page: any): Promise<unknown>;
20365
+ getDetailFreeBlocks(): Promise<unknown>;
19539
20366
  /**
19540
- * Khi di chuyển một object trong block hoặc object trong frame đến 1 vị trí nào đó, hàm này sẽ trả về hoặc là giá trị của object nó đè lên
19541
- * hoặc là null (vị trí đè lên là vị trí trông)
20367
+ * vhDesignAutoWeb
19542
20368
  * @param id_block
19543
- * @param x
19544
- * @param y
19545
20369
  * @returns
19546
20370
  */
19547
- private calculateOverlapObjects;
20371
+ getDetailFreeBlock(id_block: any): Promise<unknown>;
19548
20372
  /**
19549
- * Hàm lấy về mảng tất cả các phần tử object trong block, hoặc tất cả các phần tử object trong object
20373
+ * vhDesignAutoWeb
20374
+ * @param id_block
19550
20375
  * @returns
19551
20376
  */
19552
- private queryElementAllObjectsInBlockOrObject;
20377
+ getDetailBlock(id_block: any): Promise<unknown>;
19553
20378
  /**
19554
- * khi zindex đã xuống lớp thấp nhất (zindex=1) thị cập nhật lại zindex của tất cả các object trong cùng object hoặc cùng block
19555
- * cha lên 10
19556
- * @param _this
20379
+ * vhDesignAutoWeb
20380
+ * @param block
19557
20381
  * @returns
19558
20382
  */
19559
- private updateZindexOfElementAllInBlockOrObject;
19560
- /****************************************************************************************/
20383
+ getDetailBlock_byBlock(block: any): Promise<unknown>;
20384
+ getDetailObject(id_object: any): Promise<unknown>;
19561
20385
  /**
19562
- * object trong block, object trong object, thể qua rất nhiều cấp, do đó cần hàm này để tìm ra object đó,
19563
- * cách tìm là duyệt qua từng block đến từng object
19564
- * @param block
19565
- * @param id_frame
19566
- * @returns Promise => trả về object có _id là id_object hoặc null(ko tìm thấy)
20386
+ * Hàm này trả về 1 object (đủ thông tin object), trong mỗi object trường objects (có đủ thông tin từng object)
20387
+ * @example
20388
+ * this.vhDesignAutoWeb.getDetailObject_byObject('00Tm41GNYN0aYbAtuncH')
20389
+ .then((object)=>{
20390
+ console.log('getDetailObject', object);
20391
+ }, error=>{
20392
+ console.log('error', error);
20393
+ })
20394
+ * @param id_object
20395
+ * @return Promise => page = {}
20396
+ */
20397
+ getDetailObject_byObject(object: any): Promise<unknown>;
20398
+ /**
20399
+ * vhDesignAutoWeb
19567
20400
  */
19568
- private findObjectInBlock;
20401
+ startSocketDatabase(): void;
20402
+ private checkModifiedType;
20403
+ private addBlockOrObject_fromDetailPage;
19569
20404
  /**
19570
- * Hàm này tìm object trong các block trên page và xóa nó đi
19571
- * object trong block, object trong object, và có thể qua rất nhiều cấp, do đó cần hàm này để tìm ra object đó,
19572
- * cách tìm là duyệt qua từng block đến từng object
19573
- * @param block
19574
- * @param id_object
19575
- * @returns Promise => trả về object có _id là id_object hoặc null(ko tìm thấy)
20405
+ * Thên Block hoặc Object nhân bản vào detailpage
19576
20406
  */
19577
- findObjectInBlockAndDelete(block: any, id_object: any): any;
20407
+ private addCloneBlockOrObject_fromDetailPage;
20408
+ private deleteCloneBlockOrObject_fromDetailPage;
20409
+ private updateBlockOrObject_fromDetailPage;
20410
+ private deleteBlockOrObject_fromDetailPage;
20411
+ stopSocketDatabase(): void;
20412
+ /**
20413
+ * @example SET:
20414
+ * this.vhDesignAutoWeb.localStorageSET('local_name', {a=1, b='hai'});
20415
+ * this.vhDesignAutoWeb.localStorageSET('local_name', 15000);
20416
+ * this.vhDesignAutoWeb.localStorageSET('local_name', 'muoi lam nghin dong');
20417
+ * this.vhDesignAutoWeb.localStorageSET('local_name', null);
20418
+ * @returns
20419
+ */
20420
+ localStorageSET(name: string, value: any): void;
20421
+ /**
20422
+ * @example GET:
20423
+ * let object = this.vhDesignAutoWeb.localStorageGET('local_name');
20424
+ * @returns
20425
+ */
20426
+ localStorageGET(name: string): any;
19578
20427
  /**
19579
20428
  * @example:
19580
- * this.vhDesignAutoWeb.deployWebAppsource_toBuild_byEmail('nlQaKuDIMi6M7XtwmNMk', 'devdomain01@gmail.com', '******')
19581
- .then(response=>{
19582
- console.log('response', response);
19583
- if(response.vcode === 0){
19584
- //-----------your code 0-----------
19585
- }else if(response.vcode === 1){
19586
- //-----------your code 1-----------
19587
- }
19588
- },(error:any)=>{
19589
- console.log('error', error)
19590
- })
19591
- * @param email
19592
- * @param password
19593
- * @return Promise object => response = {vcode, msg}
19594
- * vcode == 0: Message sent to email address successfully
19595
- * vcode == 1: Email address does not exist
20429
+ * this.vhDesignAutoWeb.createIndexes('atw_products', {name_textsearch:'text'})
20430
+ .then((obj:any)=>{
20431
+ console.log('createIndexes', obj);
20432
+ }, error=>{
20433
+ reject(error)
20434
+ })
20435
+ * @param colname
20436
+ * @param index
20437
+ * @return null or object
20438
+ */
20439
+ createIndexes(colname: string, index: any): Promise<unknown>;
20440
+ /**
20441
+ * @example:
20442
+ * this.vhDesignAutoWeb.addBranch({name:'Chi nhánh 2'})
20443
+ .then((rsp:any)=>{
20444
+ if(rsp.vcode === 0){
20445
+ let branch = rsp.data;
20446
+ }
20447
+ }, error=>{
20448
+ reject(error)
20449
+ })
20450
+ * @param data
20451
+ * @return Promise => rsp ={vcode, msg, data(object)} / error
20452
+ * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
20453
+ * vcode == 0: success
20454
+ * vcode == 11: 'not logged in'
20455
+ */
20456
+ addBranch(data: any): Promise<unknown>;
20457
+ /**
20458
+ * @example
20459
+ * this.vhDesignAutoWeb.getbranchs()
20460
+ .then((branchs)=>{
20461
+ console.log('getbranchs', branchs);
20462
+ })
20463
+ * @return Promise => array(object) = [{},{},..]
20464
+ */
20465
+ getbranchs(): Promise<unknown>;
20466
+ /**
20467
+ * @example:
20468
+ * let branch = this.vhDesignAutoWeb.getlocalBranch('5fb6780ca2148e09806c5b01');
20469
+ * @param id_branch
20470
+ * @return Object => obj = {} or null
19596
20471
  */
19597
- deployWebAppsource_toBuild_byEmail(database: string, build_email: string, build_password: string): Promise<any>;
20472
+ getlocalBranch(id_branch: any): any;
19598
20473
  /**
19599
20474
  * @example:
19600
- * this.vhDesignAutoWeb.deployWebAppsource_toMySqlHosting_byEndUser('664483e744da7a03b4d5e1a2', 'domain07.webappgiare.vn')
19601
- .then(response=>{
19602
- console.log('response', response);
19603
- if(response.vcode === 0){
19604
- //-----------your code 0-----------
19605
- }else if(response.vcode === 1){
19606
- //-----------your code 1-----------
19607
- }
19608
- },(error:any)=>{
19609
- console.log('error', error)
19610
- })
19611
- * @param db_webapp
19612
- * @param hosting
19613
- * @return Promise object => response = {vcode, msg}
19614
- * vcode == 0: Message sent to email address successfully
19615
- * vcode == 1: Email address does not exist
19616
- * vcode == 11: 'not logged in'
20475
+ * let branchs = this.vhDesignAutoWeb.getlocalBranchs();
20476
+ * @return Array(object) => array = [{},{},...]
19617
20477
  */
19618
- deployWebAppsource_toMySqlHosting_byEndUser(db_webapp: string, hosting: string, cloning_options: any): Promise<any>;
20478
+ getlocalBranchs(): any[];
20479
+ /**
20480
+ * @example:
20481
+ * this.vhDesignAutoWeb.vietqr_generateQR({})
20482
+ .then((rsp)=>{
20483
+ if(rsp.vcode === 0){
20484
+ console.log('dynamic_addDoc_fromDatabase', rsp.data);
20485
+ }
20486
+ }, error=>{
20487
+ console.log('error', error);
20488
+ })
20489
+ * @param colname
20490
+ * @param data
20491
+ * @return Promise => rsp ={vcode, msg, data(img_base64)} / error
20492
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20493
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20494
+ * vcode == 0: success
20495
+ */
20496
+ vietqr_generateQR(data: any): Promise<unknown>;
19619
20497
  /**
19620
20498
  * @example:
19621
- * this.vhDesignAutoWeb.deployWebAppsource_toMongoHosting_byEmail('nlQaKuDIMi6M7XtwmNMk', 'domain05', 'devhosting@gmail.com', '***')
19622
- .then((response:any)=>{
19623
- console.log('response', response);
19624
- if(response.vcode === 0){
19625
- //-----------your code 0-----------
19626
- }else if(response.vcode === 1){
19627
- //-----------your code 1-----------
20499
+ * this.vhDesignAutoWeb.admin_dynamic_addDoc('atw_pages',{name:name: 'Quảng cáo 1'})
20500
+ .then((rsp)=>{
20501
+ if(rsp.vcode === 0){
20502
+ console.log('admin_dynamic_addDoc', rsp.data);
20503
+ }
20504
+ }, error=>{
20505
+ console.log('error', error);
20506
+ })
20507
+ * @param colname
20508
+ * @param data
20509
+ * @return Promise => rsp ={vcode, msg, data(object)} / error
20510
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20511
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20512
+ * vcode == 0: success
20513
+ * vcode == 11: 'not logged in'
20514
+ */
20515
+ admin_dynamic_addDoc(colname: string, data: object): Promise<unknown>;
20516
+ /**
20517
+ * @example:
20518
+ * this.vhDesignAutoWeb.admin_dynamic_updateDoc('categories', '5fb6780ca2148e09806c5b01', {name: 'Quảng cáo 1'})
20519
+ .then((rsp:any)=>{
20520
+ if(rsp.vcode === 0){
20521
+ console.log('admin_dynamic_updateDoc succeed');
20522
+ }
20523
+ }, error=>{
20524
+ reject(error)
20525
+ })
20526
+ * @param colname
20527
+ * @param id_doc
20528
+ * @param data
20529
+ * @return Promise => rsp ={vcode, msg, data(true or false)} / error
20530
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20531
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20532
+ * vcode == 0: success
20533
+ * vcode == 11: 'not logged in'
20534
+ */
20535
+ admin_dynamic_updateDoc(colname: string, id_doc: string, value: object): Promise<unknown>;
20536
+ /**
20537
+ * @example:
20538
+ * this.vhDesignAutoWeb.admin_dynamic_deleteDoc('categories', '5fb67fda87c0f21d484cbdf3')
20539
+ .then((rsp:any)=>{
20540
+ if(rsp.vcode === 0){
20541
+ console.log('admin_dynamic_deleteDoc succeed');
19628
20542
  }
19629
- },(error:any)=>{
19630
- console.log('error', error)
19631
- })
19632
- * @param email
19633
- * @param password
19634
- * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
19635
- * @return Promise object => response = {vcode, msg}
19636
- * vcode == 0: Message sent to email address successfully
19637
- * vcode == 1: Email address does not exist
19638
- */
19639
- deployWebAppsource_toMongoHosting_byEmail(database: string, hosting: string, hosting_email: string, hosting_password: string, cloning_options: any): Promise<any>;
20543
+ }, error=>{
20544
+ reject(error)
20545
+ })
20546
+ * @param colname
20547
+ * @param id_doc
20548
+ * @return Promise => response.data ={vcode, msg, data(true or false)} / error
20549
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20550
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20551
+ * vcode == 0: success
20552
+ * vcode == 11: 'not logged in'
20553
+ */
20554
+ admin_dynamic_deleteDoc(colname: string, id_doc: string): Promise<unknown>;
19640
20555
  /**
19641
- * @example:
19642
- * this.vhDesignAutoWeb.deployWebAppsource_toMySqlHosting_byEmail('nlQaKuDIMi6M7XtwmNMk', 'domain05', 'devhosting@gmail.com', '***')
19643
- .then((response:any)=>{
19644
- console.log('response', response);
19645
- if(response.vcode === 0){
19646
- //-----------your code 0-----------
19647
- }else if(response.vcode === 1){
19648
- //-----------your code 1-----------
19649
- }
19650
- },(error:any)=>{
19651
- console.log('error', error)
19652
- })
19653
- * @param email
19654
- * @param password
19655
- * @param cloning_options = {source_webapp:none/renew/overwrite, template_webapp: none/renew/overwrite, database_webapp: none/renew/overwrite}
19656
- * @return Promise object => response = {vcode, msg}
19657
- * vcode == 0: Message sent to email address successfully
19658
- * vcode == 1: Email address does not exist
19659
- */
19660
- deployWebAppsource_toMySqlHosting_byEmail(database: string, hosting: string, hosting_email: string, hosting_password: string, cloning_options: any): Promise<any>;
19661
- deployWebAppsource_toPackage(database: string): Promise<any>;
20556
+ * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng...
20557
+ * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
20558
+ * @example
20559
+ * this.vhDesignAutoWeb.admin_dynamic_getDoc('atw_customers', '5fb67fda87c0f21d484cbdf3')
20560
+ .then((rsp)=>{
20561
+ if(rsp.vcode === 0){
20562
+ console.log('admin_dynamic_getDoc', rsp.data);
20563
+ }
20564
+ },(error:any)=>{
20565
+ console.log('error', error)
20566
+ })
20567
+ * @param colname
20568
+ * @param id_doc
20569
+ * @return Promise => response.data ={vcode, msg, data(object or null)} / error
20570
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, giao diện thiết kế dùng thư viện vhDesignAutoWeb
20571
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20572
+ * vcode == 0: success
20573
+ * vcode == 11: 'not logged in'
20574
+ */
20575
+ admin_dynamic_getDoc(colname: string, id_doc: string): Promise<unknown>;
19662
20576
  /**
19663
- * @example:
19664
- * this.vhDesignAutoWeb.forgotPasswordEndUser_byEmail('salesf110@gmail.com','h674567')
19665
- .then(response=>{
19666
- console.log('response', response);
19667
- if(response.vcode === 0){
19668
- //-----------your code 0-----------
19669
- let user = response.data;
19670
- }else if(response.vcode === 1){
19671
- //-----------your code 1-----------
19672
- }
19673
- },(error:any)=>{
20577
+ * @example:
20578
+ * this.vhDesignAutoWeb.admin_dynamic_getDocs_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
20579
+ .then(rsp=>{
20580
+ console.log('admin_dynamic_getDocs_byFields', rsp);
20581
+ if(rsp.vcode === 0){
20582
+ //-----------your code-----------
20583
+ let products = rsp.data;
20584
+ }
20585
+ },(error:any)=>{
19674
20586
  console.log('error', error)
19675
- })
19676
- * @param email
19677
- * @param password
19678
- * @return Promise object => response = {vcode, msg}
19679
- * vcode == 0: Message sent to email address successfully
19680
- * vcode == 1: Email address does not exist
19681
- */
19682
- forgotPasswordEndUser_byEmail(database: string, email: string, password: string): Promise<any>;
20587
+ })
20588
+ * @param colname
20589
+ * @param query
20590
+ * @param projection đang tìm hiểu, tạm thời để giá trị là {}
20591
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
20592
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
20593
+ * @return Promise => response.data ={vcode, msg, data(array(object) = [{},{},..])} / error
20594
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, giao diện thiết kế dùng thư viện vhDesignAutoWeb
20595
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20596
+ * vcode == 0: success
20597
+ * vcode == 11: 'not logged in'
20598
+ */
20599
+ admin_dynamic_getDocs_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19683
20600
  /**
19684
20601
  * @example:
19685
- * this.vhDesignAutoWeb.changePasswordEndUser_byEmail('salesf110@gmail.com','h674567', 'V12345678')
19686
- .then(response=>{
20602
+ * this.vhDesignAutoWeb.admin_dynamic_getDocs_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
20603
+ .then(response=>{
19687
20604
  console.log('response', response);
19688
20605
  if(response.vcode === 0){
19689
- //-----------your code 0-----------
19690
- let user = response.data;
19691
- }else if(response.vcode === 1){
19692
- //-----------your code 1-----------
19693
- }else if(response.vcode === 2){
19694
- //-----------your code 2-----------
19695
- }else if(response.vcode === 3){
19696
- //-----------your code 3-----------
20606
+ //-----------your code-----------
20607
+ let products = response.data;
19697
20608
  }
19698
20609
  },(error:any)=>{
19699
- console.log('error', error)
19700
- })
19701
- * @param email
19702
- * @param oldpassword
19703
- * @param newpassword
19704
- * @return Promise object => response = {vcode, msg}
19705
- * vcode == 0: Message sent to email address successfully
19706
- * vcode == 1: Email address does not exist
19707
- * vcode == 2: wrong oldpassword
19708
- * vcode == 3: please reset your password
19709
- */
19710
- changePasswordEndUser_byEmail(database: string, email: string, oldpassword: string, newpassword: string): Promise<any>;
19711
- /**
19712
- * @example:
19713
- * this.vhDesignAutoWeb.signupEndUser_byEmail('salesf110@gmail.com','h674567',{})
19714
- .then(rsp=>{
19715
- console.log('signupEndUser_byEmail', rsp);
19716
- if(rsp.vcode === 0){
19717
- //-----------your code 1-----------
19718
- let enduser = rsp.data;
19719
- }else if(rsp.vcode === 1){
19720
- //-----------your code 2-----------
19721
- }
19722
- },(error:any)=>{
19723
- console.log('error', error)
19724
- })
19725
- * @param email
19726
- * @param password
19727
- * @param info : thông tin của enduser
19728
- * @return Promise object => rsp = {vcode, msg, data}
19729
- * vcode == 0: User account registered successful
19730
- * vcode == 1: User Email already exists
19731
- * @notice : sau khi đăng ký thành công, người dùng phải vào email xác nhận xác nhận việc đăng ký này
19732
- */
19733
- signupEndUser_byEmail(database: string, email: string, password: string, info: object): Promise<any>;
19734
- /**
19735
- * @example:
19736
- * this.vhDesignAutoWeb.signinEndUser_byEmail('salesf110@gmail.com','h674567')
19737
- .then(response=>{
19738
- console.log('response', response);
19739
- if(response.vcode === 0){
19740
- //-----------your code 0-----------
19741
- let user = response.data;
19742
- }else if(response.vcode === 1){
19743
- //-----------your code 1-----------
19744
- }else if(response.vcode === 2){
19745
- //-----------your code 2-----------
19746
- }else if(response.vcode === 3){
19747
- //-----------your code 3-----------
19748
- }else if(response.vcode === 4){
19749
- //-----------your code 4-----------
19750
- }
19751
- },(error:any)=>{
19752
20610
  console.log('error', error)
19753
- })
19754
- * @param email
19755
- * @param password
19756
- * @return Promise object => response = {vcode, msg, data}
19757
- * vcode == 0: Signed in successfully
19758
- * vcode == 1: Wrong email
19759
- * vcode == 2: Please login into your email to confirm your account on my website or APP
19760
- * vcode == 3: Please reset your password
19761
- * vcode == 4: Wrong password
19762
- */
19763
- signinEndUser_byEmail(database: string, email: string, password: string): Promise<any>;
20611
+ })
20612
+ * @param colname
20613
+ * @param query
20614
+ * @param projection đang tìm hiểu, tạm thời để giá trị là {}
20615
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
20616
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
20617
+ * @param page null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
20618
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
20619
+ * vcode == 0: success
20620
+ * vcode == 11: 'not logged in'
20621
+ */
20622
+ admin_dynamic_getDocs_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19764
20623
  /**
19765
- * @example:
19766
- * this.vhDesignAutoWeb.onAuthStateChangedEndUser()
19767
- .then(response=>{
19768
- console.log('response', response);
19769
- if(response.vcode === 0){
19770
- //-----------your code 0-----------
19771
- let user = response.data;
19772
- }else if(response.vcode === 1){
19773
- //-----------your code 1-----------
19774
- }else if(response.vcode === 2){
19775
- //-----------your code 2-----------
19776
- }else if(response.vcode === 3){
19777
- //-----------your code 3-----------
19778
- }else if(response.vcode === 4){
19779
- //-----------your code 4-----------
20624
+ * @example:
20625
+ * this.vhDesignAutoWeb.enduser_dynamic_addDoc('atw_pages',{name:name: 'Quảng cáo 1'})
20626
+ .then((rsp)=>{
20627
+ if(rsp.vcode === 0){
20628
+ console.log('enduser_dynamic_addDoc', rsp.data);
19780
20629
  }
19781
- },(error:any)=>{
19782
- console.log('error', error)
20630
+ }, error=>{
20631
+ console.log('error', error);
19783
20632
  })
19784
- * @return Promise object => response = {vcode, msg}
19785
- * vcode == 0: Signed in successfully
19786
- * vcode == 1: wrong access_token->email
19787
- * vcode == 2: wrong access_token->password
19788
- * vcode == 3: Please login into your email to confirm your account on my website or APP
19789
- * vcode == 4: Please reset your password
20633
+ * @param colname
20634
+ * @param data
20635
+ * @return Promise => rsp ={vcode, msg, data(object)} / error
20636
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20637
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20638
+ * vcode == 0: success
20639
+ * vcode == 11: 'not logged in'
19790
20640
  */
19791
- onAuthStateChangedEndUser(database: string): Promise<any>;
19792
- getHostings_byEndUser(database: string): Promise<any>;
19793
- /**
19794
- * vhDesignAutoWeb
19795
- * @param hosting
19796
- * @returns
19797
- */
19798
- createHosting_byEndUser(hosting: string): Promise<any>;
19799
- removeHosting_byEndUser(hosting: string): Promise<any>;
20641
+ enduser_dynamic_addDoc(colname: string, data: object): Promise<unknown>;
19800
20642
  /**
19801
- * @example
19802
- * this.vhDesignAutoWeb.signoutEndUser();
19803
- * @return void
19804
- */
19805
- signoutEndUser(database: string): void;
20643
+ * @example:
20644
+ * this.vhDesignAutoWeb.enduser_dynamic_updateDoc('categories', '5fb6780ca2148e09806c5b01', {name: 'Quảng cáo 1'})
20645
+ .then((rsp:any)=>{
20646
+ if(rsp.vcode === 0){
20647
+ console.log('enduser_dynamic_updateDoc succeed');
20648
+ }
20649
+ }, error=>{
20650
+ reject(error)
20651
+ })
20652
+ * @param colname
20653
+ * @param id_doc
20654
+ * @param data
20655
+ * @return Promise => rsp ={vcode, msg, data(true or false)} / error
20656
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20657
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20658
+ * vcode == 0: success
20659
+ * vcode == 11: 'not logged in'
20660
+ */
20661
+ enduser_dynamic_updateDoc(colname: string, id_doc: string, value: object): Promise<unknown>;
19806
20662
  /**
19807
- * @example
19808
- * let bool = this.vhDesignAutoWeb.checkSigninEndUser();
19809
- * @return Boolean => true or false
20663
+ * @example:
20664
+ * this.vhDesignAutoWeb.enduser_dynamic_deleteDoc('categories', '5fb67fda87c0f21d484cbdf3')
20665
+ .then((rsp:any)=>{
20666
+ if(rsp.vcode === 0){
20667
+ console.log('enduser_dynamic_deleteDoc succeed');
20668
+ }
20669
+ }, error=>{
20670
+ reject(error)
20671
+ })
20672
+ * @param colname
20673
+ * @param id_doc
20674
+ * @return Promise => response.data ={vcode, msg, data(true or false)} / error
20675
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20676
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20677
+ * vcode == 0: success
20678
+ * vcode == 11: 'not logged in'
19810
20679
  */
19811
- checkSigninEndUser(): any;
20680
+ enduser_dynamic_deleteDoc(colname: string, id_doc: string): Promise<unknown>;
19812
20681
  /**
19813
- * @example:
19814
- * let enduser = this.vhDesignAutoWeb.getlocalEndUser();
19815
- * @return object => obj = {}
20682
+ * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng...
20683
+ * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
20684
+ * @example
20685
+ * this.vhDesignAutoWeb.enduser_dynamic_getDoc('atw_customers', '5fb67fda87c0f21d484cbdf3')
20686
+ .then((rsp)=>{
20687
+ if(rsp.vcode === 0){
20688
+ console.log('enduser_dynamic_getDoc', rsp.data);
20689
+ }
20690
+ },(error:any)=>{
20691
+ console.log('error', error)
20692
+ })
20693
+ * @param colname
20694
+ * @param id_doc
20695
+ * @return Promise => response.data ={vcode, msg, data(object or null)} / error
20696
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20697
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20698
+ * vcode == 0: success
20699
+ * vcode == 11: 'not logged in'
19816
20700
  */
19817
- getlocalEndUser(): any;
20701
+ enduser_dynamic_getDoc(colname: string, id_doc: string): Promise<unknown>;
19818
20702
  /**
19819
- * Hàm này cập nhật thông tin người dùng webapp (người dùng đã nhập vào webapp mới cập nhật được)
19820
- * @example:
19821
- * this.vhDesignAutoWeb.updateEndUser('5fb6780ca2148e09806c5b01', {name:'Nguyễn Văn A'})
20703
+ * @example:
20704
+ * this.vhDesignAutoWeb.enduser_dynamic_getDocs_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
19822
20705
  .then(rsp=>{
19823
- console.log('updateEndUser', rsp);
20706
+ console.log('enduser_dynamic_getDocs_byFields', rsp);
19824
20707
  if(rsp.vcode === 0){
19825
20708
  //-----------your code-----------
20709
+ let products = rsp.data;
19826
20710
  }
19827
20711
  },(error:any)=>{
19828
20712
  console.log('error', error)
19829
20713
  })
19830
- * @param value : object
19831
- * @return Promise => rsp ={vcode, msg, data(undefined)} / error
19832
- * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, giao diện thiết kế dùng thư viện vhDesignAutoWeb
19833
- * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra trả về vcode=11
19834
- * vcode == 0: success
19835
- * vcode == 2: wrong projectname
19836
- */
19837
- updateEndUser(database: string, value: object): Promise<unknown>;
19838
- /**
19839
- * Hàm này xóa email người dùng webapp (người dùng đã nhập vào webapp mới xóa được)
19840
- * @example:
19841
- * this.vhDesignAutoWeb.deleteEndUser()
19842
- .then(response=>{
19843
- console.log('response', response);
19844
- if(response.vcode === 0){
19845
- //-----------your code-----------
19846
- //thoat ra trang chưa đăng nhập
19847
- }
19848
- },(error:any)=>{
19849
- console.log('error', error)
19850
- })
19851
- * @return Promise object => response = {vcode, msg}
19852
- * vcode == 0: Deleted successfully
20714
+ * @param colname
20715
+ * @param query
20716
+ * @param projection đang tìm hiểu, tạm thời để giá trị {}
20717
+ * @param sort null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
20718
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
20719
+ * @return Promise => response.data ={vcode, msg, data(array(object) = [{},{},..])} / error
20720
+ * @notice : hàm này chỉ get được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập, ở giao diện thiết kế dùng thư viện vhDesignAutoWeb
20721
+ * chưa thấy cần thiết kiểm tra bảo mật này nên chưa thêm dòng lệnh kiểm tra và trả về vcode=11
20722
+ * vcode == 0: success
20723
+ * vcode == 11: 'not logged in'
19853
20724
  */
19854
- deleteEndUser(database: string): Promise<unknown>;
20725
+ enduser_dynamic_getDocs_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
19855
20726
  /**
19856
- * Hàm này người thiết kế ở (vhuserweb) tạo tài khoản cho khách hàng của họ ở (vhdevweb)
19857
- * @example:
19858
- * this.vhDesignAutoWeb.signUpWebAppOwner('huyleduc92', '123456', '+84909925359',{})
19859
- .then((owner)=>{
19860
- console.log('signUpWebAppOwner', owner);
20727
+ * @example:
20728
+ * this.vhDesignAutoWeb.enduser_dynamic_getDocs_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
20729
+ .then(response=>{
20730
+ console.log('response', response);
20731
+ if(response.vcode === 0){
20732
+ //-----------your code-----------
20733
+ let products = response.data;
20734
+ }
19861
20735
  },(error:any)=>{
19862
- console.log('error', error);
20736
+ console.log('error', error)
19863
20737
  })
19864
- * @param email
19865
- * @param password
19866
- * @param phoneNumber
19867
- * @param info
19868
- * @return Promise => owner={}
19869
- */
19870
- signUpWebAppOwner(email: string, password: string, phoneNumber: any, info: any): Promise<unknown>;
19871
- detailPage: any;
19872
- detailPage_byScroll: any;
19873
- detailFreeBlock: any;
19874
- /**
19875
- * vhDesignAutoWeb
19876
- * @param _this
19877
- * @param scrollTop
19878
- */
19879
- displayBocksOfPage_byScroll(_this: any, scrollTop: number): void;
19880
- /**
19881
- * vhDesignAutoWeb
19882
- * @param _this
19883
- * @param scrollTop
19884
- * @param refresh
19885
- */
19886
- displayBocksOfPage_byScroll_toEnd(_this: any, scrollTop: number, refresh: boolean): void;
19887
- /**
19888
- * vhDesignAutoWeb
19889
- * @param id_page
19890
- * @returns
19891
- */
19892
- getDetailPage(id_page: any): Promise<unknown>;
19893
- getDetailFreeBlocks(): Promise<unknown>;
19894
- /**
19895
- * vhDesignAutoWeb
19896
- * @param id_block
19897
- * @returns
19898
- */
19899
- getDetailFreeBlock(id_block: any): Promise<unknown>;
19900
- /**
19901
- * vhDesignAutoWeb
19902
- * @param id_block
19903
- * @returns
19904
- */
19905
- getDetailBlock(id_block: any): Promise<unknown>;
19906
- /**
19907
- * vhDesignAutoWeb
19908
- * @param block
19909
- * @returns
19910
- */
19911
- getDetailBlock_byBlock(block: any): Promise<unknown>;
19912
- getDetailObject(id_object: any): Promise<unknown>;
19913
- /**
19914
- * Hàm này trả về 1 object (có đủ thông tin object), trong mỗi object có trường objects (có đủ thông tin từng object)
19915
- * @example
19916
- * this.vhDesignAutoWeb.getDetailObject_byObject('00Tm41GNYN0aYbAtuncH')
19917
- .then((object)=>{
19918
- console.log('getDetailObject', object);
19919
- }, error=>{
19920
- console.log('error', error);
19921
- })
19922
- * @param id_object
19923
- * @return Promise => page = {}
19924
- */
19925
- getDetailObject_byObject(object: any): Promise<unknown>;
19926
- /**
19927
- * vhDesignAutoWeb
19928
- */
19929
- startSocketDatabase(): void;
19930
- private checkModifiedType;
19931
- private addBlockOrObject_fromDetailPage;
19932
- /**
19933
- * Thên Block hoặc Object nhân bản vào detailpage
19934
- */
19935
- private addCloneBlockOrObject_fromDetailPage;
19936
- private deleteCloneBlockOrObject_fromDetailPage;
19937
- private updateBlockOrObject_fromDetailPage;
19938
- private deleteBlockOrObject_fromDetailPage;
19939
- stopSocketDatabase(): void;
19940
- /**
19941
- * @example SET:
19942
- * this.vhDesignAutoWeb.localStorageSET('local_name', {a=1, b='hai'});
19943
- * this.vhDesignAutoWeb.localStorageSET('local_name', 15000);
19944
- * this.vhDesignAutoWeb.localStorageSET('local_name', 'muoi lam nghin dong');
19945
- * this.vhDesignAutoWeb.localStorageSET('local_name', null);
19946
- * @returns
19947
- */
19948
- localStorageSET(name: string, value: any): void;
19949
- /**
19950
- * @example GET:
19951
- * let object = this.vhDesignAutoWeb.localStorageGET('local_name');
19952
- * @returns
19953
- */
19954
- localStorageGET(name: string): any;
19955
- /**
19956
- * @example:
19957
- * this.vhDesignAutoWeb.createIndexes('atw_products', {name_textsearch:'text'})
19958
- .then((obj:any)=>{
19959
- console.log('createIndexes', obj);
19960
- }, error=>{
19961
- reject(error)
19962
- })
19963
20738
  * @param colname
19964
- * @param index
19965
- * @return null or object
20739
+ * @param query
20740
+ * @param projection đang tìm hiểu, tạm thời để giá trị là {}
20741
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
20742
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
20743
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
20744
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
20745
+ * vcode == 0: success
20746
+ * vcode == 11: 'not logged in'
19966
20747
  */
19967
- createIndexes(colname: string, index: any): Promise<unknown>;
20748
+ enduser_dynamic_getDocs_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
19968
20749
  /**
19969
- * @example:
19970
- * this.vhDesignAutoWeb.addBranch({name:'Chi nhánh 2'})
19971
- .then((rsp:any)=>{
20750
+ * Hàm này lấy về dữ liệu động trong database (ko có sẳn trong service(RAM)) như: khách hàng, đơn hàng...
20751
+ * Dữ liệu này quan trọng nên nhân viên quản trị hoặc khách hàng phải đăng nhập mới get về được
20752
+ * @example
20753
+ * this.vhDesignAutoWeb.free_dynamic_getDoc('atw_customers', '5fb67fda87c0f21d484cbdf3')
20754
+ .then((rsp)=>{
19972
20755
  if(rsp.vcode === 0){
19973
- let branch = rsp.data;
20756
+ console.log('free_dynamic_getDoc', rsp.data);
19974
20757
  }
19975
- }, error=>{
19976
- reject(error)
20758
+ },(error:any)=>{
20759
+ console.log('error', error)
19977
20760
  })
19978
- * @param data
19979
- * @return Promise => rsp ={vcode, msg, data(object)} / error
19980
- * @notice : hàm này chỉ add được dữ liệu sau khi khách hàng hoặc nhân viên đã đăng nhập
20761
+ * @param colname
20762
+ * @param id_doc
20763
+ * @return Promise => response.data ={vcode, msg, data(object or null)} / error
20764
+ * @notice : hàm này khách hàng (enduser) hoặc nhân viên (admin) ko đăng nhập vẫn get dữ liệu về đc, dùng hàm lấy dữ liệu về cho người duyệt website xem
19981
20765
  * vcode == 0: success
19982
- * vcode == 11: 'not logged in'
19983
20766
  */
19984
- addBranch(data: any): Promise<unknown>;
19985
- /**
19986
- * @example
19987
- * this.vhDesignAutoWeb.getbranchs()
19988
- .then((branchs)=>{
19989
- console.log('getbranchs', branchs);
19990
- })
19991
- * @return Promise => array(object) = [{},{},..]
19992
- */
19993
- getbranchs(): Promise<unknown>;
20767
+ free_dynamic_getDoc(colname: string, id_doc: string): Promise<unknown>;
19994
20768
  /**
19995
20769
  * @example:
19996
- * let branch = this.vhDesignAutoWeb.getlocalBranch('5fb6780ca2148e09806c5b01');
19997
- * @param id_branch
19998
- * @return Object => obj = {} or null
19999
- */
20000
- getlocalBranch(id_branch: any): any;
20770
+ * this.vhDesignAutoWeb.free_dynamic_getDocs_byFields('webapp_abouts', {name:{$eq:'name abc'}}, {},{},0)
20771
+ .then(rsp=>{
20772
+ console.log('free_dynamic_getDocs_byFields', rsp);
20773
+ if(rsp.vcode === 0){
20774
+ //-----------your code-----------
20775
+ let products = rsp.data;
20776
+ }
20777
+ },(error:any)=>{
20778
+ console.log('error', error)
20779
+ })
20780
+ * @param colname
20781
+ * @param query
20782
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
20783
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
20784
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
20785
+ * @return Promise => response.data ={vcode, msg, data(array(object) = [{},{},..])} / error
20786
+ * @notice : hàm này khách hàng (enduser) hoặc nhân viên (admin) ko đăng nhập vẫn get dữ liệu về đc, dùng hàm lấy dữ liệu về cho người duyệt website xem
20787
+ * vcode == 0: success
20788
+ */
20789
+ free_dynamic_getDocs_byFields(colname: string, query: any, projection?: object, sort?: any, limit?: number): Promise<unknown>;
20001
20790
  /**
20002
20791
  * @example:
20003
- * let branchs = this.vhDesignAutoWeb.getlocalBranchs();
20004
- * @return Array(object) => array = [{},{},...]
20005
- */
20006
- getlocalBranchs(): any[];
20792
+ * this.vhDesignAutoWeb.free_dynamic_getDocs_byFields_byPages('webapp_abouts', {name:{$eq:'name abc'}}, {},{},6,1)
20793
+ .then(response=>{
20794
+ console.log('response', response);
20795
+ if(response.vcode === 0){
20796
+ //-----------your code-----------
20797
+ let products = response.data;
20798
+ }
20799
+ },(error:any)=>{
20800
+ console.log('error', error)
20801
+ })
20802
+ * @param colname
20803
+ * @param query
20804
+ * @param projection — đang tìm hiểu, tạm thời để giá trị là {}
20805
+ * @param sort — null hoặc {}:không sắp xếp; {date:1}: sắp xếp theo ASC; {date:-1}: sắp xếp theo DESC
20806
+ * @param limit — null hoặc 0: không giới hạn record get về; 2: get về 2 record
20807
+ * @param page — null hoặc 0 hoặc 1: get về trang đầu tiên; 2: get về trang thứ 2
20808
+ * @notice : hàm này khách hàng (enduser) hoặc nhân viên (admin) ko đăng nhập vẫn get dữ liệu về đc, dùng hàm lấy dữ liệu về cho người duyệt website xem
20809
+ * @return Promise object => response = {vcode, msg, data(array), limit, page, totalpages}
20810
+ * vcode == 0: success
20811
+ */
20812
+ free_dynamic_getDocs_byFields_byPages(colname: string, query: any, projection?: object, sort?: any, limit?: number, page?: number): Promise<unknown>;
20007
20813
  /**
20008
20814
  * @example:
20009
20815
  * this.vhDesignAutoWeb.dynamic_addDoc_fromDatabase('atw_pages',{name:name: 'Quảng cáo 1'})