125 lines
4.1 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|