Update survey response, adding EmployeeId , Location Id as int, adjust end point for ansers submission in batch

This commit is contained in:
Reginald Cherenfant Jasmin
2023-09-13 01:28:24 -04:00
parent 4cf7d9f891
commit 9109d0d793
68 changed files with 525 additions and 540 deletions

View File

@ -4,7 +4,6 @@ using Microsoft.AspNetCore.Mvc;
namespace DamageAssesment.Api.Employees.Controllers
{
[Route("api")]
[ApiController]
public class EmployeesController : ControllerBase
{
@ -37,11 +36,11 @@ namespace DamageAssesment.Api.Employees.Controllers
/// GET request for retrieving an employee by ID.
/// </summary>
[HttpGet("Employees/{Id}")]
public async Task<ActionResult> GetEmployeeByIdAsync(string Id)
[HttpGet("Employees/{id}")]
public async Task<ActionResult> GetEmployeeByIdAsync(int id)
{
var result = await EmployeeProvider.GetEmployeeByIdAsync(Id);
var result = await EmployeeProvider.GetEmployeeByIdAsync(id);
if (result.IsSuccess)
{
return Ok(result.Employee);
@ -54,12 +53,12 @@ namespace DamageAssesment.Api.Employees.Controllers
/// PUT request for updating an existing employee.
/// </summary>
/// <param name="Employee">The updated employee object.</param>
[HttpPut("Employees")]
public async Task<IActionResult> UpdateEmployee(string Id, Models.Employee Employee)
[HttpPut("Employees/{id}")]
public async Task<IActionResult> UpdateEmployee(int id, Models.Employee Employee)
{
if (Employee != null)
{
var result = await this.EmployeeProvider.UpdateEmployeeAsync(Id,Employee);
var result = await this.EmployeeProvider.UpdateEmployeeAsync(id,Employee);
if (result.IsSuccess)
{
return Ok(result.Employee);
@ -88,14 +87,14 @@ namespace DamageAssesment.Api.Employees.Controllers
}
return BadRequest(result.ErrorMessage);
}
return CreatedAtRoute("DefaultApi", new { id = Employee.Id }, Employee);
return CreatedAtRoute("DefaultApi", new { Id = Employee.Id }, Employee);
}
/// <summary>
/// DELETE request for deleting an existing employee.
/// </summary>
/// <param name="id">The ID of the employee to be deleted.</param>
[HttpDelete("Employees/{id}")]
public async Task<IActionResult> DeleteEmployee(string id)
public async Task<IActionResult> DeleteEmployee(int id)
{
var result = await this.EmployeeProvider.DeleteEmployeeAsync(id);
if (result.IsSuccess)

View File

@ -5,7 +5,9 @@ namespace DamageAssesment.Api.Employees.Db
public class Employee
{
[Key]
public string Id { get; set; }
public int Id { get; set; }
[StringLength(50)]
public string EmployeeCode { get; set; }
[StringLength(50)]
public string Name { get; set; }
@ -17,7 +19,7 @@ namespace DamageAssesment.Api.Employees.Db
[StringLength(50)]
public string Email { get; set; }
public bool IsActive {get;set;}
public bool IsActive { get; set; }
public string? PreferredLanguage { get; set; } = "en";
}
}

View File

@ -8,5 +8,14 @@ namespace DamageAssesment.Api.Employees.Db
public EmployeeDbContext(DbContextOptions options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Employee>()
.Property(item => item.Id)
.ValueGeneratedOnAdd();
}
}
}

View File

@ -3,10 +3,10 @@
public interface IEmployeesProvider
{
Task<(bool IsSuccess, IEnumerable<Models.Employee> Employees, string ErrorMessage)> GetEmployeesAsync();
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> GetEmployeeByIdAsync(string Id);
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> GetEmployeeByIdAsync(int Id);
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> PostEmployeeAsync(Models.Employee Employee);
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> UpdateEmployeeAsync(string Id, Models.Employee Employee);
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> DeleteEmployeeAsync(string Id);
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> UpdateEmployeeAsync(int Id, Models.Employee Employee);
Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> DeleteEmployeeAsync(int Id);
void SeedData();
}
}

View File

@ -4,7 +4,8 @@ namespace DamageAssesment.Api.Employees.Models
{
public class Employee
{
public string Id { get; set; }
public int Id { get; set; }
public string EmployeeCode { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
public string OfficePhoneNumber { get; set; }

View File

@ -7,6 +7,7 @@ namespace DamageAssesment.Api.Employees.Profiles
public EmployeesProfile()
{
CreateMap<Db.Employee, Models.Employee>();
CreateMap<Models.Employee, Db.Employee>();
}
}
}

View File

@ -19,7 +19,7 @@ namespace DamageAssesment.Api.Employees.Providers
this.EmployeeDbContext = EmployeeDbContext;
this.logger = logger;
this.mapper = mapper;
// SeedData();
// SeedData();
}
public async Task<(bool IsSuccess, IEnumerable<Models.Employee> Employees, string ErrorMessage)> GetEmployeesAsync()
@ -45,12 +45,12 @@ namespace DamageAssesment.Api.Employees.Providers
}
public async Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> GetEmployeeByIdAsync(string Id)
public async Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> GetEmployeeByIdAsync(int Id)
{
try
{
logger?.LogInformation("Query Employee");
var Employee = await EmployeeDbContext.Employees.AsNoTracking().FirstOrDefaultAsync(q => q.Id.ToLower() == Id.ToLower());
var Employee = await EmployeeDbContext.Employees.AsNoTracking().FirstOrDefaultAsync(q => q.Id == Id);
if (Employee != null)
{
logger?.LogInformation($"{Employee} customer(s) found");
@ -72,13 +72,14 @@ namespace DamageAssesment.Api.Employees.Providers
Db.Employee _employee = mapper.Map<Models.Employee, Db.Employee>(Employee);
logger?.LogInformation("Query Employee");
if (!EmployeeExists(Employee.Id))
if (!EmployeeCodeExists(Employee.EmployeeCode))
{
EmployeeDbContext.Employees.Add(_employee);
Employee.Id = _employee.Id;
EmployeeDbContext.SaveChanges();
return (true, Employee, null);
}
return (false, null, "Employee is already exits");
return (false, null, "Employee code is already exits");
}
catch (Exception ex)
{
@ -86,19 +87,20 @@ namespace DamageAssesment.Api.Employees.Providers
return (false, null, ex.Message);
}
}
public async Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> UpdateEmployeeAsync(string Id , Models.Employee Employee)
public async Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> UpdateEmployeeAsync(int Id, Models.Employee Employee)
{
try
{
if (Employee != null)
{
var _employee = await EmployeeDbContext.Employees.AsNoTracking().Where(s => s.Id.ToLower() == Id.ToLower()).FirstOrDefaultAsync();
var _employee = await EmployeeDbContext.Employees.AsNoTracking().Where(s => s.Id == Id).FirstOrDefaultAsync();
if (_employee != null)
{
Db.Employee vEmployee = mapper.Map<Models.Employee, Db.Employee>(Employee);
EmployeeDbContext.Employees.Update(vEmployee);
EmployeeDbContext.SaveChanges();
Employee.Id = Id;
return (true, Employee, "Successful");
}
else
@ -120,11 +122,11 @@ namespace DamageAssesment.Api.Employees.Providers
return (false, null, ex.Message);
}
}
public async Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> DeleteEmployeeAsync(string Id)
public async Task<(bool IsSuccess, Models.Employee Employee, string ErrorMessage)> DeleteEmployeeAsync(int Id)
{
try
{
Db.Employee Employee = EmployeeDbContext.Employees.AsNoTracking().Where(a => a.Id.ToLower() == Id.ToLower()).FirstOrDefault();
Db.Employee Employee = EmployeeDbContext.Employees.AsNoTracking().Where(a => a.Id == Id).FirstOrDefault();
if (Employee == null)
{
return (false, null, "Not Found");
@ -137,24 +139,29 @@ namespace DamageAssesment.Api.Employees.Providers
{
logger?.LogError(ex.ToString());
return (false,null, ex.Message);
return (false, null, ex.Message);
}
}
private bool EmployeeExists(string id)
private bool EmployeeExists(int id)
{
return EmployeeDbContext.Employees.AsNoTracking().Count(e => e.Id.ToLower() == id.ToLower()) > 0;
return EmployeeDbContext.Employees.AsNoTracking().Count(e => e.Id == id) > 0;
}
private bool EmployeeCodeExists(string employeeCode)
{
return EmployeeDbContext.Employees.AsNoTracking().Count(e => e.EmployeeCode.ToLower() == employeeCode.ToLower()) > 0;
}
public void SeedData()
{
if (!EmployeeDbContext.Employees.Any())
{
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = "Emp1", Name = "ABC1", Email = "abc1@gmail.com", OfficePhoneNumber = "12345678",BirthDate=DateTime.Now.AddYears(-18), IsActive = true,PreferredLanguage="en" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = "Emp2", Name = "ABC2", Email = "abc2@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-22), IsActive = true, PreferredLanguage = "fr" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = "Emp3", Name = "ABC3", Email = "abc3@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-30) ,IsActive = true, PreferredLanguage = "fr" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = "Emp4", Name = "ABC4", Email = "abc4@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-20) ,IsActive = true, PreferredLanguage = "en" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = "Emp5", Name = "ABC5", Email = "abc5@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-23) ,IsActive = true, PreferredLanguage = "es" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = "Emp6", Name = "ABC6", Email = "abc6@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-32) ,IsActive = true, PreferredLanguage = "es" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = 1, EmployeeCode = "Emp1", Name = "ABC1", Email = "abc1@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-18), IsActive = true, PreferredLanguage = "en" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = 2, EmployeeCode = "Emp2", Name = "ABC2", Email = "abc2@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-22), IsActive = true, PreferredLanguage = "fr" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = 3, EmployeeCode = "Emp3", Name = "ABC3", Email = "abc3@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-30), IsActive = true, PreferredLanguage = "fr" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = 4, EmployeeCode = "Emp4", Name = "ABC4", Email = "abc4@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-20), IsActive = true, PreferredLanguage = "en" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = 5, EmployeeCode = "Emp5", Name = "ABC5", Email = "abc5@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-23), IsActive = true, PreferredLanguage = "es" });
EmployeeDbContext.Employees.Add(new Db.Employee() { Id = 6, EmployeeCode = "Emp6", Name = "ABC6", Email = "abc6@gmail.com", OfficePhoneNumber = "12345678", BirthDate = DateTime.Now.AddYears(-32), IsActive = true, PreferredLanguage = "es" });
EmployeeDbContext.SaveChanges();
}