Skip to content

Commit b0e12eb

Browse files
author
SergeyGT
committed
Реализован рассчет зарплаты в рамках какого-либо срока
1 parent b2c5a9e commit b0e12eb

2 files changed

Lines changed: 62 additions & 1 deletion

File tree

app/src/main/java/com/example/farmhelper/DBFarm.kt

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import android.content.Context
66
import android.database.Cursor
77
import android.database.sqlite.SQLiteDatabase
88
import android.database.sqlite.SQLiteOpenHelper
9+
import android.util.Log
910
import androidx.core.content.contentValuesOf
1011
import androidx.lifecycle.ViewModelProvider
1112

1213
class DBFarm(val context: Context, val factory: SQLiteDatabase.CursorFactory?) :
13-
SQLiteOpenHelper(context, "user", factory, 5){
14+
SQLiteOpenHelper(context, "user", factory, 8){
1415
override fun onCreate(db: SQLiteDatabase?) {
1516
val query = "CREATE TABLE users (idUsers INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT, pass TEXT)"
1617
db!!.execSQL(query)
@@ -96,6 +97,7 @@ class DBFarm(val context: Context, val factory: SQLiteDatabase.CursorFactory?) :
9697
valuesSalary.put("hourly_rate", salary.hoursRate)
9798
valuesSalary.put("hectares", salary.hectares)
9899
valuesSalary.put("hectare_rate", salary.hectaresRate)
100+
99101
val db = this.writableDatabase
100102
db.insert("salary", null, valuesSalary)
101103
db.close()
@@ -119,4 +121,32 @@ class DBFarm(val context: Context, val factory: SQLiteDatabase.CursorFactory?) :
119121

120122
}
121123

124+
fun calculateSalary(employeeId: Int, startDate: String, endDate: String): Double {
125+
val db = this.readableDatabase
126+
Log.d("DBFarm", "Calculating salary for employeeId: $employeeId, from: $startDate to: $endDate")
127+
val query = """
128+
SELECT SUM(hours * hourly_rate + hectares * hectare_rate)
129+
FROM salary
130+
WHERE employee_id = ?
131+
AND work_date BETWEEN ? AND ?
132+
"""
133+
// Логирование запроса и параметров
134+
Log.d("DBFarm", "SQL Query: $query")
135+
Log.d("DBFarm", "Parameters: ${arrayOf(employeeId.toString(), startDate, endDate).joinToString(", ")}")
136+
val cursor: Cursor = db.rawQuery(query, arrayOf(employeeId.toString(), startDate, endDate))
137+
val totalSalary = if (cursor.moveToFirst()) {
138+
val result = cursor.getDouble(0)
139+
Log.d("DBFarm", "Total Salary: $result")
140+
result
141+
} else {
142+
Log.d("DBFarm", "No data found.")
143+
0.0
144+
}
145+
cursor.close()
146+
db.close()
147+
return totalSalary
148+
}
149+
150+
151+
122152
}

app/src/main/java/com/example/farmhelper/zpCash.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,47 @@
11
package com.example.farmhelper
22

33
import android.os.Bundle
4+
import android.widget.Button
5+
import android.widget.EditText
6+
import android.widget.TextView
47
import androidx.activity.enableEdgeToEdge
58
import androidx.appcompat.app.AppCompatActivity
69
import androidx.core.view.ViewCompat
710
import androidx.core.view.WindowInsetsCompat
11+
import java.text.SimpleDateFormat
12+
import java.util.Locale
813

914
class zpCash : AppCompatActivity() {
1015
override fun onCreate(savedInstanceState: Bundle?) {
1116
super.onCreate(savedInstanceState)
1217
enableEdgeToEdge()
1318
setContentView(R.layout.activity_zp_cash)
19+
20+
fun convertDateFormat(date: String, fromFormat: String = "dd.MM.yyyy", toFormat: String = "yyyy-MM-dd"): String {
21+
val inputDateFormat = SimpleDateFormat(fromFormat, Locale.getDefault())
22+
val outputDateFormat = SimpleDateFormat(toFormat, Locale.getDefault())
23+
val parsedDate = inputDateFormat.parse(date)
24+
return outputDateFormat.format(parsedDate)
25+
}
26+
27+
val employeeIdZp = intent.getIntExtra("EMPLOYEE_ID", -1)
28+
val startDate: EditText = findViewById(R.id.startDate)
29+
val endDate: EditText = findViewById(R.id.endDate)
30+
val zp: TextView = findViewById(R.id.zpSum)
31+
val btnCheck: Button = findViewById(R.id.btnCheckZp)
32+
33+
btnCheck.setOnClickListener {
34+
val start = startDate.text.toString().trim()
35+
val end = endDate.text.toString().trim()
36+
val formatStartDate = convertDateFormat(start,"dd.MM.yyyy", "yyyy-MM-dd")
37+
val formatEndDate = convertDateFormat(end,"dd.MM.yyyy", "yyyy-MM-dd")
38+
39+
40+
val db = DBFarm(this, null)
41+
val totalSum = db.calculateSalary(employeeIdZp, formatStartDate, formatEndDate)
42+
zp.setText(totalSum.toString())
43+
}
44+
1445
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
1546
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
1647
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)

0 commit comments

Comments
 (0)