public async Task <IActionResult> GetReceiptPhoto(int id)
        {
            var photo = await _receiptPhotoService.GetReceiptPhotoAsync(id);

            if (photo == null)
            {
                return(NotFound());
            }

            return(Ok(photo));
        }
Пример #2
0
        public async Task <IActionResult> StartReceiptProcessing([FromBody] int id)
        {
            try
            {
                var receiptPhoto = await _receiptPhotoSvc.GetReceiptPhotoAsync(id);

                if (receiptPhoto == null)
                {
                    return(BadRequest());
                }

                var imagePrediction = await GetPredictionAsync(receiptPhoto.FileBytes);

                var receiptSections = _receiptHelper.ExtractSections(imagePrediction.Predictions);
                var receiptTemplate = _receiptHelper.CreateReceiptTemplate(receiptSections);


                var image    = _fileHelper.ByteArrayToImage(receiptPhoto.FileBytes);
                var scanText = _scanTextDirector.ConstructScanText(image, receiptTemplate);
                var receipt  = _receiptDirector.ConstructReceipt(scanText);

                var user = await _userManager.GetUserAsync(HttpContext.User);

                receipt.UserId         = user.Id;
                receipt.ReceiptPhotoId = id;

                await _receiptService.AddReceiptAsync(receipt);

                var receiptModel = await _receiptService.GetReceiptAsync(receipt.Id);

                return(Ok(receiptModel));
            }
            catch (Exception e)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message));
            }
        }