public UpdatePacketValidator(IPacketRepository packetRepository, IVersionRepository versionRepository)
        {
            RuleFor(x => x.PacketUid).MustAsync(async(x, cancellation) => {
                return(await packetRepository.PacketWithUidExists(x));
            }).WithMessage(ErrorCodes.PacketDoesNotExist);

            RuleFor(x => new { currentVersion = x.CurrentVersion.VersionCode, packetUid = x.PacketUid }).MustAsync(async(x, cancellation) => {
                if (x.currentVersion == 0)
                {
                    return(true);
                }

                return(await versionRepository.PacketVersionExists(x.packetUid, x.currentVersion));
            }).WithMessage(ErrorCodes.CurrentVersionDoesNotExist);

            RuleFor(x => new { currentVersion = x.PacketVersion.VersionCode, packetUid = x.PacketUid }).MustAsync(async(x, cancellation) => {
                return(await versionRepository.PacketVersionExists(x.packetUid, x.currentVersion));
            }).WithMessage(ErrorCodes.VersionDoesNotExist);
        }