
Some checks failed
TechAct / explore-gitea-actions (push) Failing after 30s
- 添加学生提交管理服务 (StudentSubmissionService, StudentSubmissionDetailService) - 新增学生提交相关控制器 (StudentSubmissionController, StudentSubmissionDetailController) - 添加学生提交数据传输对象 (StudentSubmissionDetailDto, StudentSubmissionSummaryDto) - 新增学生提交相关页面组件 (StudentExamView, ExamDetailView, StudentCard等) - 添加学生提交信息卡片组件 (SubmissionInfoCard, TeacherSubmissionInfoCard) - 更新数据库迁移文件以支持提交系统
82 lines
2.7 KiB
C#
82 lines
2.7 KiB
C#
using AutoMapper;
|
|
using AutoMapper.Internal.Mappers;
|
|
using Entities.Contracts;
|
|
using Entities.DTO;
|
|
using Newtonsoft.Json;
|
|
using System.Net.Http.Json;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace TechHelper.Context
|
|
{
|
|
public class AutoMapperProFile : Profile
|
|
{
|
|
|
|
public static class EnumMappingHelpers
|
|
{
|
|
public static TEnum ParseEnumSafe<TEnum>(string sourceString, TEnum defaultValue) where TEnum : struct, Enum
|
|
{
|
|
if (Enum.TryParse(sourceString, true, out TEnum parsedValue))
|
|
{
|
|
return parsedValue;
|
|
}
|
|
return defaultValue;
|
|
}
|
|
}
|
|
|
|
public AutoMapperProFile()
|
|
{
|
|
CreateMap<UserForRegistrationDto, User>()
|
|
.ForMember(dest => dest.Id, opt => opt.Ignore())
|
|
.ForMember(dest => dest.UserName, opt => opt.MapFrom(src => src.Name))
|
|
.ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.Email))
|
|
.ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.PhoneNumber))
|
|
.ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.HomeAddress))
|
|
.ForMember(dest => dest.PasswordHash, opt => opt.Ignore())
|
|
.ForMember(dest => dest.EmailConfirmed, opt => opt.Ignore());
|
|
|
|
CreateMap<ClassDto, Class>()
|
|
.ForMember(d => d.Number, o => o.MapFrom(src => src.Class))
|
|
.ReverseMap();
|
|
|
|
|
|
|
|
// Assignment
|
|
CreateMap<AssignmentDto, Assignment>().ReverseMap();
|
|
|
|
CreateMap<AssignmentQuestionDto, AssignmentQuestion>().ReverseMap();
|
|
|
|
CreateMap<QuestionDto, Question>().ReverseMap();
|
|
|
|
CreateMap<QuestionContext, QuestionContextDto>().ReverseMap();
|
|
|
|
|
|
|
|
|
|
// Submission
|
|
CreateMap<SubmissionDto, Submission>().ReverseMap();
|
|
|
|
CreateMap<SubmissionDetailDto, SubmissionDetail>().ReverseMap();
|
|
|
|
// Student Submission Detail
|
|
CreateMap<Submission, StudentSubmissionDetailDto>()
|
|
.ForMember(dest => dest.AssignmentId, opt => opt.MapFrom(src => src.AssignmentId))
|
|
.ForMember(dest => dest.StudentId, opt => opt.MapFrom(src => src.StudentId))
|
|
.ForMember(dest => dest.SubmissionTime, opt => opt.MapFrom(src => src.SubmissionTime))
|
|
.ForMember(dest => dest.OverallGrade, opt => opt.MapFrom(src => src.OverallGrade))
|
|
.ForMember(dest => dest.OverallFeedback, opt => opt.MapFrom(src => src.OverallFeedback))
|
|
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.Status));
|
|
|
|
CreateMap<Assignment, AssignmentDto>().ReverseMap();
|
|
|
|
|
|
CreateMap<SubjectTypeMetadataDto, Global>()
|
|
.ForMember(dest => dest.Info, opt => opt.MapFrom(src => JsonConvert.SerializeObject(src.Data)));
|
|
CreateMap<Global, SubjectTypeMetadataDto>()
|
|
.ForMember(dest => dest.Data, opt => opt.MapFrom(src => JsonConvert.DeserializeObject<Dictionary<string, (string Color, string DisplayName)>>(src.Info)));
|
|
|
|
}
|
|
}
|
|
|
|
}
|