project flow completed

This commit is contained in:
hysn99
2024-04-15 14:50:36 +03:00
parent a5612d6d9e
commit bfcb484104
9 changed files with 143 additions and 58 deletions

View File

@@ -11,6 +11,8 @@ import (
"strings"
"time"
"github.com/shopspring/decimal"
"github.com/go-rod/rod"
"github.com/go-rod/rod/lib/launcher"
"github.com/go-rod/rod/lib/proto"
@@ -28,8 +30,9 @@ type errorInfo struct {
Index int
}
type BordroPageScript struct {
Index string
Value string
Index string
Value string
itemType string
}
func (l *Luca) ErrFunc(index bool) {
@@ -121,7 +124,7 @@ func VerifyCaptcha(page *rod.Page) error {
}
func NewLucaBot() *Luca {
l := launcher.New().
Headless(false).
Headless(true).
Devtools(true)
//defer l.Cleanup()
@@ -334,37 +337,49 @@ func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) ([]BordroPageSc
fmt.Print(err)
pageScript := BordroPageScript{
Value: text,
Index: *id,
Value: text,
Index: *id,
itemType: "input",
}
scriptIndexArray = append(scriptIndexArray, pageScript)
fmt.Println("Text:", text)
fmt.Println("ID:", *id)
fmt.Println("--------------------")
mainText = ""
}
} else {
if t <= len(table)-2 {
if text != "" {
aad, err := table[t+1].Element("input")
inputBox, err := table[t+1].Element("input")
selectBox, err := table[t+1].Element("select")
fmt.Print(err)
if aad != nil {
aa, err := aad.Attribute("type")
if inputBox != nil {
types, err := inputBox.Attribute("type")
if err != nil {
return nil, err
}
if *aa != "hidden" {
id, err := aad.Attribute("id")
if *types != "hidden" {
id, err := inputBox.Attribute("id")
pageScript := BordroPageScript{
Value: text,
Index: *id,
Value: text,
Index: *id,
itemType: "input",
}
scriptIndexArray = append(scriptIndexArray, pageScript)
fmt.Print(aad, err, id, aa)
fmt.Print(inputBox, err, id, types)
}
} else if selectBox != nil {
id, err := selectBox.Attribute("id")
if err != nil {
return nil, err
}
pageScript := BordroPageScript{
Value: text,
Index: *id,
itemType: "selectBox",
}
scriptIndexArray = append(scriptIndexArray, pageScript)
}
mainText = ""
}
}
@@ -590,22 +605,56 @@ func (l *Luca) BordroYaz(month, year int, b *LucaBordro, lastItem bool) error {
}
fmt.Print(rsp)
//rsp den dönden değerler ile matchlencek ve yazılcak
firsts := make(map[string]decimal.Decimal)
if value, ok := b.Ucretler["Normal Gün"]; ok {
// Anahtarı ve değeri yeni map'e ekle
firsts["Normal Gün"] = value
}
for k, v := range firsts {
fmt.Print(v)
for i := 0; i < len(rsp); i++ {
if k == rsp[i].Value {
el, err := frame3.Element("#" + rsp[i].Index)
if err != nil {
return err
}
err = el.Input(v.String())
el.Eval(`this.dispatchEvent(new KeyboardEvent('keydown', {'key': 'Enter'}))`)
break
}
}
break
}
for k, v := range b.Ucretler {
var elementInsertControl bool = true
tt := v.String()
fmt.Print(tt)
if k == "Normal Gün" {
continue
}
Wait(frame3, 100)
for i := 0; i < len(rsp); i++ {
if k == rsp[i].Value {
if rsp[i].itemType == "selectBox" {
elemBox, err := frame3.Element("#" + rsp[i].Index)
if err != nil {
return err
}
selectInput = Select{Element: elemBox, Selector: "#" + rsp[i].Index}
err = selectInput.SelectItem(v.String())
if err != nil {
return err
}
elementInsertControl = false
break
}
el, err := frame3.Element("#" + rsp[i].Index)
if err != nil {
return err
}
err = el.Input(v.String())
elementInsertControl = false
//el.Eval(`this.dispatchEvent(new KeyboardEvent('keydown', {'key': 'Enter'}))`)
break
}
}
@@ -628,8 +677,6 @@ func (l *Luca) BordroYaz(month, year int, b *LucaBordro, lastItem bool) error {
return errors.New(k + " Sütunu Bulunamadı Taslak Hatası, ")
}
}
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 {

View File

@@ -5,6 +5,7 @@ import (
)
type Company struct {
Id int `db:"id"`
Name string `db:"name"`
MemberNumber string `db:"member_number"`
Username string `db:"username"`
@@ -24,6 +25,17 @@ VALUES (:name, :member_number, :username, :password)
_, err := run.DB.NamedExec(sq, &c)
return err
}
func (c *Company) Edit() error {
sq := `
UPDATE company SET
name = :name,
member_number = :member_number,
username = :username,
password = :password
WHERE id = :id;`
_, err := run.DB.NamedExec(sq, &c)
return err
}
//func GetCompany(companyName string) (Company, error) {
// sq := `
@@ -37,13 +49,13 @@ VALUES (:name, :member_number, :username, :password)
//}
//
func GetCompany(companyName string) (Company, error) {
func GetCompany(companyID float64) (Company, error) {
var company Company
sq := `
SELECT * FROM company WHERE name = ?
SELECT * FROM company WHERE id = ?
`
err := run.DB.Get(&company, sq, companyName)
err := run.DB.Get(&company, sq, companyID)
if err != nil {
return Company{}, err
}

View File

@@ -38,6 +38,7 @@ func InitDB(path string) error {
companySchema := `
create table company (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name text not null unique,
member_number text not null,
username text not null,

View File

@@ -32,6 +32,17 @@ func (s *Srv) CreateCompany(name, memberNumber, username, password string) error
return c.Create()
}
func (s *Srv) EditCompany(id float64, name, memberNumber, username, password string) error {
c := &company.Company{
Id: int(id),
Name: name,
MemberNumber: memberNumber,
Username: username,
Password: password,
}
return c.Edit()
}
func (s *Srv) UploadExcel() string {
dialog := application.OpenFileDialog()
@@ -51,13 +62,13 @@ type userInfo struct {
accountNo string
}
func (s *Srv) Rpa(companyName string, month float64, year float64) error {
func (s *Srv) Rpa(companyID float64, month float64, year float64) error {
type CompanyInfo struct {
company *company.Company // float64.Company türünü gömme
month float64 // yeni bir alan ekliyoruz
year float64
}
user, err := company.GetCompany(companyName)
user, err := company.GetCompany(companyID)
if err != nil {
return err
}
@@ -69,15 +80,14 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
//todo: readb company details by name
b := bot.NewLucaBot()
emitLog("Aktarım Başladı")
err = b.Login(user, month, year)
if err != nil {
//todo: inform user about process and errors
emitLog("Şifreniz Hatalı")
return nil
}
err = b.PayrollPageLogin()
slog.Debug("inputs", "year", year, "month", month)
f, err := excelize.OpenFile(s.xlsFileName)
@@ -124,8 +134,7 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
key := rows[0][ndx]
brd.Ucretler[key], err = decimal.NewFromString(col)
if err != nil {
//todo: kullanıcıya hata logu ver
//veya tekrar okuma denebilinir
// emitLog(`excel okunurken sorun oluştu`)
fmt.Println(err)
}
}
@@ -145,6 +154,7 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
}
}
emitLog("İşlem Tamamlandı")
b.ClosingBrowserFromExternalLink()
return nil
}