From 600ff046927043cd50097a8a502206669b87e017 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:32:21 +0200 Subject: [PATCH 01/14] Working so far --- HRIS.Services/Services/EmployeeDataService.cs | 8 ++------ HRIS.Services/Services/EmployeeQualificationService.cs | 2 -- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/HRIS.Services/Services/EmployeeDataService.cs b/HRIS.Services/Services/EmployeeDataService.cs index 05092050..6588944a 100644 --- a/HRIS.Services/Services/EmployeeDataService.cs +++ b/HRIS.Services/Services/EmployeeDataService.cs @@ -38,19 +38,15 @@ public async Task CreateEmployeeData(EmployeeDataDto employeeDa public async Task GetEmployeeData(int employeeId) { - var modelExists = await EmployeeDataExists(employeeId); - if (!modelExists) - throw new CustomException("Employee data does not exist"); + if (!_identity.IsSupport && employeeId != _identity.EmployeeId) throw new CustomException("Unauthorized Access."); var employeeData = await _db.EmployeeData.GetById(employeeId); - if (employeeData == null) - throw new CustomException("No employee data record found"); - return employeeData.ToDto(); + return employeeData?.ToDto(); } public async Task UpdateEmployeeData(EmployeeDataDto employeeDataDto) diff --git a/HRIS.Services/Services/EmployeeQualificationService.cs b/HRIS.Services/Services/EmployeeQualificationService.cs index 7190f6f3..1ee65c70 100644 --- a/HRIS.Services/Services/EmployeeQualificationService.cs +++ b/HRIS.Services/Services/EmployeeQualificationService.cs @@ -52,8 +52,6 @@ public async Task GetEmployeeQualificationsByEmployeeI throw new CustomException("Unauthorized access"); var qualifications = await _db.EmployeeQualification.FirstOrDefault(x => x.EmployeeId == _identity.EmployeeId); - if (qualifications == null) - throw new CustomException("No employee qualifications data."); return qualifications.ToDto(); } From f99bd5837ca39444de5bbb41f4ec8531155dfc4e Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:35:44 +0200 Subject: [PATCH 02/14] working currently --- .../Services/EmployeeDataServiceUnitTest.cs | 27 ------------------- .../Services/EmployeeQualificationService.cs | 2 +- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs index 5662ff0d..d6fb8457 100644 --- a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs +++ b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs @@ -81,33 +81,6 @@ public async Task GetEmployeeDataFail_Unauthorized() await Assert.ThrowsAsync(() => _nonSupportDataService.GetEmployeeData(employeeId)); } - [Fact] - public async Task GetEmployeeDataTest_NoModelFound() - { - var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; - - _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) - .ReturnsAsync(false); - - await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); - } - - [Fact] - public async Task GetEmployeeDataTest_NoRecordFoundInDatabase() - { - var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; - - _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) - .ReturnsAsync(true); - - _dbMock.Setup(x => x.EmployeeData.GetById(employeeId)) - .ReturnsAsync((EmployeeData)null); - - await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); - } - - - [Fact] public async Task CreateEmployeeDataTest_Pass() { diff --git a/HRIS.Services/Services/EmployeeQualificationService.cs b/HRIS.Services/Services/EmployeeQualificationService.cs index 1ee65c70..ac077279 100644 --- a/HRIS.Services/Services/EmployeeQualificationService.cs +++ b/HRIS.Services/Services/EmployeeQualificationService.cs @@ -53,7 +53,7 @@ public async Task GetEmployeeQualificationsByEmployeeI var qualifications = await _db.EmployeeQualification.FirstOrDefault(x => x.EmployeeId == _identity.EmployeeId); - return qualifications.ToDto(); + return qualifications?.ToDto(); } public async Task UpdateEmployeeQualification( From f95fa99182c8e1cd2531d90fb92bffd0ab48965f Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:14:47 +0200 Subject: [PATCH 03/14] Revert "Working so far" This reverts commit 600ff046927043cd50097a8a502206669b87e017. --- HRIS.Services/Services/EmployeeDataService.cs | 8 ++++++-- HRIS.Services/Services/EmployeeQualificationService.cs | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/HRIS.Services/Services/EmployeeDataService.cs b/HRIS.Services/Services/EmployeeDataService.cs index 6588944a..05092050 100644 --- a/HRIS.Services/Services/EmployeeDataService.cs +++ b/HRIS.Services/Services/EmployeeDataService.cs @@ -38,15 +38,19 @@ public async Task CreateEmployeeData(EmployeeDataDto employeeDa public async Task GetEmployeeData(int employeeId) { - + var modelExists = await EmployeeDataExists(employeeId); + if (!modelExists) + throw new CustomException("Employee data does not exist"); if (!_identity.IsSupport && employeeId != _identity.EmployeeId) throw new CustomException("Unauthorized Access."); var employeeData = await _db.EmployeeData.GetById(employeeId); + if (employeeData == null) + throw new CustomException("No employee data record found"); - return employeeData?.ToDto(); + return employeeData.ToDto(); } public async Task UpdateEmployeeData(EmployeeDataDto employeeDataDto) diff --git a/HRIS.Services/Services/EmployeeQualificationService.cs b/HRIS.Services/Services/EmployeeQualificationService.cs index ac077279..a22423a5 100644 --- a/HRIS.Services/Services/EmployeeQualificationService.cs +++ b/HRIS.Services/Services/EmployeeQualificationService.cs @@ -52,6 +52,8 @@ public async Task GetEmployeeQualificationsByEmployeeI throw new CustomException("Unauthorized access"); var qualifications = await _db.EmployeeQualification.FirstOrDefault(x => x.EmployeeId == _identity.EmployeeId); + if (qualifications == null) + throw new CustomException("No employee qualifications data."); return qualifications?.ToDto(); } From 9124b74b8f1d0ede2d2dfd4f78011524e46ff773 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:14:51 +0200 Subject: [PATCH 04/14] Revert "working currently" This reverts commit f99bd5837ca39444de5bbb41f4ec8531155dfc4e. --- .../Services/EmployeeDataServiceUnitTest.cs | 27 +++++++++++++++++++ .../Services/EmployeeQualificationService.cs | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs index d6fb8457..5662ff0d 100644 --- a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs +++ b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs @@ -81,6 +81,33 @@ public async Task GetEmployeeDataFail_Unauthorized() await Assert.ThrowsAsync(() => _nonSupportDataService.GetEmployeeData(employeeId)); } + [Fact] + public async Task GetEmployeeDataTest_NoModelFound() + { + var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; + + _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) + .ReturnsAsync(false); + + await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); + } + + [Fact] + public async Task GetEmployeeDataTest_NoRecordFoundInDatabase() + { + var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; + + _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) + .ReturnsAsync(true); + + _dbMock.Setup(x => x.EmployeeData.GetById(employeeId)) + .ReturnsAsync((EmployeeData)null); + + await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); + } + + + [Fact] public async Task CreateEmployeeDataTest_Pass() { diff --git a/HRIS.Services/Services/EmployeeQualificationService.cs b/HRIS.Services/Services/EmployeeQualificationService.cs index a22423a5..7190f6f3 100644 --- a/HRIS.Services/Services/EmployeeQualificationService.cs +++ b/HRIS.Services/Services/EmployeeQualificationService.cs @@ -55,7 +55,7 @@ public async Task GetEmployeeQualificationsByEmployeeI if (qualifications == null) throw new CustomException("No employee qualifications data."); - return qualifications?.ToDto(); + return qualifications.ToDto(); } public async Task UpdateEmployeeQualification( From a20a9bfa3f9a9028f766ebf944b36e5e1f2273d1 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:18:39 +0200 Subject: [PATCH 05/14] Adding new employee profile so far --- HRIS.Models/EmployeeDto.cs | 2 +- HRIS.Models/EmployeeProfileDto.cs | 11 ++++ .../Interfaces/IEmployeeProfileService.cs | 13 ++++ HRIS.Services/RegisterServicesHRIS.cs | 1 + .../Services/EmployeeProfileService.cs | 62 +++++++++++++++++++ .../HRIS/EmployeeProfileController.cs | 34 ++++++++++ 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 HRIS.Models/EmployeeProfileDto.cs create mode 100644 HRIS.Services/Interfaces/IEmployeeProfileService.cs create mode 100644 HRIS.Services/Services/EmployeeProfileService.cs create mode 100644 RR.App/Controllers/HRIS/EmployeeProfileController.cs diff --git a/HRIS.Models/EmployeeDto.cs b/HRIS.Models/EmployeeDto.cs index 09ee6c64..860ae40d 100644 --- a/HRIS.Models/EmployeeDto.cs +++ b/HRIS.Models/EmployeeDto.cs @@ -45,4 +45,4 @@ public class EmployeeDto public string? EmergencyContactNo { get; set; } public bool Active { get; set; } public string? InactiveReason { get;set; } -} +} \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileDto.cs b/HRIS.Models/EmployeeProfileDto.cs new file mode 100644 index 00000000..280e2c46 --- /dev/null +++ b/HRIS.Models/EmployeeProfileDto.cs @@ -0,0 +1,11 @@ +namespace HRIS.Models; + +public class EmployeeProfileDto +{ + public EmployeeDto Employee { get; set; } + public EmployeeDataDto EmployeeData { get; set; } + public EmployeeQualificationDto EmployeeQualification { get; set; } + public List WorkExperience { get; set; } + public List EmployeeCertifications { get; set; } + public List EmployeeBanking { get; set; } +} diff --git a/HRIS.Services/Interfaces/IEmployeeProfileService.cs b/HRIS.Services/Interfaces/IEmployeeProfileService.cs new file mode 100644 index 00000000..aa0b97b8 --- /dev/null +++ b/HRIS.Services/Interfaces/IEmployeeProfileService.cs @@ -0,0 +1,13 @@ +using HRIS.Models; + +namespace HRIS.Services.Interfaces; + +public interface IEmployeeProfileService +{ + /// + /// Get employee by id + /// + /// + /// An employee dto including type and addresses + Task GetEmployeeProfileByEmail(string employeeEmail); +} diff --git a/HRIS.Services/RegisterServicesHRIS.cs b/HRIS.Services/RegisterServicesHRIS.cs index e95f2025..8df2966a 100644 --- a/HRIS.Services/RegisterServicesHRIS.cs +++ b/HRIS.Services/RegisterServicesHRIS.cs @@ -39,5 +39,6 @@ public static void RegisterServicesHRIS(this IServiceCollection services) services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); } } diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs new file mode 100644 index 00000000..5d2d34d7 --- /dev/null +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -0,0 +1,62 @@ +using HRIS.Models; +using HRIS.Services.Interfaces; +using HRIS.Services.Session; +using Microsoft.AspNetCore.Mvc; +using RR.UnitOfWork; +using RR.UnitOfWork.Entities.HRIS; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HRIS.Services.Services +{ + internal class EmployeeProfileService : IEmployeeProfileService + { + private readonly AuthorizeIdentity _identity; + private readonly EmployeeService _employeeService; + private readonly EmployeeDataService _employeeDataService; + private readonly EmployeeQualificationService _employeeQualificationService; + private readonly WorkExperienceService _workExperienceService; + private readonly EmployeeCertificationService _employeeCertificationService; + private readonly EmployeeBankingService _employeeBankingService; + public EmployeeProfileService(AuthorizeIdentity identity, + EmployeeService employeeService, + EmployeeDataService employeeDataService, + EmployeeQualificationService employeeQualificationService, + WorkExperienceService workExperienceService, + EmployeeCertificationService employeeCertificationService, + EmployeeBankingService employeeBankingService) + { + _identity = identity; + _employeeService = employeeService; + _employeeDataService = employeeDataService; + _employeeQualificationService = employeeQualificationService; + _workExperienceService = workExperienceService; + _employeeCertificationService = employeeCertificationService; + _employeeBankingService = employeeBankingService; + } + async Task IEmployeeProfileService.GetEmployeeProfileByEmail(int id) + { + var employee = await _employeeService.GetEmployeeById(id); + var employeeData = await _employeeDataService.GetEmployeeData(id); + var employeeQualification = await _employeeQualificationService.GetEmployeeQualificationsByEmployeeId(id); + var employeeWorkExperience = await _workExperienceService.GetWorkExperienceByEmployeeId(id); + var employeeCertifications = await _employeeCertificationService.GetEmployeeCertificationsByEmployeeId(id); + var employeeBanking = await _employeeBankingService.GetBanking(id); + + EmployeeProfileDto employeeProfile = new EmployeeProfileDto + { + Employee = employee, + EmployeeData = employeeData, + EmployeeQualification = employeeQualification, + WorkExperience = employeeWorkExperience, + EmployeeCertifications = employeeCertifications, + EmployeeBanking = employeeBanking, + }; + + return employeeProfile; + } + } +} diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs new file mode 100644 index 00000000..848b4583 --- /dev/null +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -0,0 +1,34 @@ +using HRIS.Models; +using HRIS.Services.Interfaces; +using HRIS.Services.Services; +using HRIS.Services.Session; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; + +namespace RR.App.Controllers.HRIS; + +[Route("employee-profile")] +[ApiController] +public class EmployeeProfileController : ControllerBase +{ + private readonly AuthorizeIdentity _identity; + private readonly IEmployeeProfileService _employeeProfileService; + + public EmployeeProfileController(AuthorizeIdentity identity, IEmployeeProfileService employeeProfileService) + { + _identity = identity; + _employeeProfileService = employeeProfileService; + } + + + + [Authorize(Policy = "AllRolesPolicy")] + [HttpGet] + public async Task GetEmployeeProfileById([FromQuery] string? email) + { + var employee = await _employeeProfileService.GetEmployeeProfileByEmail(email); + return Ok(employee); + } +} + From 62752375b5c9654b2d261df3d82e7c7e736f7e05 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:44:59 +0200 Subject: [PATCH 06/14] controller in but not working --- HRIS.Models/EmployeeProfileContactDto.cs | 15 +++ HRIS.Models/EmployeeProfileDetailsDto.cs | 22 ++++ HRIS.Models/EmployeeProfileDto.cs | 19 ++- HRIS.Models/EmployeeProfilePersonalDto.cs | 15 +++ HRIS.Models/EmployeeProfileSalary.cs | 12 ++ .../Interfaces/IEmployeeProfileService.cs | 2 +- .../Services/EmployeeProfileService.cs | 108 +++++++++++++++--- .../HRIS/EmployeeProfileController.cs | 13 +-- 8 files changed, 175 insertions(+), 31 deletions(-) create mode 100644 HRIS.Models/EmployeeProfileContactDto.cs create mode 100644 HRIS.Models/EmployeeProfileDetailsDto.cs create mode 100644 HRIS.Models/EmployeeProfilePersonalDto.cs create mode 100644 HRIS.Models/EmployeeProfileSalary.cs diff --git a/HRIS.Models/EmployeeProfileContactDto.cs b/HRIS.Models/EmployeeProfileContactDto.cs new file mode 100644 index 00000000..c1ccdcc2 --- /dev/null +++ b/HRIS.Models/EmployeeProfileContactDto.cs @@ -0,0 +1,15 @@ +using HRIS.Models.Enums; + +namespace HRIS.Models; + +public class EmployeeProfileContactDto +{ + // public string? AuthUserId { get; set; } + public int Id { get; set; } + public string? Email { get; set; } + public string? PersonalEmail { get; set; } + public string? CellphoneNo { get; set; } + public string? HouseNo { get; set; } + public string? EmergencyContactName { get; set; } + public string? EmergencyContactNo { get; set; } +} \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileDetailsDto.cs b/HRIS.Models/EmployeeProfileDetailsDto.cs new file mode 100644 index 00000000..052adba2 --- /dev/null +++ b/HRIS.Models/EmployeeProfileDetailsDto.cs @@ -0,0 +1,22 @@ +using HRIS.Models.Enums; + +namespace HRIS.Models; + +public class EmployeeProfileDetailsDto +{ + public int Id { get; set; } + public DateTime EngagementDate { get; set; } + public int? PeopleChampionId { get; set; } + public string? PeopleChampionName { get; set; } + public int? Level { get; set; } + public EmployeeTypeDto? EmployeeType { get; set; } + public string? Name { get; set; } + public string? Initials { get; set; } + public string? Surname { get; set; } + public DateTime DateOfBirth { get; set; } + public string? IdNumber { get; set; } + public int? ClientAllocatedId { get; set; } + public string? ClientAllocatedName { get; set; } + public int? TeamLeadId { get; set; } + public string? TeamLeadName { get; set ; } +} diff --git a/HRIS.Models/EmployeeProfileDto.cs b/HRIS.Models/EmployeeProfileDto.cs index 280e2c46..7fedeb6f 100644 --- a/HRIS.Models/EmployeeProfileDto.cs +++ b/HRIS.Models/EmployeeProfileDto.cs @@ -1,11 +1,26 @@ -namespace HRIS.Models; +using Org.BouncyCastle.Bcpg; + +namespace HRIS.Models; public class EmployeeProfileDto { - public EmployeeDto Employee { get; set; } + public EmployeeProfileDetailsDto EmployeeProfileDetails { get; set; } + public EmployeeProfilePersonalDto EmployeeProfilePersonal { get; set; } + public EmployeeProfileContactDto EmployeeProfileContact { get; set; } + public EmployeeProfileSalaryDto EmployeeProfileSalary { get; set; } public EmployeeDataDto EmployeeData { get; set; } public EmployeeQualificationDto EmployeeQualification { get; set; } public List WorkExperience { get; set; } public List EmployeeCertifications { get; set; } public List EmployeeBanking { get; set; } + public string? AuthUserId { get; set; } + public string? EmployeeNumber { get; set; } + public DateTime? TerminationDate { get; set; } + public string? Notes { get; set; } + public string? PassportNumber { get; set; } + public DateTime? PassportExpirationDate { get; set; } + public string? PassportCountryIssue { get; set; } + public string? Photo { get; set; } + public bool Active { get; set; } + public string? InactiveReason { get; set; } } diff --git a/HRIS.Models/EmployeeProfilePersonalDto.cs b/HRIS.Models/EmployeeProfilePersonalDto.cs new file mode 100644 index 00000000..cf9ddabd --- /dev/null +++ b/HRIS.Models/EmployeeProfilePersonalDto.cs @@ -0,0 +1,15 @@ +using HRIS.Models.Enums; + +namespace HRIS.Models; + +public class EmployeeProfilePersonalDto +{ + //public string? AuthUserId { get; set; } + public int Id { get; set; } + public bool Disability { get; set; } + public string? DisabilityNotes { get; set; } + public string? CountryOfBirth { get; set; } + public string? Nationality { get; set; } + public Race? Race { get; set; } + public Gender? Gender { get; set; } +} diff --git a/HRIS.Models/EmployeeProfileSalary.cs b/HRIS.Models/EmployeeProfileSalary.cs new file mode 100644 index 00000000..417172d1 --- /dev/null +++ b/HRIS.Models/EmployeeProfileSalary.cs @@ -0,0 +1,12 @@ +using HRIS.Models.Enums; + +namespace HRIS.Models; + +public class EmployeeProfileSalaryDto +{ + public string? TaxNumber { get; set; } + public float? LeaveInterval { get; set; } + public float? SalaryDays { get; set; } + public float? PayRate { get; set; } + public int? Salary { get; set; } +} diff --git a/HRIS.Services/Interfaces/IEmployeeProfileService.cs b/HRIS.Services/Interfaces/IEmployeeProfileService.cs index aa0b97b8..8fdbf5ef 100644 --- a/HRIS.Services/Interfaces/IEmployeeProfileService.cs +++ b/HRIS.Services/Interfaces/IEmployeeProfileService.cs @@ -9,5 +9,5 @@ public interface IEmployeeProfileService /// /// /// An employee dto including type and addresses - Task GetEmployeeProfileByEmail(string employeeEmail); + Task GetEmployeeProfileById(int? id); } diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index 5d2d34d7..c2d5f39a 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -1,21 +1,15 @@ using HRIS.Models; using HRIS.Services.Interfaces; using HRIS.Services.Session; -using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using RR.UnitOfWork; -using RR.UnitOfWork.Entities.HRIS; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace HRIS.Services.Services { internal class EmployeeProfileService : IEmployeeProfileService { private readonly AuthorizeIdentity _identity; - private readonly EmployeeService _employeeService; + private readonly UnitOfWork _db; private readonly EmployeeDataService _employeeDataService; private readonly EmployeeQualificationService _employeeQualificationService; private readonly WorkExperienceService _workExperienceService; @@ -27,36 +21,112 @@ public EmployeeProfileService(AuthorizeIdentity identity, EmployeeQualificationService employeeQualificationService, WorkExperienceService workExperienceService, EmployeeCertificationService employeeCertificationService, - EmployeeBankingService employeeBankingService) + EmployeeBankingService employeeBankingService, UnitOfWork db) { _identity = identity; - _employeeService = employeeService; + _db = db; _employeeDataService = employeeDataService; _employeeQualificationService = employeeQualificationService; _workExperienceService = workExperienceService; _employeeCertificationService = employeeCertificationService; _employeeBankingService = employeeBankingService; } - async Task IEmployeeProfileService.GetEmployeeProfileByEmail(int id) + async Task IEmployeeProfileService.GetEmployeeProfileById(int? id) { - var employee = await _employeeService.GetEmployeeById(id); - var employeeData = await _employeeDataService.GetEmployeeData(id); - var employeeQualification = await _employeeQualificationService.GetEmployeeQualificationsByEmployeeId(id); - var employeeWorkExperience = await _workExperienceService.GetWorkExperienceByEmployeeId(id); - var employeeCertifications = await _employeeCertificationService.GetEmployeeCertificationsByEmployeeId(id); - var employeeBanking = await _employeeBankingService.GetBanking(id); + var employeeId = (int)id; ; + + if (id == null) + { + employeeId = _identity.EmployeeId; + } + + var employee = await _db.Employee + .Get(employee => employee.Id == id) + .Include(employee => employee.EmployeeType) + .Include(employee => employee.PhysicalAddress) + .Include(employee => employee.PostalAddress) + .Include(employee => employee.ChampionEmployee) + .Include(employee => employee.ClientAllocated) + .Include(employee => employee.TeamLeadAssigned) + .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); + + EmployeeProfileDetailsDto employeeDetails = new EmployeeProfileDetailsDto + { + Id = employee.Id, + Name = employee.Name, + Surname = employee.Surname, + Initials = employee.Initials, + DateOfBirth = employee.DateOfBirth, + EmployeeType = employee.EmployeeType!.ToDto(), + EngagementDate = employee.EngagementDate, + IdNumber = employee.IdNumber, + Level = employee.Level, + ClientAllocatedId = employee.ClientAllocated, + PeopleChampionId = employee.PeopleChampion, + TeamLeadId = employee.TeamLead, + ClientAllocatedName = employee.ClientAssigned?.Name, + PeopleChampionName = employee.ChampionEmployee?.Name + " " + employee.ChampionEmployee?.Surname, + TeamLeadName = employee.TeamLeadAssigned?.Name + " " + employee.TeamLeadAssigned?.Surname, + }; + + EmployeeProfilePersonalDto personalDetails = new EmployeeProfilePersonalDto + { + Id = employee.Id, + Race = employee.Race, + Gender = employee.Gender, + Nationality = employee.Nationality, + CountryOfBirth = employee.CountryOfBirth, + Disability = employee.Disability, + DisabilityNotes = employee.DisabilityNotes + }; + + EmployeeProfileContactDto contactDetails = new EmployeeProfileContactDto + { + Id = employee.Id, + Email = employee.Email, + PersonalEmail = employee.PersonalEmail, + CellphoneNo = employee.CellphoneNo, + HouseNo = employee.HouseNo, + EmergencyContactName = employee.EmergencyContactName, + EmergencyContactNo = employee.EmergencyContactNo + }; + + EmployeeProfileSalaryDto salaryDetails = new EmployeeProfileSalaryDto + { + + }; + + var employeeData = await _employeeDataService.GetEmployeeData(employeeId); + var employeeQualification = await _employeeQualificationService.GetEmployeeQualificationsByEmployeeId(employeeId); + var employeeWorkExperience = await _workExperienceService.GetWorkExperienceByEmployeeId(employeeId); + var employeeCertifications = await _employeeCertificationService.GetEmployeeCertificationsByEmployeeId(employeeId); + var employeeBanking = await _employeeBankingService.GetBanking(employeeId); EmployeeProfileDto employeeProfile = new EmployeeProfileDto { - Employee = employee, + EmployeeProfileDetails = employeeDetails, + EmployeeProfilePersonal = personalDetails, + EmployeeProfileContact = contactDetails, + EmployeeProfileSalary = salaryDetails, EmployeeData = employeeData, EmployeeQualification = employeeQualification, WorkExperience = employeeWorkExperience, EmployeeCertifications = employeeCertifications, EmployeeBanking = employeeBanking, + + AuthUserId = employee.AuthUserId, + EmployeeNumber = employee.EmployeeNumber, + Photo = employee.Photo, + Notes = employee.Notes, + PassportCountryIssue = employee.PassportCountryIssue, + PassportExpirationDate = employee.PassportExpirationDate, + PassportNumber = employee.PassportNumber, + TerminationDate = employee.TerminationDate, + Active = employee.Active, + InactiveReason = employee.InactiveReason }; return employeeProfile; } } -} +} \ No newline at end of file diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index 848b4583..8ad75bdd 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -1,14 +1,11 @@ -using HRIS.Models; -using HRIS.Services.Interfaces; -using HRIS.Services.Services; +using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using System.Security.Claims; namespace RR.App.Controllers.HRIS; -[Route("employee-profile")] +[Route("employee-profile-maybe")] [ApiController] public class EmployeeProfileController : ControllerBase { @@ -21,13 +18,11 @@ public EmployeeProfileController(AuthorizeIdentity identity, IEmployeeProfileSer _employeeProfileService = employeeProfileService; } - - [Authorize(Policy = "AllRolesPolicy")] [HttpGet] - public async Task GetEmployeeProfileById([FromQuery] string? email) + public async Task GetEmployeeProfileById([FromQuery] int? id) { - var employee = await _employeeProfileService.GetEmployeeProfileByEmail(email); + var employee = await _employeeProfileService.GetEmployeeProfileById(id); return Ok(employee); } } From b2a7ea362528873489be7d662032b574c8a9e99c Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:29:58 +0200 Subject: [PATCH 07/14] new employee object fetched correctly. --- HRIS.Models/EmployeeProfileDto.cs | 1 + ...eSalary.cs => EmployeeProfileSalaryDto.cs} | 0 HRIS.Services/Services/EmployeeDataService.cs | 10 ++--- .../Services/EmployeeProfileService.cs | 43 +++++++++++-------- .../HRIS/EmployeeProfileController.cs | 4 +- 5 files changed, 32 insertions(+), 26 deletions(-) rename HRIS.Models/{EmployeeProfileSalary.cs => EmployeeProfileSalaryDto.cs} (100%) diff --git a/HRIS.Models/EmployeeProfileDto.cs b/HRIS.Models/EmployeeProfileDto.cs index 7fedeb6f..b1c83da3 100644 --- a/HRIS.Models/EmployeeProfileDto.cs +++ b/HRIS.Models/EmployeeProfileDto.cs @@ -23,4 +23,5 @@ public class EmployeeProfileDto public string? Photo { get; set; } public bool Active { get; set; } public string? InactiveReason { get; set; } + public EmployeeAddressDto? PhysicalAddress { get; set; } } diff --git a/HRIS.Models/EmployeeProfileSalary.cs b/HRIS.Models/EmployeeProfileSalaryDto.cs similarity index 100% rename from HRIS.Models/EmployeeProfileSalary.cs rename to HRIS.Models/EmployeeProfileSalaryDto.cs diff --git a/HRIS.Services/Services/EmployeeDataService.cs b/HRIS.Services/Services/EmployeeDataService.cs index 05092050..07a366c4 100644 --- a/HRIS.Services/Services/EmployeeDataService.cs +++ b/HRIS.Services/Services/EmployeeDataService.cs @@ -38,17 +38,17 @@ public async Task CreateEmployeeData(EmployeeDataDto employeeDa public async Task GetEmployeeData(int employeeId) { - var modelExists = await EmployeeDataExists(employeeId); - if (!modelExists) - throw new CustomException("Employee data does not exist"); + //var modelExists = await EmployeeDataExists(employeeId); + //if (!modelExists) + // throw new CustomException("Employee data does not exist"); if (!_identity.IsSupport && employeeId != _identity.EmployeeId) throw new CustomException("Unauthorized Access."); var employeeData = await _db.EmployeeData.GetById(employeeId); - if (employeeData == null) - throw new CustomException("No employee data record found"); + //if (employeeData == null) + // throw new CustomException("No employee data record found"); return employeeData.ToDto(); } diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index c2d5f39a..98998cab 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -3,25 +3,25 @@ using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; using RR.UnitOfWork; +using RR.UnitOfWork.Entities.HRIS; namespace HRIS.Services.Services { internal class EmployeeProfileService : IEmployeeProfileService { private readonly AuthorizeIdentity _identity; - private readonly UnitOfWork _db; - private readonly EmployeeDataService _employeeDataService; - private readonly EmployeeQualificationService _employeeQualificationService; - private readonly WorkExperienceService _workExperienceService; - private readonly EmployeeCertificationService _employeeCertificationService; - private readonly EmployeeBankingService _employeeBankingService; + private readonly IUnitOfWork _db; + private readonly IEmployeeDataService _employeeDataService; + private readonly IEmployeeQualificationService _employeeQualificationService; + private readonly IWorkExperienceService _workExperienceService; + private readonly IEmployeeCertificationService _employeeCertificationService; + private readonly IEmployeeBankingService _employeeBankingService; public EmployeeProfileService(AuthorizeIdentity identity, - EmployeeService employeeService, - EmployeeDataService employeeDataService, - EmployeeQualificationService employeeQualificationService, - WorkExperienceService workExperienceService, - EmployeeCertificationService employeeCertificationService, - EmployeeBankingService employeeBankingService, UnitOfWork db) + IEmployeeDataService employeeDataService, + IEmployeeQualificationService employeeQualificationService, + IWorkExperienceService workExperienceService, + IEmployeeCertificationService employeeCertificationService, + IEmployeeBankingService employeeBankingService, IUnitOfWork db) { _identity = identity; _db = db; @@ -42,14 +42,16 @@ async Task IEmployeeProfileService.GetEmployeeProfileById(in var employee = await _db.Employee .Get(employee => employee.Id == id) + .AsNoTracking() .Include(employee => employee.EmployeeType) .Include(employee => employee.PhysicalAddress) .Include(employee => employee.PostalAddress) .Include(employee => employee.ChampionEmployee) - .Include(employee => employee.ClientAllocated) .Include(employee => employee.TeamLeadAssigned) .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); + var clientAllocated = await _db.Client.Get(c => c.Id == employee.ClientAllocated).FirstOrDefaultAsync(); + EmployeeProfileDetailsDto employeeDetails = new EmployeeProfileDetailsDto { Id = employee.Id, @@ -64,7 +66,7 @@ async Task IEmployeeProfileService.GetEmployeeProfileById(in ClientAllocatedId = employee.ClientAllocated, PeopleChampionId = employee.PeopleChampion, TeamLeadId = employee.TeamLead, - ClientAllocatedName = employee.ClientAssigned?.Name, + ClientAllocatedName = clientAllocated?.Name, PeopleChampionName = employee.ChampionEmployee?.Name + " " + employee.ChampionEmployee?.Surname, TeamLeadName = employee.TeamLeadAssigned?.Name + " " + employee.TeamLeadAssigned?.Surname, }; @@ -93,7 +95,11 @@ async Task IEmployeeProfileService.GetEmployeeProfileById(in EmployeeProfileSalaryDto salaryDetails = new EmployeeProfileSalaryDto { - + Salary = employee.Salary, + PayRate = employee.PayRate, + SalaryDays = employee.SalaryDays, + TaxNumber = employee.TaxNumber, + LeaveInterval = employee.LeaveInterval }; var employeeData = await _employeeDataService.GetEmployeeData(employeeId); @@ -107,12 +113,12 @@ async Task IEmployeeProfileService.GetEmployeeProfileById(in EmployeeProfileDetails = employeeDetails, EmployeeProfilePersonal = personalDetails, EmployeeProfileContact = contactDetails, - EmployeeProfileSalary = salaryDetails, - EmployeeData = employeeData, EmployeeQualification = employeeQualification, WorkExperience = employeeWorkExperience, EmployeeCertifications = employeeCertifications, EmployeeBanking = employeeBanking, + EmployeeData = employeeData, + EmployeeProfileSalary = salaryDetails, AuthUserId = employee.AuthUserId, EmployeeNumber = employee.EmployeeNumber, @@ -123,7 +129,8 @@ async Task IEmployeeProfileService.GetEmployeeProfileById(in PassportNumber = employee.PassportNumber, TerminationDate = employee.TerminationDate, Active = employee.Active, - InactiveReason = employee.InactiveReason + InactiveReason = employee.InactiveReason, + PhysicalAddress = employee.PhysicalAddress?.ToDto() }; return employeeProfile; diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index 8ad75bdd..b1487262 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -2,6 +2,7 @@ using HRIS.Services.Session; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using HRIS.Services.Services; namespace RR.App.Controllers.HRIS; @@ -9,16 +10,13 @@ namespace RR.App.Controllers.HRIS; [ApiController] public class EmployeeProfileController : ControllerBase { - private readonly AuthorizeIdentity _identity; private readonly IEmployeeProfileService _employeeProfileService; public EmployeeProfileController(AuthorizeIdentity identity, IEmployeeProfileService employeeProfileService) { - _identity = identity; _employeeProfileService = employeeProfileService; } - [Authorize(Policy = "AllRolesPolicy")] [HttpGet] public async Task GetEmployeeProfileById([FromQuery] int? id) { From abf4080fb34fcc651fbe3b8513f987935b86d1ce Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:42:03 +0200 Subject: [PATCH 08/14] clean up ish --- .../Services/EmployeeDataServiceUnitTest.cs | 38 +++++++++---------- HRIS.Services/Services/EmployeeDataService.cs | 2 +- .../HRIS/EmployeeProfileController.cs | 2 +- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs index 5662ff0d..b12d557e 100644 --- a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs +++ b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs @@ -81,32 +81,30 @@ public async Task GetEmployeeDataFail_Unauthorized() await Assert.ThrowsAsync(() => _nonSupportDataService.GetEmployeeData(employeeId)); } - [Fact] - public async Task GetEmployeeDataTest_NoModelFound() - { - var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; - - _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) - .ReturnsAsync(false); - - await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); - } + //[Fact] + //public async Task GetEmployeeDataTest_NoModelFound() + //{ + // var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; - [Fact] - public async Task GetEmployeeDataTest_NoRecordFoundInDatabase() - { - var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; + // _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) + // .ReturnsAsync(false); - _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) - .ReturnsAsync(true); + // await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); + //} - _dbMock.Setup(x => x.EmployeeData.GetById(employeeId)) - .ReturnsAsync((EmployeeData)null); + //[Fact] + //public async Task GetEmployeeDataTest_NoRecordFoundInDatabase() + //{ + // var employeeId = EmployeeDataTestData.EmployeeDataOne.EmployeeId; - await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); - } + // _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) + // .ReturnsAsync(true); + // _dbMock.Setup(x => x.EmployeeData.GetById(employeeId)) + // .ReturnsAsync((EmployeeData)null); + // await Assert.ThrowsAsync(() => _employeeDataService.GetEmployeeData(employeeId)); + //} [Fact] public async Task CreateEmployeeDataTest_Pass() diff --git a/HRIS.Services/Services/EmployeeDataService.cs b/HRIS.Services/Services/EmployeeDataService.cs index 07a366c4..59ae3f14 100644 --- a/HRIS.Services/Services/EmployeeDataService.cs +++ b/HRIS.Services/Services/EmployeeDataService.cs @@ -50,7 +50,7 @@ public async Task GetEmployeeData(int employeeId) //if (employeeData == null) // throw new CustomException("No employee data record found"); - return employeeData.ToDto(); + return employeeData?.ToDto(); } public async Task UpdateEmployeeData(EmployeeDataDto employeeDataDto) diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index b1487262..09d2f6dd 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -6,7 +6,7 @@ namespace RR.App.Controllers.HRIS; -[Route("employee-profile-maybe")] +[Route("employee-profile")] [ApiController] public class EmployeeProfileController : ControllerBase { From 3335a5260b83263884c9a5170e8c343122459d38 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Mon, 5 Aug 2024 13:42:38 +0200 Subject: [PATCH 09/14] Current working employee with split dtos. --- HRIS.Models/EmployeeProfileDto.cs | 27 -- .../EmployeeProfileBankingInformationDto.cs | 8 + .../EmployeeProfileCareerSummaryDto.cs | 10 + .../EmployeeProfileContactDto.cs | 4 +- .../EmployeeProfileDetailsDto.cs | 12 + .../EmployeeProfileEmployeeDetailsDto.cs} | 8 +- .../EmployeeProfilePersonalDto.cs | 3 +- .../EmployeeProfileSalaryDto.cs | 4 +- .../Services/EmployeeDataServiceUnitTest.cs | 10 +- .../Interfaces/IEmployeeProfileService.cs | 24 +- HRIS.Services/Services/EmployeeDataService.cs | 6 +- .../Services/EmployeeProfileService.cs | 339 ++++++++++++------ .../HRIS/EmployeeDataControllerUnitTests.cs | 14 +- .../HRIS/EmployeeProfileController.cs | 27 +- RR.UnitOfWork/Entities/HRIS/EmployeeData.cs | 4 +- 15 files changed, 315 insertions(+), 185 deletions(-) delete mode 100644 HRIS.Models/EmployeeProfileDto.cs create mode 100644 HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs create mode 100644 HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs rename HRIS.Models/{ => EmployeeProfileModels}/EmployeeProfileContactDto.cs (80%) create mode 100644 HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs rename HRIS.Models/{EmployeeProfileDetailsDto.cs => EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs} (81%) rename HRIS.Models/{ => EmployeeProfileModels}/EmployeeProfilePersonalDto.cs (84%) rename HRIS.Models/{ => EmployeeProfileModels}/EmployeeProfileSalaryDto.cs (85%) diff --git a/HRIS.Models/EmployeeProfileDto.cs b/HRIS.Models/EmployeeProfileDto.cs deleted file mode 100644 index b1c83da3..00000000 --- a/HRIS.Models/EmployeeProfileDto.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Org.BouncyCastle.Bcpg; - -namespace HRIS.Models; - -public class EmployeeProfileDto -{ - public EmployeeProfileDetailsDto EmployeeProfileDetails { get; set; } - public EmployeeProfilePersonalDto EmployeeProfilePersonal { get; set; } - public EmployeeProfileContactDto EmployeeProfileContact { get; set; } - public EmployeeProfileSalaryDto EmployeeProfileSalary { get; set; } - public EmployeeDataDto EmployeeData { get; set; } - public EmployeeQualificationDto EmployeeQualification { get; set; } - public List WorkExperience { get; set; } - public List EmployeeCertifications { get; set; } - public List EmployeeBanking { get; set; } - public string? AuthUserId { get; set; } - public string? EmployeeNumber { get; set; } - public DateTime? TerminationDate { get; set; } - public string? Notes { get; set; } - public string? PassportNumber { get; set; } - public DateTime? PassportExpirationDate { get; set; } - public string? PassportCountryIssue { get; set; } - public string? Photo { get; set; } - public bool Active { get; set; } - public string? InactiveReason { get; set; } - public EmployeeAddressDto? PhysicalAddress { get; set; } -} diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs new file mode 100644 index 00000000..010c2bab --- /dev/null +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs @@ -0,0 +1,8 @@ +namespace HRIS.Models.EmployeeProfileModels; + +public class EmployeeProfileBankingInformationDto +{ + public EmployeeProfileSalaryDto EmployeeProfileSalary { get; set; } + public List EmployeeBanking { get; set; } + public EmployeeDataDto EmployeeData { get; set; } +} \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs new file mode 100644 index 00000000..5130593e --- /dev/null +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs @@ -0,0 +1,10 @@ +namespace HRIS.Models.EmployeeProfileModels; + +public class EmployeeProfileCareerSummaryDto +{ + public EmployeeProfileSalaryDto EmployeeProfileSalary { get; set; } + public EmployeeQualificationDto EmployeeQualification { get; set; } + public List WorkExperience { get; set; } + public List EmployeeCertifications { get; set; } + public EmployeeDataDto EmployeeData { get; set; } +} \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileContactDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileContactDto.cs similarity index 80% rename from HRIS.Models/EmployeeProfileContactDto.cs rename to HRIS.Models/EmployeeProfileModels/EmployeeProfileContactDto.cs index c1ccdcc2..78ffd6b1 100644 --- a/HRIS.Models/EmployeeProfileContactDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileContactDto.cs @@ -1,10 +1,10 @@ using HRIS.Models.Enums; -namespace HRIS.Models; +namespace HRIS.Models.EmployeeProfileModels; public class EmployeeProfileContactDto { - // public string? AuthUserId { get; set; } + // public string? AuthUserId { get; set; } public int Id { get; set; } public string? Email { get; set; } public string? PersonalEmail { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs new file mode 100644 index 00000000..e6e24cb4 --- /dev/null +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs @@ -0,0 +1,12 @@ +namespace HRIS.Models.EmployeeProfileModels; + +public class EmployeeProfileDetailsDto +{ + public EmployeeProfileEmployeeDetailsDto EmployeeProfileDetails { get; set; } + public EmployeeProfilePersonalDto EmployeeProfilePersonal { get; set; } + public EmployeeProfileContactDto EmployeeProfileContact { get; set; } + public EmployeeDataDto EmployeeData { get; set; } + public string? Photo { get; set; } + public bool Active { get; set; } + public EmployeeAddressDto? PhysicalAddress { get; set; } +} \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileDetailsDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs similarity index 81% rename from HRIS.Models/EmployeeProfileDetailsDto.cs rename to HRIS.Models/EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs index 052adba2..7f116c1d 100644 --- a/HRIS.Models/EmployeeProfileDetailsDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs @@ -1,8 +1,6 @@ -using HRIS.Models.Enums; +namespace HRIS.Models.EmployeeProfileModels; -namespace HRIS.Models; - -public class EmployeeProfileDetailsDto +public class EmployeeProfileEmployeeDetailsDto { public int Id { get; set; } public DateTime EngagementDate { get; set; } @@ -18,5 +16,5 @@ public class EmployeeProfileDetailsDto public int? ClientAllocatedId { get; set; } public string? ClientAllocatedName { get; set; } public int? TeamLeadId { get; set; } - public string? TeamLeadName { get; set ; } + public string? TeamLeadName { get; set; } } diff --git a/HRIS.Models/EmployeeProfilePersonalDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfilePersonalDto.cs similarity index 84% rename from HRIS.Models/EmployeeProfilePersonalDto.cs rename to HRIS.Models/EmployeeProfileModels/EmployeeProfilePersonalDto.cs index cf9ddabd..56d22119 100644 --- a/HRIS.Models/EmployeeProfilePersonalDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfilePersonalDto.cs @@ -1,10 +1,9 @@ using HRIS.Models.Enums; -namespace HRIS.Models; +namespace HRIS.Models.EmployeeProfileModels; public class EmployeeProfilePersonalDto { - //public string? AuthUserId { get; set; } public int Id { get; set; } public bool Disability { get; set; } public string? DisabilityNotes { get; set; } diff --git a/HRIS.Models/EmployeeProfileSalaryDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileSalaryDto.cs similarity index 85% rename from HRIS.Models/EmployeeProfileSalaryDto.cs rename to HRIS.Models/EmployeeProfileModels/EmployeeProfileSalaryDto.cs index 417172d1..52bf10b7 100644 --- a/HRIS.Models/EmployeeProfileSalaryDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileSalaryDto.cs @@ -1,9 +1,9 @@ using HRIS.Models.Enums; -namespace HRIS.Models; +namespace HRIS.Models.EmployeeProfileModels; public class EmployeeProfileSalaryDto -{ +{ public string? TaxNumber { get; set; } public float? LeaveInterval { get; set; } public float? SalaryDays { get; set; } diff --git a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs index b12d557e..e6e0b811 100644 --- a/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs +++ b/HRIS.Services.Tests/Services/EmployeeDataServiceUnitTest.cs @@ -61,13 +61,13 @@ public async Task GetEmployeeDataTestPass() var employeeData = _employeeData; _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())).ReturnsAsync(true); - _dbMock.Setup(x => x.EmployeeData.GetById(employeeId)).ReturnsAsync(employeeData); + _dbMock.Setup(x => x.EmployeeData.GetById((int)employeeId!)).ReturnsAsync(employeeData); - var result = await _employeeDataService.GetEmployeeData(employeeId); + var result = await _employeeDataService.GetEmployeeData((int)employeeId!); Assert.NotNull(result); Assert.Equivalent(employeeData.ToDto(), result); - _dbMock.Verify(x => x.EmployeeData.GetById(employeeId), Times.Once); + _dbMock.Verify(x => x.EmployeeData.GetById((int)employeeId!), Times.Once); } [Fact] @@ -78,7 +78,7 @@ public async Task GetEmployeeDataFail_Unauthorized() _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())) .ReturnsAsync(true); - await Assert.ThrowsAsync(() => _nonSupportDataService.GetEmployeeData(employeeId)); + await Assert.ThrowsAsync(() => _nonSupportDataService.GetEmployeeData((int)employeeId!)); } //[Fact] @@ -150,7 +150,7 @@ public async Task UpdateEmployeeDataTest() var updatedEmployeeDataDto = EmployeeDataTestData.EmployeeDataOne.ToDto(); _dbMock.Setup(x => x.EmployeeData.Any(It.IsAny>>())).ReturnsAsync(true); - _dbMock.Setup(x => x.EmployeeData.GetById(updatedEmployeeDataDto.EmployeeId)).ReturnsAsync(EmployeeDataTestData.EmployeeDataOne); + _dbMock.Setup(x => x.EmployeeData.GetById((int)updatedEmployeeDataDto.EmployeeId!)).ReturnsAsync(EmployeeDataTestData.EmployeeDataOne); _dbMock.Setup(x => x.EmployeeData.Update(It.IsAny())).ReturnsAsync(EmployeeDataTestData.EmployeeDataOne); var result = await _employeeDataService.UpdateEmployeeData(updatedEmployeeDataDto); diff --git a/HRIS.Services/Interfaces/IEmployeeProfileService.cs b/HRIS.Services/Interfaces/IEmployeeProfileService.cs index 8fdbf5ef..ef8f9cd5 100644 --- a/HRIS.Services/Interfaces/IEmployeeProfileService.cs +++ b/HRIS.Services/Interfaces/IEmployeeProfileService.cs @@ -1,13 +1,27 @@ -using HRIS.Models; +using HRIS.Models.EmployeeProfileModels; namespace HRIS.Services.Interfaces; public interface IEmployeeProfileService { /// - /// Get employee by id + /// Get employee profile details by id /// - /// - /// An employee dto including type and addresses - Task GetEmployeeProfileById(int? id); + /// + /// + Task GetEmployeeProfileDetailsById(int? id); + + /// + /// Get employee career summary by id + /// + /// + /// + Task GetEmployeeCareerSummaryById(int? id); + + /// + /// Get employee career summary by id + /// + /// + /// + Task GetEmployeeBankingInformationById(int? id); } diff --git a/HRIS.Services/Services/EmployeeDataService.cs b/HRIS.Services/Services/EmployeeDataService.cs index 59ae3f14..c5af215c 100644 --- a/HRIS.Services/Services/EmployeeDataService.cs +++ b/HRIS.Services/Services/EmployeeDataService.cs @@ -24,7 +24,7 @@ public async Task EmployeeDataExists(int id) public async Task CreateEmployeeData(EmployeeDataDto employeeDataDto) { - var modelExists = await EmployeeDataExists(employeeDataDto.Id); + var modelExists = await EmployeeDataExists((int)employeeDataDto.Id!); if (modelExists) throw new CustomException("This model already exists"); @@ -55,13 +55,13 @@ public async Task GetEmployeeData(int employeeId) public async Task UpdateEmployeeData(EmployeeDataDto employeeDataDto) { - var modelExists = await EmployeeDataExists(employeeDataDto.Id); + var modelExists = await EmployeeDataExists((int)employeeDataDto.Id!); if (!modelExists) throw new CustomException("This model does not exist yet"); if (!_identity.IsSupport && employeeDataDto.EmployeeId != _identity.EmployeeId) throw new CustomException("Unauthorized Access."); - var employeeData = await _db.EmployeeData.GetById(employeeDataDto.EmployeeId); + var employeeData = await _db.EmployeeData.GetById((int)employeeDataDto.EmployeeId!); if (employeeData == null) throw new CustomException("No employee data record found"); diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index 98998cab..dc6f0f52 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -1,139 +1,244 @@ using HRIS.Models; +using HRIS.Models.EmployeeProfileModels; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; using RR.UnitOfWork; -using RR.UnitOfWork.Entities.HRIS; -namespace HRIS.Services.Services +namespace HRIS.Services.Services; + +internal class EmployeeProfileService : IEmployeeProfileService { - internal class EmployeeProfileService : IEmployeeProfileService - { - private readonly AuthorizeIdentity _identity; - private readonly IUnitOfWork _db; - private readonly IEmployeeDataService _employeeDataService; - private readonly IEmployeeQualificationService _employeeQualificationService; - private readonly IWorkExperienceService _workExperienceService; - private readonly IEmployeeCertificationService _employeeCertificationService; - private readonly IEmployeeBankingService _employeeBankingService; - public EmployeeProfileService(AuthorizeIdentity identity, - IEmployeeDataService employeeDataService, - IEmployeeQualificationService employeeQualificationService, - IWorkExperienceService workExperienceService, - IEmployeeCertificationService employeeCertificationService, - IEmployeeBankingService employeeBankingService, IUnitOfWork db) + private readonly AuthorizeIdentity _identity; + private readonly IUnitOfWork _db; + private readonly IEmployeeDataService _employeeDataService; + private readonly IEmployeeQualificationService _employeeQualificationService; + private readonly IWorkExperienceService _workExperienceService; + private readonly IEmployeeCertificationService _employeeCertificationService; + private readonly IEmployeeBankingService _employeeBankingService; + public EmployeeProfileService(AuthorizeIdentity identity, + IEmployeeDataService employeeDataService, + IEmployeeQualificationService employeeQualificationService, + IWorkExperienceService workExperienceService, + IEmployeeCertificationService employeeCertificationService, + IEmployeeBankingService employeeBankingService, IUnitOfWork db) + { + _identity = identity; + _db = db; + _employeeDataService = employeeDataService; + _employeeQualificationService = employeeQualificationService; + _workExperienceService = workExperienceService; + _employeeCertificationService = employeeCertificationService; + _employeeBankingService = employeeBankingService; + } + async Task IEmployeeProfileService.GetEmployeeProfileDetailsById(int? id) + { + var employeeId = (int)id; + + if (id == null) { - _identity = identity; - _db = db; - _employeeDataService = employeeDataService; - _employeeQualificationService = employeeQualificationService; - _workExperienceService = workExperienceService; - _employeeCertificationService = employeeCertificationService; - _employeeBankingService = employeeBankingService; + employeeId = _identity.EmployeeId; } - async Task IEmployeeProfileService.GetEmployeeProfileById(int? id) + + var employee = await _db.Employee + .Get(employee => employee.Id == id) + .AsNoTracking() + .Include(employee => employee.EmployeeType) + .Include(employee => employee.PhysicalAddress) + .Include(employee => employee.PostalAddress) + .Include(employee => employee.ChampionEmployee) + .Include(employee => employee.TeamLeadAssigned) + .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); + + var clientAllocated = await _db.Client.Get(c => c.Id == employee.ClientAllocated).FirstOrDefaultAsync(); + + EmployeeProfileEmployeeDetailsDto employeeDetails = new EmployeeProfileEmployeeDetailsDto { - var employeeId = (int)id; ; + Id = employee.Id, + Name = employee.Name, + Surname = employee.Surname, + Initials = employee.Initials, + DateOfBirth = employee.DateOfBirth, + EmployeeType = employee.EmployeeType!.ToDto(), + EngagementDate = employee.EngagementDate, + IdNumber = employee.IdNumber, + Level = employee.Level, + ClientAllocatedId = employee.ClientAllocated, + PeopleChampionId = employee.PeopleChampion, + TeamLeadId = employee.TeamLead, + ClientAllocatedName = clientAllocated?.Name, + PeopleChampionName = employee.ChampionEmployee?.Name + " " + employee.ChampionEmployee?.Surname, + TeamLeadName = employee.TeamLeadAssigned?.Name + " " + employee.TeamLeadAssigned?.Surname, + }; - if (id == null) - { - employeeId = _identity.EmployeeId; - } - - var employee = await _db.Employee - .Get(employee => employee.Id == id) - .AsNoTracking() - .Include(employee => employee.EmployeeType) - .Include(employee => employee.PhysicalAddress) - .Include(employee => employee.PostalAddress) - .Include(employee => employee.ChampionEmployee) - .Include(employee => employee.TeamLeadAssigned) - .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); - - var clientAllocated = await _db.Client.Get(c => c.Id == employee.ClientAllocated).FirstOrDefaultAsync(); - - EmployeeProfileDetailsDto employeeDetails = new EmployeeProfileDetailsDto - { - Id = employee.Id, - Name = employee.Name, - Surname = employee.Surname, - Initials = employee.Initials, - DateOfBirth = employee.DateOfBirth, - EmployeeType = employee.EmployeeType!.ToDto(), - EngagementDate = employee.EngagementDate, - IdNumber = employee.IdNumber, - Level = employee.Level, - ClientAllocatedId = employee.ClientAllocated, - PeopleChampionId = employee.PeopleChampion, - TeamLeadId = employee.TeamLead, - ClientAllocatedName = clientAllocated?.Name, - PeopleChampionName = employee.ChampionEmployee?.Name + " " + employee.ChampionEmployee?.Surname, - TeamLeadName = employee.TeamLeadAssigned?.Name + " " + employee.TeamLeadAssigned?.Surname, - }; + EmployeeProfilePersonalDto personalDetails = new EmployeeProfilePersonalDto + { + Id = employee.Id, + Race = employee.Race, + Gender = employee.Gender, + Nationality = employee.Nationality, + CountryOfBirth = employee.CountryOfBirth, + Disability = employee.Disability, + DisabilityNotes = employee.DisabilityNotes + }; - EmployeeProfilePersonalDto personalDetails = new EmployeeProfilePersonalDto - { - Id = employee.Id, - Race = employee.Race, - Gender = employee.Gender, - Nationality = employee.Nationality, - CountryOfBirth = employee.CountryOfBirth, - Disability = employee.Disability, - DisabilityNotes = employee.DisabilityNotes - }; + EmployeeProfileContactDto contactDetails = new EmployeeProfileContactDto + { + Id = employee.Id, + Email = employee.Email, + PersonalEmail = employee.PersonalEmail, + CellphoneNo = employee.CellphoneNo, + HouseNo = employee.HouseNo, + EmergencyContactName = employee.EmergencyContactName, + EmergencyContactNo = employee.EmergencyContactNo + }; + + var employeeData = GetEmployeeDataById(id).Result; + + EmployeeProfileDetailsDto employeeProfileDetails = new EmployeeProfileDetailsDto + { + EmployeeProfileDetails = employeeDetails, + EmployeeProfilePersonal = personalDetails, + EmployeeProfileContact = contactDetails, + EmployeeData = employeeData, + Photo = employee.Photo, + Active = employee.Active, + PhysicalAddress = employee.PhysicalAddress?.ToDto() + }; + + return employeeProfileDetails; + } + + async Task IEmployeeProfileService.GetEmployeeCareerSummaryById(int? id) + { + var employeeData = await GetEmployeeDataById(id); + + var employeeSalary = await GetEmployeeSalaryById(id); + + var employeeCertifications = await GetEmployeeCertificationsById(id); + + var employeeQualification = await GetEmployeeQualificationById(id); + + var employeeWorkExperience = await GetEmployeeWorkExperienceById(id); + + EmployeeProfileCareerSummaryDto employeeCareerSummary = new EmployeeProfileCareerSummaryDto + { + EmployeeProfileSalary = employeeSalary, + EmployeeCertifications = employeeCertifications, + EmployeeQualification = employeeQualification, + WorkExperience = employeeWorkExperience, + EmployeeData = employeeData, + }; + + return employeeCareerSummary; + } + + async Task IEmployeeProfileService.GetEmployeeBankingInformationById(int? id) + { + var employeeBanking = await _db.EmployeeBanking + .Get(banking => banking.EmployeeId == id) + .Select(banking => banking.ToDto()) + .ToListAsync(); + + var employee = await _db.Employee + .Get(employee => employee.Id == id) + .FirstOrDefaultAsync(); - EmployeeProfileContactDto contactDetails = new EmployeeProfileContactDto + var employeeData = await GetEmployeeDataById(id); + + EmployeeProfileSalaryDto employeeSalary = new EmployeeProfileSalaryDto + { + LeaveInterval = employee.LeaveInterval, + PayRate = employee.PayRate, + SalaryDays = employee.SalaryDays, + Salary = employee.Salary, + TaxNumber = employee.TaxNumber, + }; + + EmployeeProfileBankingInformationDto employeeBankingInformation = new EmployeeProfileBankingInformationDto + { + EmployeeBanking = employeeBanking, + EmployeeProfileSalary = employeeSalary, + EmployeeData = employeeData, + }; + + return employeeBankingInformation; + } + + async Task GetEmployeeDataById(int? id) + { + var employeeData = await _db.EmployeeData.GetById((int)id!); + + EmployeeDataDto employeeDataDto; + + if (employeeData == null) + { + employeeDataDto = new EmployeeDataDto { - Id = employee.Id, - Email = employee.Email, - PersonalEmail = employee.PersonalEmail, - CellphoneNo = employee.CellphoneNo, - HouseNo = employee.HouseNo, - EmergencyContactName = employee.EmergencyContactName, - EmergencyContactNo = employee.EmergencyContactNo + Id = 0, + EmployeeId = 0, + FieldCodeId = 0, + Value = "", }; - - EmployeeProfileSalaryDto salaryDetails = new EmployeeProfileSalaryDto + } + else + { + employeeDataDto = new EmployeeDataDto { - Salary = employee.Salary, - PayRate = employee.PayRate, - SalaryDays = employee.SalaryDays, - TaxNumber = employee.TaxNumber, - LeaveInterval = employee.LeaveInterval + Id = employeeData.Id, + EmployeeId = employeeData.Id, + FieldCodeId = (int)employeeData.FieldCodeId!, + Value = employeeData.Value, }; + } - var employeeData = await _employeeDataService.GetEmployeeData(employeeId); - var employeeQualification = await _employeeQualificationService.GetEmployeeQualificationsByEmployeeId(employeeId); - var employeeWorkExperience = await _workExperienceService.GetWorkExperienceByEmployeeId(employeeId); - var employeeCertifications = await _employeeCertificationService.GetEmployeeCertificationsByEmployeeId(employeeId); - var employeeBanking = await _employeeBankingService.GetBanking(employeeId); + return employeeDataDto; + } - EmployeeProfileDto employeeProfile = new EmployeeProfileDto - { - EmployeeProfileDetails = employeeDetails, - EmployeeProfilePersonal = personalDetails, - EmployeeProfileContact = contactDetails, - EmployeeQualification = employeeQualification, - WorkExperience = employeeWorkExperience, - EmployeeCertifications = employeeCertifications, - EmployeeBanking = employeeBanking, - EmployeeData = employeeData, - EmployeeProfileSalary = salaryDetails, - - AuthUserId = employee.AuthUserId, - EmployeeNumber = employee.EmployeeNumber, - Photo = employee.Photo, - Notes = employee.Notes, - PassportCountryIssue = employee.PassportCountryIssue, - PassportExpirationDate = employee.PassportExpirationDate, - PassportNumber = employee.PassportNumber, - TerminationDate = employee.TerminationDate, - Active = employee.Active, - InactiveReason = employee.InactiveReason, - PhysicalAddress = employee.PhysicalAddress?.ToDto() - }; + async Task GetEmployeeSalaryById(int? id) + { + var employee = await _db.Employee + .Get(employee => employee.Id == id) + .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); - return employeeProfile; - } + EmployeeProfileSalaryDto employeeProfileSalary = new EmployeeProfileSalaryDto + { + Salary = employee.Salary, + SalaryDays = employee.SalaryDays, + TaxNumber = employee.TaxNumber, + LeaveInterval = employee.LeaveInterval, + PayRate = employee.PayRate, + }; + + return employeeProfileSalary; + } + + async Task> GetEmployeeCertificationsById(int? id) + { + var certifications = await _db.EmployeeCertification + .Get(certification => certification.EmployeeId == id).FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Certifications"); + + List employeeCertifications = new List + { + certifications.ToDto(), + }; + + return employeeCertifications; + } + + async Task GetEmployeeQualificationById(int? id) + { + var qualification = await _db.EmployeeQualification + .Get(qualification => qualification.EmployeeId == id) + .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Qualification"); + return qualification.ToDto(); + } + + async Task> GetEmployeeWorkExperienceById(int? id) + { + return await _db.WorkExperience + .Get(workExperience => workExperience.EmployeeId == id) + .Select(workExperience => workExperience.ToDto()) + .ToListAsync(); } } \ No newline at end of file diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs index 6d6cc267..9f5845d5 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs @@ -31,14 +31,14 @@ public async Task GetEmployeeDataReturnsOkResult() _identityMock.Setup(i => i.Role).Returns("Admin"); _identityMock.SetupGet(i => i.EmployeeId).Returns(2); - _employeeDataServiceMock.Setup(x => x.GetEmployeeData(_employeeDataDto.EmployeeId)) + _employeeDataServiceMock.Setup(x => x.GetEmployeeData((int)_employeeDataDto.EmployeeId!)) .ReturnsAsync(_employeeDataDto); - var result = await _controller.GetEmployeeData(_employeeDataDto.EmployeeId); + var result = await _controller.GetEmployeeData((int)_employeeDataDto.EmployeeId!); var okResult = Assert.IsType(result); - _employeeDataServiceMock.Verify(service => service.GetEmployeeData(_employeeDataDto.EmployeeId), Times.Once); + _employeeDataServiceMock.Verify(service => service.GetEmployeeData((int)_employeeDataDto.EmployeeId!), Times.Once); } [Fact] @@ -122,21 +122,21 @@ public async Task DeleteEmployeeDataReturnsOkResult() _identityMock.Setup(i => i.Role).Returns("SuperAdmin"); _identityMock.SetupGet(i => i.EmployeeId).Returns(2); - _employeeDataServiceMock.Setup(service => service.DeleteEmployeeData(_employeeDataDto.Id)) + _employeeDataServiceMock.Setup(service => service.DeleteEmployeeData((int)_employeeDataDto.Id!)) .ReturnsAsync(_employeeDataDto); - var result = await _controller.DeleteEmployeeData(_employeeDataDto.Id); + var result = await _controller.DeleteEmployeeData((int)_employeeDataDto.Id!); var okResult = Assert.IsType(result); var returnValue = Assert.IsType(okResult.Value); Assert.Equal(_employeeDataDto, returnValue); - _employeeDataServiceMock.Verify(service => service.DeleteEmployeeData(_employeeDataDto.Id), Times.Once); + _employeeDataServiceMock.Verify(service => service.DeleteEmployeeData((int)_employeeDataDto.Id!), Times.Once); } [Fact] public async Task DeleteUnauthorized() { - _employeeDataServiceMock.Setup(service => service.DeleteEmployeeData(_employeeDataDto.Id)) + _employeeDataServiceMock.Setup(service => service.DeleteEmployeeData((int)_employeeDataDto.Id!)) .ThrowsAsync(new CustomException("Unauthorized Access.")); var result = await MiddlewareHelperUnitTests.SimulateHandlingExceptionMiddlewareAsync(async () => await _controller.DeleteEmployeeData(1)); diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index 09d2f6dd..67ac2af1 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -1,9 +1,6 @@ using HRIS.Services.Interfaces; using HRIS.Services.Session; -using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using HRIS.Services.Services; - namespace RR.App.Controllers.HRIS; [Route("employee-profile")] @@ -17,11 +14,25 @@ public EmployeeProfileController(AuthorizeIdentity identity, IEmployeeProfileSer _employeeProfileService = employeeProfileService; } - [HttpGet] - public async Task GetEmployeeProfileById([FromQuery] int? id) + [HttpGet("profile-details")] + public async Task GetEmployeeProfileDetailsById([FromQuery] int? id) { - var employee = await _employeeProfileService.GetEmployeeProfileById(id); - return Ok(employee); + var profileDetails = await _employeeProfileService.GetEmployeeProfileDetailsById(id); + return Ok(profileDetails); } -} + + [HttpGet("career-summary")] + public async Task GetEmployeeCareerSummaryById([FromQuery] int? id) + { + var careerSummary = await _employeeProfileService.GetEmployeeCareerSummaryById(id); + return Ok(careerSummary); + } + + [HttpGet("banking-information")] + public async Task GetEmployeeBankingInformationById([FromQuery] int? id) + { + var bankingInformation = await _employeeProfileService.GetEmployeeBankingInformationById(id); + return Ok(bankingInformation); + } +} \ No newline at end of file diff --git a/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs b/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs index 6b3c147e..888fc697 100644 --- a/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs +++ b/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs @@ -14,7 +14,7 @@ public EmployeeData() public EmployeeData(EmployeeDataDto employeeDataDto) { - Id = employeeDataDto.Id; + Id = (int)employeeDataDto.Id!; EmployeeId = employeeDataDto.EmployeeId; FieldCodeId = employeeDataDto.FieldCodeId; Value = employeeDataDto.Value; @@ -28,7 +28,7 @@ public EmployeeData(EmployeeDataDto employeeDataDto) [ForeignKey("FieldCode")] public int FieldCodeId { get; set; } - [Column("value")] public string Value { get; set; } = null!; + [Column("value")] public string? Value { get; set; } = null!; public virtual Employee? Employee { get; set; } public virtual FieldCode? FieldCode { get; set; } From 90044551eb964c368630f4a83eb30d8b093c4be6 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Mon, 5 Aug 2024 15:47:04 +0200 Subject: [PATCH 10/14] First update method added --- ...fileContactDto.cs => ContactDetailsDto.cs} | 3 +- ...yeeDetailsDto.cs => EmployeeDetailsDto.cs} | 2 +- .../EmployeeProfileBankingInformationDto.cs | 1 - .../EmployeeProfileCareerSummaryDto.cs | 2 +- .../EmployeeProfileDetailsDto.cs | 10 ++--- ...lePersonalDto.cs => PersonalDetailsDto.cs} | 2 +- ...rofileSalaryDto.cs => SalaryDetailsDto.cs} | 2 +- .../Interfaces/IEmployeeProfileService.cs | 8 ++++ .../Services/EmployeeProfileService.cs | 43 ++++++++++++++++--- .../HRIS/EmployeeProfileController.cs | 11 ++++- 10 files changed, 64 insertions(+), 20 deletions(-) rename HRIS.Models/EmployeeProfileModels/{EmployeeProfileContactDto.cs => ContactDetailsDto.cs} (81%) rename HRIS.Models/EmployeeProfileModels/{EmployeeProfileEmployeeDetailsDto.cs => EmployeeDetailsDto.cs} (93%) rename HRIS.Models/EmployeeProfileModels/{EmployeeProfilePersonalDto.cs => PersonalDetailsDto.cs} (90%) rename HRIS.Models/EmployeeProfileModels/{EmployeeProfileSalaryDto.cs => SalaryDetailsDto.cs} (88%) diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileContactDto.cs b/HRIS.Models/EmployeeProfileModels/ContactDetailsDto.cs similarity index 81% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfileContactDto.cs rename to HRIS.Models/EmployeeProfileModels/ContactDetailsDto.cs index 78ffd6b1..8d3a503b 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileContactDto.cs +++ b/HRIS.Models/EmployeeProfileModels/ContactDetailsDto.cs @@ -2,9 +2,8 @@ namespace HRIS.Models.EmployeeProfileModels; -public class EmployeeProfileContactDto +public class ContactDetailsDto { - // public string? AuthUserId { get; set; } public int Id { get; set; } public string? Email { get; set; } public string? PersonalEmail { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeDetailsDto.cs similarity index 93% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs rename to HRIS.Models/EmployeeProfileModels/EmployeeDetailsDto.cs index 7f116c1d..2a94e579 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileEmployeeDetailsDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeDetailsDto.cs @@ -1,6 +1,6 @@ namespace HRIS.Models.EmployeeProfileModels; -public class EmployeeProfileEmployeeDetailsDto +public class EmployeeDetailsDto { public int Id { get; set; } public DateTime EngagementDate { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs index 010c2bab..b4d63f60 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs @@ -2,7 +2,6 @@ public class EmployeeProfileBankingInformationDto { - public EmployeeProfileSalaryDto EmployeeProfileSalary { get; set; } public List EmployeeBanking { get; set; } public EmployeeDataDto EmployeeData { get; set; } } \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs index 5130593e..fccd8201 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs @@ -2,7 +2,7 @@ public class EmployeeProfileCareerSummaryDto { - public EmployeeProfileSalaryDto EmployeeProfileSalary { get; set; } + public SalaryDetailsDto EmployeeProfileSalary { get; set; } // TODO: Endpoint for accordion public EmployeeQualificationDto EmployeeQualification { get; set; } public List WorkExperience { get; set; } public List EmployeeCertifications { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs b/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs index e6e24cb4..00f941b5 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs +++ b/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs @@ -2,11 +2,11 @@ public class EmployeeProfileDetailsDto { - public EmployeeProfileEmployeeDetailsDto EmployeeProfileDetails { get; set; } - public EmployeeProfilePersonalDto EmployeeProfilePersonal { get; set; } - public EmployeeProfileContactDto EmployeeProfileContact { get; set; } + public EmployeeDetailsDto EmployeeProfileDetails { get; set; } + public PersonalDetailsDto EmployeeProfilePersonal { get; set; } // TODO: Endpoint for accordion + public ContactDetailsDto EmployeeProfileContact { get; set; } // TODO: Endpoint for accordion public EmployeeDataDto EmployeeData { get; set; } - public string? Photo { get; set; } + public string? Photo { get; set; } public bool Active { get; set; } - public EmployeeAddressDto? PhysicalAddress { get; set; } + public EmployeeAddressDto? PhysicalAddress { get; set; } // TODO: Endpoint for accordion } \ No newline at end of file diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfilePersonalDto.cs b/HRIS.Models/EmployeeProfileModels/PersonalDetailsDto.cs similarity index 90% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfilePersonalDto.cs rename to HRIS.Models/EmployeeProfileModels/PersonalDetailsDto.cs index 56d22119..ff3b30b6 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfilePersonalDto.cs +++ b/HRIS.Models/EmployeeProfileModels/PersonalDetailsDto.cs @@ -2,7 +2,7 @@ namespace HRIS.Models.EmployeeProfileModels; -public class EmployeeProfilePersonalDto +public class PersonalDetailsDto { public int Id { get; set; } public bool Disability { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileSalaryDto.cs b/HRIS.Models/EmployeeProfileModels/SalaryDetailsDto.cs similarity index 88% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfileSalaryDto.cs rename to HRIS.Models/EmployeeProfileModels/SalaryDetailsDto.cs index 52bf10b7..76c083b3 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileSalaryDto.cs +++ b/HRIS.Models/EmployeeProfileModels/SalaryDetailsDto.cs @@ -2,7 +2,7 @@ namespace HRIS.Models.EmployeeProfileModels; -public class EmployeeProfileSalaryDto +public class SalaryDetailsDto { public string? TaxNumber { get; set; } public float? LeaveInterval { get; set; } diff --git a/HRIS.Services/Interfaces/IEmployeeProfileService.cs b/HRIS.Services/Interfaces/IEmployeeProfileService.cs index ef8f9cd5..849bd6a7 100644 --- a/HRIS.Services/Interfaces/IEmployeeProfileService.cs +++ b/HRIS.Services/Interfaces/IEmployeeProfileService.cs @@ -1,4 +1,5 @@ using HRIS.Models.EmployeeProfileModels; +using RR.UnitOfWork.Entities.HRIS; namespace HRIS.Services.Interfaces; @@ -24,4 +25,11 @@ public interface IEmployeeProfileService /// /// Task GetEmployeeBankingInformationById(int? id); + + /// + /// Get employee career summary by id + /// + /// + /// + Task UpdateEmployeeDetails(EmployeeDetailsDto employeeDetails); } diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index dc6f0f52..5b09fecc 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -4,6 +4,7 @@ using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; using RR.UnitOfWork; +using RR.UnitOfWork.Entities.HRIS; namespace HRIS.Services.Services; @@ -52,7 +53,7 @@ async Task IEmployeeProfileService.GetEmployeeProfile var clientAllocated = await _db.Client.Get(c => c.Id == employee.ClientAllocated).FirstOrDefaultAsync(); - EmployeeProfileEmployeeDetailsDto employeeDetails = new EmployeeProfileEmployeeDetailsDto + EmployeeDetailsDto employeeDetails = new EmployeeDetailsDto { Id = employee.Id, Name = employee.Name, @@ -71,7 +72,7 @@ async Task IEmployeeProfileService.GetEmployeeProfile TeamLeadName = employee.TeamLeadAssigned?.Name + " " + employee.TeamLeadAssigned?.Surname, }; - EmployeeProfilePersonalDto personalDetails = new EmployeeProfilePersonalDto + PersonalDetailsDto personalDetails = new PersonalDetailsDto { Id = employee.Id, Race = employee.Race, @@ -82,7 +83,7 @@ async Task IEmployeeProfileService.GetEmployeeProfile DisabilityNotes = employee.DisabilityNotes }; - EmployeeProfileContactDto contactDetails = new EmployeeProfileContactDto + ContactDetailsDto contactDetails = new ContactDetailsDto { Id = employee.Id, Email = employee.Email, @@ -109,6 +110,36 @@ async Task IEmployeeProfileService.GetEmployeeProfile return employeeProfileDetails; } + async Task IEmployeeProfileService.UpdateEmployeeDetails(EmployeeDetailsDto employeeDetails) + { + Employee? model = await _db.Employee + .Get(employee => employee.Id == employeeDetails.Id) + .AsNoTracking() + .Include(employee => employee.EmployeeType) + .Include(employee => employee.PhysicalAddress) + .Include(employee => employee.PostalAddress) + .Include(employee => employee.ChampionEmployee) + .Include(employee => employee.TeamLeadAssigned) + .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); + + model.EngagementDate = employeeDetails.EngagementDate; + model.PeopleChampion = employeeDetails.PeopleChampionId; + model.Level = employeeDetails.Level; + model.EmployeeType.Id = employeeDetails.EmployeeType.Id; + model.EmployeeType.Name = employeeDetails.EmployeeType.Name; + model.Name = employeeDetails.Name; + model.Initials = employeeDetails.Initials; + model.Surname = employeeDetails.Surname; + model.DateOfBirth = employeeDetails.DateOfBirth; + model.IdNumber = employeeDetails.IdNumber; + model.ClientAllocated = employeeDetails.ClientAllocatedId; + model.TeamLead = employeeDetails.TeamLeadId; + + var updatedEmployee = await _db.Employee.Update(model); + + return updatedEmployee; + } + async Task IEmployeeProfileService.GetEmployeeCareerSummaryById(int? id) { var employeeData = await GetEmployeeDataById(id); @@ -146,7 +177,7 @@ async Task IEmployeeProfileService.GetEmpl var employeeData = await GetEmployeeDataById(id); - EmployeeProfileSalaryDto employeeSalary = new EmployeeProfileSalaryDto + SalaryDetailsDto employeeSalary = new SalaryDetailsDto { LeaveInterval = employee.LeaveInterval, PayRate = employee.PayRate, @@ -195,13 +226,13 @@ async Task GetEmployeeDataById(int? id) return employeeDataDto; } - async Task GetEmployeeSalaryById(int? id) + async Task GetEmployeeSalaryById(int? id) { var employee = await _db.Employee .Get(employee => employee.Id == id) .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); - EmployeeProfileSalaryDto employeeProfileSalary = new EmployeeProfileSalaryDto + SalaryDetailsDto employeeProfileSalary = new SalaryDetailsDto { Salary = employee.Salary, SalaryDays = employee.SalaryDays, diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index 67ac2af1..5d449b49 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -1,4 +1,5 @@ -using HRIS.Services.Interfaces; +using HRIS.Models.EmployeeProfileModels; +using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.AspNetCore.Mvc; namespace RR.App.Controllers.HRIS; @@ -21,7 +22,6 @@ public async Task GetEmployeeProfileDetailsById([FromQuery] int? return Ok(profileDetails); } - [HttpGet("career-summary")] public async Task GetEmployeeCareerSummaryById([FromQuery] int? id) { @@ -35,4 +35,11 @@ public async Task GetEmployeeBankingInformationById([FromQuery] i var bankingInformation = await _employeeProfileService.GetEmployeeBankingInformationById(id); return Ok(bankingInformation); } + + [HttpPut("profile-details")] + public async Task UpdateEmployeeDetailsById([FromBody] EmployeeDetailsDto employeeDetails) + { + var result = await _employeeProfileService.UpdateEmployeeDetails(employeeDetails); + return Ok(result); + } } \ No newline at end of file From 98a95eaa4779b48ef3054fc0e705435aa9c8a230 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Mon, 5 Aug 2024 15:52:36 +0200 Subject: [PATCH 11/14] changes --- HRIS.Services/Services/EmployeeProfileService.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index 5b09fecc..e1ce8828 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -189,7 +189,6 @@ async Task IEmployeeProfileService.GetEmpl EmployeeProfileBankingInformationDto employeeBankingInformation = new EmployeeProfileBankingInformationDto { EmployeeBanking = employeeBanking, - EmployeeProfileSalary = employeeSalary, EmployeeData = employeeData, }; From 28d5e8a199b7ca9048837979ad340d3663676adb Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Mon, 5 Aug 2024 16:14:51 +0200 Subject: [PATCH 12/14] Restructure employee files to match structure of front-end --- HRIS.Models/BankingAndStarterKitDto.cs | 4 +++- .../Commons/BankingSalaryDetailsDto.cs} | 4 ++-- .../Commons}/ContactDetailsDto.cs | 2 +- .../{ => Employee/Commons}/EmployeeAddressDto.cs | 2 +- .../{ => Employee/Commons}/EmployeeBankingDto.cs | 2 +- .../{ => Employee/Commons}/EmployeeDataDto.cs | 2 +- .../Commons}/EmployeeDetailsDto.cs | 2 +- .../Commons}/EmployeeQualificationDto.cs | 2 +- .../Commons}/PersonalDetailsDto.cs | 2 +- .../Commons}/SalaryDetailsDto.cs | 2 +- .../{ => Employee/Commons}/WorkExperienceDto.cs | 2 +- .../Profile/BankingInformationDto.cs} | 6 ++++-- .../Profile/CareerSummaryDto.cs} | 6 ++++-- .../Profile/ProfileDetailsDto.cs} | 8 +++++--- HRIS.Models/EmployeeDto.cs | 3 ++- HRIS.Models/SimpleEmployeeProfileDto.cs | 3 ++- .../Handler/Charts/AgeTypeUnitTest.cs | 1 + .../Handler/Charts/LeaveIntervalTypeUnitTest.cs | 1 + .../Handler/Charts/LevelTypeUnitTest.cs | 1 + .../Handler/Charts/PayRateTypeUnitTest.cs | 1 + .../Handler/Charts/SalaryTypeUnitTest.cs | 1 + .../EmployeeSalaryDetailsServiceUnitTests.cs | 14 +++++++------- .../Services/EmployeeServiceUnitTests.cs | 1 + .../Interfaces/IEmployeeAddressService.cs | 2 +- .../Interfaces/IEmployeeBankingService.cs | 2 +- HRIS.Services/Interfaces/IEmployeeDataService.cs | 2 +- .../Interfaces/IEmployeeProfileService.cs | 9 +++++---- .../Interfaces/IEmployeeQualificationService.cs | 2 +- .../Interfaces/IEmployeeSalarayDetailsService.cs | 12 ++++++------ HRIS.Services/Interfaces/IWorkExperience.cs | 2 +- HRIS.Services/Services/EmployeeAddressService.cs | 2 +- HRIS.Services/Services/EmployeeBankingService.cs | 2 +- HRIS.Services/Services/EmployeeDataService.cs | 2 +- HRIS.Services/Services/EmployeeProfileService.cs | 15 ++++++++------- .../Services/EmployeeQualificationService.cs | 2 +- .../Services/EmployeeSalaryDetailsService.cs | 12 ++++++------ HRIS.Services/Services/EmployeeService.cs | 1 + HRIS.Services/Services/WorkExperienceService.cs | 2 +- .../HRIS/EmployeeAddressControllerUnitTests.cs | 2 +- .../HRIS/EmployeeBankingControllerUnitTests.cs | 2 +- .../HRIS/EmployeeControllerUnitTests.cs | 1 + .../HRIS/EmployeeDataControllerUnitTests.cs | 2 +- .../EmployeeQualificationControllerUnitTests.cs | 2 +- .../EmployeeSalaryDetailsControllerUnitTests.cs | 13 +++++++------ .../HRIS/WorkExperienceControllerUnitTest.cs | 2 +- .../Controllers/HRIS/EmployeeAddressController.cs | 2 +- .../Controllers/HRIS/EmployeeBankingController.cs | 2 +- RR.App/Controllers/HRIS/EmployeeDataController.cs | 2 +- .../Controllers/HRIS/EmployeeProfileController.cs | 2 +- .../HRIS/EmployeeQualificationController.cs | 2 +- .../HRIS/EmployeeSalaryDetailsController.cs | 8 ++++---- .../Controllers/HRIS/WorkExperienceController.cs | 2 +- .../Entities/EmployeeAddressUnitTests.cs | 1 + .../Entities/EmployeeBankingUnitTests.cs | 1 + .../Entities/EmployeeDataUnitTests.cs | 1 + .../Entities/EmployeeDateUnitTests.cs | 1 + .../Entities/EmployeeDocumentUnitTests.cs | 1 + .../EmployeeDateRepositoryUnitTest.cs | 1 + RR.UnitOfWork/Entities/HRIS/EmployeeAddress.cs | 2 +- RR.UnitOfWork/Entities/HRIS/EmployeeBanking.cs | 2 +- RR.UnitOfWork/Entities/HRIS/EmployeeData.cs | 2 +- .../Entities/HRIS/EmployeeQualification.cs | 4 ++-- .../Entities/HRIS/EmployeeSalaryDetails.cs | 8 ++++---- RR.UnitOfWork/Entities/HRIS/WorkExperience.cs | 2 +- 64 files changed, 119 insertions(+), 92 deletions(-) rename HRIS.Models/{EmployeeSalaryDetailsDto.cs => Employee/Commons/BankingSalaryDetailsDto.cs} (84%) rename HRIS.Models/{EmployeeProfileModels => Employee/Commons}/ContactDetailsDto.cs (89%) rename HRIS.Models/{ => Employee/Commons}/EmployeeAddressDto.cs (91%) rename HRIS.Models/{ => Employee/Commons}/EmployeeBankingDto.cs (93%) rename HRIS.Models/{ => Employee/Commons}/EmployeeDataDto.cs (81%) rename HRIS.Models/{EmployeeProfileModels => Employee/Commons}/EmployeeDetailsDto.cs (93%) rename HRIS.Models/{ => Employee/Commons}/EmployeeQualificationDto.cs (94%) rename HRIS.Models/{EmployeeProfileModels => Employee/Commons}/PersonalDetailsDto.cs (88%) rename HRIS.Models/{EmployeeProfileModels => Employee/Commons}/SalaryDetailsDto.cs (85%) rename HRIS.Models/{ => Employee/Commons}/WorkExperienceDto.cs (90%) rename HRIS.Models/{EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs => Employee/Profile/BankingInformationDto.cs} (51%) rename HRIS.Models/{EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs => Employee/Profile/CareerSummaryDto.cs} (77%) rename HRIS.Models/{EmployeeProfileModels/EmployeeProfileDetailsDto.cs => Employee/Profile/ProfileDetailsDto.cs} (75%) diff --git a/HRIS.Models/BankingAndStarterKitDto.cs b/HRIS.Models/BankingAndStarterKitDto.cs index bc25a170..a2a4abcc 100644 --- a/HRIS.Models/BankingAndStarterKitDto.cs +++ b/HRIS.Models/BankingAndStarterKitDto.cs @@ -1,4 +1,6 @@ -namespace HRIS.Models; +using HRIS.Models.Employee.Commons; + +namespace HRIS.Models; public class BankingAndStarterKitDto { diff --git a/HRIS.Models/EmployeeSalaryDetailsDto.cs b/HRIS.Models/Employee/Commons/BankingSalaryDetailsDto.cs similarity index 84% rename from HRIS.Models/EmployeeSalaryDetailsDto.cs rename to HRIS.Models/Employee/Commons/BankingSalaryDetailsDto.cs index 05c44bde..93ffb1cf 100644 --- a/HRIS.Models/EmployeeSalaryDetailsDto.cs +++ b/HRIS.Models/Employee/Commons/BankingSalaryDetailsDto.cs @@ -1,8 +1,8 @@ using HRIS.Models.Enums; -namespace HRIS.Models; +namespace HRIS.Models.Employee.Commons; -public class EmployeeSalaryDetailsDto +public class BankingSalaryDetailsDto { public int Id { get; set; } public int EmployeeId { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/ContactDetailsDto.cs b/HRIS.Models/Employee/Commons/ContactDetailsDto.cs similarity index 89% rename from HRIS.Models/EmployeeProfileModels/ContactDetailsDto.cs rename to HRIS.Models/Employee/Commons/ContactDetailsDto.cs index 8d3a503b..8e5a0954 100644 --- a/HRIS.Models/EmployeeProfileModels/ContactDetailsDto.cs +++ b/HRIS.Models/Employee/Commons/ContactDetailsDto.cs @@ -1,6 +1,6 @@ using HRIS.Models.Enums; -namespace HRIS.Models.EmployeeProfileModels; +namespace HRIS.Models.Employee.Commons; public class ContactDetailsDto { diff --git a/HRIS.Models/EmployeeAddressDto.cs b/HRIS.Models/Employee/Commons/EmployeeAddressDto.cs similarity index 91% rename from HRIS.Models/EmployeeAddressDto.cs rename to HRIS.Models/Employee/Commons/EmployeeAddressDto.cs index d0dbaa36..7c0f3a83 100644 --- a/HRIS.Models/EmployeeAddressDto.cs +++ b/HRIS.Models/Employee/Commons/EmployeeAddressDto.cs @@ -1,4 +1,4 @@ -namespace HRIS.Models; +namespace HRIS.Models.Employee.Commons; public class EmployeeAddressDto { diff --git a/HRIS.Models/EmployeeBankingDto.cs b/HRIS.Models/Employee/Commons/EmployeeBankingDto.cs similarity index 93% rename from HRIS.Models/EmployeeBankingDto.cs rename to HRIS.Models/Employee/Commons/EmployeeBankingDto.cs index 7b8eba0d..216663bf 100644 --- a/HRIS.Models/EmployeeBankingDto.cs +++ b/HRIS.Models/Employee/Commons/EmployeeBankingDto.cs @@ -1,6 +1,6 @@ using HRIS.Models.Enums; -namespace HRIS.Models; +namespace HRIS.Models.Employee.Commons; public class EmployeeBankingDto { diff --git a/HRIS.Models/EmployeeDataDto.cs b/HRIS.Models/Employee/Commons/EmployeeDataDto.cs similarity index 81% rename from HRIS.Models/EmployeeDataDto.cs rename to HRIS.Models/Employee/Commons/EmployeeDataDto.cs index 39cf851c..368a5ff2 100644 --- a/HRIS.Models/EmployeeDataDto.cs +++ b/HRIS.Models/Employee/Commons/EmployeeDataDto.cs @@ -1,4 +1,4 @@ -namespace HRIS.Models; +namespace HRIS.Models.Employee.Commons; public class EmployeeDataDto { diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeDetailsDto.cs b/HRIS.Models/Employee/Commons/EmployeeDetailsDto.cs similarity index 93% rename from HRIS.Models/EmployeeProfileModels/EmployeeDetailsDto.cs rename to HRIS.Models/Employee/Commons/EmployeeDetailsDto.cs index 2a94e579..5a95c6dd 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeDetailsDto.cs +++ b/HRIS.Models/Employee/Commons/EmployeeDetailsDto.cs @@ -1,4 +1,4 @@ -namespace HRIS.Models.EmployeeProfileModels; +namespace HRIS.Models.Employee.Commons; public class EmployeeDetailsDto { diff --git a/HRIS.Models/EmployeeQualificationDto.cs b/HRIS.Models/Employee/Commons/EmployeeQualificationDto.cs similarity index 94% rename from HRIS.Models/EmployeeQualificationDto.cs rename to HRIS.Models/Employee/Commons/EmployeeQualificationDto.cs index b60a42da..686ddf21 100644 --- a/HRIS.Models/EmployeeQualificationDto.cs +++ b/HRIS.Models/Employee/Commons/EmployeeQualificationDto.cs @@ -1,7 +1,7 @@ using HRIS.Models.Enums.QualificationEnums; using System.ComponentModel.DataAnnotations; -namespace HRIS.Models; +namespace HRIS.Models.Employee.Commons; public class EmployeeQualificationDto { diff --git a/HRIS.Models/EmployeeProfileModels/PersonalDetailsDto.cs b/HRIS.Models/Employee/Commons/PersonalDetailsDto.cs similarity index 88% rename from HRIS.Models/EmployeeProfileModels/PersonalDetailsDto.cs rename to HRIS.Models/Employee/Commons/PersonalDetailsDto.cs index ff3b30b6..04241f84 100644 --- a/HRIS.Models/EmployeeProfileModels/PersonalDetailsDto.cs +++ b/HRIS.Models/Employee/Commons/PersonalDetailsDto.cs @@ -1,6 +1,6 @@ using HRIS.Models.Enums; -namespace HRIS.Models.EmployeeProfileModels; +namespace HRIS.Models.Employee.Commons; public class PersonalDetailsDto { diff --git a/HRIS.Models/EmployeeProfileModels/SalaryDetailsDto.cs b/HRIS.Models/Employee/Commons/SalaryDetailsDto.cs similarity index 85% rename from HRIS.Models/EmployeeProfileModels/SalaryDetailsDto.cs rename to HRIS.Models/Employee/Commons/SalaryDetailsDto.cs index 76c083b3..ebc8806a 100644 --- a/HRIS.Models/EmployeeProfileModels/SalaryDetailsDto.cs +++ b/HRIS.Models/Employee/Commons/SalaryDetailsDto.cs @@ -1,6 +1,6 @@ using HRIS.Models.Enums; -namespace HRIS.Models.EmployeeProfileModels; +namespace HRIS.Models.Employee.Commons; public class SalaryDetailsDto { diff --git a/HRIS.Models/WorkExperienceDto.cs b/HRIS.Models/Employee/Commons/WorkExperienceDto.cs similarity index 90% rename from HRIS.Models/WorkExperienceDto.cs rename to HRIS.Models/Employee/Commons/WorkExperienceDto.cs index 36da8460..1216c3c3 100644 --- a/HRIS.Models/WorkExperienceDto.cs +++ b/HRIS.Models/Employee/Commons/WorkExperienceDto.cs @@ -1,4 +1,4 @@ -namespace HRIS.Models; +namespace HRIS.Models.Employee.Commons; public class WorkExperienceDto { public int Id { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs b/HRIS.Models/Employee/Profile/BankingInformationDto.cs similarity index 51% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs rename to HRIS.Models/Employee/Profile/BankingInformationDto.cs index b4d63f60..7b1718b5 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileBankingInformationDto.cs +++ b/HRIS.Models/Employee/Profile/BankingInformationDto.cs @@ -1,6 +1,8 @@ -namespace HRIS.Models.EmployeeProfileModels; +using HRIS.Models.Employee.Commons; -public class EmployeeProfileBankingInformationDto +namespace HRIS.Models.Employee.Profile; + +public class BankingInformationDto { public List EmployeeBanking { get; set; } public EmployeeDataDto EmployeeData { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs b/HRIS.Models/Employee/Profile/CareerSummaryDto.cs similarity index 77% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs rename to HRIS.Models/Employee/Profile/CareerSummaryDto.cs index fccd8201..12bf41d7 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileCareerSummaryDto.cs +++ b/HRIS.Models/Employee/Profile/CareerSummaryDto.cs @@ -1,6 +1,8 @@ -namespace HRIS.Models.EmployeeProfileModels; +using HRIS.Models.Employee.Commons; -public class EmployeeProfileCareerSummaryDto +namespace HRIS.Models.Employee.Profile; + +public class CareerSummaryDto { public SalaryDetailsDto EmployeeProfileSalary { get; set; } // TODO: Endpoint for accordion public EmployeeQualificationDto EmployeeQualification { get; set; } diff --git a/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs b/HRIS.Models/Employee/Profile/ProfileDetailsDto.cs similarity index 75% rename from HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs rename to HRIS.Models/Employee/Profile/ProfileDetailsDto.cs index 00f941b5..4c7f83ca 100644 --- a/HRIS.Models/EmployeeProfileModels/EmployeeProfileDetailsDto.cs +++ b/HRIS.Models/Employee/Profile/ProfileDetailsDto.cs @@ -1,12 +1,14 @@ -namespace HRIS.Models.EmployeeProfileModels; +using HRIS.Models.Employee.Commons; -public class EmployeeProfileDetailsDto +namespace HRIS.Models.Employee.Profile; + +public class ProfileDetailsDto { public EmployeeDetailsDto EmployeeProfileDetails { get; set; } public PersonalDetailsDto EmployeeProfilePersonal { get; set; } // TODO: Endpoint for accordion public ContactDetailsDto EmployeeProfileContact { get; set; } // TODO: Endpoint for accordion public EmployeeDataDto EmployeeData { get; set; } - public string? Photo { get; set; } + public string? Photo { get; set; } public bool Active { get; set; } public EmployeeAddressDto? PhysicalAddress { get; set; } // TODO: Endpoint for accordion } \ No newline at end of file diff --git a/HRIS.Models/EmployeeDto.cs b/HRIS.Models/EmployeeDto.cs index 860ae40d..38272123 100644 --- a/HRIS.Models/EmployeeDto.cs +++ b/HRIS.Models/EmployeeDto.cs @@ -1,4 +1,5 @@ -using HRIS.Models.Enums; +using HRIS.Models.Employee.Commons; +using HRIS.Models.Enums; namespace HRIS.Models; diff --git a/HRIS.Models/SimpleEmployeeProfileDto.cs b/HRIS.Models/SimpleEmployeeProfileDto.cs index 04788418..d9acae51 100644 --- a/HRIS.Models/SimpleEmployeeProfileDto.cs +++ b/HRIS.Models/SimpleEmployeeProfileDto.cs @@ -1,4 +1,5 @@ -using HRIS.Models.Enums; +using HRIS.Models.Employee.Commons; +using HRIS.Models.Enums; namespace HRIS.Models; public class SimpleEmployeeProfileDto diff --git a/HRIS.Services.Tests/Handler/Charts/AgeTypeUnitTest.cs b/HRIS.Services.Tests/Handler/Charts/AgeTypeUnitTest.cs index ed3d7c55..286019b9 100644 --- a/HRIS.Services.Tests/Handler/Charts/AgeTypeUnitTest.cs +++ b/HRIS.Services.Tests/Handler/Charts/AgeTypeUnitTest.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; diff --git a/HRIS.Services.Tests/Handler/Charts/LeaveIntervalTypeUnitTest.cs b/HRIS.Services.Tests/Handler/Charts/LeaveIntervalTypeUnitTest.cs index 883eb40c..81942ce8 100644 --- a/HRIS.Services.Tests/Handler/Charts/LeaveIntervalTypeUnitTest.cs +++ b/HRIS.Services.Tests/Handler/Charts/LeaveIntervalTypeUnitTest.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; diff --git a/HRIS.Services.Tests/Handler/Charts/LevelTypeUnitTest.cs b/HRIS.Services.Tests/Handler/Charts/LevelTypeUnitTest.cs index f107983c..38938205 100644 --- a/HRIS.Services.Tests/Handler/Charts/LevelTypeUnitTest.cs +++ b/HRIS.Services.Tests/Handler/Charts/LevelTypeUnitTest.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; diff --git a/HRIS.Services.Tests/Handler/Charts/PayRateTypeUnitTest.cs b/HRIS.Services.Tests/Handler/Charts/PayRateTypeUnitTest.cs index 405d1237..3baca682 100644 --- a/HRIS.Services.Tests/Handler/Charts/PayRateTypeUnitTest.cs +++ b/HRIS.Services.Tests/Handler/Charts/PayRateTypeUnitTest.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; diff --git a/HRIS.Services.Tests/Handler/Charts/SalaryTypeUnitTest.cs b/HRIS.Services.Tests/Handler/Charts/SalaryTypeUnitTest.cs index 4ec27501..3a2c836d 100644 --- a/HRIS.Services.Tests/Handler/Charts/SalaryTypeUnitTest.cs +++ b/HRIS.Services.Tests/Handler/Charts/SalaryTypeUnitTest.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; diff --git a/HRIS.Services.Tests/Services/EmployeeSalaryDetailsServiceUnitTests.cs b/HRIS.Services.Tests/Services/EmployeeSalaryDetailsServiceUnitTests.cs index deb752ec..b4ef9320 100644 --- a/HRIS.Services.Tests/Services/EmployeeSalaryDetailsServiceUnitTests.cs +++ b/HRIS.Services.Tests/Services/EmployeeSalaryDetailsServiceUnitTests.cs @@ -1,6 +1,6 @@ using System; using System.Linq.Expressions; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; @@ -57,7 +57,7 @@ public async Task GetEmployeeSalaryDetailsById_Success() Assert.NotNull(result); Assert.Equal(_employeeSalaryDetails.Salary, result.Salary); Assert.Equal(_employeeSalaryDetails.Salary, result.Salary); - Assert.IsType(result); + Assert.IsType(result); } [Fact] @@ -115,7 +115,7 @@ public async Task GetAllEmployeeSalaryDetails_Success() Assert.NotNull(result); Assert.Equal(2, result.Count); Assert.Equivalent(employeeSalaries.Select(x => x.ToDto()).ToList(), result); - Assert.IsType>(result); + Assert.IsType>(result); } [Fact] @@ -204,11 +204,11 @@ public async Task CreateEmployeeSalaryDetails_Success() .Setup(m => m.EmployeeSalaryDetails.Get(It.IsAny>>())) .Returns(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToMockIQueryable()); - _employeeSalaryDetailsServiceMock.Setup(r => r.CreateEmployeeSalary(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto()); + _employeeSalaryDetailsServiceMock.Setup(r => r.CreateEmployeeSalary(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto()); _dbMock.Setup(r => r.EmployeeSalaryDetails.Add(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne); - var result = await _employeeSalaryDetailsService.CreateEmployeeSalary(new EmployeeSalaryDetailsDto { Id = 0, EmployeeId = 7, Band = EmployeeSalaryBand.Level1, Salary = 1090, MinSalary = 1900, MaxSalary = 25990, Remuneration = 1599, Contribution = null, SalaryUpdateDate = new DateTime() }); + var result = await _employeeSalaryDetailsService.CreateEmployeeSalary(new BankingSalaryDetailsDto { Id = 0, EmployeeId = 7, Band = EmployeeSalaryBand.Level1, Salary = 1090, MinSalary = 1900, MaxSalary = 25990, Remuneration = 1599, Contribution = null, SalaryUpdateDate = new DateTime() }); _dbMock.Verify(x => x.EmployeeSalaryDetails.Add(It.IsAny()), Times.Once); @@ -220,7 +220,7 @@ public async Task CreateEmployeeSalaryDetails_Success() [Fact] public async Task CreateEmployeeSalaryDetails_DoesNotExist() { - _employeeSalaryDetailsServiceMock.Setup(r => r.CreateEmployeeSalary(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto()); + _employeeSalaryDetailsServiceMock.Setup(r => r.CreateEmployeeSalary(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto()); _dbMock.Setup(r => r.EmployeeSalaryDetails.Add(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne); _dbMock.Setup(x => x.EmployeeSalaryDetails.Any(It.IsAny>>())) @@ -243,7 +243,7 @@ public async Task CreateEmployeeSalaryDetails_Unauthorized() .ReturnsAsync(false); _dbMock.Setup(r => r.EmployeeSalaryDetails.Add(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne); - _employeeSalaryDetailsServiceMock.Setup(r => r.CreateEmployeeSalary(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto()); + _employeeSalaryDetailsServiceMock.Setup(r => r.CreateEmployeeSalary(It.IsAny())).ReturnsAsync(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto()); var exception = await Assert.ThrowsAnyAsync(() => _employeeSalaryDetailsService .CreateEmployeeSalary(EmployeeSalaryDetailsTestData.EmployeeSalaryDetailsOne.ToDto())); diff --git a/HRIS.Services.Tests/Services/EmployeeServiceUnitTests.cs b/HRIS.Services.Tests/Services/EmployeeServiceUnitTests.cs index a9c2740c..9caa917b 100644 --- a/HRIS.Services.Tests/Services/EmployeeServiceUnitTests.cs +++ b/HRIS.Services.Tests/Services/EmployeeServiceUnitTests.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Interfaces.Helper; using HRIS.Services.Services; diff --git a/HRIS.Services/Interfaces/IEmployeeAddressService.cs b/HRIS.Services/Interfaces/IEmployeeAddressService.cs index f0a6be68..3ba583ab 100644 --- a/HRIS.Services/Interfaces/IEmployeeAddressService.cs +++ b/HRIS.Services/Interfaces/IEmployeeAddressService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; namespace HRIS.Services.Interfaces; diff --git a/HRIS.Services/Interfaces/IEmployeeBankingService.cs b/HRIS.Services/Interfaces/IEmployeeBankingService.cs index bfed3dfd..9d11297b 100644 --- a/HRIS.Services/Interfaces/IEmployeeBankingService.cs +++ b/HRIS.Services/Interfaces/IEmployeeBankingService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using RR.UnitOfWork.Entities.HRIS; namespace HRIS.Services.Interfaces; diff --git a/HRIS.Services/Interfaces/IEmployeeDataService.cs b/HRIS.Services/Interfaces/IEmployeeDataService.cs index 3f952881..3c2fc690 100644 --- a/HRIS.Services/Interfaces/IEmployeeDataService.cs +++ b/HRIS.Services/Interfaces/IEmployeeDataService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; namespace HRIS.Services.Interfaces; diff --git a/HRIS.Services/Interfaces/IEmployeeProfileService.cs b/HRIS.Services/Interfaces/IEmployeeProfileService.cs index 849bd6a7..75051477 100644 --- a/HRIS.Services/Interfaces/IEmployeeProfileService.cs +++ b/HRIS.Services/Interfaces/IEmployeeProfileService.cs @@ -1,4 +1,5 @@ -using HRIS.Models.EmployeeProfileModels; +using HRIS.Models.Employee.Commons; +using HRIS.Models.Employee.Profile; using RR.UnitOfWork.Entities.HRIS; namespace HRIS.Services.Interfaces; @@ -10,21 +11,21 @@ public interface IEmployeeProfileService /// /// /// - Task GetEmployeeProfileDetailsById(int? id); + Task GetEmployeeProfileDetailsById(int? id); /// /// Get employee career summary by id /// /// /// - Task GetEmployeeCareerSummaryById(int? id); + Task GetEmployeeCareerSummaryById(int? id); /// /// Get employee career summary by id /// /// /// - Task GetEmployeeBankingInformationById(int? id); + Task GetEmployeeBankingInformationById(int? id); /// /// Get employee career summary by id diff --git a/HRIS.Services/Interfaces/IEmployeeQualificationService.cs b/HRIS.Services/Interfaces/IEmployeeQualificationService.cs index 693192ea..803cf67c 100644 --- a/HRIS.Services/Interfaces/IEmployeeQualificationService.cs +++ b/HRIS.Services/Interfaces/IEmployeeQualificationService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; namespace HRIS.Services.Interfaces; diff --git a/HRIS.Services/Interfaces/IEmployeeSalarayDetailsService.cs b/HRIS.Services/Interfaces/IEmployeeSalarayDetailsService.cs index 06fc728f..734b50c2 100644 --- a/HRIS.Services/Interfaces/IEmployeeSalarayDetailsService.cs +++ b/HRIS.Services/Interfaces/IEmployeeSalarayDetailsService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; namespace HRIS.Services.Interfaces; @@ -9,30 +9,30 @@ public interface IEmployeeSalaryDetailsService /// /// The employeeSalaryDto of the employee salary details to save. /// The saved EmployeeSalaryDto object. - Task CreateEmployeeSalary(EmployeeSalaryDetailsDto employeeSalaryDto); + Task CreateEmployeeSalary(BankingSalaryDetailsDto employeeSalaryDto); /// /// Get Employee Salary /// /// The employeeId of the employee salary details to get. /// The employeeSalaryDetailsDto object. - Task GetEmployeeSalaryById(int employeeId); + Task GetEmployeeSalaryById(int employeeId); /// /// Get All Employee Salaries /// /// - Task> GetAllEmployeeSalaries(); + Task> GetAllEmployeeSalaries(); /// /// Update Employee Salary /// /// The epmployeeSalaryDto to update. /// The updated employeeSalarayDto object. - Task UpdateEmployeeSalary(EmployeeSalaryDetailsDto employeeSalaryDto); + Task UpdateEmployeeSalary(BankingSalaryDetailsDto employeeSalaryDto); /// /// Delete Employee Salary /// /// The employeeId of the employee salary details to delete. /// The deleted employeeSalaryDetails object. - Task DeleteEmployeeSalary(int employeeId); + Task DeleteEmployeeSalary(int employeeId); /// /// Employee Type Exists /// diff --git a/HRIS.Services/Interfaces/IWorkExperience.cs b/HRIS.Services/Interfaces/IWorkExperience.cs index 1017907b..fc8c9faf 100644 --- a/HRIS.Services/Interfaces/IWorkExperience.cs +++ b/HRIS.Services/Interfaces/IWorkExperience.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; namespace HRIS.Services.Interfaces; diff --git a/HRIS.Services/Services/EmployeeAddressService.cs b/HRIS.Services/Services/EmployeeAddressService.cs index 6fde7b56..273720a8 100644 --- a/HRIS.Services/Services/EmployeeAddressService.cs +++ b/HRIS.Services/Services/EmployeeAddressService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using RR.UnitOfWork; diff --git a/HRIS.Services/Services/EmployeeBankingService.cs b/HRIS.Services/Services/EmployeeBankingService.cs index 1f8c419e..90d34d35 100644 --- a/HRIS.Services/Services/EmployeeBankingService.cs +++ b/HRIS.Services/Services/EmployeeBankingService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Session; diff --git a/HRIS.Services/Services/EmployeeDataService.cs b/HRIS.Services/Services/EmployeeDataService.cs index c5af215c..dcfb531d 100644 --- a/HRIS.Services/Services/EmployeeDataService.cs +++ b/HRIS.Services/Services/EmployeeDataService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using RR.UnitOfWork; diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index e1ce8828..e44babe5 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -1,5 +1,6 @@ using HRIS.Models; -using HRIS.Models.EmployeeProfileModels; +using HRIS.Models.Employee.Commons; +using HRIS.Models.Employee.Profile; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; @@ -32,7 +33,7 @@ public EmployeeProfileService(AuthorizeIdentity identity, _employeeCertificationService = employeeCertificationService; _employeeBankingService = employeeBankingService; } - async Task IEmployeeProfileService.GetEmployeeProfileDetailsById(int? id) + async Task IEmployeeProfileService.GetEmployeeProfileDetailsById(int? id) { var employeeId = (int)id; @@ -96,7 +97,7 @@ async Task IEmployeeProfileService.GetEmployeeProfile var employeeData = GetEmployeeDataById(id).Result; - EmployeeProfileDetailsDto employeeProfileDetails = new EmployeeProfileDetailsDto + ProfileDetailsDto employeeProfileDetails = new ProfileDetailsDto { EmployeeProfileDetails = employeeDetails, EmployeeProfilePersonal = personalDetails, @@ -140,7 +141,7 @@ async Task IEmployeeProfileService.UpdateEmployeeDetails(EmployeeDetai return updatedEmployee; } - async Task IEmployeeProfileService.GetEmployeeCareerSummaryById(int? id) + async Task IEmployeeProfileService.GetEmployeeCareerSummaryById(int? id) { var employeeData = await GetEmployeeDataById(id); @@ -152,7 +153,7 @@ async Task IEmployeeProfileService.GetEmployeeC var employeeWorkExperience = await GetEmployeeWorkExperienceById(id); - EmployeeProfileCareerSummaryDto employeeCareerSummary = new EmployeeProfileCareerSummaryDto + CareerSummaryDto employeeCareerSummary = new CareerSummaryDto { EmployeeProfileSalary = employeeSalary, EmployeeCertifications = employeeCertifications, @@ -164,7 +165,7 @@ async Task IEmployeeProfileService.GetEmployeeC return employeeCareerSummary; } - async Task IEmployeeProfileService.GetEmployeeBankingInformationById(int? id) + async Task IEmployeeProfileService.GetEmployeeBankingInformationById(int? id) { var employeeBanking = await _db.EmployeeBanking .Get(banking => banking.EmployeeId == id) @@ -186,7 +187,7 @@ async Task IEmployeeProfileService.GetEmpl TaxNumber = employee.TaxNumber, }; - EmployeeProfileBankingInformationDto employeeBankingInformation = new EmployeeProfileBankingInformationDto + BankingInformationDto employeeBankingInformation = new BankingInformationDto { EmployeeBanking = employeeBanking, EmployeeData = employeeData, diff --git a/HRIS.Services/Services/EmployeeQualificationService.cs b/HRIS.Services/Services/EmployeeQualificationService.cs index 7190f6f3..40882cbf 100644 --- a/HRIS.Services/Services/EmployeeQualificationService.cs +++ b/HRIS.Services/Services/EmployeeQualificationService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; diff --git a/HRIS.Services/Services/EmployeeSalaryDetailsService.cs b/HRIS.Services/Services/EmployeeSalaryDetailsService.cs index bf38f60e..bd7b3a99 100644 --- a/HRIS.Services/Services/EmployeeSalaryDetailsService.cs +++ b/HRIS.Services/Services/EmployeeSalaryDetailsService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; @@ -23,7 +23,7 @@ public async Task EmployeeSalaryDetailsExists(int id) return await _db.EmployeeSalaryDetails.Any(x => x.Id == id); } - public async Task DeleteEmployeeSalary(int id) + public async Task DeleteEmployeeSalary(int id) { var exists = await EmployeeSalaryDetailsExists(id); @@ -38,12 +38,12 @@ public async Task DeleteEmployeeSalary(int id) return deletedEmployeeSalaryDetails.ToDto(); } - public async Task> GetAllEmployeeSalaries() + public async Task> GetAllEmployeeSalaries() { return (await _db.EmployeeSalaryDetails.GetAll()).Select(x => x.ToDto()).ToList(); } - public async Task GetEmployeeSalaryById(int employeeId) + public async Task GetEmployeeSalaryById(int employeeId) { var ifEmployeeExists = await CheckEmployee(employeeId); @@ -60,7 +60,7 @@ public async Task GetEmployeeSalaryById(int employeeId .FirstOrDefaultAsync(); } - public async Task CreateEmployeeSalary(EmployeeSalaryDetailsDto employeeSalaryDto) + public async Task CreateEmployeeSalary(BankingSalaryDetailsDto employeeSalaryDto) { var exists = await EmployeeSalaryDetailsExists(employeeSalaryDto.Id); @@ -75,7 +75,7 @@ public async Task CreateEmployeeSalary(EmployeeSalaryD return employeeSalary.ToDto(); } - public async Task UpdateEmployeeSalary(EmployeeSalaryDetailsDto employeeSalaryDto) + public async Task UpdateEmployeeSalary(BankingSalaryDetailsDto employeeSalaryDto) { var exists = await EmployeeSalaryDetailsExists(employeeSalaryDto.Id); diff --git a/HRIS.Services/Services/EmployeeService.cs b/HRIS.Services/Services/EmployeeService.cs index e935269a..575a59b9 100644 --- a/HRIS.Services/Services/EmployeeService.cs +++ b/HRIS.Services/Services/EmployeeService.cs @@ -1,5 +1,6 @@ using System.Net.Mail; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.EntityFrameworkCore; diff --git a/HRIS.Services/Services/WorkExperienceService.cs b/HRIS.Services/Services/WorkExperienceService.cs index c4c2a965..328dd627 100644 --- a/HRIS.Services/Services/WorkExperienceService.cs +++ b/HRIS.Services/Services/WorkExperienceService.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using Microsoft.EntityFrameworkCore; using RR.UnitOfWork; diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeAddressControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeAddressControllerUnitTests.cs index 65099172..dd52ea27 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeAddressControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeAddressControllerUnitTests.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using Microsoft.AspNetCore.Mvc; using Moq; diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeBankingControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeBankingControllerUnitTests.cs index 2b843c47..e7ab8642 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeBankingControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeBankingControllerUnitTests.cs @@ -1,5 +1,5 @@ using System.Security.Claims; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using HRIS.Services.Interfaces; using HRIS.Services.Services; diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeControllerUnitTests.cs index 59d6ab5c..1f48799d 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeControllerUnitTests.cs @@ -12,6 +12,7 @@ using HRIS.Services.Services; using RR.Tests.Data.Models.HRIS; using RR.App.Tests.Helper; +using HRIS.Models.Employee.Commons; namespace RR.App.Tests.Controllers.HRIS; diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs index 9f5845d5..2efdd3ea 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeDataControllerUnitTests.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using Microsoft.AspNetCore.Http; diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeQualificationControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeQualificationControllerUnitTests.cs index 21a5d581..690ccbae 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeQualificationControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeQualificationControllerUnitTests.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using Microsoft.AspNetCore.Mvc; diff --git a/RR.App.Tests/Controllers/HRIS/EmployeeSalaryDetailsControllerUnitTests.cs b/RR.App.Tests/Controllers/HRIS/EmployeeSalaryDetailsControllerUnitTests.cs index a22e1658..3fe75c77 100644 --- a/RR.App.Tests/Controllers/HRIS/EmployeeSalaryDetailsControllerUnitTests.cs +++ b/RR.App.Tests/Controllers/HRIS/EmployeeSalaryDetailsControllerUnitTests.cs @@ -1,4 +1,5 @@ using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using Microsoft.AspNetCore.Mvc; @@ -16,7 +17,7 @@ public class EmployeeSalaryDetailsControllerUnitTest private readonly EmployeeSalaryDetailsController _controller; private readonly Mock _employeeServiceMock; - private readonly EmployeeSalaryDetailsDto _employeeSalaryDetailsDto; + private readonly BankingSalaryDetailsDto _employeeSalaryDetailsDto; private readonly EmployeeDto _employeeDto; public EmployeeSalaryDetailsControllerUnitTest() @@ -35,7 +36,7 @@ public async Task SaveEmployeeSalaryValidInputReturnsOkResult() _employeeServiceMock.Setup(x => x.GetEmployeeById(_employeeSalaryDetailsDto.EmployeeId)) .ReturnsAsync(_employeeDto); - _employeeSalaryDetailsServiceMock.Setup(x => x.CreateEmployeeSalary(It.IsAny())) + _employeeSalaryDetailsServiceMock.Setup(x => x.CreateEmployeeSalary(It.IsAny())) .ReturnsAsync(_employeeSalaryDetailsDto); var result = await _controller.AddEmployeeSalary(_employeeSalaryDetailsDto); @@ -60,7 +61,7 @@ public async Task AddEmployeeSalary_UnauthorizedRoleOrIdMismatch_ThrowsCustomExc [Fact] public async Task AddEmployeeSalary_ValidRoleAndMatchingId_ReturnsCreatedAtActionResult() { - _employeeSalaryDetailsServiceMock.Setup(x => x.CreateEmployeeSalary(It.IsAny())) + _employeeSalaryDetailsServiceMock.Setup(x => x.CreateEmployeeSalary(It.IsAny())) .ReturnsAsync(_employeeSalaryDetailsDto); var result = await _controller.AddEmployeeSalary(_employeeSalaryDetailsDto); @@ -115,7 +116,7 @@ public async Task GetSalariesByEmployeePass() var result = await _controller.GetEmployeeSalary(_employeeSalaryDetailsDto.EmployeeId); var okResult = Assert.IsType(result); - var actualSalaryDetailsDto = Assert.IsType(okResult.Value); + var actualSalaryDetailsDto = Assert.IsType(okResult.Value); Assert.Equal(_employeeSalaryDetailsDto, actualSalaryDetailsDto); } @@ -143,7 +144,7 @@ public async Task GetEmployeeSalary_UnauthorizedRoleOrIdMismatch_ThrowsCustomExc [Fact] public async Task GetAllEmployeeSalariesNoFiltersReturnsOkResultWithList() { - var expectedSalaryDetailsList = new List + var expectedSalaryDetailsList = new List { _employeeSalaryDetailsDto, _employeeSalaryDetailsDto @@ -155,7 +156,7 @@ public async Task GetAllEmployeeSalariesNoFiltersReturnsOkResultWithList() var result = await _controller.GetAllEmployeeSalaries(); var okResult = Assert.IsType(result); - var actualSalaryDetailsDto = Assert.IsType>(okResult.Value); + var actualSalaryDetailsDto = Assert.IsType>(okResult.Value); Assert.Equal(expectedSalaryDetailsList, actualSalaryDetailsDto); } } \ No newline at end of file diff --git a/RR.App.Tests/Controllers/HRIS/WorkExperienceControllerUnitTest.cs b/RR.App.Tests/Controllers/HRIS/WorkExperienceControllerUnitTest.cs index 39654259..c85e4663 100644 --- a/RR.App.Tests/Controllers/HRIS/WorkExperienceControllerUnitTest.cs +++ b/RR.App.Tests/Controllers/HRIS/WorkExperienceControllerUnitTest.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using Microsoft.AspNetCore.Http; diff --git a/RR.App/Controllers/HRIS/EmployeeAddressController.cs b/RR.App/Controllers/HRIS/EmployeeAddressController.cs index 5e2892bf..de7ff046 100644 --- a/RR.App/Controllers/HRIS/EmployeeAddressController.cs +++ b/RR.App/Controllers/HRIS/EmployeeAddressController.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/RR.App/Controllers/HRIS/EmployeeBankingController.cs b/RR.App/Controllers/HRIS/EmployeeBankingController.cs index d926af43..fc6b3daf 100644 --- a/RR.App/Controllers/HRIS/EmployeeBankingController.cs +++ b/RR.App/Controllers/HRIS/EmployeeBankingController.cs @@ -1,5 +1,5 @@ using System.Security.Claims; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using HRIS.Services.Session; diff --git a/RR.App/Controllers/HRIS/EmployeeDataController.cs b/RR.App/Controllers/HRIS/EmployeeDataController.cs index 237e4e59..6988219b 100644 --- a/RR.App/Controllers/HRIS/EmployeeDataController.cs +++ b/RR.App/Controllers/HRIS/EmployeeDataController.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using HRIS.Services.Session; diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index 5d449b49..fbcc5204 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -1,4 +1,4 @@ -using HRIS.Models.EmployeeProfileModels; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.AspNetCore.Mvc; diff --git a/RR.App/Controllers/HRIS/EmployeeQualificationController.cs b/RR.App/Controllers/HRIS/EmployeeQualificationController.cs index 471947d2..aa6c3b77 100644 --- a/RR.App/Controllers/HRIS/EmployeeQualificationController.cs +++ b/RR.App/Controllers/HRIS/EmployeeQualificationController.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using HRIS.Services.Session; diff --git a/RR.App/Controllers/HRIS/EmployeeSalaryDetailsController.cs b/RR.App/Controllers/HRIS/EmployeeSalaryDetailsController.cs index ea31bd80..e39ca4b8 100644 --- a/RR.App/Controllers/HRIS/EmployeeSalaryDetailsController.cs +++ b/RR.App/Controllers/HRIS/EmployeeSalaryDetailsController.cs @@ -1,9 +1,9 @@ -using HRIS.Models; -using HRIS.Services.Interfaces; +using HRIS.Services.Interfaces; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using HRIS.Services.Session; using HRIS.Services.Services; +using HRIS.Models.Employee.Commons; namespace RR.App.Controllers.HRIS; @@ -49,7 +49,7 @@ public async Task GetEmployeeSalary(int employeeId) [Authorize(Policy = "AllRolesPolicy")] [HttpPost()] - public async Task AddEmployeeSalary([FromBody] EmployeeSalaryDetailsDto employeeSalaryDetailsDto) + public async Task AddEmployeeSalary([FromBody] BankingSalaryDetailsDto employeeSalaryDetailsDto) { if (!_identity.IsSupport && (employeeSalaryDetailsDto.Id != _identity.EmployeeId)) throw new CustomException("User data being accessed does not match user making the request."); @@ -61,7 +61,7 @@ public async Task AddEmployeeSalary([FromBody] EmployeeSalaryDeta [Authorize(Policy = "AllRolesPolicy")] [HttpPut()] - public async Task UpdateSalary([FromBody] EmployeeSalaryDetailsDto employeeSalaryDetailsDto) + public async Task UpdateSalary([FromBody] BankingSalaryDetailsDto employeeSalaryDetailsDto) { if (!_identity.IsSupport && (employeeSalaryDetailsDto.Id != _identity.EmployeeId)) throw new CustomException("User data being accessed does not match user making the request."); diff --git a/RR.App/Controllers/HRIS/WorkExperienceController.cs b/RR.App/Controllers/HRIS/WorkExperienceController.cs index 0d156aeb..089bd661 100644 --- a/RR.App/Controllers/HRIS/WorkExperienceController.cs +++ b/RR.App/Controllers/HRIS/WorkExperienceController.cs @@ -1,4 +1,4 @@ -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Services; using HRIS.Services.Session; diff --git a/RR.UnitOfWork.Tests/Entities/EmployeeAddressUnitTests.cs b/RR.UnitOfWork.Tests/Entities/EmployeeAddressUnitTests.cs index 9d899765..2a8f3a7d 100644 --- a/RR.UnitOfWork.Tests/Entities/EmployeeAddressUnitTests.cs +++ b/RR.UnitOfWork.Tests/Entities/EmployeeAddressUnitTests.cs @@ -1,4 +1,5 @@ using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Entities.HRIS; using Xunit; diff --git a/RR.UnitOfWork.Tests/Entities/EmployeeBankingUnitTests.cs b/RR.UnitOfWork.Tests/Entities/EmployeeBankingUnitTests.cs index 910507e0..640f6c39 100644 --- a/RR.UnitOfWork.Tests/Entities/EmployeeBankingUnitTests.cs +++ b/RR.UnitOfWork.Tests/Entities/EmployeeBankingUnitTests.cs @@ -1,4 +1,5 @@ using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Entities.HRIS; using Xunit; diff --git a/RR.UnitOfWork.Tests/Entities/EmployeeDataUnitTests.cs b/RR.UnitOfWork.Tests/Entities/EmployeeDataUnitTests.cs index 56a8977e..623e4795 100644 --- a/RR.UnitOfWork.Tests/Entities/EmployeeDataUnitTests.cs +++ b/RR.UnitOfWork.Tests/Entities/EmployeeDataUnitTests.cs @@ -1,4 +1,5 @@ using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Entities.HRIS; using Xunit; diff --git a/RR.UnitOfWork.Tests/Entities/EmployeeDateUnitTests.cs b/RR.UnitOfWork.Tests/Entities/EmployeeDateUnitTests.cs index c7acfed6..99592dbb 100644 --- a/RR.UnitOfWork.Tests/Entities/EmployeeDateUnitTests.cs +++ b/RR.UnitOfWork.Tests/Entities/EmployeeDateUnitTests.cs @@ -1,4 +1,5 @@ using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Entities.HRIS; using Xunit; diff --git a/RR.UnitOfWork.Tests/Entities/EmployeeDocumentUnitTests.cs b/RR.UnitOfWork.Tests/Entities/EmployeeDocumentUnitTests.cs index a95e64bb..f61e6cc3 100644 --- a/RR.UnitOfWork.Tests/Entities/EmployeeDocumentUnitTests.cs +++ b/RR.UnitOfWork.Tests/Entities/EmployeeDocumentUnitTests.cs @@ -1,4 +1,5 @@ using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Entities.HRIS; using Xunit; diff --git a/RR.UnitOfWork.Tests/Repositories/EmployeeDateRepositoryUnitTest.cs b/RR.UnitOfWork.Tests/Repositories/EmployeeDateRepositoryUnitTest.cs index e7af3ff9..87302695 100644 --- a/RR.UnitOfWork.Tests/Repositories/EmployeeDateRepositoryUnitTest.cs +++ b/RR.UnitOfWork.Tests/Repositories/EmployeeDateRepositoryUnitTest.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; diff --git a/RR.UnitOfWork/Entities/HRIS/EmployeeAddress.cs b/RR.UnitOfWork/Entities/HRIS/EmployeeAddress.cs index b29b1c51..beaa1df2 100644 --- a/RR.UnitOfWork/Entities/HRIS/EmployeeAddress.cs +++ b/RR.UnitOfWork/Entities/HRIS/EmployeeAddress.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using RR.UnitOfWork.Interfaces; namespace RR.UnitOfWork.Entities.HRIS; diff --git a/RR.UnitOfWork/Entities/HRIS/EmployeeBanking.cs b/RR.UnitOfWork/Entities/HRIS/EmployeeBanking.cs index 4259d872..8e89420d 100644 --- a/RR.UnitOfWork/Entities/HRIS/EmployeeBanking.cs +++ b/RR.UnitOfWork/Entities/HRIS/EmployeeBanking.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Interfaces; diff --git a/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs b/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs index 888fc697..f80e8a62 100644 --- a/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs +++ b/RR.UnitOfWork/Entities/HRIS/EmployeeData.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using RR.UnitOfWork.Interfaces; namespace RR.UnitOfWork.Entities.HRIS; diff --git a/RR.UnitOfWork/Entities/HRIS/EmployeeQualification.cs b/RR.UnitOfWork/Entities/HRIS/EmployeeQualification.cs index 26f91574..3e22af80 100644 --- a/RR.UnitOfWork/Entities/HRIS/EmployeeQualification.cs +++ b/RR.UnitOfWork/Entities/HRIS/EmployeeQualification.cs @@ -1,8 +1,8 @@ -using HRIS.Models; -using RR.UnitOfWork.Interfaces; +using RR.UnitOfWork.Interfaces; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using HRIS.Models.Enums.QualificationEnums; +using HRIS.Models.Employee.Commons; namespace RR.UnitOfWork.Entities.HRIS; diff --git a/RR.UnitOfWork/Entities/HRIS/EmployeeSalaryDetails.cs b/RR.UnitOfWork/Entities/HRIS/EmployeeSalaryDetails.cs index 60813db8..454bc30c 100644 --- a/RR.UnitOfWork/Entities/HRIS/EmployeeSalaryDetails.cs +++ b/RR.UnitOfWork/Entities/HRIS/EmployeeSalaryDetails.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using HRIS.Models; +using HRIS.Models.Employee.Commons; using HRIS.Models.Enums; using RR.UnitOfWork.Interfaces; @@ -11,7 +11,7 @@ public class EmployeeSalaryDetails : IModel { public EmployeeSalaryDetails() {} - public EmployeeSalaryDetails(EmployeeSalaryDetailsDto employeeSalaryDetailsDto) + public EmployeeSalaryDetails(BankingSalaryDetailsDto employeeSalaryDetailsDto) { Id = employeeSalaryDetailsDto.Id; EmployeeId = employeeSalaryDetailsDto.EmployeeId!; @@ -38,9 +38,9 @@ public EmployeeSalaryDetails(EmployeeSalaryDetailsDto employeeSalaryDetailsDto) [Key][Column("id")] public int Id { get; set; } - public EmployeeSalaryDetailsDto ToDto() + public BankingSalaryDetailsDto ToDto() { - return new EmployeeSalaryDetailsDto + return new BankingSalaryDetailsDto { Id = Id, EmployeeId = EmployeeId, diff --git a/RR.UnitOfWork/Entities/HRIS/WorkExperience.cs b/RR.UnitOfWork/Entities/HRIS/WorkExperience.cs index d96c351b..bef54530 100644 --- a/RR.UnitOfWork/Entities/HRIS/WorkExperience.cs +++ b/RR.UnitOfWork/Entities/HRIS/WorkExperience.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations; -using HRIS.Models; using RR.UnitOfWork.Interfaces; +using HRIS.Models.Employee.Commons; namespace RR.UnitOfWork.Entities.HRIS; From 81ae64e0ce74b6627b174723d08f7e64341c2a41 Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:11:52 +0200 Subject: [PATCH 13/14] updates added to endpoint --- .../Interfaces/IEmployeeProfileService.cs | 14 ++++ .../Services/EmployeeProfileService.cs | 70 +++++++++++++++---- .../HRIS/EmployeeProfileController.cs | 18 ++++- 3 files changed, 86 insertions(+), 16 deletions(-) diff --git a/HRIS.Services/Interfaces/IEmployeeProfileService.cs b/HRIS.Services/Interfaces/IEmployeeProfileService.cs index 75051477..06e724df 100644 --- a/HRIS.Services/Interfaces/IEmployeeProfileService.cs +++ b/HRIS.Services/Interfaces/IEmployeeProfileService.cs @@ -33,4 +33,18 @@ public interface IEmployeeProfileService /// /// Task UpdateEmployeeDetails(EmployeeDetailsDto employeeDetails); + + /// + /// Get employee career summary by id + /// + /// + /// + Task UpdatePersonalDetails(PersonalDetailsDto personalDetails); + + /// + /// Get employee career summary by id + /// + /// + /// + Task UpdateContactDetails(ContactDetailsDto contactDetails); } diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index e44babe5..061b93b2 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -9,7 +9,7 @@ namespace HRIS.Services.Services; -internal class EmployeeProfileService : IEmployeeProfileService +public class EmployeeProfileService : IEmployeeProfileService { private readonly AuthorizeIdentity _identity; private readonly IUnitOfWork _db; @@ -33,7 +33,7 @@ public EmployeeProfileService(AuthorizeIdentity identity, _employeeCertificationService = employeeCertificationService; _employeeBankingService = employeeBankingService; } - async Task IEmployeeProfileService.GetEmployeeProfileDetailsById(int? id) + public async Task GetEmployeeProfileDetailsById(int? id) { var employeeId = (int)id; @@ -111,17 +111,9 @@ async Task IEmployeeProfileService.GetEmployeeProfileDetailsB return employeeProfileDetails; } - async Task IEmployeeProfileService.UpdateEmployeeDetails(EmployeeDetailsDto employeeDetails) + public async Task UpdateEmployeeDetails(EmployeeDetailsDto employeeDetails) { - Employee? model = await _db.Employee - .Get(employee => employee.Id == employeeDetails.Id) - .AsNoTracking() - .Include(employee => employee.EmployeeType) - .Include(employee => employee.PhysicalAddress) - .Include(employee => employee.PostalAddress) - .Include(employee => employee.ChampionEmployee) - .Include(employee => employee.TeamLeadAssigned) - .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); + Employee? model = await GetEmployeeModelById(employeeDetails.Id); model.EngagementDate = employeeDetails.EngagementDate; model.PeopleChampion = employeeDetails.PeopleChampionId; @@ -141,7 +133,39 @@ async Task IEmployeeProfileService.UpdateEmployeeDetails(EmployeeDetai return updatedEmployee; } - async Task IEmployeeProfileService.GetEmployeeCareerSummaryById(int? id) + public async Task UpdatePersonalDetails(PersonalDetailsDto personalDetails) + { + Employee? model = await GetEmployeeModelById(personalDetails.Id); + + model.Gender = personalDetails.Gender; + model.Race = personalDetails.Race; + model.Nationality = personalDetails.Nationality; + model.CountryOfBirth = personalDetails.CountryOfBirth; + model.Disability = personalDetails.Disability; + model.DisabilityNotes = personalDetails.DisabilityNotes; + + var updatedEmployee = await _db.Employee.Update(model); + + return updatedEmployee; + } + + public async Task UpdateContactDetails(ContactDetailsDto contactDetails) + { + Employee? model = await GetEmployeeModelById(contactDetails.Id); + + model.Email = contactDetails.Email; + model.PersonalEmail = contactDetails.PersonalEmail; + model.CellphoneNo = contactDetails.CellphoneNo; + model.HouseNo = contactDetails.HouseNo; + model.EmergencyContactNo = contactDetails.EmergencyContactNo; + model.EmergencyContactName = contactDetails.EmergencyContactName; + + var updatedEmployee = await _db.Employee.Update(model); + + return updatedEmployee; + } + + public async Task GetEmployeeCareerSummaryById(int? id) { var employeeData = await GetEmployeeDataById(id); @@ -165,7 +189,7 @@ async Task IEmployeeProfileService.GetEmployeeCareerSummaryByI return employeeCareerSummary; } - async Task IEmployeeProfileService.GetEmployeeBankingInformationById(int? id) + public async Task GetEmployeeBankingInformationById(int? id) { var employeeBanking = await _db.EmployeeBanking .Get(banking => banking.EmployeeId == id) @@ -196,6 +220,24 @@ async Task IEmployeeProfileService.GetEmployeeBankingInfo return employeeBankingInformation; } + + + + + async Task GetEmployeeModelById(int? id) + { + Employee? model = await _db.Employee + .Get(employee => employee.Id == id) + .AsNoTracking() + .Include(employee => employee.EmployeeType) + .Include(employee => employee.PhysicalAddress) + .Include(employee => employee.PostalAddress) + .Include(employee => employee.ChampionEmployee) + .Include(employee => employee.TeamLeadAssigned) + .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); + + return model; + } async Task GetEmployeeDataById(int? id) { var employeeData = await _db.EmployeeData.GetById((int)id!); diff --git a/RR.App/Controllers/HRIS/EmployeeProfileController.cs b/RR.App/Controllers/HRIS/EmployeeProfileController.cs index fbcc5204..2ccb516c 100644 --- a/RR.App/Controllers/HRIS/EmployeeProfileController.cs +++ b/RR.App/Controllers/HRIS/EmployeeProfileController.cs @@ -36,10 +36,24 @@ public async Task GetEmployeeBankingInformationById([FromQuery] i return Ok(bankingInformation); } - [HttpPut("profile-details")] - public async Task UpdateEmployeeDetailsById([FromBody] EmployeeDetailsDto employeeDetails) + [HttpPut("employee-details")] + public async Task UpdateEmployeeDetails([FromBody] EmployeeDetailsDto employeeDetails) { var result = await _employeeProfileService.UpdateEmployeeDetails(employeeDetails); return Ok(result); } + + [HttpPut("personal-details")] + public async Task UpdatePersonalDetails([FromBody] PersonalDetailsDto personalDetails) + { + var result = await _employeeProfileService.UpdatePersonalDetails(personalDetails); + return Ok(result); + } + + [HttpPut("contact-details")] + public async Task UpdateContactDetails([FromBody] ContactDetailsDto contactDetails) + { + var result = await _employeeProfileService.UpdateContactDetails(contactDetails); + return Ok(result); + } } \ No newline at end of file From 178130a896bc8dd3719a0e52b107499a06fd717d Mon Sep 17 00:00:00 2001 From: EstiaanBritz <82169901+madwizzard@users.noreply.github.com> Date: Mon, 19 Aug 2024 07:47:25 +0200 Subject: [PATCH 14/14] merge conflict resolution --- HRIS.Services/HRIS.Services.csproj | 1 + HRIS.Services/Services/EmployeeProfileService.cs | 5 ----- HRIS.Services/Services/EmployeeService.cs | 1 - 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/HRIS.Services/HRIS.Services.csproj b/HRIS.Services/HRIS.Services.csproj index 8b818eec..f79eafa2 100644 --- a/HRIS.Services/HRIS.Services.csproj +++ b/HRIS.Services/HRIS.Services.csproj @@ -27,6 +27,7 @@ + diff --git a/HRIS.Services/Services/EmployeeProfileService.cs b/HRIS.Services/Services/EmployeeProfileService.cs index 061b93b2..1d72f325 100644 --- a/HRIS.Services/Services/EmployeeProfileService.cs +++ b/HRIS.Services/Services/EmployeeProfileService.cs @@ -46,8 +46,6 @@ public async Task GetEmployeeProfileDetailsById(int? id) .Get(employee => employee.Id == id) .AsNoTracking() .Include(employee => employee.EmployeeType) - .Include(employee => employee.PhysicalAddress) - .Include(employee => employee.PostalAddress) .Include(employee => employee.ChampionEmployee) .Include(employee => employee.TeamLeadAssigned) .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); @@ -105,7 +103,6 @@ public async Task GetEmployeeProfileDetailsById(int? id) EmployeeData = employeeData, Photo = employee.Photo, Active = employee.Active, - PhysicalAddress = employee.PhysicalAddress?.ToDto() }; return employeeProfileDetails; @@ -230,8 +227,6 @@ async Task GetEmployeeModelById(int? id) .Get(employee => employee.Id == id) .AsNoTracking() .Include(employee => employee.EmployeeType) - .Include(employee => employee.PhysicalAddress) - .Include(employee => employee.PostalAddress) .Include(employee => employee.ChampionEmployee) .Include(employee => employee.TeamLeadAssigned) .FirstOrDefaultAsync() ?? throw new CustomException("Unable to Load Employee"); diff --git a/HRIS.Services/Services/EmployeeService.cs b/HRIS.Services/Services/EmployeeService.cs index 34e33b54..c7098991 100644 --- a/HRIS.Services/Services/EmployeeService.cs +++ b/HRIS.Services/Services/EmployeeService.cs @@ -1,6 +1,5 @@ using System.Net.Mail; using HRIS.Models; -using HRIS.Models.Employee.Commons; using HRIS.Services.Interfaces; using HRIS.Services.Session; using Microsoft.EntityFrameworkCore;