protected bool SavePhoto(Message message) { bool result = false; var currentState = new RefusalWorkflowStatus(); try { Task <File> file = Api.GetFileAsync(message.Photo.LastOrDefault()?.FileId); string barcode = BarCodeReader.GetBarCode(file.Result.FileStream); if (barcode != string.Empty) { currentState = GetCurrentState(message.Chat.Id); //create or update product Product product = ProductRepository.AddEdit(new Product() { ProductBarcode = barcode }); Api.SendTextMessageAsync(message.Chat.Id, String.Format(TelegramBotMessages.BarCodeText, barcode)); //update state currentState.ProductId = product.Id; currentState.ProcessStage = RefusalWorkflowStatusType.SavedPhoto; UserProcessStatusRepository.AddEdit(currentState); result = true; } } catch (Exception ex) { result = false; ErrorRepository.AddEdit(new Error() { ChatId = message.Chat.Id, ErrorCode = ex.HResult, ErrorMessage = ex.Message, StackTrace = ex.StackTrace, RefusalWorkflowStatusId = currentState.ProcessStage }); } return(result); }