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(false)
.UpdateData(request, cancellationToken: cancellationToken);
}
///
/// 保存用户简历-求职意向
///
///
///
///
public Task Handle(SaveUserResumeJobSeekingCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(false)
.Include(it => it.UserExpectJobs)
.UpdateData(
request,
null,
cancellationToken: cancellationToken);
}
///
/// 保存用户简历-资格证书
///
///
///
///
public Task Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken)
{
var logier = JwtUtils.GetCurrentLogier();
return request.SaveData(
q => rep.GetPersonalQueryable(false).SelectMany(it => it.UserCredentials),
update: (entity) =>
{
request.Adapt(entity);
if (request.Id == null)
{
entity.UserId = logier.Id;
}
},
cancellationToken: cancellationToken);
}
///
/// 删除用户简历-资格证书
///
///
///
///
public Task Handle(DeleteUserResumeCredentialCommand request, CancellationToken cancellationToken)
{
return request.DeleteData(
q => rep.GetPersonalQueryable(false).SelectMany(it => it.UserCredentials),
cancellationToken);
}
///
/// 保存用户简历-工作经验
///
///
///
///
public Task Handle(SaveUserResumeWorkExperienceCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(false)
.UpdateData(request, cancellationToken: cancellationToken);
}
///
/// 保存用户简历-详细信息
///
///
///
///
public Task Handle(SaveUserResumeDetailCommand request, CancellationToken cancellationToken)
{
return rep.GetPersonalQueryable(false)
.Include(it => it.Photos)
.UpdateData(request, cancellationToken: cancellationToken);
}
}
}