using Microsoft.AspNetCore.Mvc; using PlanTempus.Application.Features.Localization.Services; namespace PlanTempus.Application.Features.Employees.Components; public class EmployeeDetailSalaryViewComponent : ViewComponent { private readonly ILocalizationService _localization; public EmployeeDetailSalaryViewComponent(ILocalizationService localization) { _localization = localization; } public IViewComponentResult Invoke(string key) { var employee = EmployeeDetailCatalog.Get(key); var model = new EmployeeDetailSalaryViewModel { // Data BankAccount = employee.BankAccount, TaxCard = employee.TaxCard, HourlyRate = employee.HourlyRate, MonthlyFixedSalary = employee.MonthlyFixedSalary, // Rates NormalRate = employee.NormalRate, OvertimeRate = employee.OvertimeRate, VacationRate = employee.VacationRate, // Commission MinimumPerHour = employee.MinimumPerHour, ServiceCommission = employee.ServiceCommission, ProductCommission = employee.ProductCommission, // Supplements WeekdaySupplement = employee.WeekdaySupplement, SaturdaySupplement = employee.SaturdaySupplement, SundaySupplement = employee.SundaySupplement, // Labels LabelRates = _localization.Get("employees.detail.salary.rates"), LabelNormalRate = _localization.Get("employees.detail.salary.normalrate"), LabelOvertimeRate = _localization.Get("employees.detail.salary.overtimerate"), LabelVacationRate = _localization.Get("employees.detail.salary.vacationrate"), LabelProvision = _localization.Get("employees.detail.salary.provision"), LabelMinimumPerHour = _localization.Get("employees.detail.salary.minimumperhour"), LabelServiceCommission = _localization.Get("employees.detail.salary.servicecommission"), LabelProductCommission = _localization.Get("employees.detail.salary.productcommission"), LabelSupplements = _localization.Get("employees.detail.salary.supplements"), LabelWeekdaySupplement = _localization.Get("employees.detail.salary.weekdaysupplement"), LabelSaturdaySupplement = _localization.Get("employees.detail.salary.saturdaysupplement"), LabelSundaySupplement = _localization.Get("employees.detail.salary.sundaysupplement"), LabelSalaryHistory = _localization.Get("employees.detail.salary.history"), LabelPeriod = _localization.Get("employees.detail.salary.period"), LabelGrossSalary = _localization.Get("employees.detail.salary.grosssalary"), LabelView = _localization.Get("employees.detail.salary.view"), LabelEdit = _localization.Get("common.edit"), LabelRatesDrawerTitle = _localization.Get("employees.detail.salary.ratesdrawertitle"), LabelBaseRates = _localization.Get("employees.detail.salary.baserates"), LabelCourseRate = _localization.Get("employees.detail.salary.courserate"), LabelTimeOffRate = _localization.Get("employees.detail.salary.timeoffrate"), LabelPaidLeaveRate = _localization.Get("employees.detail.salary.paidleaverate"), LabelOfficeRate = _localization.Get("employees.detail.salary.officerate"), LabelChildSickRate = _localization.Get("employees.detail.salary.childsickrate"), LabelChildHospitalRate = _localization.Get("employees.detail.salary.childhospitalrate"), LabelMaternityRate = _localization.Get("employees.detail.salary.maternityrate"), LabelWeekdaySupplementFull = _localization.Get("employees.detail.salary.weekdaysupplementfull"), LabelSaturdaySupplementFull = _localization.Get("employees.detail.salary.saturdaysupplementfull"), LabelCommission = _localization.Get("employees.detail.salary.commission"), LabelProductCommissionFull = _localization.Get("employees.detail.salary.productcommissionfull"), LabelServiceCommissionFull = _localization.Get("employees.detail.salary.servicecommissionfull"), // Rate values (numeric only for drawer inputs) NormalRateValue = employee.NormalRateValue, OvertimeRateValue = employee.OvertimeRateValue, CourseRateValue = employee.CourseRateValue, TimeOffRateValue = employee.TimeOffRateValue, PaidLeaveRateValue = employee.PaidLeaveRateValue, VacationRateValue = employee.VacationRateValue, OfficeRateValue = employee.OfficeRateValue, ChildSickRateValue = employee.ChildSickRateValue, ChildHospitalRateValue = employee.ChildHospitalRateValue, MaternityRateValue = employee.MaternityRateValue, WeekdaySupplementValue = employee.WeekdaySupplementValue, SaturdaySupplementValue = employee.SaturdaySupplementValue, SundaySupplementValue = employee.SundaySupplementValue, ProductCommissionValue = employee.ProductCommissionValue, ServiceCommissionValue = employee.ServiceCommissionValue, // Mock salary history SalaryHistory = new List { new() { Period = "Januar 2026", GrossSalary = "34.063,50 kr" }, new() { Period = "December 2025", GrossSalary = "31.845,00 kr" }, new() { Period = "November 2025", GrossSalary = "33.290,25 kr" }, new() { Period = "Oktober 2025", GrossSalary = "32.156,75 kr" }, new() { Period = "September 2025", GrossSalary = "34.520,00 kr" } } }; return View(model); } } public class EmployeeDetailSalaryViewModel { // Data public required string BankAccount { get; init; } public required string TaxCard { get; init; } public required string HourlyRate { get; init; } public required string MonthlyFixedSalary { get; init; } // Rates public required string NormalRate { get; init; } public required string OvertimeRate { get; init; } public required string VacationRate { get; init; } // Commission public required string MinimumPerHour { get; init; } public required string ServiceCommission { get; init; } public required string ProductCommission { get; init; } // Supplements public required string WeekdaySupplement { get; init; } public required string SaturdaySupplement { get; init; } public required string SundaySupplement { get; init; } // Labels public required string LabelRates { get; init; } public required string LabelNormalRate { get; init; } public required string LabelOvertimeRate { get; init; } public required string LabelVacationRate { get; init; } public required string LabelProvision { get; init; } public required string LabelMinimumPerHour { get; init; } public required string LabelServiceCommission { get; init; } public required string LabelProductCommission { get; init; } public required string LabelSupplements { get; init; } public required string LabelWeekdaySupplement { get; init; } public required string LabelSaturdaySupplement { get; init; } public required string LabelSundaySupplement { get; init; } public required string LabelSalaryHistory { get; init; } public required string LabelPeriod { get; init; } public required string LabelGrossSalary { get; init; } public required string LabelView { get; init; } public required string LabelEdit { get; init; } public required string LabelRatesDrawerTitle { get; init; } public required string LabelBaseRates { get; init; } public required string LabelCourseRate { get; init; } public required string LabelTimeOffRate { get; init; } public required string LabelPaidLeaveRate { get; init; } public required string LabelOfficeRate { get; init; } public required string LabelChildSickRate { get; init; } public required string LabelChildHospitalRate { get; init; } public required string LabelMaternityRate { get; init; } public required string LabelWeekdaySupplementFull { get; init; } public required string LabelSaturdaySupplementFull { get; init; } public required string LabelCommission { get; init; } public required string LabelProductCommissionFull { get; init; } public required string LabelServiceCommissionFull { get; init; } // Rate values (for drawer inputs) public required string NormalRateValue { get; init; } public required string OvertimeRateValue { get; init; } public required string CourseRateValue { get; init; } public required string TimeOffRateValue { get; init; } public required string PaidLeaveRateValue { get; init; } public required string VacationRateValue { get; init; } public required string OfficeRateValue { get; init; } public required string ChildSickRateValue { get; init; } public required string ChildHospitalRateValue { get; init; } public required string MaternityRateValue { get; init; } public required string WeekdaySupplementValue { get; init; } public required string SaturdaySupplementValue { get; init; } public required string SundaySupplementValue { get; init; } public required string ProductCommissionValue { get; init; } public required string ServiceCommissionValue { get; init; } // Salary History (mock data) public List SalaryHistory { get; init; } = new(); } public class SalaryHistoryItem { public required string Period { get; init; } public required string GrossSalary { get; init; } }