public async Task <Result <BloodRequestDto> > Handle(CreateBloodRequest request, CancellationToken cancellationToken)
        {
            var openIdResult = await _currentUser.GetOpenIdUser();

            var result = await _bloodRequestRepository.CreateAsync(BloodRequest.Create(request, openIdResult.Value.Id));

            await _mediator.Publish(new SendEmailNotification(new List <MailboxAddress> {
                new(openIdResult.Value.NickName, openIdResult.Value.EmailAddress)
            }, "New Request Created [Blood]", $"Request for blood is created.<br/> Request ID: {result.Id}"), cancellationToken);
        public static BloodRequest Create(CreateBloodRequest dto, OpenIdKey openIdKey)
        {
            var result = new BloodRequest
            {
                OpenIdKey       = openIdKey,
                BloodGroup      = dto.BloodGroup,
                DonationType    = dto.DonationType,
                PatientName     = dto.PatientName,
                Priority        = dto.Priority,
                QuantityInUnits = dto.QuantityInUnits,
                Reason          = dto.Reason,
                Status          = DetailedStatusList.Open,
                Id = Guid.NewGuid()
            };

            return(result);
        }