public async Task RemoveEmployee(Guid serviceRequestId, AssignEmployeeRequest dto)
        {
            var employeeId      = new Guid(dto.EmployeeId);
            var serviceEmployee = await _unitOfWork.ServiceRequestEmployees.Get(serviceRequestId, employeeId);

            // validate
            if (serviceEmployee is null)
            {
                throw new KeyNotFoundException("Employee is not assigned to this service.");
            }

            _unitOfWork.ServiceRequestEmployees.Remove(serviceEmployee);
            _unitOfWork.Commit();
        }
        public async Task AssignEmployee(Guid serviceRequestId, AssignEmployeeRequest dto)
        {
            var employeeId = new Guid(dto.EmployeeId);
            var employee   = await _unitOfWork.Employees.Get(employeeId);

            var serviceEmployee = await _unitOfWork.ServiceRequestEmployees.Get(serviceRequestId, employeeId);

            var serviceRequest = await _unitOfWork.ServiceRequests.Get(serviceRequestId);

            // validate
            if (employee is null)
            {
                throw new AppException("Employee does not exist.");
            }

            if (serviceRequest is null)
            {
                throw new AppException("Service request does not exist.");
            }

            if (serviceEmployee is not null)
            {
                throw new AppException("Employee is already assigned to this service.");
            }

            var newServiceEmployee = new ServiceRequestEmployee()
            {
                ServiceRequestId = serviceRequestId,
                EmployeeId       = employeeId
            };

            if (serviceRequest.Status == Status.New)
            {
                serviceRequest.Status = Status.Assigned;
            }

            _unitOfWork.ServiceRequestEmployees.Add(newServiceEmployee);
            _unitOfWork.Commit();
        }
        public async Task <ActionResult <GetMaterialResponse> > AssignEmployee(Guid serviceRequestId, [FromBody] AssignEmployeeRequest dto)
        {
            await _serviceRequestService.AssignEmployee(serviceRequestId, dto);

            return(NoContent());
        }