| | |
| | | using FlexJobApi.Core; |
| | | using Aop.Api.Domain; |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DistributedIDGenerator; |
| | | using Furion.FriendlyException; |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Security.Principal; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | |
| | | IRepository<EnterpriseEmployee> rep, |
| | | IRepository<ContractTemplate> repContractTemplate, |
| | | IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract, |
| | | IRepository<Enterprise> repEnterprise, |
| | | IRepository<User> repUser, |
| | | IMediator mediator |
| | | ) : |
| | | IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult>, |
| | |
| | | private readonly IRepository<EnterpriseEmployee> rep = rep; |
| | | private readonly IRepository<ContractTemplate> repContractTemplate = repContractTemplate; |
| | | private readonly IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract = repEnterpriseEmployeeContract; |
| | | private readonly IRepository<Enterprise> repEnterprise = repEnterprise; |
| | | private readonly IRepository<User> repUser = repUser; |
| | | private readonly IMediator mediator = mediator; |
| | | |
| | | /// <summary> |
| | |
| | | }, cancellationToken); |
| | | |
| | | var entity = await rep.AsQueryable() |
| | | .Include(it => it.Enterprise) |
| | | .Where(it => |
| | | it.UserId == logier.Id |
| | | && it.ContractTemplateId == contractTemplate.Id) |
| | | .FirstOrDefaultAsync(); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "灵工"); |
| | | var enterprise = await repEnterprise.AsQueryable() |
| | | .Where(it => it.Id == contractTemplate.EnterpriseId) |
| | | .Select(it => new |
| | | { |
| | | it.EnterpriseName |
| | | }) |
| | | .FirstOrDefaultAsync(); |
| | | if (enterprise == null) throw Oops.Oh(EnumErrorCodeType.s404, "企业"); |
| | | var add = false; |
| | | if (entity == null) |
| | | { |
| | | var user = await repUser.AsQueryable().AsNoTracking() |
| | | .Include(it => it.UserAuth) |
| | | .Where(it => it.Id == logier.Id) |
| | | .Select(it => new |
| | | { |
| | | it.Name, |
| | | it.Identity, |
| | | it.ContactPhoneNumber, |
| | | it.Gender, |
| | | it.Age, |
| | | it.UserAuth.IdentityImg, |
| | | it.UserAuth.IdentityBackImg |
| | | }) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "账号"); |
| | | entity = new EnterpriseEmployee |
| | | { |
| | | Id = IDGen.NextID(), |
| | | EnterpriseId = contractTemplate.EnterpriseId, |
| | | UserId = logier.Id, |
| | | Name = user.Name, |
| | | Identity = user.Identity, |
| | | ContactPhoneNumber = user.ContactPhoneNumber, |
| | | Gender = user.Gender, |
| | | Age = user.Age, |
| | | IdentityImg = user.IdentityImg, |
| | | IdentityBackImg = user.IdentityBackImg, |
| | | }; |
| | | add = true; |
| | | } |
| | | if (entity.UserSignContractStatus == null) |
| | | { |
| | | entity.ContractTemplateId = contractTemplate.Id; |
| | |
| | | UserSignContractStatus = entity.UserSignContractStatus, |
| | | }; |
| | | await repEnterpriseEmployeeContract.InsertAsync(contract); |
| | | } |
| | | if (add) |
| | | { |
| | | await rep.InsertAsync(entity); |
| | | } |
| | | else |
| | | { |
| | | await rep.UpdateAsync(entity); |
| | | } |
| | | return new GetPersonalUserElectronSignQueryResult |
| | |
| | | Identity = entity.Identity, |
| | | ContactPhoneNumber = entity.ContactPhoneNumber, |
| | | UserSignContractTime = entity.UserSignContractTime, |
| | | EnterpriseEnterpriseName = entity.Enterprise.EnterpriseName, |
| | | EnterpriseEnterpriseName = enterprise.EnterpriseName, |
| | | EnterpriseSignContractTime = entity.EnterpriseSignContractTime, |
| | | ContractUrl = entity.ContractUrl, |
| | | }; |