Пример #1
0
        public async Task <ActionResult <Person> > Validate(ValidatePersonModel aValidatePersonModel)
        {
            Person aPerson = await _personRepository.GetPerson(ObjectId.Parse(aValidatePersonModel.Passnummer));

            if (aPerson != null && aPerson.Geburtstag.Date.Equals(aValidatePersonModel.Geburtsdatum.Date))
            {
                return(Ok(aPerson));
            }
            return(BadRequest());
        }
        public async Task <IActionResult> DecodeQrCode(IFormFile qrCodeInput, string returnUrl)
        {
            if (!qrCodeInput.IsImage())
            {
                return(await QrCodeError(returnUrl));
            }

            var vm = new ValidatePersonModel()
            {
                ReturnUrl = returnUrl
            };

            using (var bitmap = new System.Drawing.Bitmap(qrCodeInput.OpenReadStream()))
            {
                var image = BitmapResizer.Resize(bitmap, 600, 800);

                var reader = new ZXing.ImageSharp.BarcodeReader <Rgba32>
                {
                    Options = { PossibleFormats = new List <BarcodeFormat> {
                                    BarcodeFormat.QR_CODE
                                } }
                };

                var result = reader.Decode(image);

                if (result == null)
                {
                    _logger.LogError("QR Code is invalid");
                    return(await QrCodeError(returnUrl));
                }

                var user = _userManager.FindByCodeAsync(result.Text);
                if (user == null)
                {
                    _logger.LogError("No user found for QR Code");
                    return(await QrCodeError(returnUrl));
                }

                vm.User = user;
            }

            return(View("ValidatePerson", vm));
        }