Skip to content

Commit

Permalink
all conditions are met1
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Smechow committed Oct 2, 2024
1 parent 4f51784 commit 8892402
Showing 1 changed file with 14 additions and 23 deletions.
37 changes: 14 additions & 23 deletions src/main/java/core/basesyntax/SalaryInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,43 @@

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

public class SalaryInfo {

public String getSalaryInfo(String[] names, String[] data, String dateFrom, String dateTo) {
// Формат дат
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");

// Перетворення вхідних дат
LocalDate from = LocalDate.parse(dateFrom, formatter);
LocalDate to = LocalDate.parse(dateTo, formatter);

// Створюємо карту для зберігання загальної суми заробітку для кожного працівника
Map<String, Integer> salaries = new HashMap<>();
for (String name : names) {
salaries.put(name, 0); // Ініціалізуємо зарплату нулем для кожного працівника
}

// Створюємо масив для зберігання заробітної плати кожного працівника
int[] salaries = new int[names.length];
// Обробка кожного запису у масиві data
for (String entry : data) {
String[] parts = entry.split(" ");
LocalDate workDate = LocalDate.parse(parts[0], formatter);
String employeeName = parts[1];
int hoursWorked = Integer.parseInt(parts[2]);
int hourlyRate = Integer.parseInt(parts[3]);

// Якщо дата знаходиться в межах періоду
// Перевіряємо, чи потрапляє дата у межі
if (!workDate.isBefore(from) && !workDate.isAfter(to)) {
if (salaries.containsKey(employeeName)) {
int currentSalary = salaries.get(employeeName);
int earned = hoursWorked * hourlyRate;
salaries.put(employeeName, currentSalary + earned);
// Шукаємо індекс працівника в масиві names
for (int i = 0; i < names.length; i++) {
if (names[i].equals(employeeName)) {
// Додаємо зароблені гроші до відповідного працівника
salaries[i] += hoursWorked * hourlyRate;
}
}
}
}

// Формування звіту
StringBuilder report = new StringBuilder();
report.append("Report for period ").append(dateFrom).append(" - ").append(dateTo).append(System.lineSeparator());

report.append("Report for period ").append(dateFrom).append(" - ")
.append(dateTo).append(System.lineSeparator());
// Додаємо інформацію про зарплату кожного працівника
for (String name : names) {
report.append(name).append(" - ").append(salaries.get(name)).append(System.lineSeparator());
for (int i = 0; i < names.length; i++) {
report.append(names[i]).append(" - ")
.append(salaries[i]).append(System.lineSeparator());
}

return report.toString().trim();
}
}

0 comments on commit 8892402

Please sign in to comment.