Files
PortBlog.API/PortBlog.API/Profiles/ResumeProfile.cs
T
rajukottedi 5b7952877e Admin API refactor: claim-based resume CRUD & versioning
Major refactor of AdminController and related services to support full CRUD for candidate resume, projects, hobbies, skills, academics, experiences, certifications, and contact info, all using access token claims for candidate identity. Introduced AdminService and expanded IResumeRepository for granular entity management. Updated DTOs for upsert operations and date support. Improved API versioning (Asp.Versioning.Mvc), Swagger integration, and middleware setup. Added unit test project. Enhanced error handling, documentation, and mapping.
2026-02-15 05:27:35 +05:30

89 lines
3.7 KiB
C#

using AutoMapper;
using PortBlog.API.Entities;
using PortBlog.API.Models;
namespace PortBlog.API.Profiles
{
public class ResumeProfile : Profile
{
public ResumeProfile()
{
CreateMap<Candidate, CandidateDto>()
.ForMember
(
dest => dest.Dob,
src => src.MapFrom(src => src.Dob != null ? src.Dob.Value.ToString("MMM dd, yyyy") : string.Empty)
);
CreateMap<Academic, AcademicDto>()
.ForMember(
dest => dest.Period,
src => src.MapFrom(src => src.StartYear + " - " + src.EndYear)
);
CreateMap<Certification, CertificationDto>();
CreateMap<Hobby, HobbyDto>();
CreateMap<Experience, ExperienceDto>()
.ForMember(
dest => dest.Period,
src => src.MapFrom(src => src.StartDate.ToString("MMM yyyy") + " - " + (src.EndDate != null ? src.EndDate.Value.ToString("MMM yyyy") : "Present"))
)
.ForMember
(
dest => dest.StartYear,
opts => opts.MapFrom(src => src.StartDate.Year.ToString())
)
.ForMember
(
dest => dest.EndYear,
opts => opts.MapFrom(src => src.EndDate != null ? src.EndDate.Value.Year.ToString() : "Present")
)
.ForMember
(
dest => dest.StartDate,
opts => opts.MapFrom(src => src.StartDate)
)
.ForMember
(
dest => dest.EndDate,
opts => opts.MapFrom(src => src.EndDate)
);
CreateMap<ExperienceDetails, ExperienceDetailsDto>();
CreateMap<Project, ProjectDto>()
.ForMember
(
dest => dest.Roles,
src => src.MapFrom(src => !string.IsNullOrEmpty(src.Roles) ? src.Roles.Split(",", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList() : new List<string>())
)
.ForMember
(
dest => dest.Responsibilities,
src => src.MapFrom(src => !string.IsNullOrEmpty(src.Responsibilities) ? src.Responsibilities.Split(",", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList() : new List<string>())
)
.ForMember
(
dest => dest.TechnologiesUsed,
src => src.MapFrom(src => !string.IsNullOrEmpty(src.TechnologiesUsed) ? src.TechnologiesUsed.Split(",", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList() : new List<string>())
);
CreateMap<Skill, SkillDto>();
CreateMap<SocialLinks, SocialLinksDto>()
.ForMember
(
dest => dest.Posts,
src => src.MapFrom(src => src.Blog != null ? src.Blog.Posts : new List<Post>())
);
CreateMap<Resume, CvDto>();
CreateMap<Resume, ResumeDto>();
CreateMap<Resume, AboutDto>();
CreateMap<Resume, CandidateSocialLinksDto>();
CreateMap<Resume, ProjectsDto>();
CreateMap<MessageDto, MessageSendDto>()
.ForMember
(
dest => dest.FromEmail,
src => src.MapFrom(src => src.Email)
);
CreateMap<MessageSendDto, Message>();
}
}
}