using BethanysPieShopHRM.Shared.Domain; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using Webshop.App.Services; namespace Webshop.App.Pages { public partial class EmployeeEdit { [Inject] public IEmployeeDataService EmployeeDataService { get; set; } = default!; [Inject] public ICountryDataService CountryDataService { get; set; } = default!; [Inject] public IJobCategoryDataService JobCategoryDataService { get; set; } = default!; [Inject] public NavigationManager NavigationManager { get; set; } = default!; [Parameter] public int? EmployeeId { get; set; } public Employee? Employee { get; set; } public IEnumerable Countries { get; set; } = new List(); public IEnumerable JobCategories { get; set; } = new List(); protected string Message = string.Empty; protected string StatusClass = string.Empty; protected bool Saved; private IBrowserFile selectedFile; private async Task GetEmployee(int employeeId) { return await EmployeeDataService.GetEmployeeDetails(employeeId); } private void OnInputFileChange(InputFileChangeEventArgs e) { selectedFile = e.File; StateHasChanged(); } protected async override Task OnInitializedAsync() { Countries = await CountryDataService.GetCountries(); JobCategories = await JobCategoryDataService.GetJobCategories(); Saved = false; } protected async override Task OnParametersSetAsync() { if (!EmployeeId.HasValue) { Employee = new Employee(); return; } var employee = await GetEmployee(EmployeeId.Value); if (employee is null) { NavigationManager.NavigateTo("/not-found"); return; } Employee = employee; } protected async Task HandleValidSubmit() { Saved = false; if (!EmployeeId.HasValue && Employee != null) { if (selectedFile != null) { var file = selectedFile; Stream stream = file.OpenReadStream(); MemoryStream ms = new(); await stream.CopyToAsync(ms); stream.Close(); Employee.ImageName = file.Name; Employee.ImageContent = ms.ToArray(); } var addedEmployee = await EmployeeDataService.AddEmployee(Employee); if (addedEmployee != null) { StatusClass = "alert-success"; Message = "New employee added successfully."; Saved = true; } else { StatusClass = "alert-danger"; Message = "Something went wrong adding the new employee. Please try again."; Saved = false; } } else if (Employee != null) { await EmployeeDataService.UpdateEmployee(Employee); StatusClass = "alert-success"; Message = "Employee updated successfully."; Saved = true; } } protected async Task HandleInvalidSubmit() { StatusClass = "alert-danger"; Message = "validation errors"; } protected async Task DeleteEmployee() { if(Employee != null && Employee.EmployeeId > 0) { await EmployeeDataService.DeleteEmployee(Employee.EmployeeId); StatusClass = "alert-success"; Message = "Deleted successful"; } } protected void BackToOverview() { NavigationManager.NavigateTo("/employeeoverview"); } } }