-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathSalaryInfo.java
More file actions
45 lines (41 loc) · 1.76 KB
/
Copy pathSalaryInfo.java
File metadata and controls
45 lines (41 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package core.basesyntax;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SalaryInfo {
private static final DateTimeFormatter DATE_FORMATTER
= DateTimeFormatter.ofPattern("dd.MM.yyyy");
private static final int DATE_INDEX = 0;
private static final int NAME_INDEX = 1;
private static final int HOURS_INDEX = 2;
private static final int RATE_INDEX = 3;
public String getSalaryInfo(String[] names,
String[] data,
String dateFrom,
String dateTo) {
LocalDate startDate = LocalDate.parse(dateFrom.trim(), DATE_FORMATTER);
LocalDate endDate = LocalDate.parse(dateTo.trim(), DATE_FORMATTER);
StringBuilder report = new StringBuilder("Report for period ")
.append(dateFrom)
.append(" - ")
.append(dateTo);
for (String name : names) {
int salary = 0;
for (String record : data) {
String[] recordInfo = record.split(" ");
LocalDate workDate = LocalDate.parse(recordInfo[DATE_INDEX], DATE_FORMATTER);
if (recordInfo[NAME_INDEX].equals(name)
&& !workDate.isBefore(startDate)
&& !workDate.isAfter(endDate)) {
int hours = Integer.parseInt(recordInfo[HOURS_INDEX]);
int rate = Integer.parseInt(recordInfo[RATE_INDEX]);
salary += hours * rate;
}
}
report.append(System.lineSeparator())
.append(name)
.append(" - ")
.append(salary);
}
return report.toString();
}
}