From ec5fba0637124730b49c3b56dc4fdad424ae3a8a Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Wed, 9 Apr 2025 08:46:29 +0530 Subject: [PATCH 1/4] Fixed null refrenance warning --- .../Dtos/Activities/AssignTaskDto.cs | 4 +- .../Dtos/Employees/CreateUserDto.cs | 39 ++++++++----------- .../ViewModels/Activities/AssignedTaskVM.cs | 2 +- .../ViewModels/Activities/ReportTaskVM.cs | 2 +- .../ViewModels/Activities/TaskVM.cs | 10 ++--- .../ViewModels/Activities/WorkItemVM.cs | 2 +- .../ViewModels/Employee/EmployeeVM.cs | 18 ++++----- Marco.Pms.Services/Service/ILoggingService.cs | 2 +- Marco.Pms.Services/Service/LoggingServices.cs | 3 +- 9 files changed, 37 insertions(+), 45 deletions(-) diff --git a/Marco.Pms.Model/Dtos/Activities/AssignTaskDto.cs b/Marco.Pms.Model/Dtos/Activities/AssignTaskDto.cs index 7598fb4..b068e63 100644 --- a/Marco.Pms.Model/Dtos/Activities/AssignTaskDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/AssignTaskDto.cs @@ -4,8 +4,8 @@ { public DateTime AssignmentDate { get; set; } public double PlannedTask { get; set; } - public string Description { get; set; } - public List TaskTeam { get; set; } //Employee Ids + public string? Description { get; set; } + public List? TaskTeam { get; set; } //Employee Ids public int WorkItemId { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs b/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs index 7592fbd..023905e 100644 --- a/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs +++ b/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs @@ -1,30 +1,23 @@ -using Microsoft.AspNetCore.Http; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos.Employees +namespace Marco.Pms.Model.Dtos.Employees { public class CreateUserDto { public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } public string? MiddleName { get; set; } public string? Email { get; set; } - public string Gender { get; set; } + public string? Gender { get; set; } public string? BirthDate { get; set; } - public string JoiningDate { get; set; } + public string? JoiningDate { get; set; } public string? PeramnentAddress { get; set; } public string? CurrentAddress { get; set; } - public string PhoneNumber { get; set; } + public string? PhoneNumber { get; set; } - public string EmergencyPhoneNumber { get; set; } - public string EmergencyContactPerson { get; set; } + public string? EmergencyPhoneNumber { get; set; } + public string? EmergencyContactPerson { get; set; } public string? AadharNumber { get; set; } @@ -33,25 +26,25 @@ namespace Marco.Pms.Model.Dtos.Employees //public IFormFile? Photo { get; set; } // To store the captured photo //public List? Documents { get; set; } - public string JobRoleId { get; set; } + public string? JobRoleId { get; set; } // public int TenantId { get; set; } } public class CreateQuickUserDto { public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } - public string Gender { get; set; } + public string? Gender { get; set; } public string? CurrentAddress { get; set; } - public string PhoneNumber { get; set; } + public string? PhoneNumber { get; set; } - public string EmergencyPhoneNumber { get; set; } - public string EmergencyContactPerson { get; set; } + public string? EmergencyPhoneNumber { get; set; } + public string? EmergencyContactPerson { get; set; } - public string JobRoleId { get; set; } + public string? JobRoleId { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/AssignedTaskVM.cs b/Marco.Pms.Model/ViewModels/Activities/AssignedTaskVM.cs index b4510c3..03cf13f 100644 --- a/Marco.Pms.Model/ViewModels/Activities/AssignedTaskVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/AssignedTaskVM.cs @@ -20,7 +20,7 @@ namespace Marco.Pms.Model.ViewModels.Activities public int WorkItemId { get; set; } public int TenantId { get; set; } - public List teamMembers { get; set; } + public List? teamMembers { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/ReportTaskVM.cs b/Marco.Pms.Model/ViewModels/Activities/ReportTaskVM.cs index d328330..91a324d 100644 --- a/Marco.Pms.Model/ViewModels/Activities/ReportTaskVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/ReportTaskVM.cs @@ -14,6 +14,6 @@ namespace Marco.Pms.Model.ViewModels.Activities public int WorkItemId { get; set; } public int TenantId { get; set; } - public List Comments { get; set; } + public List? Comments { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/TaskVM.cs b/Marco.Pms.Model/ViewModels/Activities/TaskVM.cs index e2d2169..59108ed 100644 --- a/Marco.Pms.Model/ViewModels/Activities/TaskVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/TaskVM.cs @@ -12,11 +12,11 @@ namespace Marco.Pms.Model.ViewModels.Activities public double CompletedTask { get; set; } public DateTime? ReportedDate { get; set; } public string? Description { get; set; } - public string AssignBy { get; set; } - public WorkItem WorkItem { get; set; } - public string Tenant { get; set; } + public string? AssignBy { get; set; } + public WorkItem? WorkItem { get; set; } + public string? Tenant { get; set; } - public List Comments { get; set; } - public List TeamMembers { get; set; } + public List? Comments { get; set; } + public List? TeamMembers { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/WorkItemVM.cs b/Marco.Pms.Model/ViewModels/Activities/WorkItemVM.cs index db904ed..c0909cd 100644 --- a/Marco.Pms.Model/ViewModels/Activities/WorkItemVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/WorkItemVM.cs @@ -3,7 +3,7 @@ public class WorkItemVm { public int Id { get; set; } - public string ActivityName { get; set; } + public string? ActivityName { get; set; } public double PlannedWork { get; set; } public double CompletedWork { get; set; } public DateTime TaskDate { get; set; } diff --git a/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs b/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs index 93ca437..b17a3c7 100644 --- a/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs +++ b/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs @@ -3,20 +3,20 @@ public class EmployeeVM { public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } public string? MiddleName { get; set; } public string? Email { get; set; } - public string Gender { get; set; } + public string? Gender { get; set; } public DateTime? BirthDate { get; set; } public DateTime? JoiningDate { get; set; } - public string PeramnentAddress { get; set; } - public string CurrentAddress { get; set; } - public string PhoneNumber { get; set; } + public string? PeramnentAddress { get; set; } + public string? CurrentAddress { get; set; } + public string? PhoneNumber { get; set; } - public string EmergencyPhoneNumber { get; set; } - public string EmergencyContactPerson { get; set; } + public string? EmergencyPhoneNumber { get; set; } + public string? EmergencyContactPerson { get; set; } public string? AadharNumber { get; set; } @@ -28,7 +28,7 @@ public string? ApplicationUserId { get; set; } public int? JobRoleId { get; set; } - public string JobRole { get; set; } + public string? JobRole { get; set; } } } diff --git a/Marco.Pms.Services/Service/ILoggingService.cs b/Marco.Pms.Services/Service/ILoggingService.cs index 744ab19..39dbb00 100644 --- a/Marco.Pms.Services/Service/ILoggingService.cs +++ b/Marco.Pms.Services/Service/ILoggingService.cs @@ -6,7 +6,7 @@ namespace MarcoBMS.Services.Service { void LogInfo(string? message, params object[]? args); void LogWarning(string? message, params object[]? args); - void LogError(Exception? ex, string? message, params object[]? args); + void LogError(string? message, params object[]? args); } } diff --git a/Marco.Pms.Services/Service/LoggingServices.cs b/Marco.Pms.Services/Service/LoggingServices.cs index aec6257..10fc5ab 100644 --- a/Marco.Pms.Services/Service/LoggingServices.cs +++ b/Marco.Pms.Services/Service/LoggingServices.cs @@ -11,9 +11,8 @@ namespace MarcoBMS.Services.Service _logger = logger; } - public void LogError(Exception? ex, string? message, params object[]? args) + public void LogError(string? message, params object[]? args) { - using (LogContext.PushProperty("Error", ex)) using (LogContext.PushProperty("LogLevel", "Error")) _logger.LogError(message, args); } From 58bb684c4ba2a199c74ec1fc754a5a74c11315cc Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Wed, 9 Apr 2025 09:18:15 +0530 Subject: [PATCH 2/4] Removed all Warnings from Services project --- Marco.Pms.Model/Projects/ProjectAllocation.cs | 6 +-- .../Controllers/AttendanceController.cs | 3 +- .../Controllers/AuthController.cs | 53 +++++++++++-------- .../Controllers/EmployeeController.cs | 10 ++-- .../Controllers/ProjectController.cs | 46 +++++++++++----- .../Controllers/TaskController.cs | 18 ++++--- Marco.Pms.Services/Helpers/EmployeeHelper.cs | 16 +++--- Marco.Pms.Services/Helpers/UserHelper.cs | 18 ++----- Marco.Pms.Services/Program.cs | 39 +++++++------- .../Service/RefreshTokenService.cs | 20 ++++--- Marco.Pms.Services/appsettings.json | 4 +- 11 files changed, 128 insertions(+), 105 deletions(-) diff --git a/Marco.Pms.Model/Projects/ProjectAllocation.cs b/Marco.Pms.Model/Projects/ProjectAllocation.cs index 7752c1c..f13b503 100644 --- a/Marco.Pms.Model/Projects/ProjectAllocation.cs +++ b/Marco.Pms.Model/Projects/ProjectAllocation.cs @@ -1,8 +1,8 @@ -using Marco.Pms.Model.Employees; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations.Schema; namespace Marco.Pms.Model.Projects { diff --git a/Marco.Pms.Services/Controllers/AttendanceController.cs b/Marco.Pms.Services/Controllers/AttendanceController.cs index 9e7d1ea..3e9e1e9 100644 --- a/Marco.Pms.Services/Controllers/AttendanceController.cs +++ b/Marco.Pms.Services/Controllers/AttendanceController.cs @@ -10,7 +10,6 @@ using MarcoBMS.Services.Helpers; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis; using Microsoft.EntityFrameworkCore; -using static System.Runtime.InteropServices.JavaScript.JSType; namespace MarcoBMS.Services.Controllers { @@ -48,7 +47,7 @@ namespace MarcoBMS.Services.Controllers List lstAttendance = await _context.AttendanceLogs.Where(c => c.AttendanceId == attendanceid && c.TenantId == TenantId).ToListAsync(); - return Ok(ApiResponse.SuccessResponse(lstAttendance, String.Format("{0} Attendance records fetched successfully", lstAttendance.Count), 200)); + return Ok(ApiResponse.SuccessResponse(lstAttendance, System.String.Format("{0} Attendance records fetched successfully", lstAttendance.Count), 200)); } [HttpGet("log/employee/{employeeid}")] diff --git a/Marco.Pms.Services/Controllers/AuthController.cs b/Marco.Pms.Services/Controllers/AuthController.cs index de63975..c5ddd43 100644 --- a/Marco.Pms.Services/Controllers/AuthController.cs +++ b/Marco.Pms.Services/Controllers/AuthController.cs @@ -43,30 +43,29 @@ namespace MarcoBMS.Services.Controllers { var user = await _context.ApplicationUsers.FirstOrDefaultAsync(u => u.Email == loginDto.Username || u.PhoneNumber == loginDto.Username); - if (user == null || !await _userManager.CheckPasswordAsync(user, loginDto.Password)) + if (user != null && await _userManager.CheckPasswordAsync(user, loginDto.Password)) { - return Unauthorized(ApiResponse.ErrorResponse("Invalid username or password.", "Invalid username or password.", 401)); - //return Unauthorized("Invalid username or password."); + if (!user.IsActive) + { + return BadRequest(ApiResponse.ErrorResponse("User is In Active", "User is In Active", 400)); + } + if (!user.EmailConfirmed) + { + return BadRequest(ApiResponse.ErrorResponse("Your email is not verified, Please verify your email", "Your email is not verified, Please verify your email", 400)); + } + Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id); + //var refreshToken = GenerateRefreshToken(); + if (user.UserName == null) return NotFound(ApiResponse.ErrorResponse("UserName Not found", "UserName Not found", 404)); ; + + var token = _refreshTokenService.GenerateJwtToken(user.UserName, emp.TenantId.ToString(), _jwtSettings); + + var refreshToken = await _refreshTokenService.CreateRefreshToken(user.Id, emp.TenantId.ToString(), _jwtSettings); + + return Ok(ApiResponse.SuccessResponse(new { token = token, refreshToken = refreshToken }, "User logged in successfully.", 200)); + } - if (!user.IsActive) - { - return BadRequest(ApiResponse.ErrorResponse("User is In Active", "User is In Active", 400)); - //return BadRequest("User is In Active"); - } - if (!user.EmailConfirmed) - { - return BadRequest(ApiResponse.ErrorResponse("Your email is not verified, Please verify your email", "Your email is not verified, Please verify your email", 400)); - //return BadRequest("Your email is not verified, Please verify your email"); - } - Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id); - //var refreshToken = GenerateRefreshToken(); - - var token = _refreshTokenService.GenerateJwtToken(user.UserName, emp.TenantId.ToString(), _jwtSettings); - - var refreshToken = await _refreshTokenService.CreateRefreshToken(user.Id, emp.TenantId.ToString(), _jwtSettings); - - return Ok(ApiResponse.SuccessResponse(new { token = token, refreshToken = refreshToken }, "User logged in successfully.", 200)); + return Unauthorized(ApiResponse.ErrorResponse("Invalid username or password.", "Invalid username or password.", 401)); } [HttpPost("logout")] @@ -98,7 +97,7 @@ namespace MarcoBMS.Services.Controllers catch (Exception ex) { // _logger.LogError(ex, "Error during logout"); - return BadRequest(ApiResponse.ErrorResponse("Internal server error", "Internal server error", 500)); + return BadRequest(ApiResponse.ErrorResponse("Internal server error", ex.Message, 500)); } } @@ -120,6 +119,8 @@ namespace MarcoBMS.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("Invalid request.", "Invalid request.", 400)); Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id); + + if (user.UserName == null) return NotFound(ApiResponse.ErrorResponse("UserName Not found", "UserName Not found", 404)); var newJwtToken = _refreshTokenService.GenerateJwtToken(user.UserName, emp.TenantId.ToString(), _jwtSettings); var newRefreshToken = await _refreshTokenService.CreateRefreshToken(user.Id, emp.TenantId.ToString(), _jwtSettings); @@ -137,6 +138,9 @@ namespace MarcoBMS.Services.Controllers /* SEND USER REGISTRATION MAIL*/ var token = await _userManager.GeneratePasswordResetTokenAsync(user); var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}"; + + if (user.Email == null) return NotFound(ApiResponse.ErrorResponse("Email Not found", "Email Not found", 404)); + await _emailSender.SendResetPasswordEmail(user.Email, "", resetLink); @@ -199,7 +203,7 @@ namespace MarcoBMS.Services.Controllers var user = await _userManager.FindByEmailAsync(emailDot.ToEmail); if (user == null) { - return BadRequest(ApiResponse.ErrorResponse("User not found.", "User not found.", 400)); + return NotFound(ApiResponse.ErrorResponse("User not found.", "User not found.", 404)); } /* New User*/ @@ -217,6 +221,9 @@ namespace MarcoBMS.Services.Controllers var isTokenValid = await _userManager.VerifyUserTokenAsync(user, TokenOptions.DefaultProvider, "ResetPassword", token); var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}"; + + if (user.Email == null) return NotFound(ApiResponse.ErrorResponse("Email Not found", "Email Not found", 404)); + await _emailSender.SendResetPasswordEmail(user.Email, "", resetLink); return Ok(ApiResponse.SuccessResponse(new {}, "Password reset link sent.", 200)); diff --git a/Marco.Pms.Services/Controllers/EmployeeController.cs b/Marco.Pms.Services/Controllers/EmployeeController.cs index 4a974ea..4e38b40 100644 --- a/Marco.Pms.Services/Controllers/EmployeeController.cs +++ b/Marco.Pms.Services/Controllers/EmployeeController.cs @@ -57,7 +57,7 @@ namespace MarcoBMS.Services.Controllers } int tenantId = GetTenantId(); - var empRoles = _context.EmployeeRoleMappings.Where(c => c.EmployeeId == employeeId).Include(c => c.Role).Include(c => c.Employee).ToList(); + var empRoles = await _context.EmployeeRoleMappings.Where(c => c.EmployeeId == employeeId).Include(c => c.Role).Include(c => c.Employee).ToListAsync(); if (empRoles.Any()) { List roles = new List(); @@ -220,7 +220,7 @@ namespace MarcoBMS.Services.Controllers // Create Employee record if missing //Employee newEmployee = GetNewEmployeeModel(model, TenantId, existingUser.Id); //_context.Employees.Add(newEmployee); - return BadRequest(ApiResponse.ErrorResponse("You cannot use this email", "You cannot use this email", 400)); + return BadRequest(ApiResponse.ErrorResponse("Email already exist", "Email already exist", 400)); } @@ -276,8 +276,8 @@ namespace MarcoBMS.Services.Controllers } return Ok(ApiResponse.SuccessResponse("Success.",responsemessage, 200)); } - - private static Employee GetNewEmployeeModel(CreateUserDto model, int TenantId, string? ApplicationUserId) +#nullable disable + private static Employee GetNewEmployeeModel(CreateUserDto model, int TenantId, string ApplicationUserId) { var newEmployee = new Employee { @@ -304,7 +304,7 @@ namespace MarcoBMS.Services.Controllers return newEmployee; } - private static Employee GetUpdateEmployeeModel(CreateUserDto model, Employee existingEmployee, IdentityUser? existingIdentityUser = null) + private static Employee GetUpdateEmployeeModel(CreateUserDto model, Employee existingEmployee, IdentityUser existingIdentityUser = null) { if (existingEmployee.ApplicationUserId == null && existingIdentityUser != null) { diff --git a/Marco.Pms.Services/Controllers/ProjectController.cs b/Marco.Pms.Services/Controllers/ProjectController.cs index b738932..5c17f95 100644 --- a/Marco.Pms.Services/Controllers/ProjectController.cs +++ b/Marco.Pms.Services/Controllers/ProjectController.cs @@ -1,4 +1,6 @@ -using Marco.Pms.DataAccess.Data; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel; +using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Dtos.Project; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; @@ -9,8 +11,8 @@ using Marco.Pms.Model.ViewModels; using Marco.Pms.Model.ViewModels.Employee; using MarcoBMS.Services.Helpers; using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; using Microsoft.EntityFrameworkCore; namespace MarcoBMS.Services.Controllers @@ -22,18 +24,18 @@ namespace MarcoBMS.Services.Controllers { //private readonly IUnitOfWork _unitOfWork; private readonly ApplicationDbContext _context; - private ApplicationUser _applicationUser; + //private ApplicationUser _applicationUser; // private readonly IProjectRepository _projectrepo; - private readonly UserManager _userManager; + //private readonly UserManager _userManager; private readonly UserHelper _userHelper; - public ProjectController(UserManager userManager, ApplicationDbContext context, UserHelper userHelper) + public ProjectController(ApplicationDbContext context, UserHelper userHelper) { //_unitOfWork = unitOfWork; _context = context; //_projectrepo = projectrepo; - _userManager = userManager; + //_userManager = userManager; _userHelper = userHelper; } [HttpGet("list")] @@ -67,7 +69,7 @@ namespace MarcoBMS.Services.Controllers } var project = await _context.Projects.Where(c => c.TenantId == _userHelper.GetTenantId() && c.Id == id).SingleOrDefaultAsync(); - + if (project == null) return NotFound(ApiResponse.ErrorResponse("Project not found", "Project not found", 404)); return Ok(ApiResponse.SuccessResponse(project, "Success.", 200)); } @@ -123,9 +125,12 @@ namespace MarcoBMS.Services.Controllers foreach (WorkItem workItemDto in vm.workItems.Where(c => c.WorkAreaId == workAreaDto.Id).ToList()) { WorkItemVM workItemVM = new WorkItemVM() { WorkItemId = workItemDto.Id, WorkItem = workItemDto }; - workItemVM.WorkItem.WorkArea = null; - workItemVM.WorkItem.ActivityMaster.Tenant = null; - workItemVM.WorkItem.Tenant = null; + //workItemVM.WorkItem.WorkArea = null + workItemVM.WorkItem.WorkArea = new WorkArea (); + //workItemVM.WorkItem.ActivityMaster.Tenant = null; + workItemVM.WorkItem.ActivityMaster.Tenant = new Tenant(); + //workItemVM.WorkItem.Tenant = null; + workItemVM.WorkItem.Tenant = new Tenant(); @@ -282,7 +287,7 @@ namespace MarcoBMS.Services.Controllers [HttpGet] [Route("employees/get/{projectid?}/{includeInactive?}")] - public async Task GetEmployeeByProjectID(int? projectid, bool? includeInactive = false) + public async Task GetEmployeeByProjectID(int? projectid, bool includeInactive = false) { if (!ModelState.IsValid) { @@ -371,13 +376,14 @@ namespace MarcoBMS.Services.Controllers if (projectAllocationDot != null) { int TenentID = GetTenantId(); + List? result = new List(); foreach (var item in projectAllocationDot) { try { ProjectAllocation projectAllocation = item.ToProjectAllocationFromProjectAllocationDto(TenentID); - ProjectAllocation projectAllocationFromDb = await _context.ProjectAllocations.Where(c => c.EmployeeId == projectAllocation.EmployeeId + ProjectAllocation? projectAllocationFromDb = await _context.ProjectAllocations.Where(c => c.EmployeeId == projectAllocation.EmployeeId && c.ProjectId == projectAllocation.ProjectId && c.ReAllocationDate == null && c.TenantId == TenentID).SingleOrDefaultAsync(); @@ -401,7 +407,18 @@ namespace MarcoBMS.Services.Controllers _context.Entry(projectAllocationFromDb).Property(e => e.IsActive).IsModified = true; } await _context.SaveChangesAsync(); - + var result1 = new + { + Id = projectAllocationFromDb.Id, + EmployeeId = projectAllocation.EmployeeId, + JobRoleId = projectAllocation.JobRoleId, + IsActive = projectAllocation.IsActive, + ProjectId = projectAllocation.ProjectId, + AllocationDate = projectAllocation.AllocationDate, + ReAllocationDate = projectAllocation.ReAllocationDate, + TenantId = projectAllocation.TenantId + }; + result.Add(result1); } else { @@ -416,7 +433,8 @@ namespace MarcoBMS.Services.Controllers return Ok(ApiResponse.ErrorResponse(ex.Message,ex, 400)); } } - return Ok(ApiResponse.SuccessResponse(null, "Data saved successfully.", 200)); + + return Ok(ApiResponse.SuccessResponse(result, "Data saved successfully", 200)); } return BadRequest(ApiResponse.ErrorResponse("Invalid details.", "Work Item Details are not valid." , 400)); diff --git a/Marco.Pms.Services/Controllers/TaskController.cs b/Marco.Pms.Services/Controllers/TaskController.cs index f7eb3f3..88fff5e 100644 --- a/Marco.Pms.Services/Controllers/TaskController.cs +++ b/Marco.Pms.Services/Controllers/TaskController.cs @@ -67,14 +67,18 @@ namespace MarcoBMS.Services.Controllers var response = taskAllocation.ToAssignTaskVMFromTaskAllocation(); var teamMembers = new List { }; - foreach (var teamMember in assignTask.TaskTeam) { - var result = new TaskMembers + if (assignTask.TaskTeam != null) + { + foreach (var teamMember in assignTask.TaskTeam) { - TaskAllocationId = taskAllocation.Id, - EmployeeId = teamMember, - TenantId = tenantId, - }; - teamMembers.Add(result); + var result = new TaskMembers + { + TaskAllocationId = taskAllocation.Id, + EmployeeId = teamMember, + TenantId = tenantId, + }; + teamMembers.Add(result); + } } _context.TaskMembers.AddRange(teamMembers); await _context.SaveChangesAsync(); diff --git a/Marco.Pms.Services/Helpers/EmployeeHelper.cs b/Marco.Pms.Services/Helpers/EmployeeHelper.cs index ca7fae9..12b5d19 100644 --- a/Marco.Pms.Services/Helpers/EmployeeHelper.cs +++ b/Marco.Pms.Services/Helpers/EmployeeHelper.cs @@ -3,22 +3,23 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.ViewModels.Employee; +using MarcoBMS.Services.Service; using Microsoft.EntityFrameworkCore; -using System.Collections.Generic; -using System.Runtime.Intrinsics.Arm; namespace MarcoBMS.Services.Helpers { public class EmployeeHelper { private readonly ApplicationDbContext _context; - public EmployeeHelper(ApplicationDbContext context) + private readonly ILoggingService _logger; + public EmployeeHelper(ApplicationDbContext context, ILoggingService logger) { _context = context; + _logger = logger; } public async Task GetEmployeeByID(int EmployeeID) { - return await _context.Employees.FindAsync(EmployeeID); + return await _context.Employees.FindAsync(EmployeeID) ?? new Employee { }; } public async Task GetEmployeeByApplicationUserID(string ApplicationUserID) @@ -27,11 +28,12 @@ namespace MarcoBMS.Services.Helpers { var result = await _context.Employees.Where(c => c.ApplicationUserId == ApplicationUserID).ToListAsync(); - return await _context.Employees.Where(c => c.ApplicationUserId == ApplicationUserID).SingleOrDefaultAsync(); + return await _context.Employees.Where(c => c.ApplicationUserId == ApplicationUserID).SingleOrDefaultAsync() ?? new Employee { }; } catch (Exception ex) { - return null; + _logger.LogError("{Error}", ex.Message); + return new Employee(); } } @@ -63,6 +65,7 @@ namespace MarcoBMS.Services.Helpers } catch (Exception ex) { + _logger.LogError("{Error}", ex.Message); return new List(); } } @@ -93,6 +96,7 @@ namespace MarcoBMS.Services.Helpers } catch (Exception ex) { + _logger.LogError("{Error}", ex.Message); return new List(); } } diff --git a/Marco.Pms.Services/Helpers/UserHelper.cs b/Marco.Pms.Services/Helpers/UserHelper.cs index 45125c0..41d78f0 100644 --- a/Marco.Pms.Services/Helpers/UserHelper.cs +++ b/Marco.Pms.Services/Helpers/UserHelper.cs @@ -1,10 +1,8 @@ -using Marco.Pms.DataAccess.Data; -using Marco.Pms.Model.Dtos.Employees; +using System.Security.Claims; +using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Employees; -using Marco.Pms.Model.Entitlements; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; -using System.Security.Claims; namespace MarcoBMS.Services.Helpers { @@ -39,8 +37,9 @@ namespace MarcoBMS.Services.Helpers public async Task GetCurrentEmployeeAsync() { var user = await GetCurrentUserAsync(); + if (user == null) return new Employee { }; var Employee = await _context.Employees.FirstOrDefaultAsync(e => e.ApplicationUserId == user.Id); - return Employee; + return Employee ?? new Employee { }; } public async Task GetCurrentUserProfileAsync() @@ -58,16 +57,7 @@ namespace MarcoBMS.Services.Helpers public async Task GetRegisteredUser(string email) { - //IdentityUser? user = await _userManager.Users - // .FirstOrDefaultAsync(u => u.Email == model.Email || u.PhoneNumber == model.PhoneNumber); - - IdentityUser? user = await _userManager.FindByEmailAsync(email); - //if (user == null) - //{ - // user = await _userManager.Find(model.Email); - - //} return user; } } diff --git a/Marco.Pms.Services/Program.cs b/Marco.Pms.Services/Program.cs index dda2b5f..c42ab40 100644 --- a/Marco.Pms.Services/Program.cs +++ b/Marco.Pms.Services/Program.cs @@ -44,7 +44,7 @@ builder.Services.AddCors(options => { options.AddPolicy("Policy", policy => { - if (allowedOrigins != null) + if (allowedOrigins != null && allowedMethods != null && allowedHeaders != null) { policy.WithOrigins(allowedOrigins) .WithMethods(allowedMethods) @@ -93,7 +93,7 @@ builder.Services.AddTransient(); builder.Services.AddIdentity().AddEntityFrameworkStores().AddDefaultTokenProviders(); -string connString = builder.Configuration.GetConnectionString("DefaultConnectionString"); +string? connString = builder.Configuration.GetConnectionString("DefaultConnectionString"); builder.Services.AddDbContext(options => { @@ -122,24 +122,27 @@ builder.Services.AddSingleton(); builder.Services.AddHttpContextAccessor(); var jwtSettings = builder.Configuration.GetSection("Jwt").Get(); -builder.Services.AddAuthentication(options => +if(jwtSettings != null) { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; -}) -.AddJwtBearer(options => -{ - options.TokenValidationParameters = new TokenValidationParameters + builder.Services.AddAuthentication(options => { - ValidateIssuer = true, - ValidateAudience = true, - ValidateLifetime = true, - ValidateIssuerSigningKey = true, - ValidIssuer = jwtSettings.Issuer, - ValidAudience = jwtSettings.Audience, - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) - }; -}); + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => + { + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + ValidateIssuerSigningKey = true, + ValidIssuer = jwtSettings.Issuer, + ValidAudience = jwtSettings.Audience, + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) + }; + }); +} builder.Services.AddSingleton(jwtSettings); diff --git a/Marco.Pms.Services/Service/RefreshTokenService.cs b/Marco.Pms.Services/Service/RefreshTokenService.cs index 9909283..bccabcd 100644 --- a/Marco.Pms.Services/Service/RefreshTokenService.cs +++ b/Marco.Pms.Services/Service/RefreshTokenService.cs @@ -1,16 +1,11 @@ -using Marco.Pms.DataAccess.Data; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; +using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Authentication; -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using Microsoft.IdentityModel.Tokens; -using Newtonsoft.Json.Linq; -using SharpCompress.Common; -using System.IdentityModel.Tokens.Jwt; -using System.Security.Claims; -using System.Security.Cryptography; -using System.Text; namespace MarcoBMS.Services.Service @@ -19,12 +14,14 @@ namespace MarcoBMS.Services.Service { private readonly ApplicationDbContext _context; private readonly IMemoryCache _cache; // For optional JWT blacklisting + private readonly ILoggingService _logger; - public RefreshTokenService(ApplicationDbContext context, IMemoryCache cache) + public RefreshTokenService(ApplicationDbContext context, IMemoryCache cache, ILoggingService logger) { _context = context; _cache = cache; + _logger = logger; } public string GenerateJwtToken(string username, string tenantId, JwtSettings _jwtSettings) @@ -94,13 +91,14 @@ namespace MarcoBMS.Services.Service return strToken; }catch(Exception ex) { + _logger.LogError("{Error}", ex.Message); throw; } } public async Task GetRefreshToken(string token) { - return await _context.RefreshTokens.FirstOrDefaultAsync(rt => rt.Token == token && !rt.IsRevoked && !rt.IsUsed); + return await _context.RefreshTokens.FirstOrDefaultAsync(rt => rt.Token == token && !rt.IsRevoked && !rt.IsUsed) ?? new RefreshToken(); } public async Task MarkRefreshTokenAsUsed(RefreshToken refreshToken) diff --git a/Marco.Pms.Services/appsettings.json b/Marco.Pms.Services/appsettings.json index 13b7b8b..c204963 100644 --- a/Marco.Pms.Services/appsettings.json +++ b/Marco.Pms.Services/appsettings.json @@ -10,7 +10,7 @@ "Override": { "Microsoft": "Warning", "Microsoft.EntityFrameworkCore.Database.Command": "Warning", - "Microsoft.AspNetCore.Mvc.Infrastructure": "Warning", + "Microsoft.AspNetCore.Mvc.Infrastructure": "Warning" //"Serilog.AspNetCore.RequestLoggingMiddleware": "Warning" } }, @@ -64,7 +64,7 @@ "ConnectionStrings": { // "DefaultConnectionString": "Server=103.50.160.45;User ID=marcowvh_admin;Password=Marcoemp@123;Database=marcowvh_empattendanceci", - "DefaultConnectionString": "Server=localhost;port=3306;User ID=root;Password=root;Database=MarcoBMS2", + "DefaultConnectionString": "Server=localhost;port=3306;User ID=root;Password=root;Database=MarcoBMS2" //"DefaultConnectionString": "Server=147.93.98.152;User ID=devuser;Password=AppUser@123$;Database=MarcoBMS1" }, "AppSettings": { From 52a67ba15b949c31bb7de0be355766c94319d085 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Wed, 9 Apr 2025 10:25:44 +0530 Subject: [PATCH 3/4] Removed null refreance warning from MOdel project --- Marco.Pms.Model/Activities/TaskImages.cs | 4 ++-- .../AttendanceModule/AttendanceLog.cs | 6 +++--- Marco.Pms.Model/Authentication/JwtSettings.cs | 6 +++--- .../Dtos/Activities/CreateActivityMasterDto.cs | 8 +++----- .../Dtos/Activities/CreateCommentDto.cs | 2 +- .../Dtos/Activities/ReportTaskDto.cs | 2 +- .../Dtos/Attendance/RecordAttendanceDot.cs | 6 +++--- .../Dtos/Employees/ApplicationUserDto.cs | 2 +- .../Dtos/Employees/AttendanceDto.cs | 15 ++------------- .../Dtos/Employees/CreateUserDto.cs | 2 +- Marco.Pms.Model/Dtos/ForgotPasswordDto.cs | 9 ++------- Marco.Pms.Model/Dtos/LoginDto.cs | 12 +++--------- Marco.Pms.Model/Dtos/LogoutDto.cs | 2 +- Marco.Pms.Model/Dtos/Project/BuildingDot.cs | 12 ++---------- Marco.Pms.Model/Dtos/Project/BuildingVM.cs | 4 ++-- .../Dtos/Project/CreateProjectDto.cs | 6 +++--- Marco.Pms.Model/Dtos/Project/FloorDot.cs | 13 ++----------- Marco.Pms.Model/Dtos/Project/FloorsVM.cs | 11 +++-------- Marco.Pms.Model/Dtos/Project/InfraDot.cs | 9 +-------- Marco.Pms.Model/Dtos/Project/ProjectDto.cs | 17 ++++------------- Marco.Pms.Model/Dtos/Project/ProjectVM.cs | 11 ++--------- .../Dtos/Project/UpdateProjectDto.cs | 6 +++--- Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs | 13 ++----------- Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs | 11 +++-------- Marco.Pms.Model/Dtos/Project/WorkItemVM.cs | 2 +- Marco.Pms.Model/Dtos/RefreshTokenDto.cs | 12 +++--------- Marco.Pms.Model/Dtos/RegisterDto.cs | 15 +++++---------- Marco.Pms.Model/Dtos/ResetPasswordDto.cs | 6 +++--- .../Dtos/Roles/CreateApplicationRoleDto.cs | 11 ++++------- Marco.Pms.Model/Dtos/Roles/CreateJobRoleDto.cs | 10 ++-------- .../Dtos/Roles/UpdateApplicationRoleDto.cs | 9 ++++----- Marco.Pms.Model/Dtos/Roles/UpdateJobRoleDto.cs | 10 ++-------- Marco.Pms.Model/Dtos/Util/EmailDot.cs | 8 ++++---- Marco.Pms.Model/Employees/EmployeeDetails.cs | 8 +------- Marco.Pms.Model/Employees/EmployeeDocument.cs | 8 ++++---- .../Entitlements/EmployeeRoleMapping.cs | 5 ++--- Marco.Pms.Model/Mapper/ActivitiesMapper.cs | 3 +-- .../Mapper/ApplicationRoleMapper.cs | 2 +- Marco.Pms.Model/Mapper/EmployeeMapper.cs | 2 +- Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs | 2 -- Marco.Pms.Model/Mapper/FeatureMapper.cs | 3 +-- Marco.Pms.Model/Mapper/InfraMapper.cs | 1 - Marco.Pms.Model/Projects/PhotoGallary.cs | 4 ++-- Marco.Pms.Model/Projects/Project.cs | 12 +++--------- Marco.Pms.Model/Projects/WorkArea.cs | 12 +++--------- Marco.Pms.Model/Projects/WorkItemMapping.cs | 6 +++--- Marco.Pms.Model/Providers/TenantProvider.cs | 7 +------ Marco.Pms.Model/Utilities/ApiResponse.cs | 7 +------ Marco.Pms.Model/Utilities/AuthResponse.cs | 14 ++++---------- Marco.Pms.Model/Utilities/FileDetails.cs | 8 ++++---- Marco.Pms.Model/Utilities/FileUploadModel.cs | 16 +++++----------- Marco.Pms.Model/Utilities/SmtpSettings.cs | 8 ++++---- .../ViewModels/Activities/CommentVM.cs | 2 +- .../ViewModels/Activities/ListTaskVM.cs | 2 +- .../ViewModels/Activities/TasksVM.cs | 2 +- .../ViewModels/ApplicationRolesVM.cs | 18 ++++-------------- .../ViewModels/Employee/EmployeeProfile.cs | 8 ++++---- .../ViewModels/Employee/EmployeeVM.cs | 2 +- Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs | 9 +++------ .../ViewModels/FeaturePermissionVM.cs | 15 +++------------ Marco.Pms.Model/ViewModels/FeatureVM.cs | 17 ++++------------- Marco.Pms.Model/ViewModels/InfraVM.cs | 9 ++------- Marco.Pms.Model/ViewModels/JobRoleVM.cs | 4 ++-- Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs | 14 +++++++------- Marco.Pms.Model/ViewModels/RolesVM.cs | 8 +++----- .../Controllers/EmployeeController.cs | 4 ++-- Marco.Pms.Utility/SessionUtil.cs | 10 +--------- 67 files changed, 161 insertions(+), 363 deletions(-) diff --git a/Marco.Pms.Model/Activities/TaskImages.cs b/Marco.Pms.Model/Activities/TaskImages.cs index 1cd93a2..fd82c18 100644 --- a/Marco.Pms.Model/Activities/TaskImages.cs +++ b/Marco.Pms.Model/Activities/TaskImages.cs @@ -10,8 +10,8 @@ namespace Marco.Pms.Model.Activities public long TaskAllocationId { get; set; } [ValidateNever] [ForeignKey(nameof(TaskAllocationId))] - public TaskAllocation TaskAllocation { get; set; } + public TaskAllocation? TaskAllocation { get; set; } - public string ImagePath { get; set; } + public string? ImagePath { get; set; } } } diff --git a/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs b/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs index 6acf3f1..2376ce0 100644 --- a/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs +++ b/Marco.Pms.Model/AttendanceModule/AttendanceLog.cs @@ -1,9 +1,9 @@ -using Marco.Pms.Model.Dtos.Attendance; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Dtos.Attendance; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations.Schema; namespace Marco.Pms.Model.AttendanceModule diff --git a/Marco.Pms.Model/Authentication/JwtSettings.cs b/Marco.Pms.Model/Authentication/JwtSettings.cs index 8e303ee..d443b3a 100644 --- a/Marco.Pms.Model/Authentication/JwtSettings.cs +++ b/Marco.Pms.Model/Authentication/JwtSettings.cs @@ -2,9 +2,9 @@ { public class JwtSettings { - public string Key { get; set; } - public string Issuer { get; set; } - public string Audience { get; set; } + public string? Key { get; set; } + public string? Issuer { get; set; } + public string? Audience { get; set; } public int ExpiresInMinutes { get; set; } public int RefreshTokenExpiresInDays { get; set; } } diff --git a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs index 74913d7..4532ddb 100644 --- a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs @@ -1,10 +1,8 @@ -using System.ComponentModel; - -namespace Marco.Pms.Model.Dtos.Activities +namespace Marco.Pms.Model.Dtos.Activities { public class CreateActivityMasterDto { - public string ActivityName { get; set; } - public string UnitOfMeasurement { get; set; } + public string? ActivityName { get; set; } + public string? UnitOfMeasurement { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Activities/CreateCommentDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateCommentDto.cs index 0fba54b..e31aedd 100644 --- a/Marco.Pms.Model/Dtos/Activities/CreateCommentDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/CreateCommentDto.cs @@ -5,7 +5,7 @@ public long TaskAllocationId { get; set; } public DateTime CommentDate { get; set; } - public string Comment { get; set; } + public string? Comment { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Activities/ReportTaskDto.cs b/Marco.Pms.Model/Dtos/Activities/ReportTaskDto.cs index 21882ec..067bad0 100644 --- a/Marco.Pms.Model/Dtos/Activities/ReportTaskDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/ReportTaskDto.cs @@ -5,6 +5,6 @@ public long Id { get; set; } public double CompletedTask { get; set; } public DateTime ReportedDate { get; set; } - public string Comment { get; set; } + public string? Comment { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Attendance/RecordAttendanceDot.cs b/Marco.Pms.Model/Dtos/Attendance/RecordAttendanceDot.cs index 2cfac87..014f7f8 100644 --- a/Marco.Pms.Model/Dtos/Attendance/RecordAttendanceDot.cs +++ b/Marco.Pms.Model/Dtos/Attendance/RecordAttendanceDot.cs @@ -5,15 +5,15 @@ namespace Marco.Pms.Model.Dtos.Attendance public class RecordAttendanceDot { public int? Id { get; set; } - public string Comment { get; set; } + public string? Comment { get; set; } public int EmployeeID { get; set; } public int ProjectID { get; set; } public DateTime Date { get; set; } public string? MarkTime { get; set; } - public string Latitude { get; set; } - public string Longitude { get; set; } + public string? Latitude { get; set; } + public string? Longitude { get; set; } public ATTENDANCE_MARK_TYPE Action { get; set; } diff --git a/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs b/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs index b6bdae8..c0665f7 100644 --- a/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs +++ b/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs @@ -16,7 +16,7 @@ namespace Marco.Pms.Model.Dtos.Employees public DateTime? BirthDate { get; set; } public DateTime? JoiningDate { get; set; } - public string PeramnentAddress { get; set; } + public string PermanentAddress { get; set; } public string CurrentAddress { get; set; } public string PhoneNumber { get; set; } diff --git a/Marco.Pms.Model/Dtos/Employees/AttendanceDto.cs b/Marco.Pms.Model/Dtos/Employees/AttendanceDto.cs index 1565527..069cd62 100644 --- a/Marco.Pms.Model/Dtos/Employees/AttendanceDto.cs +++ b/Marco.Pms.Model/Dtos/Employees/AttendanceDto.cs @@ -1,19 +1,8 @@ -using Marco.Pms.Model.Employees; -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos.Employees +namespace Marco.Pms.Model.Dtos.Employees { public class AttendanceDto { - public string Comment { get; set; } + public string? Comment { get; set; } public int EmployeeID { get; set; } public DateTime? InTime { get; set; } public DateTime? OutTime { get; set; } diff --git a/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs b/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs index 023905e..da35cab 100644 --- a/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs +++ b/Marco.Pms.Model/Dtos/Employees/CreateUserDto.cs @@ -12,7 +12,7 @@ public string? BirthDate { get; set; } public string? JoiningDate { get; set; } - public string? PeramnentAddress { get; set; } + public string? PermanentAddress { get; set; } public string? CurrentAddress { get; set; } public string? PhoneNumber { get; set; } diff --git a/Marco.Pms.Model/Dtos/ForgotPasswordDto.cs b/Marco.Pms.Model/Dtos/ForgotPasswordDto.cs index a379ae7..518c1b5 100644 --- a/Marco.Pms.Model/Dtos/ForgotPasswordDto.cs +++ b/Marco.Pms.Model/Dtos/ForgotPasswordDto.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace Marco.Pms.Model.Dtos { @@ -11,6 +6,6 @@ namespace Marco.Pms.Model.Dtos { [Required] [EmailAddress] - public string Email { get; set; } + public string? Email { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/LoginDto.cs b/Marco.Pms.Model/Dtos/LoginDto.cs index bf6f8cc..9fd0737 100644 --- a/Marco.Pms.Model/Dtos/LoginDto.cs +++ b/Marco.Pms.Model/Dtos/LoginDto.cs @@ -1,14 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos +namespace Marco.Pms.Model.Dtos { public class LoginDto { - public string Username { get; set; } - public string Password { get; set; } + public string? Username { get; set; } + public string? Password { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/LogoutDto.cs b/Marco.Pms.Model/Dtos/LogoutDto.cs index 263424d..f2f1e0f 100644 --- a/Marco.Pms.Model/Dtos/LogoutDto.cs +++ b/Marco.Pms.Model/Dtos/LogoutDto.cs @@ -2,6 +2,6 @@ namespace Marco.Pms.Model.Dtos { public class LogoutDto - { public string RefreshToken { get; set; } + { public string? RefreshToken { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Project/BuildingDot.cs b/Marco.Pms.Model/Dtos/Project/BuildingDot.cs index 3fec06b..18756c7 100644 --- a/Marco.Pms.Model/Dtos/Project/BuildingDot.cs +++ b/Marco.Pms.Model/Dtos/Project/BuildingDot.cs @@ -1,13 +1,5 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Dtos.Project { @@ -17,7 +9,7 @@ namespace Marco.Pms.Model.Dtos.Project public int Id { get; set; } [Required] [DisplayName("Building Name")] - public string Name { get; set; } + public string? Name { get; set; } public string? Description { get; set; } public int ProjectId { get; set; } diff --git a/Marco.Pms.Model/Dtos/Project/BuildingVM.cs b/Marco.Pms.Model/Dtos/Project/BuildingVM.cs index 8323564..b9a0bd9 100644 --- a/Marco.Pms.Model/Dtos/Project/BuildingVM.cs +++ b/Marco.Pms.Model/Dtos/Project/BuildingVM.cs @@ -5,10 +5,10 @@ namespace Marco.Pms.Model.Dtos.Project public class BuildingVM { public int Id { get; set; } - public string Name { get; set; } + public string? Name { get; set; } public string? Description { get; set; } - public List Floors { get; set; } + public List? Floors { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Project/CreateProjectDto.cs b/Marco.Pms.Model/Dtos/Project/CreateProjectDto.cs index 41e7f63..85abcee 100644 --- a/Marco.Pms.Model/Dtos/Project/CreateProjectDto.cs +++ b/Marco.Pms.Model/Dtos/Project/CreateProjectDto.cs @@ -8,15 +8,15 @@ namespace Marco.Pms.Model.Dtos.Project //public int Id { get; set; } [Required(ErrorMessage = "Project Name is required!")] [DisplayName("Project Name")] - public string Name { get; set; } + public string? Name { get; set; } [DisplayName("Project Address")] [Required(ErrorMessage = "Project Address is required!")] - public string ProjectAddress { get; set; } + public string? ProjectAddress { get; set; } [DisplayName("Contact Person")] - public string ContactPerson { get; set; } + public string? ContactPerson { get; set; } public DateTime? StartDate { get; set; } diff --git a/Marco.Pms.Model/Dtos/Project/FloorDot.cs b/Marco.Pms.Model/Dtos/Project/FloorDot.cs index d437e78..c6f4885 100644 --- a/Marco.Pms.Model/Dtos/Project/FloorDot.cs +++ b/Marco.Pms.Model/Dtos/Project/FloorDot.cs @@ -1,14 +1,5 @@ -using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.Projects; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Dtos.Project { @@ -18,7 +9,7 @@ namespace Marco.Pms.Model.Dtos.Project [Required] [DisplayName("Floor Name")] - public string FloorName { get; set; } + public string? FloorName { get; set; } public int BuildingId { get; set; } diff --git a/Marco.Pms.Model/Dtos/Project/FloorsVM.cs b/Marco.Pms.Model/Dtos/Project/FloorsVM.cs index 7532493..05d936c 100644 --- a/Marco.Pms.Model/Dtos/Project/FloorsVM.cs +++ b/Marco.Pms.Model/Dtos/Project/FloorsVM.cs @@ -1,10 +1,5 @@ -using System; -using System.Collections.Generic; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Dtos.Project { @@ -14,9 +9,9 @@ namespace Marco.Pms.Model.Dtos.Project [Required] [DisplayName("Floor Name")] - public string FloorName { get; set; } + public string? FloorName { get; set; } - public List WorkAreas { get; set; } + public List? WorkAreas { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Project/InfraDot.cs b/Marco.Pms.Model/Dtos/Project/InfraDot.cs index a37fb6b..7c16c09 100644 --- a/Marco.Pms.Model/Dtos/Project/InfraDot.cs +++ b/Marco.Pms.Model/Dtos/Project/InfraDot.cs @@ -1,11 +1,4 @@ -using Marco.Pms.Model.Projects; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos.Project +namespace Marco.Pms.Model.Dtos.Project { public class InfraDot { diff --git a/Marco.Pms.Model/Dtos/Project/ProjectDto.cs b/Marco.Pms.Model/Dtos/Project/ProjectDto.cs index 8bdaaf3..3daa757 100644 --- a/Marco.Pms.Model/Dtos/Project/ProjectDto.cs +++ b/Marco.Pms.Model/Dtos/Project/ProjectDto.cs @@ -1,14 +1,5 @@ -using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.Projects; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Dtos.Project { @@ -17,15 +8,15 @@ namespace Marco.Pms.Model.Dtos.Project public int Id { get; set; } [Required(ErrorMessage = "Project Name is required!")] [DisplayName("Project Name")] - public string Name { get; set; } + public string? Name { get; set; } [DisplayName("Project Address")] [Required(ErrorMessage = "Project Address is required!")] - public string ProjectAddress { get; set; } + public string? ProjectAddress { get; set; } [DisplayName("Contact Person")] - public string ContactPerson { get; set; } + public string? ContactPerson { get; set; } public DateTime? StartDate { get; set; } diff --git a/Marco.Pms.Model/Dtos/Project/ProjectVM.cs b/Marco.Pms.Model/Dtos/Project/ProjectVM.cs index aef5d1f..6afc004 100644 --- a/Marco.Pms.Model/Dtos/Project/ProjectVM.cs +++ b/Marco.Pms.Model/Dtos/Project/ProjectVM.cs @@ -1,15 +1,8 @@ -using Marco.Pms.Model.Projects; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos.Project +namespace Marco.Pms.Model.Dtos.Project { public class ProjectVM : ProjectDto { - public List Buildings { get; set; } + public List? Buildings { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Project/UpdateProjectDto.cs b/Marco.Pms.Model/Dtos/Project/UpdateProjectDto.cs index c155669..d3ac144 100644 --- a/Marco.Pms.Model/Dtos/Project/UpdateProjectDto.cs +++ b/Marco.Pms.Model/Dtos/Project/UpdateProjectDto.cs @@ -8,15 +8,15 @@ namespace Marco.Pms.Model.Dtos.Project public int Id { get; set; } [Required(ErrorMessage = "Project Name is required!")] [DisplayName("Project Name")] - public string Name { get; set; } + public string? Name { get; set; } [DisplayName("Project Address")] [Required(ErrorMessage = "Project Address is required!")] - public string ProjectAddress { get; set; } + public string? ProjectAddress { get; set; } [DisplayName("Contact Person")] - public string ContactPerson { get; set; } + public string? ContactPerson { get; set; } public DateTime? StartDate { get; set; } diff --git a/Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs b/Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs index c02ac52..8cf8d98 100644 --- a/Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs +++ b/Marco.Pms.Model/Dtos/Project/WorkAreaDot.cs @@ -1,14 +1,5 @@ -using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.Projects; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Dtos.Project { @@ -19,7 +10,7 @@ namespace Marco.Pms.Model.Dtos.Project [Required] [DisplayName("Area Name")] - public string AreaName { get; set; } + public string? AreaName { get; set; } public int FloorId { get; set; } diff --git a/Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs b/Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs index b40efe2..9fc27ba 100644 --- a/Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs +++ b/Marco.Pms.Model/Dtos/Project/WorkAreaVM.cs @@ -1,10 +1,5 @@ -using System; -using System.Collections.Generic; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Marco.Pms.Model.Dtos.Project { @@ -14,9 +9,9 @@ namespace Marco.Pms.Model.Dtos.Project [Required] [DisplayName("Area Name")] - public string AreaName { get; set; } + public string? AreaName { get; set; } - public List WorkItems { get; set; } + public List? WorkItems { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Project/WorkItemVM.cs b/Marco.Pms.Model/Dtos/Project/WorkItemVM.cs index 1396190..d62161a 100644 --- a/Marco.Pms.Model/Dtos/Project/WorkItemVM.cs +++ b/Marco.Pms.Model/Dtos/Project/WorkItemVM.cs @@ -5,6 +5,6 @@ namespace Marco.Pms.Model.Dtos.Project public class WorkItemVM { public int WorkItemId { get; set; } - public WorkItem WorkItem { get; set; } + public WorkItem? WorkItem { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/RefreshTokenDto.cs b/Marco.Pms.Model/Dtos/RefreshTokenDto.cs index 7eaecc2..b6d5333 100644 --- a/Marco.Pms.Model/Dtos/RefreshTokenDto.cs +++ b/Marco.Pms.Model/Dtos/RefreshTokenDto.cs @@ -1,14 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos +namespace Marco.Pms.Model.Dtos { public class RefreshTokenDto { - public string Token { get; set; } - public string RefreshToken { get; set; } + public string? Token { get; set; } + public string? RefreshToken { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/RegisterDto.cs b/Marco.Pms.Model/Dtos/RegisterDto.cs index 0f2c7ea..04e884f 100644 --- a/Marco.Pms.Model/Dtos/RegisterDto.cs +++ b/Marco.Pms.Model/Dtos/RegisterDto.cs @@ -1,26 +1,21 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations; namespace Marco.Pms.Model.Dtos { public class RegisterDto { [Required] - public string Username { get; set; } + public string? Username { get; set; } [Required] [EmailAddress] - public string Email { get; set; } + public string? Email { get; set; } [Required] [MinLength(6)] - public string Password { get; set; } + public string? Password { get; set; } [Compare("Password", ErrorMessage = "Passwords do not match.")] - public string ConfirmPassword { get; set; } + public string? ConfirmPassword { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/ResetPasswordDto.cs b/Marco.Pms.Model/Dtos/ResetPasswordDto.cs index 971da66..5ae11a5 100644 --- a/Marco.Pms.Model/Dtos/ResetPasswordDto.cs +++ b/Marco.Pms.Model/Dtos/ResetPasswordDto.cs @@ -6,13 +6,13 @@ namespace Marco.Pms.Model.Dtos { [Required] [EmailAddress] - public string Email { get; set; } + public string? Email { get; set; } [Required] - public string Token { get; set; } + public string? Token { get; set; } [Required] [MinLength(6)] - public string NewPassword { get; set; } + public string? NewPassword { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Roles/CreateApplicationRoleDto.cs b/Marco.Pms.Model/Dtos/Roles/CreateApplicationRoleDto.cs index 6d72b65..a65f003 100644 --- a/Marco.Pms.Model/Dtos/Roles/CreateApplicationRoleDto.cs +++ b/Marco.Pms.Model/Dtos/Roles/CreateApplicationRoleDto.cs @@ -1,8 +1,5 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; namespace Marco.Pms.Model.Dtos.Roles { @@ -11,13 +8,13 @@ namespace Marco.Pms.Model.Dtos.Roles [Required(ErrorMessage = "Role Name is required!")] [DisplayName("Name")] - public string Role { get; set; } + public string? Role { get; set; } [Required(ErrorMessage = "Role Description is required!")] [DisplayName("Description")] - public string Description { get; set; } + public string? Description { get; set; } - public List FeaturesPermission { get; set; } // Features assigned to this role + public List? FeaturesPermission { get; set; } // Features assigned to this role } } diff --git a/Marco.Pms.Model/Dtos/Roles/CreateJobRoleDto.cs b/Marco.Pms.Model/Dtos/Roles/CreateJobRoleDto.cs index ed6183d..d918264 100644 --- a/Marco.Pms.Model/Dtos/Roles/CreateJobRoleDto.cs +++ b/Marco.Pms.Model/Dtos/Roles/CreateJobRoleDto.cs @@ -1,14 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos.Roles +namespace Marco.Pms.Model.Dtos.Roles { public class CreateJobRoleDto { - public string Name { get; set; } + public string? Name { get; set; } public string? Description { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Roles/UpdateApplicationRoleDto.cs b/Marco.Pms.Model/Dtos/Roles/UpdateApplicationRoleDto.cs index 938399b..b9c495b 100644 --- a/Marco.Pms.Model/Dtos/Roles/UpdateApplicationRoleDto.cs +++ b/Marco.Pms.Model/Dtos/Roles/UpdateApplicationRoleDto.cs @@ -1,5 +1,4 @@ -using Marco.Pms.Model.Entitlements; -using System.ComponentModel; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace Marco.Pms.Model.Dtos.Roles @@ -11,15 +10,15 @@ namespace Marco.Pms.Model.Dtos.Roles [Required(ErrorMessage = "Role Name is required!")] [DisplayName("Name")] - public string Role { get; set; } + public string? Role { get; set; } [Required(ErrorMessage = "Role Description is required!")] [DisplayName("Description")] - public string Description { get; set; } + public string? Description { get; set; } - public List FeaturesPermission { get; set; } // Features assigned to this role + public List? FeaturesPermission { get; set; } // Features assigned to this role } public class FeaturesPermissionDto diff --git a/Marco.Pms.Model/Dtos/Roles/UpdateJobRoleDto.cs b/Marco.Pms.Model/Dtos/Roles/UpdateJobRoleDto.cs index ef017fe..e3d56af 100644 --- a/Marco.Pms.Model/Dtos/Roles/UpdateJobRoleDto.cs +++ b/Marco.Pms.Model/Dtos/Roles/UpdateJobRoleDto.cs @@ -1,15 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Dtos.Roles +namespace Marco.Pms.Model.Dtos.Roles { public class UpdateJobRoleDto { public int Id { get; set; } - public string Name { get; set; } + public string? Name { get; set; } public string? Description { get; set; } } } diff --git a/Marco.Pms.Model/Dtos/Util/EmailDot.cs b/Marco.Pms.Model/Dtos/Util/EmailDot.cs index a09c921..f832101 100644 --- a/Marco.Pms.Model/Dtos/Util/EmailDot.cs +++ b/Marco.Pms.Model/Dtos/Util/EmailDot.cs @@ -2,10 +2,10 @@ { public class EmailDot { - public string ToEmail { get; set; } - public string FromEmail { get; set; } - public string MailBody { get; set; } - public string MailSubject { get; set; } + public string? ToEmail { get; set; } + public string? FromEmail { get; set; } + public string? MailBody { get; set; } + public string? MailSubject { get; set; } } } diff --git a/Marco.Pms.Model/Employees/EmployeeDetails.cs b/Marco.Pms.Model/Employees/EmployeeDetails.cs index 5f9b505..183b07f 100644 --- a/Marco.Pms.Model/Employees/EmployeeDetails.cs +++ b/Marco.Pms.Model/Employees/EmployeeDetails.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Employees +namespace Marco.Pms.Model.Employees { public class EmployeeDetails : Employee { diff --git a/Marco.Pms.Model/Employees/EmployeeDocument.cs b/Marco.Pms.Model/Employees/EmployeeDocument.cs index 8092000..c9b7f92 100644 --- a/Marco.Pms.Model/Employees/EmployeeDocument.cs +++ b/Marco.Pms.Model/Employees/EmployeeDocument.cs @@ -6,16 +6,16 @@ namespace Marco.Pms.Model.Employees public class EmployeeDocument { public Guid Id { get; set; } // Unique identifier for the document - public string FileName { get; set; } // Original file name - public string FilePath { get; set; } // Path to the stored file - public string FileType { get; set; } // Type of the document (e.g., PDF, JPG) + public string? FileName { get; set; } // Original file name + public string? FilePath { get; set; } // Path to the stored file + public string? FileType { get; set; } // Type of the document (e.g., PDF, JPG) public long FileSize { get; set; } // File size in bytes public DateTime UploadedAt { get; set; } // Timestamp of upload public Guid EmployeeId { get; set; } // Foreign key to Employee [ValidateNever] [ForeignKey(nameof(EmployeeId))] - public Employee Employee { get; set; } // Navigation property to Employee + public Employee? Employee { get; set; } // Navigation property to Employee } diff --git a/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs b/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs index 5e92dc9..b3d1cf3 100644 --- a/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs +++ b/Marco.Pms.Model/Entitlements/EmployeeRoleMapping.cs @@ -1,7 +1,6 @@ -using Marco.Pms.Model.Employees; -using Microsoft.AspNetCore.Http; +using System.ComponentModel.DataAnnotations.Schema; +using Marco.Pms.Model.Employees; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System.ComponentModel.DataAnnotations.Schema; namespace Marco.Pms.Model.Entitlements { diff --git a/Marco.Pms.Model/Mapper/ActivitiesMapper.cs b/Marco.Pms.Model/Mapper/ActivitiesMapper.cs index c951c00..7acd09c 100644 --- a/Marco.Pms.Model/Mapper/ActivitiesMapper.cs +++ b/Marco.Pms.Model/Mapper/ActivitiesMapper.cs @@ -2,8 +2,7 @@ using Marco.Pms.Model.Dtos.Activities; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.ViewModels.Activities; -using Microsoft.Extensions.DependencyModel; - +#nullable disable namespace Marco.Pms.Model.Mapper { public static class ActivitiesMapper diff --git a/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs b/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs index e2074ce..887f260 100644 --- a/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs +++ b/Marco.Pms.Model/Mapper/ApplicationRoleMapper.cs @@ -1,7 +1,7 @@ using Marco.Pms.Model.Dtos.Roles; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.ViewModels; - +#nullable disable namespace Marco.Pms.Model.Mapper { public static class ApplicationRoleMapper diff --git a/Marco.Pms.Model/Mapper/EmployeeMapper.cs b/Marco.Pms.Model/Mapper/EmployeeMapper.cs index 9290662..fdef0dd 100644 --- a/Marco.Pms.Model/Mapper/EmployeeMapper.cs +++ b/Marco.Pms.Model/Mapper/EmployeeMapper.cs @@ -24,7 +24,7 @@ namespace Marco.Pms.Model.Mapper JobRole = (model.JobRole != null ? model.JobRole.Name : null), JobRoleId = model.JobRoleId, PanNumber = model.PanNumber, - PeramnentAddress = model.PeramnentAddress, + PermanentAddress = model.PeramnentAddress, PhoneNumber = model.PhoneNumber, Photo = model.Photo, IsActive = model.IsActive, diff --git a/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs b/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs index f4ba30f..fa442d3 100644 --- a/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs +++ b/Marco.Pms.Model/Mapper/EmployeeRoleMapper.cs @@ -1,7 +1,5 @@ using Marco.Pms.Model.Dtos.Employees; -using Marco.Pms.Model.Dtos.Roles; using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.ViewModels; namespace Marco.Pms.Model.Mapper { diff --git a/Marco.Pms.Model/Mapper/FeatureMapper.cs b/Marco.Pms.Model/Mapper/FeatureMapper.cs index 9fc3c1f..681afb6 100644 --- a/Marco.Pms.Model/Mapper/FeatureMapper.cs +++ b/Marco.Pms.Model/Mapper/FeatureMapper.cs @@ -1,5 +1,4 @@ -using Marco.Pms.Model.Dtos.Roles; -using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.ViewModels; namespace Marco.Pms.Model.Mapper diff --git a/Marco.Pms.Model/Mapper/InfraMapper.cs b/Marco.Pms.Model/Mapper/InfraMapper.cs index 07e7e00..ca76047 100644 --- a/Marco.Pms.Model/Mapper/InfraMapper.cs +++ b/Marco.Pms.Model/Mapper/InfraMapper.cs @@ -1,6 +1,5 @@ using Marco.Pms.Model.Dtos.Project; using Marco.Pms.Model.Projects; -using Marco.Pms.Model.ViewModels.Activities; namespace Marco.Pms.Model.Mapper { diff --git a/Marco.Pms.Model/Projects/PhotoGallary.cs b/Marco.Pms.Model/Projects/PhotoGallary.cs index 97f44f7..4c2a75f 100644 --- a/Marco.Pms.Model/Projects/PhotoGallary.cs +++ b/Marco.Pms.Model/Projects/PhotoGallary.cs @@ -7,12 +7,12 @@ namespace Marco.Pms.Model.Projects public class PhotoGallary { public int Id { get; set; } - public string Description { get; set; } + public string? Description { get; set; } public int ProjectId { get; set; } [ValidateNever] [ForeignKey(nameof(ProjectId))] public Project? Project { get; set; } - public string AddedBy { get; set; } + public string? AddedBy { get; set; } [ValidateNever] [ForeignKey(nameof(AddedBy))] public ApplicationUser? ApplicationUser { get; set; } diff --git a/Marco.Pms.Model/Projects/Project.cs b/Marco.Pms.Model/Projects/Project.cs index d040b6c..58095c8 100644 --- a/Marco.Pms.Model/Projects/Project.cs +++ b/Marco.Pms.Model/Projects/Project.cs @@ -1,14 +1,8 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Marco.Pms.Model.Entitlements; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Projects { diff --git a/Marco.Pms.Model/Projects/WorkArea.cs b/Marco.Pms.Model/Projects/WorkArea.cs index d9a1774..f2a15bf 100644 --- a/Marco.Pms.Model/Projects/WorkArea.cs +++ b/Marco.Pms.Model/Projects/WorkArea.cs @@ -1,14 +1,8 @@ -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.ComponentModel.DataAnnotations.Schema; using Marco.Pms.Model.Entitlements; -using Marco.Pms.Model.Activities; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; namespace Marco.Pms.Model.Projects { diff --git a/Marco.Pms.Model/Projects/WorkItemMapping.cs b/Marco.Pms.Model/Projects/WorkItemMapping.cs index 81a665f..a974e91 100644 --- a/Marco.Pms.Model/Projects/WorkItemMapping.cs +++ b/Marco.Pms.Model/Projects/WorkItemMapping.cs @@ -11,18 +11,18 @@ namespace Marco.Pms.Model.Projects public int WorkAreaId { get; set; } [ForeignKey("WorkAreaId")] [ValidateNever] - public WorkArea WorkArea { get; set; } + public WorkArea? WorkArea { get; set; } public int WorkItemId { get; set; } [ForeignKey("WorkItemId")] [ValidateNever] - public WorkItem WorkItem { get; set; } + public WorkItem? WorkItem { get; set; } [DisplayName("TenantId")] public int TenantId { get; set; } [ValidateNever] [ForeignKey(nameof(TenantId))] - public Tenant Tenant { get; set; } + public Tenant? Tenant { get; set; } } } diff --git a/Marco.Pms.Model/Providers/TenantProvider.cs b/Marco.Pms.Model/Providers/TenantProvider.cs index 9e182d8..9190f87 100644 --- a/Marco.Pms.Model/Providers/TenantProvider.cs +++ b/Marco.Pms.Model/Providers/TenantProvider.cs @@ -1,10 +1,5 @@ using Microsoft.AspNetCore.Http; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +#nullable disable namespace Marco.Pms.Model.Providers { public sealed class TenantProvider diff --git a/Marco.Pms.Model/Utilities/ApiResponse.cs b/Marco.Pms.Model/Utilities/ApiResponse.cs index 269f1bd..a1b4cb8 100644 --- a/Marco.Pms.Model/Utilities/ApiResponse.cs +++ b/Marco.Pms.Model/Utilities/ApiResponse.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +#nullable disable namespace Marco.Pms.Model.Utilities { diff --git a/Marco.Pms.Model/Utilities/AuthResponse.cs b/Marco.Pms.Model/Utilities/AuthResponse.cs index bfeed3b..d9701f8 100644 --- a/Marco.Pms.Model/Utilities/AuthResponse.cs +++ b/Marco.Pms.Model/Utilities/AuthResponse.cs @@ -1,16 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Utilities +namespace Marco.Pms.Model.Utilities { public class AuthResponse { - public string AccessToken { get; set; } - public string RefreshToken { get; set; } + public string? AccessToken { get; set; } + public string? RefreshToken { get; set; } public int ExpiresIn { get; set; } - public object User { get; set; } + public object? User { get; set; } } } diff --git a/Marco.Pms.Model/Utilities/FileDetails.cs b/Marco.Pms.Model/Utilities/FileDetails.cs index 2542a1d..46665cd 100644 --- a/Marco.Pms.Model/Utilities/FileDetails.cs +++ b/Marco.Pms.Model/Utilities/FileDetails.cs @@ -9,13 +9,13 @@ namespace Marco.Pms.Model.Utilities public class FileDetails { public int Id { get; set; } - public byte[] FileData { get; set; } // Byte array for the file - public string FileName { get; set; } - public string ContentType { get; set; } + public byte[]? FileData { get; set; } // Byte array for the file + public string? FileName { get; set; } + public string? ContentType { get; set; } /// /// Name of the file as stored on disk /// - public string StoredName { get; set; } + public string? StoredName { get; set; } } } diff --git a/Marco.Pms.Model/Utilities/FileUploadModel.cs b/Marco.Pms.Model/Utilities/FileUploadModel.cs index b6d4ff6..93ecb2c 100644 --- a/Marco.Pms.Model/Utilities/FileUploadModel.cs +++ b/Marco.Pms.Model/Utilities/FileUploadModel.cs @@ -1,17 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.Utilities +namespace Marco.Pms.Model.Utilities { public class FileUploadModel { - public string FileName { get; set; } // Name of the file (e.g., "image1.png") - public string Base64Data { get; set; } // Base64-encoded string of the file - public string ContentType { get; set; } // MIME type (e.g., "image/png", "application/pdf") + public string? FileName { get; set; } // Name of the file (e.g., "image1.png") + public string? Base64Data { get; set; } // Base64-encoded string of the file + public string? ContentType { get; set; } // MIME type (e.g., "image/png", "application/pdf") public long FileSize { get; set; } // File size in bytes - public string Description { get; set; } // Optional: Description or purpose of the file + public string? Description { get; set; } // Optional: Description or purpose of the file } } diff --git a/Marco.Pms.Model/Utilities/SmtpSettings.cs b/Marco.Pms.Model/Utilities/SmtpSettings.cs index ed64642..28e16f5 100644 --- a/Marco.Pms.Model/Utilities/SmtpSettings.cs +++ b/Marco.Pms.Model/Utilities/SmtpSettings.cs @@ -2,11 +2,11 @@ { public class SmtpSettings { - public string SmtpServer { get; set; } + public string? SmtpServer { get; set; } public int Port { get; set; } - public string SenderName { get; set; } - public string SenderEmail { get; set; } - public string Password { get; set; } + public string? SenderName { get; set; } + public string? SenderEmail { get; set; } + public string? Password { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/CommentVM.cs b/Marco.Pms.Model/ViewModels/Activities/CommentVM.cs index de99612..889180e 100644 --- a/Marco.Pms.Model/ViewModels/Activities/CommentVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/CommentVM.cs @@ -7,7 +7,7 @@ namespace Marco.Pms.Model.ViewModels.Activities public long Id { get; set; } public long TaskAllocationId { get; set; } public DateTime CommentDate { get; set; } - public string Comment { get; set; } + public string? Comment { get; set; } public int CommentedBy { get; set; } public EmployeeVM? Employee { get; set; } } diff --git a/Marco.Pms.Model/ViewModels/Activities/ListTaskVM.cs b/Marco.Pms.Model/ViewModels/Activities/ListTaskVM.cs index d563138..b8d42c1 100644 --- a/Marco.Pms.Model/ViewModels/Activities/ListTaskVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/ListTaskVM.cs @@ -13,7 +13,7 @@ namespace Marco.Pms.Model.ViewModels.Activities public int WorkItemId { get; set; } public WorkItem? WorkItem { get; set; } public int TenantId { get; set; } - public List teamMembers { get; set; } + public List? teamMembers { get; set; } public List? comments { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Activities/TasksVM.cs b/Marco.Pms.Model/ViewModels/Activities/TasksVM.cs index 00ef6e9..3b7d3ab 100644 --- a/Marco.Pms.Model/ViewModels/Activities/TasksVM.cs +++ b/Marco.Pms.Model/ViewModels/Activities/TasksVM.cs @@ -3,7 +3,7 @@ public class TasksVM { public long Id { get; set; } - public string ActivityName { get; set; } + public string? ActivityName { get; set; } public double TotalPlannedTask { get; set; } public double PlannedTask { get; set; } public double CompletedTask { get; set; } diff --git a/Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs b/Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs index 9fc0e4b..84fd29c 100644 --- a/Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs +++ b/Marco.Pms.Model/ViewModels/ApplicationRolesVM.cs @@ -1,20 +1,10 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels { public class ApplicationRolesVM { public Guid Id { get; set; } - public string Role { get; set; } - public string Description { get; set; } - public ICollection FeaturePermission { get; set; } + public string? Role { get; set; } + public string? Description { get; set; } + public ICollection? FeaturePermission { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Employee/EmployeeProfile.cs b/Marco.Pms.Model/ViewModels/Employee/EmployeeProfile.cs index 54966b5..cad12f3 100644 --- a/Marco.Pms.Model/ViewModels/Employee/EmployeeProfile.cs +++ b/Marco.Pms.Model/ViewModels/Employee/EmployeeProfile.cs @@ -2,9 +2,9 @@ { public class EmployeeProfile { - public EmployeeVM EmployeeInfo { get; set; } - public string[] Projects { get; set; } - public string[] FeaturePermissions { get; set; } - public string[] Features { get; set; } + public EmployeeVM? EmployeeInfo { get; set; } + public string[]? Projects { get; set; } + public string[]? FeaturePermissions { get; set; } + public string[]? Features { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs b/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs index b17a3c7..4ca84c0 100644 --- a/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs +++ b/Marco.Pms.Model/ViewModels/Employee/EmployeeVM.cs @@ -11,7 +11,7 @@ public string? Gender { get; set; } public DateTime? BirthDate { get; set; } public DateTime? JoiningDate { get; set; } - public string? PeramnentAddress { get; set; } + public string? PermanentAddress { get; set; } public string? CurrentAddress { get; set; } public string? PhoneNumber { get; set; } diff --git a/Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs b/Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs index a7b6c80..9362944 100644 --- a/Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs +++ b/Marco.Pms.Model/ViewModels/EmployeeRolesVM.cs @@ -1,15 +1,12 @@ -using Marco.Pms.Model.Employees; -using Marco.Pms.Model.Entitlements; - -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels { public class EmployeeRolesVM { public Guid Id { get; set; } public int EmployeeId { get; set; } public Guid RoleId { get; set; } - public string Name { get; set; } - public string Description { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } public bool IsEnabled { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs b/Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs index 27a78dd..f3336d5 100644 --- a/Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs +++ b/Marco.Pms.Model/ViewModels/FeaturePermissionVM.cs @@ -1,13 +1,4 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels { public class FeaturePermissionVM { @@ -16,8 +7,8 @@ namespace Marco.Pms.Model.ViewModels public Guid FeatureId { get; set; } // Foreign key to Feature - public string Name { get; set; } // Feature name - public string Description { get; set; } // Feature description + public string? Name { get; set; } // Feature name + public string? Description { get; set; } // Feature description public bool IsEnabled { get; set; } // Whether the feature is enabled for this role diff --git a/Marco.Pms.Model/ViewModels/FeatureVM.cs b/Marco.Pms.Model/ViewModels/FeatureVM.cs index ef1e754..0f14530 100644 --- a/Marco.Pms.Model/ViewModels/FeatureVM.cs +++ b/Marco.Pms.Model/ViewModels/FeatureVM.cs @@ -1,26 +1,17 @@ -using Marco.Pms.Model.Entitlements; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels { public class FeatureVM { public Guid Id { get; set; } // Unique identifier for the permission - public string Name { get; set; } // Feature name - public string Description { get; set; } // Feature description + public string? Name { get; set; } // Feature name + public string? Description { get; set; } // Feature description public bool IsActive { get; set; } public int? ModuleId { get; set; } public string? ModuleName { get; set; } public string? ModuleKey { get; set; } - public ICollection FeaturePermissions { get; set; } + public ICollection? FeaturePermissions { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/InfraVM.cs b/Marco.Pms.Model/ViewModels/InfraVM.cs index 64d65ce..9bdea2b 100644 --- a/Marco.Pms.Model/ViewModels/InfraVM.cs +++ b/Marco.Pms.Model/ViewModels/InfraVM.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Marco.Pms.Model.Projects; +using Marco.Pms.Model.Projects; namespace Marco.Pms.Model.ViewModels { @@ -12,6 +7,6 @@ namespace Marco.Pms.Model.ViewModels public Building? building { get; set; } public Floor? floor { get; set; } - public WorkArea workArea { get; set; } + public WorkArea? workArea { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/JobRoleVM.cs b/Marco.Pms.Model/ViewModels/JobRoleVM.cs index 8c5e3d5..06a817b 100644 --- a/Marco.Pms.Model/ViewModels/JobRoleVM.cs +++ b/Marco.Pms.Model/ViewModels/JobRoleVM.cs @@ -3,8 +3,8 @@ public class JobRoleVM { - public int Id { get; set; } - public string Name { get; set; } + public int? Id { get; set; } + public string? Name { get; set; } public string? Description { get; set; } } diff --git a/Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs b/Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs index 5ef1d64..9726bf2 100644 --- a/Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs +++ b/Marco.Pms.Model/ViewModels/ProjectDetailsVM.cs @@ -6,14 +6,14 @@ namespace Marco.Pms.Model.ViewModels { public class ProjectDetailsVM { - public Project project { get; set; } - public List employeeAllocation { get; set; } - public List employees { get; set; } + public Project? project { get; set; } + public List? employeeAllocation { get; set; } + public List? employees { get; set; } - public List buildings { get; set; } - public List floors { get; set; } + public List? buildings { get; set; } + public List? floors { get; set; } - public List workAreas { get; set; } - public List workItems { get; set; } + public List? workAreas { get; set; } + public List? workItems { get; set; } } } diff --git a/Marco.Pms.Model/ViewModels/RolesVM.cs b/Marco.Pms.Model/ViewModels/RolesVM.cs index 1a8d606..ac3501b 100644 --- a/Marco.Pms.Model/ViewModels/RolesVM.cs +++ b/Marco.Pms.Model/ViewModels/RolesVM.cs @@ -1,13 +1,11 @@ -using Marco.Pms.Model.Entitlements; - -namespace Marco.Pms.Model.ViewModels +namespace Marco.Pms.Model.ViewModels { public class RolesVM { public Guid Id { get; set; } - public string Role { get; set; } + public string? Role { get; set; } - public ICollection FeaturePermissions { get; set; } + public ICollection? FeaturePermissions { get; set; } } } diff --git a/Marco.Pms.Services/Controllers/EmployeeController.cs b/Marco.Pms.Services/Controllers/EmployeeController.cs index 4e38b40..b772e75 100644 --- a/Marco.Pms.Services/Controllers/EmployeeController.cs +++ b/Marco.Pms.Services/Controllers/EmployeeController.cs @@ -294,7 +294,7 @@ namespace MarcoBMS.Services.Controllers Gender = model.Gender, MiddleName = model.MiddleName, PanNumber = model.PanNumber, - PeramnentAddress = model.PeramnentAddress, + PeramnentAddress = model.PermanentAddress, PhoneNumber = model.PhoneNumber, Photo = null, // GetFileDetails(model.Photo).Result.FileData, JobRoleId = Convert.ToInt32(model.JobRoleId), @@ -321,7 +321,7 @@ namespace MarcoBMS.Services.Controllers existingEmployee.Gender = model.Gender; existingEmployee.MiddleName = model.MiddleName; existingEmployee.PanNumber = model.PanNumber; - existingEmployee.PeramnentAddress = model.PeramnentAddress; + existingEmployee.PeramnentAddress = model.PermanentAddress; existingEmployee.PhoneNumber = model.PhoneNumber; existingEmployee.Photo = null; // GetFileDetails(model.Photo).Result.FileData, existingEmployee.JobRoleId = Convert.ToInt32(model.JobRoleId); diff --git a/Marco.Pms.Utility/SessionUtil.cs b/Marco.Pms.Utility/SessionUtil.cs index 5083419..8177903 100644 --- a/Marco.Pms.Utility/SessionUtil.cs +++ b/Marco.Pms.Utility/SessionUtil.cs @@ -1,12 +1,4 @@ -using Microsoft.AspNetCore.Http; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Marco.Pms.Utility +namespace Marco.Pms.Utility { public class SessionUtil { From c44deb439eec8323cdc4a2099dbe854a34f1f43f Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Wed, 9 Apr 2025 16:29:38 +0530 Subject: [PATCH 4/4] Removed all warning --- .../Dtos/Employees/ApplicationUserDto.cs | 16 ++-- Marco.Pms.Model/Mapper/ProjectMapper.cs | 12 +-- .../Controllers/AttendanceController.cs | 2 +- .../Controllers/FileController.cs | 3 +- .../Controllers/ProjectController.cs | 79 +++++++++++-------- .../Controllers/RolesController.cs | 6 +- .../Controllers/TaskController.cs | 14 ++-- .../Middleware/TenantMiddleware.cs | 2 +- Marco.Pms.Services/Program.cs | 2 +- Marco.Pms.Services/Service/LoggingServices.cs | 28 ++++++- .../Service/RefreshTokenService.cs | 2 +- 11 files changed, 101 insertions(+), 65 deletions(-) diff --git a/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs b/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs index c0665f7..ba9f471 100644 --- a/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs +++ b/Marco.Pms.Model/Dtos/Employees/ApplicationUserDto.cs @@ -7,27 +7,27 @@ namespace Marco.Pms.Model.Dtos.Employees { public ApplicationUserDto() { } public int? Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } public string? MiddleName { get; set; } public string? Email { get; set; } - public string Gender { get; set; } + public string? Gender { get; set; } public DateTime? BirthDate { get; set; } public DateTime? JoiningDate { get; set; } - public string PermanentAddress { get; set; } - public string CurrentAddress { get; set; } - public string PhoneNumber { get; set; } + public string? PermanentAddress { get; set; } + public string? CurrentAddress { get; set; } + public string? PhoneNumber { get; set; } - public string EmergencyPhoneNumber { get; set; } + public string? EmergencyPhoneNumber { get; set; } public string? AadharNumber { get; set; } public string? PanNumber { get; set; } public IFormFile? Photo { get; set; } // To store the captured photo - public List Documents { get; set; } + public List? Documents { get; set; } public string? ApplicationUserId { get; set; } public Guid RoleId { get; set; } diff --git a/Marco.Pms.Model/Mapper/ProjectMapper.cs b/Marco.Pms.Model/Mapper/ProjectMapper.cs index 6dc0986..8f9976f 100644 --- a/Marco.Pms.Model/Mapper/ProjectMapper.cs +++ b/Marco.Pms.Model/Mapper/ProjectMapper.cs @@ -24,9 +24,9 @@ namespace Marco.Pms.Model.Mapper { return new Project { - ContactPerson = projectModel.ContactPerson, - ProjectAddress = projectModel.ProjectAddress, - Name = projectModel.Name, + ContactPerson = projectModel.ContactPerson ?? "", + ProjectAddress = projectModel.ProjectAddress ?? "", + Name = projectModel.Name ?? "", EndDate = projectModel.EndDate, StartDate = projectModel.StartDate, TenantId = TenantId, @@ -39,9 +39,9 @@ namespace Marco.Pms.Model.Mapper return new Project { Id = id, - ContactPerson = projectModel.ContactPerson, - ProjectAddress = projectModel.ProjectAddress, - Name = projectModel.Name, + ContactPerson = projectModel.ContactPerson ?? "", + ProjectAddress = projectModel.ProjectAddress ?? "", + Name = projectModel.Name ?? "", EndDate = projectModel.EndDate, StartDate = projectModel.StartDate, TenantId = TenantId, diff --git a/Marco.Pms.Services/Controllers/AttendanceController.cs b/Marco.Pms.Services/Controllers/AttendanceController.cs index 3e9e1e9..c498030 100644 --- a/Marco.Pms.Services/Controllers/AttendanceController.cs +++ b/Marco.Pms.Services/Controllers/AttendanceController.cs @@ -276,7 +276,7 @@ namespace MarcoBMS.Services.Controllers if (recordAttendanceDot.MarkTime == null) return BadRequest(ApiResponse.ErrorResponse("Invalid Mark Time", "Invalid Mark Time",400)); DateTime finalDateTime = GetDateFromTimeStamp(recordAttendanceDot, recordAttendanceDot.MarkTime); - + if (recordAttendanceDot.Comment == null) return BadRequest(ApiResponse.ErrorResponse("Invalid Comment", "Invalid Comment", 400)); if (attendance != null) { diff --git a/Marco.Pms.Services/Controllers/FileController.cs b/Marco.Pms.Services/Controllers/FileController.cs index 168418b..86e5517 100644 --- a/Marco.Pms.Services/Controllers/FileController.cs +++ b/Marco.Pms.Services/Controllers/FileController.cs @@ -20,6 +20,7 @@ namespace MarcoBMS.Services.Controllers [HttpPost("fileupload")] public async Task FileUploadDemo([FromForm] DemoEmployeeModel model) { + if(model.ImageFile == null) {return BadRequest(ApiResponse.ErrorResponse("Error.", "Error.", 400));} string imageName = await Saveimage(model.ImageFile); return Ok(ApiResponse.SuccessResponse("Success.", "Success.", 200)); } @@ -71,7 +72,7 @@ namespace MarcoBMS.Services.Controllers public string? EmployeeName { get; set; } public string? Occupation { get; set; } public string? ImageName { get; set; } - public string ImageSrc { get; set; } + public string? ImageSrc { get; set; } public IFormFile? ImageFile { get; set; } // List to handle multiple files } diff --git a/Marco.Pms.Services/Controllers/ProjectController.cs b/Marco.Pms.Services/Controllers/ProjectController.cs index 5c17f95..40841b2 100644 --- a/Marco.Pms.Services/Controllers/ProjectController.cs +++ b/Marco.Pms.Services/Controllers/ProjectController.cs @@ -99,50 +99,63 @@ namespace MarcoBMS.Services.Controllers { //var project = projects.Where(c => c.Id == id).SingleOrDefault(); ProjectDetailsVM vm = await GetProjectViewModel(id, project); - + ProjectVM projectVM = new ProjectVM(); - projectVM.Id = vm.project.Id; - projectVM.Name = vm.project.Name; - projectVM.ProjectAddress = vm.project.ProjectAddress; - projectVM.ContactPerson = vm.project.ContactPerson; - projectVM.StartDate = vm.project.StartDate; - projectVM.EndDate = vm.project.EndDate; - projectVM.ProjectStatusId = vm.project.ProjectStatusId; + if (vm.project != null) { + projectVM.Id = vm.project.Id; + projectVM.Name = vm.project.Name; + projectVM.ProjectAddress = vm.project.ProjectAddress; + projectVM.ContactPerson = vm.project.ContactPerson; + projectVM.StartDate = vm.project.StartDate; + projectVM.EndDate = vm.project.EndDate; + projectVM.ProjectStatusId = vm.project.ProjectStatusId; + } projectVM.Buildings = new List(); - foreach (Building build in vm.buildings) - { - BuildingVM buildVM = new BuildingVM() { Id = build.Id, Description = build.Description, Name = build.Name }; - buildVM.Floors = new List(); - foreach (Floor floorDto in vm.floors.Where(c => c.BuildingId == build.Id).ToList()) + if (vm.buildings != null) { + foreach (Building build in vm.buildings) { - FloorsVM floorVM = new FloorsVM() { FloorName = floorDto.FloorName, Id = floorDto.Id }; - floorVM.WorkAreas = new List(); - - foreach (WorkArea workAreaDto in vm.workAreas.Where(c => c.FloorId == floorVM.Id).ToList()) + BuildingVM buildVM = new BuildingVM() { Id = build.Id, Description = build.Description, Name = build.Name }; + buildVM.Floors = new List(); + if (vm.floors != null) { - WorkAreaVM workAreaVM = new WorkAreaVM() { Id = workAreaDto.Id, AreaName = workAreaDto.AreaName, WorkItems = new List() }; - - foreach (WorkItem workItemDto in vm.workItems.Where(c => c.WorkAreaId == workAreaDto.Id).ToList()) + foreach (Floor floorDto in vm.floors.Where(c => c.BuildingId == build.Id).ToList()) { - WorkItemVM workItemVM = new WorkItemVM() { WorkItemId = workItemDto.Id, WorkItem = workItemDto }; - //workItemVM.WorkItem.WorkArea = null - workItemVM.WorkItem.WorkArea = new WorkArea (); - //workItemVM.WorkItem.ActivityMaster.Tenant = null; - workItemVM.WorkItem.ActivityMaster.Tenant = new Tenant(); - //workItemVM.WorkItem.Tenant = null; - workItemVM.WorkItem.Tenant = new Tenant(); + FloorsVM floorVM = new FloorsVM() { FloorName = floorDto.FloorName, Id = floorDto.Id }; + floorVM.WorkAreas = new List(); + + if (vm.workAreas != null) + { + foreach (WorkArea workAreaDto in vm.workAreas.Where(c => c.FloorId == floorVM.Id).ToList()) + { + WorkAreaVM workAreaVM = new WorkAreaVM() { Id = workAreaDto.Id, AreaName = workAreaDto.AreaName, WorkItems = new List() }; + + if(vm.workItems != null) + { + foreach (WorkItem workItemDto in vm.workItems.Where(c => c.WorkAreaId == workAreaDto.Id).ToList()) + { + WorkItemVM workItemVM = new WorkItemVM() { WorkItemId = workItemDto.Id, WorkItem = workItemDto }; + //workItemVM.WorkItem.WorkArea = null + workItemVM.WorkItem.WorkArea = new WorkArea(); + //workItemVM.WorkItem.ActivityMaster.Tenant = null; + workItemVM.WorkItem.ActivityMaster.Tenant = new Tenant(); + //workItemVM.WorkItem.Tenant = null; + workItemVM.WorkItem.Tenant = new Tenant(); - workAreaVM.WorkItems.Add(workItemVM); + workAreaVM.WorkItems.Add(workItemVM); + } + } + + floorVM.WorkAreas.Add(workAreaVM); + } + } + + buildVM.Floors.Add(floorVM); } - - floorVM.WorkAreas.Add(workAreaVM); } - - buildVM.Floors.Add(floorVM); + projectVM.Buildings.Add(buildVM); } - projectVM.Buildings.Add(buildVM); } return Ok(ApiResponse.SuccessResponse(projectVM, "Success.", 200)); } diff --git a/Marco.Pms.Services/Controllers/RolesController.cs b/Marco.Pms.Services/Controllers/RolesController.cs index 1a2d23f..badc6f0 100644 --- a/Marco.Pms.Services/Controllers/RolesController.cs +++ b/Marco.Pms.Services/Controllers/RolesController.cs @@ -1,4 +1,4 @@ -using Azure; +using System.Data; using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Dtos.Roles; using Marco.Pms.Model.Entitlements; @@ -10,9 +10,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using System.Data; -using static System.Runtime.InteropServices.JavaScript.JSType; - +#nullable disable namespace MarcoBMS.Services.Controllers { [Route("api/[controller]")] diff --git a/Marco.Pms.Services/Controllers/TaskController.cs b/Marco.Pms.Services/Controllers/TaskController.cs index 88fff5e..28e99b8 100644 --- a/Marco.Pms.Services/Controllers/TaskController.cs +++ b/Marco.Pms.Services/Controllers/TaskController.cs @@ -113,13 +113,17 @@ namespace MarcoBMS.Services.Controllers if (taskAllocation == null) { return BadRequest(ApiResponse.ErrorResponse("No such task has been allocated.", "No such task has been allocated.", 400)); } - if(taskAllocation.CompletedTask != 0) + if(taskAllocation.WorkItem != null) { - taskAllocation.WorkItem.CompletedWork -= taskAllocation.CompletedTask; + if (taskAllocation.CompletedTask != 0) + { + taskAllocation.WorkItem.CompletedWork -= taskAllocation.CompletedTask; + } + taskAllocation.ReportedDate = reportTask.ReportedDate; + taskAllocation.CompletedTask = reportTask.CompletedTask; + taskAllocation.WorkItem.CompletedWork += reportTask.CompletedTask; } - taskAllocation.ReportedDate = reportTask.ReportedDate; - taskAllocation.CompletedTask = reportTask.CompletedTask; - taskAllocation.WorkItem.CompletedWork += reportTask.CompletedTask; + var comment = reportTask.ToCommentFromReportTaskDto(tenantId,Employee.Id); diff --git a/Marco.Pms.Services/Middleware/TenantMiddleware.cs b/Marco.Pms.Services/Middleware/TenantMiddleware.cs index fe5aaf0..37ac1af 100644 --- a/Marco.Pms.Services/Middleware/TenantMiddleware.cs +++ b/Marco.Pms.Services/Middleware/TenantMiddleware.cs @@ -11,7 +11,7 @@ public async Task Invoke(HttpContext context) { - if (context.User.Identity.IsAuthenticated) + if (context.User.Identity != null && context.User.Identity.IsAuthenticated) { var tenantId = context.User.FindFirst("tenantId")?.Value; if (tenantId == null) diff --git a/Marco.Pms.Services/Program.cs b/Marco.Pms.Services/Program.cs index c42ab40..dcb9b4b 100644 --- a/Marco.Pms.Services/Program.cs +++ b/Marco.Pms.Services/Program.cs @@ -122,7 +122,7 @@ builder.Services.AddSingleton(); builder.Services.AddHttpContextAccessor(); var jwtSettings = builder.Configuration.GetSection("Jwt").Get(); -if(jwtSettings != null) +if(jwtSettings != null && jwtSettings.Key != null) { builder.Services.AddAuthentication(options => { diff --git a/Marco.Pms.Services/Service/LoggingServices.cs b/Marco.Pms.Services/Service/LoggingServices.cs index 10fc5ab..4328a2a 100644 --- a/Marco.Pms.Services/Service/LoggingServices.cs +++ b/Marco.Pms.Services/Service/LoggingServices.cs @@ -14,19 +14,39 @@ namespace MarcoBMS.Services.Service public void LogError(string? message, params object[]? args) { using (LogContext.PushProperty("LogLevel", "Error")) - _logger.LogError(message, args); - } + if (args != null) + { + _logger.LogError(message, args); + } + else { + _logger.LogError(message); + } + } public void LogInfo(string? message, params object[]? args) { using (LogContext.PushProperty("LogLevel", "Information")) - _logger.LogInformation(message, args); + if (args != null) + { + _logger.LogInformation(message, args); + } + else + { + _logger.LogInformation(message); + } } public void LogWarning(string? message, params object[]? args) { using (LogContext.PushProperty("LogLevel", "Warning")) - _logger.LogWarning(message,args); + if (args != null) + { + _logger.LogWarning(message, args); + } + else + { + _logger.LogWarning(message); + } } } diff --git a/Marco.Pms.Services/Service/RefreshTokenService.cs b/Marco.Pms.Services/Service/RefreshTokenService.cs index bccabcd..2cc1f7a 100644 --- a/Marco.Pms.Services/Service/RefreshTokenService.cs +++ b/Marco.Pms.Services/Service/RefreshTokenService.cs @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using Microsoft.IdentityModel.Tokens; - +#nullable disable namespace MarcoBMS.Services.Service { public class RefreshTokenService