Files
aviq-second-boilerplate/Webshop.App/Pages/EmployeeEdit.razor.cs
T
2026-03-22 00:29:34 +01:00

125 lines
4.1 KiB
C#

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<Country> Countries { get; set; } = new List<Country>();
public IEnumerable<JobCategory> JobCategories { get; set; } = new List<JobCategory>();
protected string Message = string.Empty;
protected string StatusClass = string.Empty;
protected bool Saved;
private IBrowserFile selectedFile;
private async Task<Employee?> 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");
}
}
}