RestApi Yii dengan Foxpro

November 3, 2016

Yaa langsung aja yaa, kita tau sendiri lah sekarang era informasi terbuka,akses informasi bisa dimana saja, salah satu pintu akses informasi yaitu penggunaan webservice atau RestApi, yang mana fungsinya adalah menjembatani antara server dengan client untuk mendapatkan informasi dengan berbagai platform berbeda :), naa kali ini saya mencoba menggunakan foxpro sebagai clientnya yang mana data yg diolah sudah matang artinya siap untuk di push kedalam server ,initnya aplikasi client adalah pengolahaan data akhir dan server menerima data akhirnya saja yang mana data itu akan di tampilkan baik menggunakan browser atau mobile , Ok langsung aja yaa, saya gunakan Yii versi 2 2.10 untuk membangun restApinya 🙂 yang mana alur flownya adalah, client akan mengirimkan username dan password kemudian server akan memberikan token , dan client akan menggunakan token untuk mengirimkan data ke server, keuntungan menggunakan token adalah demi keamanan jadi tidak semua bisa akses bebas kecuali ada izin , informasi juga harus dilindungi demi keamanan data krn sifatnya publik , dibutuhkan MOU kalau mau :D,OK

pertama, saya asumsikan udah pahamlah penggunakan Yii 2 terutama Gii nya 🙂  untuk tutorialnya membangun Api bisa tengok disini aja

http://budiirawan.com/setup-restful-api-yii2/

http://lab-informatika.com/script/23/yii2-membuat-restful-web-service

yaa pinter pinter aja lah 😀

biar ga cape jelasinya saya 😀 intinya sama aja

kedua, krn tujuan saya mempust data, yaa saya menggunakan Update , untuk mengubah data yang sudah ada, Method yang di gunakan pun adalah PUT 🙂 bisa di tengok di User Guide Yii2 😀

sintaknya

yiijson

ketiga , sintak di foxpro sendiri, pertama kita dapatkan token dulu

token

keempat, buat json dari cursor


CREATE CURSOR mData (kode C(10),nama C(20))
INSERT INTO mData values('11','Adi')
INSERT INTO mData values('22','Sadi')
INSERT INTO mData values('33','Tadi')
INSERT INTO mData values('44','Ladi')
INSERT INTO mData values('55','Badi')

json

hasilnya

datajson

kelima, encode json tadi ke base64


*/
* Convert ke base64
*/

lcDataJson = STRCONV(lcDataJson,13)

keenam, masukkan kedalam post, dan gunakan token tadi dan method yang digunakan ada PUT

dataawal

dan hasilnya

dataakhir

gimana OK kan hehe 🙂 initinya dengan mengunakan RestApi ,platform apapun bisa dengan mudah mendapatkan informasi yang terupdate 🙂

btw untuk json di foxpro saya pake disini

https://vfpx.codeplex.com/wikipage?title=nfJson&referringTitle=Home

Ok sekian dan terima kasih, selamat berkarya master (y)


Ribbon Foxpro dengan codejock

November 1, 2016

langsung aja yaa

capture

naa cara pengunaanya kita pake ocx dari codejock, bisa cari digoogle deh,

pertama, registrasi dulu ocxnya via run administrator, pastikan juga file .lic dalam 1 folder

kedua, pada form drag drop objectnya

capture

ketiga, bikin method dalam form kasih nama misalkan createribbon, sintaknya


Public TabWrite As RibbonTab, GroupFont As RibbonGroup, Control As CommandBarControl
Public GroupClipborad As RibbonGroup, ControlPopup As CommandBarPopup

Public RibbonBar As RibbonBar
RibbonBar = Thisform.CommandBars.AddRibbonBar("Ribbon Bar")

RibbonBar.EnableDocking(1)

