| | |
| | | UserSignContractStatus = entity.UserSignContractStatus, |
| | | }; |
| | | await repEnterpriseEmployeeContract.InsertAsync(contract); |
| | | //await mediator.Send(new SaveEnterpriseCostCommand |
| | | //{ |
| | | // EnterpriseId = logier.EnterpriseId!.Value, |
| | | // ContractTemplateId = request.ContractTemplateId, |
| | | // EnterpriseEmployeeContractId = contract.Id, |
| | | // Type = EnumEnterpriseCostType.ElectronSign |
| | | //}); |
| | | await rep.UpdateAsync(entity); |
| | | } |
| | | return entities.Count; |
| | |
| | | public async Task<int> Handle(SendInviteElectronSignSmsCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | |
| | | await mediator.Send(new CheckContractTemplateCommand |
| | | { |
| | | Id = request.ContractTemplateId |
| | | }, cancellationToken); |
| | | |
| | | var entities = await rep.AsQueryable() |
| | | .Include(it => it.Enterprise) |
| | | .Include(it => it.ContractTemplate) |
| | | .Where(it => |
| | | it.EnterpriseId == logier.EnterpriseId |
| | | && request.Ids.Contains(it.Id) |
| | | && it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) |
| | | && request.Ids.Contains(it.Id)) |
| | | .ToListAsync(); |
| | | foreach (var entity in entities) |
| | | |
| | | foreach (var id in request.Ids) |
| | | { |
| | | var codeUrl = new SaveCodeUrlCommand |
| | | var entity = entities.FirstOrDefault(it => it.Id == id); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "灵工"); |
| | | if (entity.UserSignContractStatus == null |
| | | || entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Refuse |
| | | || entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Stop) |
| | | { |
| | | Scene = EnumCodeUrlScene.InviteElectronSign, |
| | | ParamValue1 = entity.Id.ToString(), |
| | | ExpiredTime = DateTime.Now.AddMonths(1) |
| | | }; |
| | | var code = await mediator.Send(codeUrl); |
| | | await smsUtils.Send(new SendSmsModel |
| | | entity.ContractTemplateId = request.ContractTemplateId; |
| | | entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait; |
| | | entity.UserSignContractTime = null; |
| | | entity.EnterpriseSignContractStatus = null; |
| | | entity.EnterpriseSignContractTime = null; |
| | | entity.ContractCode = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; |
| | | entity.ContractUrl = null; |
| | | var contract = new EnterpriseEmployeeContract |
| | | { |
| | | EnterpriseEmployeeId = entity.Id, |
| | | ContractTemplateId = entity.ContractTemplateId, |
| | | ContractCode = entity.ContractCode, |
| | | UserSignContractStatus = entity.UserSignContractStatus, |
| | | }; |
| | | await repEnterpriseEmployeeContract.InsertAsync(contract); |
| | | await rep.UpdateAsync(entity); |
| | | } |
| | | if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) |
| | | { |
| | | PhoneNumber = entity.ContactPhoneNumber, |
| | | TemplateCode = EnumSmsTemplateCode.InviteElectronSign, |
| | | }, |
| | | new |
| | | { |
| | | name = entity.Enterprise.EnterpriseName, |
| | | code = code |
| | | }); |
| | | var codeUrl = new SaveCodeUrlCommand |
| | | { |
| | | Scene = EnumCodeUrlScene.InviteElectronSign, |
| | | ParamValue1 = entity.Id.ToString(), |
| | | ExpiredTime = DateTime.Now.AddMonths(1) |
| | | }; |
| | | var code = await mediator.Send(codeUrl); |
| | | await smsUtils.Send(new SendSmsModel |
| | | { |
| | | PhoneNumber = entity.ContactPhoneNumber, |
| | | TemplateCode = EnumSmsTemplateCode.InviteElectronSign, |
| | | }, |
| | | new |
| | | { |
| | | name = entity.Enterprise.EnterpriseName, |
| | | code = code |
| | | }); |
| | | } |
| | | } |
| | | |
| | | return entities.Count; |
| | | } |
| | | |