using AutoMapper; using Entities.Contracts; using Entities.DTO; using Microsoft.VisualBasic; using SharedDATA.Api; using TechHelper.Context; using TechHelper.Server.Repositories; using TechHelper.Services; namespace TechHelper.Server.Services { public class ExamService : IExamService { private readonly IUnitOfWork _unitOfWork; private readonly IExamRepository _examRepository; private readonly IMapper _mapper; public ExamService(IUnitOfWork unitOfWork, IExamRepository examRepository, IMapper mapper) { _unitOfWork = unitOfWork; _examRepository = examRepository; _mapper = mapper; } public async Task CreateExamAsync(AssignmentDto assignmentDto) { try { Assignment newAssi = _mapper.Map(assignmentDto); await _examRepository.AddAsync(newAssi); var context = _unitOfWork.GetDbContext(); foreach (var entry in context.ChangeTracker.Entries()) { if (entry.State == Microsoft.EntityFrameworkCore.EntityState.Added) { if (entry.Entity is Question newQues) { newQues.CreatorId = newAssi.CreatorId; } } } if (await _unitOfWork.SaveChangesAsync() > 0) { return ApiResponse.Success(); } return ApiResponse.Error("保存失败"); } catch (Exception ex) { return ApiResponse.Error(ex.Message); } } public async Task GetExamByIdAsync(Guid id) { var assignment = await _examRepository.GetFullExamByIdAsync(id); if (assignment == null) { throw new InvalidOperationException(""); } return _mapper.Map(assignment); } public async Task GetAllExamPreviewsAsync(Guid userId) { var assignments = await _examRepository.GetExamPreviewsByUserAsync(userId); var result = _mapper.Map>(assignments); return ApiResponse.Success(result: result); } public Task GetAllAsync(QueryParameter query) { throw new NotImplementedException(); } public async Task GetAsync(Guid id) { var assignment = await _examRepository.GetFullExamByIdAsync(id); if (assignment == null) { return ApiResponse.Error("获取失败"); } var result = _mapper.Map(assignment); return ApiResponse.Success(result: result); } public Task AddAsync(AssignmentDto model) { throw new NotImplementedException(); } public Task UpdateAsync(AssignmentDto model) { throw new NotImplementedException(); } public Task DeleteAsync(Guid id) { throw new NotImplementedException(); } } }