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); }
public HttpResponseMessage AddEdit(Error error) { var repo = new ErrorRepository(); var entity = repo.AddEdit(error); var json = JsonConvert.SerializeObject(entity); return(new HttpResponseMessage { Content = new StringContent(json, Encoding.UTF8, "application/json") }); }
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); }
protected bool SaveOption(Message message) { bool result = false; var currentState = new RefusalWorkflowStatus(); try { currentState = GetCurrentState(message.Chat.Id); //get selected option var refusalTypes = RefusalTypeRepository.List(); var type = refusalTypes.Find(itm => itm.Name.ToLower().Contains(message.Text.ToLower())); //save feedback RefusalRepository.AddEdit(new Refusal() { UserId = currentState.UserId, ProductId = currentState.ProductId, RefusalTypeId = type?.Id ?? 0 }); Api.SendTextMessageAsync(message.Chat.Id, TelegramBotMessages.AskRefusalSuccess); //update current state UpdateCurrentState(message.Chat.Id, RefusalWorkflowStatusType.SavedOptions); result = true; } catch (Exception ex) { ErrorRepository.AddEdit(new Error() { ChatId = message.Chat.Id, ErrorCode = ex.HResult, ErrorMessage = ex.Message, StackTrace = ex.StackTrace, RefusalWorkflowStatusId = currentState.ProcessStage }); } return(result); }
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); }
protected bool SaveOther(Message message) { var currentState = new RefusalWorkflowStatus(); try { currentState = GetCurrentState(message.Chat.Id); //get selected option var refusalTypes = RefusalTypeRepository.List(); var type = refusalTypes.Find(itm => itm.HasComment); //save feedback RefusalRepository.AddEdit(new Refusal() { UserId = currentState.UserId, ProductId = currentState.ProductId, RefusalTypeId = type?.Id ?? 0, RefusalComment = message.Text }); Api.SendTextMessageAsync(message.Chat.Id, TelegramBotMessages.AskRefusalSuccess); UpdateCurrentState(message.Chat.Id, RefusalWorkflowStatusType.SavedOther); } catch (Exception ex) { ErrorRepository.AddEdit(new Error() { ChatId = message.Chat.Id, ErrorCode = ex.HResult, ErrorMessage = ex.Message, StackTrace = ex.StackTrace, RefusalWorkflowStatusId = currentState.ProcessStage }); } return(true); }