@using Indotalent.Features.Organization.Employee @using Indotalent.Features.Organization.Employee.Cqrs @using Indotalent.Shared.Utils @using MudBlazor @implements IDisposable @inject EmployeeService EmployeeService @inject ISnackbar Snackbar
Add New Employee Create a comprehensive employee profile and organizational placement.
@if (_isLoadingData) {
Synchronizing Records...
} else {
BASIC IDENTITY
@foreach (var item in _lookupData.Grades) {
@item.Name (@item.Code) Range: @item.SalaryFrom.ToString("N0") - @item.SalaryTo.ToString("N0")
}
PAYROLL & BANKING
@if (!string.IsNullOrEmpty(_model.GradeId)) { var selectedGrade = _lookupData.Grades.FirstOrDefault(x => x.Id == _model.GradeId); if (selectedGrade != null) { Allowed range: @selectedGrade.SalaryFrom.ToString("N0") - @selectedGrade.SalaryTo.ToString("N0") } }
PERSONAL DETAILS
Male Female
ORGANIZATIONAL
@foreach (var item in _lookupData.Branches) { @item.Name } @foreach (var item in _lookupData.Departments) { @item.Name } @foreach (var item in _lookupData.Designations) { @item.Name }
ADDRESS & CONTACT
SOCIAL MEDIA
OTHERS
Cancel @if (_processing) { Creating... } else { Create Employee }
}
@code { [Parameter] public EventCallback OnCancel { get; set; } [Parameter] public EventCallback OnSuccess { get; set; } private MudForm? _form; private CreateEmployeeRequest _model = new(); private CreateEmployeeValidator _validator = new(); private LookupResponse _lookupData = new(); private bool _processing = false; private bool _isLoadingData = true; private bool _isDisposed = false; public void Dispose() => _isDisposed = true; protected override async Task OnInitializedAsync() { try { _isLoadingData = true; var response = await EmployeeService.GetLookupAsync(); if (response?.IsSuccess == true) { _lookupData = response.Value ?? new(); } } finally { if (!_isDisposed) { _isLoadingData = false; StateHasChanged(); } } } private async Task Submit() { await _form!.Validate(); if (!_form.IsValid) return; _processing = true; try { var res = await EmployeeService.CreateEmployeeAsync(_model); await Task.Delay(500); if (res?.IsSuccess == true) { Snackbar.Add("Employee Created Successfully", Severity.Success); await OnSuccess.InvokeAsync(); } } finally { _processing = false; } } }