@@ -304,18 +304,50 @@ func (l *Luca) GetPageByUrl(url string) (*rod.Page, error) {
return allPages . FindByURL ( "https://auygs.luca.com.tr/Luca/luca.do" )
}
func ( l * Luca ) BordroTableMaping ( frame * rod . Page , b * LucaBordro ) ( string , error ) {
table := frame . Must Elements( ".i2" )
for t : = 2 ; t < len ( table ) ; t += 2 {
// Satı rı n özelliklerini al
class , _ := table [ t ] . Attribute ( "class" )
if t == 89 {
func ( l * Luca ) BordroTableMaping ( frame * rod . Page , b * LucaBordro ) ( [ ] BordroPageScript , error ) {
table , err := frame . Elements ( "#scroll > div > table > tbody > tr > td > table > tbody > tr > td" ) //table kontrol et var mı yok mu diye
if err ! = nil {
return nil , err
}
//table := frame.MustElements(".i2")
var mainText string
for t := 0 ; t < len ( table ) ; t ++ {
if t == 150 {
fmt . Print ( "asda" )
}
id , _ := table [ t + 1 ] . Attribute ( "id " )
inputElement , err := table [ t ] . Element ( "input " )
text , err := table [ t ] . Text ( )
fmt . Print ( mainText )
if text != "" {
mainText = text
}
if inputElement != nil {
if mainText != "" {
fmt . Print ( t )
inputElement , err := table [ t + 1 ] . Element ( "input" )
if inputElement == nil {
mainText = ""
fmt . Print ( "Hatalı Text" )
continue
}
id , err := inputElement . Attribute ( "id" )
fmt . Print ( err )
pageScript := BordroPageScript {
Value : text ,
Index : * id ,
}
scriptIndexArray = append ( scriptIndexArray , pageScript )
fmt . Println ( "Text:" , text )
fmt . Println ( "ID:" , * id )
fmt . Println ( "--------------------" )
mainText = ""
}
}
// Satı rı n özelliklerini al
// Satı rı n textini al
text , err := table [ t ] . Text ( )
fmt . Print ( err )
@@ -343,31 +375,10 @@ func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) (string, error)
// }
// Sonuçları yazdı r ///text boşsa id de boş oluyo
Id := ""
if id != nil {
Id = * id
fmt . Println ( "ID:" , * id )
} else {
Id = ""
}
if text == "" {
text = "boş Text"
}
pageScript := BordroPageScript {
Value : text ,
Index : Id ,
}
scriptIndexArray = append ( scriptIndexArray , pageScript )
fmt . Println ( "Text:" , text )
fmt . Println ( "Class:" , class )
fmt . Println ( "ID:" , Id )
fmt . Println ( "--------------------" )
}
return "" , nil
return scriptIndexArray , nil
}
func ( l * Luca ) BordroYazPage ( month , year int , b * LucaBordro ) error {
func ( l * Luca ) PayrollPageLogin ( ) error {
newPage , err := l . GetPageByUrl ( "https://auygs.luca.com.tr/Luca/luca.do" )
if err != nil {
return err
@@ -387,6 +398,7 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
if err != nil {
return err
}
Wait ( newPage , 200 )
err = ClickItem ( frame , "#apy1000m0i1ITD" , 1 )
if err != nil {
return err
@@ -401,11 +413,27 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
return err
}
Wait ( newPage , 1500 )
err = WaitLoad ( frame3 )
if err != nil {
return err
}
return err
}
func ( l * Luca ) BordroYaz ( month , year int , b * LucaBordro ) ( [ ] string , error ) {
newPage , err := l . GetPageByUrl ( "https://auygs.luca.com.tr/Luca/luca.do" )
if err != nil {
return nil , err
}
fs3 , err := newPage . Element ( "#frm3" )
if err != nil {
return nil , err
}
frame3 , err := fs3 . Frame ( )
err = newPage . WaitLoad ( )
if err != nil {
return nil , err
}
isyeriId := ""
bolumId := ""
bordroCompanySelectBox , err := frame3 . Elements ( "#isyeriId > option" )
@@ -413,37 +441,39 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
text , err := bordroCompanySelectBox [ j ] . Text ( )
value , err := bordroCompanySelectBox [ j ] . Property ( "value" )
if err != nil {
return err
return nil , err
}
if strings . Trim ( text , " " ) == b . Sube { //.Sube.Value
isyeriId = value . String ( )
break
}
fmt . Print ( text , value )
}
element , err := frame3 . Element ( "#isyeriId" )
element . WaitLoad ( )
if err != nil {
return err
return nil , err
}
selectInput := Select { Element : element , Selector : "#isyeriId" }
err = selectInput . SelectItem ( isyeriId )
if err != nil {
return err
return nil , err
}
err = WaitLoad ( frame3 )
if err != nil {
return err
return nil , err
}
bordroDepartmentSelectBox , err := frame3 . Elements ( "#bolumId > option" )
element , err = frame3 . Element ( "#bolumId > option" )
element . WaitLoad ( )
if err != nil {
return err
return nil , err
}
for j := 0 ; j < len ( bordroDepartmentSelectBox ) ; j ++ {
text , err := bordroDepartmentSelectBox [ j ] . Text ( )
value , err := bordroDepartmentSelectBox [ j ] . Property ( "value" )
if err != nil {
return err
return nil , err
}
if strings . Trim ( text , " " ) == b . Bolum { //.Bolum.Value
bolumId = value . String ( )
@@ -454,39 +484,39 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
element , err = frame3 . Element ( "#bolumId" )
if err != nil {
return err
return nil , err
}
selectInput = Select { Element : element , Selector : "#bolumId" }
err = selectInput . SelectItem ( bolumId )
if err != nil {
return err
return nil , err
}
err = WaitLoad ( frame3 )
if err != nil {
return err
return nil , err
}
err = ClickItem ( frame3 , "#tr" + strconv . FormatFloat ( float64 ( month ) , 'f' , - 1 , 64 ) + " > td:nth-child(1)" , 2 ) //aktarı m ayı
if err != nil {
return err
return nil , err
}
err = WaitLoad ( frame3 )
if err != nil {
return err
return nil , err
}
var isEmpty bool = false
//var targetID string
elems , err := frame3 . Elements ( "#scroll > table > tbody > tr > td[id^='tcKimlikNo']" )
if err != nil {
return err
return nil , err
}
elemsProcess , err := frame3 . Elements ( "#scroll > table > tbody > tr > td > a" )
if err != nil {
return err
return nil , err
}
trs , err := frame3 . Elements ( "#scroll > table > tbody > tr" )
if err != nil {
return err
return nil , err
}
var foundIndex int = - 1
if len ( elems ) == 0 {
@@ -495,15 +525,24 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
Index : 1 ,
}
pageErrors = append ( pageErrors , isEmptyError . Error + ", Index: " + strconv . Itoa ( isEmptyError . Index ) )
err = ClickItem ( frame3 , "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)" , 1 )
if err != nil {
return nil , err
}
err = WaitLoad ( frame3 )
if err != nil {
return nil , err
}
return pageErrors , err
}
for j := 0 ; j < len ( elems ) ; j ++ {
tex , err := elems [ j ] . Text ( )
if err != nil {
return err
return nil , err
}
process , err := elemsProcess [ j ] . Text ( )
if err != nil {
return err
return nil , err
}
if tex == b . TcNo { //.TCKimlikNo.Value
foundIndex = j
@@ -520,316 +559,107 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
Index : 1 ,
}
pageErrors = append ( pageErrors , isEmptyError . Error + ", Index: " + strconv . Itoa ( isEmptyError . Index ) )
err = ClickItem ( frame3 , "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)" , 1 )
if err != nil {
return nil , err
}
err = WaitLoad ( frame3 )
if err != nil {
return nil , err
}
return pageErrors , err
}
if foundIndex != - 1 {
if foundIndex != - 1 && isEmpty == false {
trs [ foundIndex ] . Click ( proto . InputMouseButtonLeft , 2 )
}
Wait ( newPage , 1500 )
err = WaitLoad ( frame3 )
if err != nil {
return err
return nil , err
}
for k , v := range b . Ucretler {
fmt . Print ( v , k )
//table'da key--> k i bul,
//takip eden ilk td'deki ilk input'a v'yi yaz
//table'da k'yi bulmazsan ve v de değer varsa hata dön
}
rsp , err := l . BordroTableMaping ( frame3 , b )
if len ( rsp ) == 0 {
//hata ver
}
fmt . Print ( rsp )
//rsp den dönden değerler ile matchlencek ve yazı lcak
for k , v := range b . Ucretler {
fmt . Print ( v , k )
//table'da key--> k i bul,
//takip eden ilk td'deki ilk input'a v'yi yaz
//table'da k'yi bulmazsan ve v de değer varsa hata dön
// if strings.Contains(text, k) {
// Id := ""
// if id != nil {
// Id = *id
// fmt.Println("ID:", *id)
// } else {
// Id = ""
// }
// pageScript := BordroPageScript{
// Value: text,
// Index: Id,
// }
for i := 0 ; i < len ( rsp ) ; i ++ {
if k == rsp [ i ] . Value {
// scriptIndexArray = append(scriptIndexArray, pageScript )
// break
// }
el , err := frame3 . Element ( "#" + rsp [ i ] . Index )
if err != nil {
return nil , err
}
err = el . Input ( v . String ( ) )
}
}
fmt . Print ( v , k )
}
err = ClickItem ( frame3 , "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button" , 1 )
if err != nil {
return nil , err
}
saveButtonMessage , err := ReceiveDOMMessages ( frame3 , ".alert-container" , "innerText" )
if err != nil {
return nil , err
}
if saveButtonMessage != "Bordro hesaplanı yor." {
isEmptyError := errorInfo {
Error : saveButtonMessage ,
Index : 1 ,
}
pageErrors = append ( pageErrors , isEmptyError . Error + ", Index: " + strconv . Itoa ( isEmptyError . Index ) )
newBordroPage , err := frame3 . Element ( "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)" )
newBordroPage . WaitLoad ( )
if err != nil {
return nil , err
}
newBordroPage . Click ( proto . InputMouseButtonLeft , 1 )
err = WaitLoad ( frame3 )
if err != nil {
return nil , err
}
err = ClickItem ( frame3 , "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)" , 1 )
if err != nil {
return nil , err
}
return pageErrors , err
}
// for i := 0; i < len(row); i++ {
// if i != 0 {
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
// if err != nil {
// return err
// }
// }
err = WaitLoad ( frame3 )
if err != nil {
return nil , err
}
newBordroPage , err := frame3 . Element ( "body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)" )
newBordroPage . WaitLoad ( )
if err != nil {
return nil , err
}
newBordroPage . Click ( proto . InputMouseButtonLeft , 1 )
err = WaitLoad ( frame3 )
if err != nil {
return nil , err
// table := frame3.MustElements(".i2")
}
err = ClickItem ( frame3 , "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)" , 1 )
// // Tablodaki tüm satı rları al
// // trss := table.MustElements("tr")
if err != nil {
return nil , err
// // Satı rları döngü ile işleyerek textleri ve diğer özellikleri al
// // for t := 0; t < len(table); t++ {
// // // Satı rı n özelliklerini al
// // class, _ := table[t].Attribute("class")
// // id, _ := table[t+1].Attribute("id")
}
// // // Satı rı n textini al
// // text := table[t].MustText()
// // fmt.Println("Text:", text)
// // fmt.Println("Class:", *class)
// // if id != nil {
// // fmt.Println("ID:", *id)
// // }
// // fmt.Println("-----------------------------")
// // }
// elements := frame3.MustElements(".i2")
// // Elementleri döngü ile işleyerek metinleri ve selectorları al
// var textsAndSelectors [][]string
// for _, el := range elements {
// // Elementin metnini al
// text := el.MustText()
// // Elementin selectorunu al
// selector := el.MustEval(`s => {
// var path = "";
// for (; s && s.nodeType == Node.ELEMENT_NODE; s = s.parentNode)
// {
// idx = getElementIdx(s);
// xname = s.localName.toLowerCase();
// path = "/" + xname + "[" + idx + "]" + path;
// }
// return path;
// }`).String()
// textsAndSelectors = append(textsAndSelectors, []string{text, selector})
// }
// // Sonuçları yazdı r
// for _, item := range textsAndSelectors {
// fmt.Println("Text:", item[0])
// fmt.Println("Selector:", item[1])
// }
// //row[i].FillBordroForm(frame3)
// //err yoksa hesapla ba
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
// if err != nil {
// log.Fatal(err)
// }
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// newBordroPage, err := frame3.Element("body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
// if err != nil {
// return err
// }
// newBordroPage.Click(proto.InputMouseButtonLeft, 1)
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// }
return err
return pageErrors , err
}
// func (l *Luca) BordroYaz(data []*model.Bordro, month float64, year float64) error {
// page := l.Page
// allPages, err := page.Browser().Pages()
// if err != nil {
// return err
// }
// newPage, err := allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
// if err != nil {
// return err
// }
// fs3, err := newPage.Element("#frm3")
// if err != nil {
// return err
// }
// frame3, err := fs3.Frame()
// err = newPage.WaitLoad()
// if err != nil {
// return err
// }
// for i := 0; i < len(data); i++ {
// if i != 0 {
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
// if err != nil {
// return err
// }
// }
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// isyeriId := ""
// bolumId := ""
// bordroCompanySelectBox, err := frame3.Elements("#isyeriId > option")
// for j := 0; j < len(bordroCompanySelectBox); j++ {
// text, err := bordroCompanySelectBox[j].Text()
// value, err := bordroCompanySelectBox[j].Property("value")
// if err != nil {
// return err
// }
// if strings.Trim(text, " ") == data[i].Sube.Value {
// isyeriId = value.String()
// break
// }
// fmt.Print(text, value)
// }
// element, err := frame3.Element("#isyeriId")
// if err != nil {
// return err
// }
// selectInput := Select{Element: element, Selector: "#isyeriId"}
// err = selectInput.SelectItem(isyeriId)
// if err != nil {
// return err
// }
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// bordroDepartmentSelectBox, err := frame3.Elements("#bolumId > option")
// if err != nil {
// return err
// }
// for j := 0; j < len(bordroDepartmentSelectBox); j++ {
// text, err := bordroDepartmentSelectBox[j].Text()
// value, err := bordroDepartmentSelectBox[j].Property("value")
// if err != nil {
// return err
// }
// if strings.Trim(text, " ") == data[i].Bolum.Value {
// bolumId = value.String()
// break
// }
// fmt.Print(text, value)
// }
// element, err = frame3.Element("#bolumId")
// if err != nil {
// return err
// }
// selectInput = Select{Element: element, Selector: "#bolumId"}
// err = selectInput.SelectItem(bolumId)
// if err != nil {
// return err
// }
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// aktarimDonem := strconv.FormatFloat(month, 'f', -1, 64)
// err = ClickItem(frame3, "#tr"+aktarimDonem+" > td:nth-child(1)", 2)
// if err != nil {
// log.Fatal(err)
// }
// personel := data[i].TCKimlikNo //"54853109724"
// fmt.Println(personel)
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// var isEmpty bool = false
// //var targetID string
// elems, err := frame3.Elements("#scroll > table > tbody > tr > td[id^='tcKimlikNo']")
// if err != nil {
// return err
// }
// elemsProcess, err := frame3.Elements("#scroll > table > tbody > tr > td > a")
// if err != nil {
// return err
// }
// trs, err := frame3.Elements("#scroll > table > tbody > tr")
// if err != nil {
// return err
// }
// var foundIndex int = -1
// if len(elems) == 0 {
// isEmptyError := errorInfo{
// Error: "Böyle Bir Kullanı cı Bulunamadı ",
// Index: i,
// }
// pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
// continue
// }
// for j := 0; j < len(elems); j++ {
// tex, err := elems[j].Text()
// if err != nil {
// return err
// }
// process, err := elemsProcess[j].Text()
// if err != nil {
// return err
// }
// if tex == data[i].TCKimlikNo.Value {
// foundIndex = j
// if process == "Bordro Sil" {
// isEmpty = true
// }
// break
// }
// fmt.Print(elems, tex)
// }
// if isEmpty == true {
// isEmptyError := errorInfo{
// Error: "Yazı lı Bordro Var Lütfen Siliniz",
// Index: i,
// }
// pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
// continue
// }
// if foundIndex != -1 {
// trs[foundIndex].Click(proto.InputMouseButtonLeft, 2)
// }
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// data[i].FillBordroForm(frame3)
// //err yoksa hesapla ba
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
// if err != nil {
// log.Fatal(err)
// }
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// newBordroPage, err := frame3.Element("body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
// if err != nil {
// return err
// }
// newBordroPage.Click(proto.InputMouseButtonLeft, 1)
// err = WaitLoad(frame3)
// if err != nil {
// return err
// }
// }
// CloseBrowser(l.Browser)
// return err
// }
// func (l *Luca)pageInsert(data, b* model.PageStruct){