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