public async Task CreateInvitationAsync(TestingPersonnelInvitationSpecDto specDto)
        {
            if (specDto == null)
            {
                throw new ArgumentNullException(nameof(specDto));
            }

            var alreadySentInvitationForDate = await AnyAsync(x => x.InvitationForDate.Date == specDto.Date.Date)
                                               .ConfigureAwait(false);

            if (alreadySentInvitationForDate)
            {
                ValidationDictionary
                .AddModelError("Invitation for the date has already been sent", $"{specDto.Date.ToString(dateFormat, CultureInfo.InvariantCulture)}");
                return;
            }

            var invitationDto = await AddAsync(specDto)
                                .ConfigureAwait(false);

            var invitationReceivers = await _testingPersonnelsRepository
                                      .GetTestingPersonnelInvitationReceiversByWorkingAreaAsync(WorkingArea.Pooling, specDto.Date.DayOfWeek)
                                      .ConfigureAwait(false);

            foreach (var receiver in invitationReceivers)
            {
                var invitationConfirmationToken = await _invitationConfirmationTokensRepository
                                                  .AddTestingPersonnelInvitationConfirmationTokenAsync(receiver.TestingPersonnelId, invitationDto.Id)
                                                  .ConfigureAwait(false);

                await _mailSender.SendInvitationForPoolingAssignmentAsync(receiver.Email, invitationConfirmationToken, invitationDto.InvitationForDate)
                .ConfigureAwait(false);
            }
        }