Public ControlFile As CommandBarPopup
ControlFile = RibbonBar.Controls.Add(2, -1, "&File", 1)
With ControlFile.CommandBar.Controls
.Add(1, 11, "&New")
.Add(1, 12, "&Open...")
Control = .Add(1, 13, "E&xit")
Control.BeginGroup = .T.
Endwith
*/Menu 1
TabWrite = RibbonBar.InsertTab(0, "Menu Master")
*/SubMenu 1.1
GroupClipborad = TabWrite.Groups.AddGroup("Tabel Referensi",1)
ControlPaste = GroupClipborad.Add(4, 111, "Ref Buku")
ControlPaste.CommandBar.Controls.Add(1, 112, "Ref Guru")
ControlPaste.CommandBar.Controls.Add(1, 113, "Ref Kelas")
GroupClipborad.Add(1,114, "Ref Buku")
GroupClipborad.Add(1, 115, "Ref Buku Lagi")
Control = GroupClipborad.Add(1, 116, "Ref Kelas Lagi")
Control.Enabled =.F.

*/SubMenu 1.2
GroupFont = TabWrite.Groups.AddGroup("&Font",1)
GroupFont.Add(1, 211, "Color")
Control = GroupFont.Add(1, 212, "&Bold")
Control.BeginGroup = .T.
GroupFont.Add(1, 213, "&Italic")
GroupFont.Add(1, 214, "&Underline")
Control = GroupFont.Add(1, 215, "Strikethrough")
Control.Enabled = .F.
Control = GroupFont.Add(1, 216, "Subscript")
Control.Enabled = .F.
Control = GroupFont.Add(1, 217, "Superscript")
Control.Enabled = .F.

*/ Menu 2
TabInsert = RibbonBar.InsertTab(1, "&Insert")
*/SubMenu 2.1
GroupPages = TabInsert.Groups.AddGroup("&Pages",1)
ControlNew = GroupPages.Add(4, 100, "&New Page")
ControlNew.CommandBar.Controls.Add( 1, 101, "&Blank Page")
ControlNew.CommandBar.Controls.Add (1, 108, "&Save Selection as New Page")
ControlCover = GroupPages.Add(4, 108, "Cover Page")
ControlCover.DescriptionText = "Insert a fully-formatted cover page. You fill in the title, author, date, and other information."
ControlCover.CommandBar.Controls.Add (1, 108, "&Remove Current Cover Page")
ControlCover.CommandBar.Controls.Add (1, 108, "&Save Selectio as New Cover Page")
GroupPages.Add(1, 111, "Page Break")

*/SubMenu 2.2
GroupTable = TabInsert.Groups.AddGroup("&Table",2)
ControlTable = GroupTable.Add(3, 108, "&Table")
ControlTable.CommandBar.Controls.Add( 1, 108, "&Inset Table..")
ControlTable.CommandBar.Controls.Add (1, 108, "Dra&w Table")
ControlTable.CommandBar.Controls.Add (1, 108, "Con&vert Text to Table...")
Tabwrite.Selected = .T.

Thisform.Loadicon

naa disana ada sintax .Add( 1, 101, “&Blank Page”), yang mana 1 adalah xtpButtonDropDown, bisa dlihat di object browser

capture

sedangkan 101 adalah id, parameter selanjutnya adalah nama/caption menunya,ok

keempat, cara menambahkan icon di menu, tambahakn method dengan nama loadicon, sintaknya


thisform.CommandBars.Options.UseSharedImageList = .F.
thisform.CommandBars.Icons.LoadIcon("E:\cobacoba\MenuBar\GroupPopup.ico",11,0)
thisform.CommandBars.Icons.LoadIcon("E:\cobacoba\MenuBar\menu.ico",211,0)

penjelasanya singkatnya Icons.LoadIcon(“E:\cobacoba\MenuBar\GroupPopup.ico”,11,0) parameter pertama itu pathnya icon, parameter kedua, id menu yang tadi, sedangkan 0 adalah  xtpImageNormal silahkan cek di object browser

kelimat, untuk execute jika kita klik menu, terletak di method execute yang ada di object commandbarcapture

naa control.id, id disana adalah id yang ada di button menu nya jadi sesuaikan saja kawan 😀

klo mau sampelnya silahkan https://www.mediafire.com/?p5mwi58wr8sujp6 , HANYA UNTUK PEMBELAJARAN SAJA , SILAHKAN BELI PRODUKNYA http://www.codejock.com/

 


Membuat Sisa Waktu di Progressbar Foxpro

