示例#1
0
        protected RefusalWorkflowStatus UpdateCurrentState(long chatId, RefusalWorkflowStatusType state, int userId = 0)
        {
            var currentState = new RefusalWorkflowStatus();

            try
            {
                currentState = GetCurrentState(chatId);

                currentState.ChatId       = chatId;
                currentState.ProcessStage = state;
                if (userId > 0)
                {
                    currentState.UserId = userId;
                }

                UserProcessStatusRepository.AddEdit(currentState);
            }
            catch (Exception ex)
            {
                ErrorRepository.AddEdit(new Error()
                {
                    ChatId                  = chatId,
                    ErrorCode               = ex.HResult,
                    ErrorMessage            = ex.Message,
                    StackTrace              = ex.StackTrace,
                    RefusalWorkflowStatusId = currentState.ProcessStage
                });
            }

            return(currentState);
        }
示例#2
0
        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);
        }
示例#3
0
        protected RefusalWorkflowStatus GetCurrentState(long chatId)
        {
            var currentState = new RefusalWorkflowStatus();

            try
            {
                currentState = UserProcessStatusRepository.Get((int)chatId);
            }
            catch (Exception ex)
            {
                ErrorRepository.AddEdit(new Error()
                {
                    ChatId                  = chatId,
                    ErrorCode               = ex.HResult,
                    ErrorMessage            = ex.Message,
                    StackTrace              = ex.StackTrace,
                    RefusalWorkflowStatusId = currentState.ProcessStage
                });
            }
            return(currentState);
        }