diff --git a/Marco.Pms.Services/MappingProfiles/MappingProfile.cs b/Marco.Pms.Services/MappingProfiles/MappingProfile.cs index 5eb91fb..7de6bfb 100644 --- a/Marco.Pms.Services/MappingProfiles/MappingProfile.cs +++ b/Marco.Pms.Services/MappingProfiles/MappingProfile.cs @@ -234,6 +234,17 @@ namespace Marco.Pms.Services.MappingProfiles CreateMap(); + #region ======================================================= Global Service Master ======================================================= + + CreateMap() + .ForMember( + dest => dest.Id, + // Explicitly and safely convert nullable Guid to non-nullable Guid + opt => opt.MapFrom(src => src.Id ?? Guid.Empty) + ); + + #endregion + #region ======================================================= Service Master ======================================================= CreateMap() diff --git a/Marco.Pms.Services/Service/MasterService.cs b/Marco.Pms.Services/Service/MasterService.cs index 0a5ed51..322201c 100644 --- a/Marco.Pms.Services/Service/MasterService.cs +++ b/Marco.Pms.Services/Service/MasterService.cs @@ -71,53 +71,50 @@ namespace Marco.Pms.Services.Service return ApiResponse.ErrorResponse("An error occurred while fetching services", ex.Message, 500); } } + public async Task> CreateGlobalServiceAsync(ServiceMasterDto serviceMasterDto, Employee loggedInEmployee, Guid tenantId) + { + _logger.LogInfo("CreateGlobalService called with Name: {ServiceName}", serviceMasterDto.Name); - //public async Task> CreateGlobalServiceAsync(ServiceMasterDto serviceMasterDto, Employee loggedInEmployee, Guid tenantId) - //{ - // _logger.LogInfo("CreateService called with Name: {ServiceName}", serviceMasterDto.Name); + try + { + // Step 1: Permission check + var hasManagePermission = await _permission.HasPermission(PermissionsMaster.ManageMasters, loggedInEmployee.Id); + if (!hasManagePermission) + { + _logger.LogWarning("Access denied for employeeId: {EmployeeId}", loggedInEmployee.Id); + return ApiResponse.ErrorResponse("You don't have access", "You don't have permission to take this action", 403); + } - // try - // { - // // Step 1: Permission check - // var hasManagePermission = await _permission.HasPermission(PermissionsMaster.ManageMasters, loggedInEmployee.Id); - // if (!hasManagePermission) - // { - // _logger.LogWarning("Access denied for employeeId: {EmployeeId}", loggedInEmployee.Id); - // return ApiResponse.ErrorResponse("You don't have access", "You don't have permission to take this action", 403); - // } + // Step 2: Check for duplicate name + bool isExist = await _context.GlobalServiceMasters + .AnyAsync(s => s.Name == serviceMasterDto.Name); - // // Step 2: Check for duplicate name - // bool isExist = await _context.ServiceMasters - // .AnyAsync(s => s.TenantId == tenantId && s.Name == serviceMasterDto.Name); + if (isExist) + { + _logger.LogWarning("Duplicate service name '{ServiceName}' attempted by employeeId: {EmployeeId}", serviceMasterDto.Name, loggedInEmployee.Id); + return ApiResponse.ErrorResponse( + $"Service with name '{serviceMasterDto.Name}' already exists", + $"Service with name '{serviceMasterDto.Name}' already exists", 400); + } - // if (isExist) - // { - // _logger.LogWarning("Duplicate service name '{ServiceName}' attempted by employeeId: {EmployeeId}", serviceMasterDto.Name, loggedInEmployee.Id); - // return ApiResponse.ErrorResponse( - // $"Service with name '{serviceMasterDto.Name}' already exists", - // $"Service with name '{serviceMasterDto.Name}' already exists", 400); - // } + // Step 3: Save new service + GlobalServiceMaster service = _mapper.Map(serviceMasterDto); - // // Step 3: Save new service - // ServiceMaster service = _mapper.Map(serviceMasterDto); - // service.TenantId = tenantId; - // service.IsActive = true; - // service.IsSystem = false; - // _context.ServiceMasters.Add(service); - // await _context.SaveChangesAsync(); + _context.GlobalServiceMasters.Add(service); + await _context.SaveChangesAsync(); - // var response = _mapper.Map(service); + var response = _mapper.Map(service); - // _logger.LogInfo("New service '{ServiceName}' created successfully by employeeId: {EmployeeId}", service.Name, loggedInEmployee.Id); + _logger.LogInfo("New global service '{ServiceName}' created successfully by employeeId: {EmployeeId}", service.Name, loggedInEmployee.Id); - // return ApiResponse.SuccessResponse(response, "New service created successfully", 201); - // } - // catch (Exception ex) - // { - // _logger.LogError(ex, "Error creating service"); - // return ApiResponse.ErrorResponse("Failed to create service", ex.Message, 500); - // } - //} + return ApiResponse.SuccessResponse(response, "New global service created successfully", 201); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error creating service"); + return ApiResponse.ErrorResponse("Failed to create global service", ex.Message, 500); + } + } //public async Task> UpdateGlobalServiceAsync(Guid id, ServiceMasterDto serviceMasterDto, Employee loggedInEmployee, Guid tenantId) //{ diff --git a/Marco.Pms.Services/Service/ServiceInterfaces/IMasterService.cs b/Marco.Pms.Services/Service/ServiceInterfaces/IMasterService.cs index 6ec9ca8..5ed0687 100644 --- a/Marco.Pms.Services/Service/ServiceInterfaces/IMasterService.cs +++ b/Marco.Pms.Services/Service/ServiceInterfaces/IMasterService.cs @@ -9,7 +9,7 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces { #region =================================================================== Service Master APIs =================================================================== Task> GetGlobalServicesAsync(Employee loggedInEmployee, Guid tenantId); - //Task> CreateGlobalServiceAsync(ServiceMasterDto serviceMasterDto, Employee loggedInEmployee, Guid tenantId); + Task> CreateGlobalServiceAsync(ServiceMasterDto serviceMasterDto, Employee loggedInEmployee, Guid tenantId); //Task> UpdateGlobalServiceAsync(Guid id, ServiceMasterDto serviceMasterDto, Employee loggedInEmployee, Guid tenantId); //Task> DeleteGlobalServiceAsync(Guid id, bool active, Employee loggedInEmployee, Guid tenantId);