Oktober 24, 2016

OK langsung aja yaa, hemat kouta syukur syukur ada yang isikan :D, jadi begini penampakannya

1

2

OK caranya begini,

pertama,  tambahkan label dengan nama lblTimeRem kemudian bikin properti dalam form, kasih nama nreportinternal,nstart,ntoprosess, semuanya value kosong(none)

kedua, bikin method , kasih nama prosestime, naa sintaxnya


lParameters tnProcessed

local lnUnitsRemaining,lnTimePerUnit,;
lnSecondsRemaining,lnFractHours,;
lnHrs,lnMin,lnSec

lnElapsed = seconds() - this.nStart

if mod(tnProcessed,this.nReportInterval) = 0
lnUnitsRemaining = this.nToProcess - tnProcessed
lnTimePerUnit = lnElapsed/tnProcessed
lnSecondsRemaining = lnTimePerUnit * lnUnitsRemaining
lnHrs = int(lnSecondsRemaining/3600)
lnFractHours = mod(lnSecondsRemaining,3600)
lnMin = int(lnFractHours/60)
lnSec = mod(lnFractHours,60)


pcTimeRemaining = iif(lnHrs>0,padl(alltrim(str(lnHrs)),3);
+ iif(lnHrs>1,' Jam ',' Jam'),'');
+ iif(lnMin>0,padl(alltrim(str(lnMin)),2);
+ iif(lnMin>1,' Menit ',' Menit'),'');
+ iif(lnSec>0,padl(alltrim(str(lnSec)),2);
+ iif(lnSec>1,' Detik ',' Detik'),'')




this.lblTimeRem.Caption = 'Sisa Waktu :' + IIF(EMPTY(alltrim(pcTimeRemaining)),'Selesai',alltrim(pcTimeRemaining))

endif

cara pakainya, misalkan dalam commandbotton


CREATE CURSOR mData(cNama C(100))
i=0
FOR i=1 TO 100000
lcNama ="ABCDEF"+PADL(ALLTRIM(STR(i)),2,'0')

INSERT INTO mData value(lcNama)
ENDFOR

thisform.nstart=SECONDS()
thisform.nreportinterval=1
nJumlah=RECCOUNT("mData")
thisform.ntoprocess=nJumlah
i=0
SELECT mData
SCAN
i=i+1
lnvalue = INT((i/nJumlah)*100)
thisform.Progressbar1.value=lnValue
thisform.prosestime(i)
ends

Naa OK jalankan deh 🙂 selamat mencoba kawan, moga sukses, long live foxpro :*


Fix error error:14090086 Swiftmailer di Yii 2

Oktober 22, 2016

berikut error lengkapnya

capture

naa fixnya, tambahkan sintax ini


'mail' => [
'class' => 'yii\swiftmailer\Mailer',

...

...
'streamOptions'=>['ssl'=>
               ['allow_self_signed'=>true,
                    'verify_peer'=>false,
                    'verify_peer_name'=>false,
                ]
            ]
],

OK Moga sukses kawan 😀


[Yii 2]Menampilkan dan Input tanggal ke Mysql

Oktober 11, 2016

OK langsung aja yaa, naa biasanya klo mau menginputkan tanggal di mysql format standar mysql adalah yyyy-mm-dd , sedangkan inputan kita tanggal di halaman web formatnya dd-mm-yyyy , dan juga biasanya kalau menampilkan tanggal dari database yang muncul formatnya yyyy-mm-dd bukan dd-mm-yyyy, maka dari itu kita harus mengubahnya di model , berikut sintaxnya


public function afterFind ()
{
// Tampil dengan format DMY
$this->tanggal = strtotime ($this->tanggal);
$this->tanggal = date ('d-m-Y', $this->tanggal);

parent::afterFind ();
}

public function beforeValidate ()
{
// simpan dengan format YMD
$this->tanggal = strtotime ($this->tanggal);
$this->tanggal = date ('Y-m-d', $this->tanggal);

return parent::beforeValidate ();
}

Ok tarus sintak itu di model yang ada field tanggalnya 🙂 ok mg sukses selalu buat kalian 🙂