public async Task <TerminatePolicyResult> Handle(TerminatePolicyCommand request, CancellationToken cancellationToken) { Policy policy = await this._policyRepository.WithNumber(request.PolicyNumber); PolicyTerminationResult terminationResult = policy.Terminate(request.TerminationDate); await this._policyRepository.SaveChangesAsync(); this._eventPublisher.PublishMessage(this._mapper.Map <PolicyTerminatedEvent>(terminationResult)); return(this._mapper.Map <TerminatePolicyResult>(terminationResult)); }
private PolicyTerminated PolicyTerminated(PolicyTerminationResult terminationResult) { return(new PolicyTerminated { PolicyNumber = terminationResult.TerminalVersion.Policy.Number, PolicyFrom = terminationResult.TerminalVersion.CoverPeriod.ValidFrom, PolicyTo = terminationResult.TerminalVersion.CoverPeriod.ValidTo, ProductCode = terminationResult.TerminalVersion.Policy.ProductCode, TotalPremium = terminationResult.TerminalVersion.TotalPremiumAmount, AmountToReturn = terminationResult.AmountToReturn, PolicyHolder = new Api.Commands.Dtos.PersonDto { FirstName = terminationResult.TerminalVersion.PolicyHolder.FirstName, LastName = terminationResult.TerminalVersion.PolicyHolder.LastName, TaxId = terminationResult.TerminalVersion.PolicyHolder.Pesel } }); }