using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.UserServer.Application
{
///
/// 用户简历命令处理器
///
public class UserResumeCommandHandler(
IRepository rep
) :
IRequestHandler,
IRequestHandler,
IRequestHandler,
IRequestHandler,
IRequestHandler,
IRequestHandler
{
private readonly IRepository rep = rep;
///
/// 保存用户简历-个人信息
///
///
///
///
public Task Handle(SaveUserResumePersonalCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(true)
.UpdateData(request, cancellationToken: cancellationToken);
}
///
/// 保存用户简历-求职意向
///
///
///
///
public Task Handle(SaveUserResumeJobSeekingCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(true)
.Include(it => it.UserExpectJobs)
.UpdateData(
request,
(entity) =>
{
request.Adapt(entity);
entity.UserExpectJobs = request.UserExpectJobs.Select(it => new UserExpectJob
{
ExpectJobCode = it
}).ToList();
},
cancellationToken: cancellationToken);
}
///
/// 保存用户简历-资格证书
///
///
///
///
public Task Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken)
{
var logier = JwtUtils.GetCurrentLogier();
return request.SaveData(
q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials),
cancellationToken: cancellationToken);
}
///
/// 删除用户简历-资格证书
///
///
///
///
public Task Handle(DeleteUserResumeCredentialCommand request, CancellationToken cancellationToken)
{
return request.DeleteData(
q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials),
cancellationToken);
}
///
/// 保存用户简历-工作经验
///
///
///
///
public Task Handle(SaveUserResumeWorkExperienceCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(true)
.UpdateData(request, cancellationToken: cancellationToken);
}
///
/// 保存用户简历-详细信息
///
///
///
///
public Task Handle(SaveUserResumeDetailCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(true)
.Include(it => it.Photos)
.UpdateData(request, cancellationToken: cancellationToken);
}
}
}