private async void DeletePassenger_Click(object sender, RoutedEventArgs e)
        {
            if (PassengersView.Passengers.SelectedItem is null)
            {
                MessageBox.Show("No ha seleccionado ningún pasajero.", "Advertencia", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            string ticket_number = (PassengersView.Passengers.SelectedItem as Ticket).Number;

            if (await MainWindow.Client.Send(TypeCommand.Delete, TypeData.Ticket, ticket_number))
            {
                ServerAnswer answer = await MainWindow.Client.RecieveServerAnswer();

                if (answer == ServerAnswer.SuccessfullyRemoved)
                {
                    MessageBox.Show("Pasajero eliminado con éxito.", "Exito", MessageBoxButton.OK, MessageBoxImage.Information);
                    CurrentTransportForm.RemoveTicket(ticket_number);
                    CurrentTransportForm.UpdateTotalValue();
                    TotalTransportForm.Text = "Total planilla: " + CurrentTransportForm.TotalValue.ToString();
                    PassengersView.Passengers.Items.Refresh();
                }
                else
                {
                    MessageBox.Show("Pasajero no eliminado, verifique si lo elimino anteriormente.", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
        }
        static void TestProactive()
        {
            var answer = new ServerAnswer()
            {
                user_id         = "UNJN2HTDH:TNPMJ4WV7",
                action          = "answers",
                answer          = "Hey",
                answer_id       = 1,
                certainty       = 1.1,
                chatbot_temp_id = 1,
                question        = "Hay",
                question_id     = 2,
                status_code     = 0,
                status_msg      = "OK"
            };
            var answer_questions = new List <ServerQuestion>();

            answer_questions.Add(new ServerQuestion());
            var questions = new ServerQuestionsMessage()
            {
                user_id          = "",
                action           = Actions.Questions,
                answer_questions = answer_questions,
                status_code      = 0,
                status_msg       = ""
            };
            var json = JsonSerializer.Serialize <ServerQuestionsMessage>(questions);
            var done = con.SendMessageToEndPointAsync(json, Actions.Questions).Result;

            con.StoreMessageFromServerAsync(json).Wait();
            Console.WriteLine(done);
        }
Exemple #3
0
        public override object HandleCommand()
        {
            ServerAnswer answer = ServerAnswer.InvalidCommand;

            switch (DataPacket.Command.TypeData)
            {
            case TypeData.Person:
                PersonService personService = new PersonService();
                answer = (personService.Save(DataPacket.Data as Person)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.Employee:
                EmployeeService employeeService = new EmployeeService();
                answer = (employeeService.Save(DataPacket.Data as Employee)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.AdministrativeEmployee:
                AdministrativeEmployeeService administrativeEmployeeService = new AdministrativeEmployeeService();
                answer = (administrativeEmployeeService.Save(DataPacket.Data as AdministrativeEmployee)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.BankDraft:
                BankDraftService bankDraftService = new BankDraftService();
                answer = (bankDraftService.Save(DataPacket.Data as BankDraft)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.Commend:
                CommendService commendService = new CommendService();
                answer = (commendService.Save(DataPacket.Data as Commend)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.Route:
                RouteService routeService = new RouteService();
                answer = (routeService.Save(DataPacket.Data as Route)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.Vehicle:
                VehicleService vehicleService = new VehicleService();
                answer = (vehicleService.Save(DataPacket.Data as Vehicle)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                break;

            case TypeData.TransportForm:
            case TypeData.Ticket:
                TransportFormService transportFormService = new TransportFormService();

                if (DataPacket.Command.TypeData == TypeData.TransportForm)
                {
                    answer = (transportFormService.Save(DataPacket.Data as TransportForm)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                }
                else
                {
                    answer = (transportFormService.Save(DataPacket.Data as Ticket)) ? ServerAnswer.SaveSuccessful : ServerAnswer.DataAlreadyRegistered;
                }
                break;
            }

            return(answer);
        }
        private async void HandleServerAnswer()
        {
            ServerAnswer answer = await MainWindow.Client.RecieveServerAnswer();

            if (answer != ServerAnswer.SaveSuccessful)
            {
                MessageBox.Show("Pasajero no registrado. Revise el estado de su conexion.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                CurrentTransportFormUserControl.CurrentTransportForm.Tickets.Remove(CurrentTransportFormUserControl.CurrentTransportForm.Tickets.Last());
            }

            _afterRegister?.AfterRegister();
        }
        private async void HandleServerAnswer()
        {
            ServerAnswer answer = await MainWindow.Client.RecieveServerAnswer();

            if (answer == ServerAnswer.SaveSuccessful)
            {
                MessageBox.Show("Datos guardados");
            }
            else
            {
                MessageBox.Show("Error al guardar los datos");
            }
        }
        private async void HandleServerAnswer()
        {
            ServerAnswer answer = await MainWindow.Client.RecieveServerAnswer();

            if (answer == ServerAnswer.SaveSuccessful)
            {
                MessageBox.Show("Datos guardados con exito");
            }
            else
            {
                MessageBox.Show("Vehiculo ya registrado");
            }
        }
Exemple #7
0
        private async void IsFirstApplicationStart()
        {
            ServerAnswer answer = await Client.RecieveServerAnswer();

            if (answer == ServerAnswer.IsTheFirstApplicationStart)
            {
                Dispatcher.Invoke(() => SetMainPanel(new RegisterAdministrativeEmployeeUserControl(this)));
            }
            else
            {
                Dispatcher.Invoke(() => ShowLoginPanel());
            }
        }
Exemple #8
0
        private async void HandleServerAnswer()
        {
            ServerAnswer answer = await MainWindow.Client.RecieveServerAnswer();

            if (answer == ServerAnswer.SaveSuccessful)
            {
                MessageBox.Show("Datos guardadados", "Resultado", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else if (answer == ServerAnswer.DataAlreadyRegistered)
            {
                MessageBox.Show("Error al guardar los datos", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        private async void HandleServerAnswer()
        {
            ServerAnswer answer = await MainWindow.Client.RecieveServerAnswer();

            if (answer == ServerAnswer.SaveSuccessful)
            {
                MessageBox.Show("Registro exitoso");
            }
            else
            {
                MessageBox.Show("Datos ya registrados");
            }
        }
        public async Task <IActionResult> Post(ServerAnswer answer)
        {
            if (answer.answer_id > 0 && answer.answer != null)
            {
                this._messageForUser  = this._answerMsg;
                this._messageForUser += "\nYou asked: '" + answer.question + "'";
                this._messageForUser += " Well: " + answer.answer;
                await NotifyUser(answer.user_id);

                // Let the caller know proactive messages have been sent
                return(ReturnAccepted());
            }
            // No reason to send the message now.
            return(ReturnNotImplemented());
        }
Exemple #11
0
        public static bool TryCreateUser(string fullName, string login, string password, out string errorText)
        {
            string[] fullNameArr = fullName.Split();
            if (fullNameArr.Length is 2 or 3)
            {
                try
                {
                    ServerAnswer answer = EstablishConnection(new RequestToServer(
                                                                  new User(fullNameArr[0], fullNameArr[1], fullNameArr.Length is 3 ? fullNameArr[2] : null, login, password),
                                                                  RequestToServer.Request.Create));

                    errorText = answer.CauseOfProblems;
                    return(answer.SuccessOfOperation);
                }
                catch (Exception)
                {
                    errorText = "Возникли проблемы при подключении к серверу.";
                }
            }
        public override object HandleCommand()
        {
            ServerAnswer result = ServerAnswer.FailedModification;

            switch (DataPacket.Command.TypeData)
            {
            case TypeData.Employee:
                break;

            case TypeData.AdministrativeEmployee:
                break;

            case TypeData.BankDraft:
                break;

            case TypeData.Commend:
                break;

            case TypeData.Route:
                break;

            case TypeData.TransportForm:
                KeyValuePair <string, Dictionary <FinalcialInformationType, decimal> > valuesToUpdate =
                    (KeyValuePair <string, Dictionary <FinalcialInformationType, decimal> >)DataPacket.Data;
                TransportFormService transportFormService = new TransportFormService();
                if (transportFormService.UpdateFinancialInformation(valuesToUpdate.Key, valuesToUpdate.Value))
                {
                    result = ServerAnswer.SuccessfullyModified;
                }
                break;

            case TypeData.Vehicle:
                break;

            case TypeData.Ticket:
                break;

            default:
                break;
            }

            return(result);
        }
Exemple #13
0
            // обмен данными с сервером в формате XML
            // nCom - номер команды
            // sPar1
            // nTOutRead - таймаут на ожидание ответа от сервера
            public string ExchgSrv(string nCom, string sPar1, string sDop,
                                   LoadFromSrv dgRead, DataSet dsTrans, ref int ret, int nTOutRead, int nBufSize)
            {
                string
                    sOutFileXML = "",
                    sC,
                    sHost,
                    sAdr,
                    sErr;
                int
                    nPort;

                SocketStream.ASRWERROR
                    nRErr;

                System.IO.Stream
                    stm = null;

                ret       = AppC.RC_CANCEL;
                ServerRet = AppC.EMPTY_INT;
                if (xMF.xCLoad != null)
                {
                    xMF.xCLoad.xLastSE      = this;
                    xMF.xCLoad.sFileFromSrv = "";
                }


                SelSrvPort(nCom, sPar1, out sHost, out nPort);
                sAdr = sHost + ":" + nPort.ToString();
                sErr = sAdr + "-нет соединения!";

                Cursor.Current = Cursors.WaitCursor;

                try
                {
                    CurSocket = new SocketStream(sHost, nPort);
                    if (!TestConn(false, xMF.xBCScanner, xMF.xFPan))
                    {
                        TraiceWiFi(sErr);
                        //throw new System.Net.Sockets.SocketException(11053);
                    }
                    else
                    {
                        //MessageBox.Show("Good reset!");
                    }

                    //TraiceWiFi(nCom + " - перед Connect");
                    stm = CurSocket.Connect();

                    // поток создан, отправка команды
                    sErr = sAdr + "-команда не отправлена";
                    byte[] baCom = SetCommand2Srv(nCom, sPar1, sDop);
                    //stm.Write(baCom, 0, baCom.Length);
                    //stm.Write(AppC.baTermCom, 0, AppC.baTermCom.Length);

                    // 20 секунд на запись команды
                    CurSocket.ASWriteS.TimeOutWrite = 1000 * 10;
                    CurSocket.ASWriteS.BeginAWrite(baCom, baCom.Length);

                    if ((dsTrans != null) || (XMLPars != null))
                    {// передача данных при выгрузке
                     //sErr = sAdr + "-ошибка выгрузки";
                     //dsTrans.WriteXml(stm, XmlWriteMode.IgnoreSchema);
                     //sErr = sAdr + "-ошибка завершения";

                        sErr = sAdr + "-ошибка выгрузки";
                        MemoryStream mst = new MemoryStream();
                        if (dsTrans != null)
                        {
                            dsTrans.WriteXml(mst, XmlWriteMode.IgnoreSchema);
                        }

                        if (XMLPars != null)
                        {
                            mst.Write(XMLPars, 0, XMLPars.Length);
                        }

                        // терминатор сообщения
                        mst.Write(AppC.baTermMsg, 0, AppC.baTermMsg.Length);

                        byte[] bm1 = mst.ToArray();
                        mst.Close();
                        // 60 секунд на запись данных
                        CurSocket.ASWriteS.TimeOutWrite = 1000 * 180;
                        CurSocket.ASWriteS.BeginAWrite(bm1, bm1.Length);
                    }
                    else
                    {
                        sErr = sAdr + "-ошибка завершения";
                        // 10 секунд на запись терминатора сообщения
                        CurSocket.ASWriteS.TimeOutWrite = 1000 * 30;
                        // терминатор сообщения
                        CurSocket.ASWriteS.BeginAWrite(AppC.baTermMsg, AppC.baTermMsg.Length);
                    }


                    //int nCommLen = 0;
                    //byte[] bAns = ReadAnswerCommand(stm, ref nCommLen);
                    //sC = Encoding.UTF8.GetString(bAns, 0, nCommLen - AppC.baTermCom.Length);

                    sErr = sAdr + "-нет ответа сервера!";
                    // 120 секунд на чтение ответа
                    //m_ssExchg.ASReadS.TimeOutRead = 1000 * 120;

                    //m_ssExchg.ASReadS.BufSize = 256;
                    //nRErr = m_ssExchg.ASReadS.BeginARead(bUseFileAsBuf, 1000 * nTOutRead);

                    if (nBufSize > 0)
                    {
                        CurSocket.ASReadS.BufSize = nBufSize;
                    }
                    nRErr = CurSocket.ASReadS.BeginARead(1000 * nTOutRead);

                    switch (nRErr)
                    {
                    case SocketStream.ASRWERROR.RET_FULLBUF:       // переполнение буфера
                        sErr = " длинная команда";
                        throw new System.Net.Sockets.SocketException(10061);

                    case SocketStream.ASRWERROR.RET_FULLMSG:       // сообщение полностью получено
                        sC = CurSocket.ASReadS.GetMsg();
                        break;

                    default:
                        TraiceWiFi("Сетевая ошибка (чтение ответа)");
                        throw new System.Net.Sockets.SocketException(10061);
                    }


                    sErr = sAdr + "-ошибка чтения";
                    //Dictionary<string, string> aComm = SrvCommandParse(sC);
                    ServerAnswer = Srv.SrvAnswerParParse(sC);

                    SyncTimeWithSrv();

                    if (ServerAnswer.ContainsKey("PAR"))
                    {
                        StringAnsPars = ServerAnswer["PAR"];
                        StringAnsPars = StringAnsPars.Substring(1, StringAnsPars.Length - 2);
                        AnswerPars    = Srv.SrvAnswerParParse(StringAnsPars, new char[] { ',' });
                    }


                    //TraiceWiFi("Ответ получен...");
                    ServerRet = int.Parse(ServerAnswer["RET"]);

                    if ((ServerAnswer["COM"] == nCom) &&
                        ((ServerRet == AppC.RC_OK) ||
                         (ServerRet == AppC.RC_NEEDPARS) ||
                         (ServerRet == AppC.RC_HALFOK)))
                    {
                        CurSocket.ASReadS.OutFile = "";
                        if (ServerRet == AppC.RC_NEEDPARS)
                        {
                            CurSocket.ASReadS.TermDat = AppC.baTermMsg;
                            if (CurSocket.ASReadS.BeginARead(true, 1000 * nTOutRead) == SocketStream.ASRWERROR.RET_FULLMSG)
                            {
                                //TraiceWiFi("Доп.Данные получены...");
                                sOutFileXML = CurSocket.ASReadS.OutFile;
                            }
                            else
                            {
                                TraiceWiFi("Сетевая ошибка (чтение данных)");
                                throw new System.Net.Sockets.SocketException(10061);
                            }
                        }

                        if (dgRead != null)
                        {
                            dgRead(CurSocket, ServerAnswer, dsTrans, ref sErr, ServerRet);
                        }
                        try
                        {
                            sErr = ServerAnswer["MSG"];
                        }
                        catch { sErr = "OK"; }
                        //dgRead(m_ssExchg, aComm, dsTrans, ref sErr, nRetSrv);
                        //else
                        //{
                        //    sErr = "OK";
                        //}
                    }
                    else
                    {
                        if (ServerAnswer["MSG"] != "")
                        {
                            sErr = ServerAnswer["MSG"];
                        }
                        else
                        {
                            sErr = sAdr + "\n Отложено выполнение";
                        }
                    }
                    ret = ServerRet;
                }
                catch (Exception e)
                {
                    //sC = e.Message;
                    sErr = e.Message;
                    TraiceWiFi(sErr);
                    ret = 3;
                }
                finally
                {
                    CurSocket.Disconnect();
                    Cursor.Current = Cursors.Default;
                    if (ServerRet == AppC.RC_NEEDPARS)
                    {
                        if (Srv.ExchangeContext.ExchgReason == AppC.EXCHG_RSN.NO_EXCHG)
                        {
                            Srv.ExchangeContext.ExchgReason = AppC.EXCHG_RSN.SRV_INIT;
                            Srv.ExchangeContext.CMD_EXCHG   = nCom;
                            DialogResult xDRslt = xMF.CallDllForm(xMF.sExeDir + "SGPF-Univ.dll", true,
                                                                  new object[] { this, nCom, AppC.R_PARS, sOutFileXML });
                            Srv.ExchangeContext.ExchgReason = AppC.EXCHG_RSN.NO_EXCHG;
                            if (xDRslt == DialogResult.OK)
                            {
                            }
                        }
                    }
                }
                return(sErr);
            }
        private async Task <DialogTurnResult> DispatchStepAsync(WaterfallStepContext stepContext,
                                                                CancellationToken cancellationToken)
        {
            // Call LUIS and gather any potential booking details. (Note the TurnContext has the response to the prompt.)
            Debug.WriteLine(stepContext.Context);
            Debug.WriteLine(cancellationToken);
            var message   = stepContext.Context;
            var qnaResult = await _botServices.QnAMakerService.GetAnswersAsync(message);

            var luisResult = await _botServices.LuisService.RecognizeAsync <LuisContactModel>(message, cancellationToken);

            var thresholdScore = 0.80;

            // Check if score is too low, then it is not understood.
            if ((luisResult.TopIntent().score < thresholdScore || (luisResult.TopIntent().score > thresholdScore && luisResult.TopIntent().intent == LuisContactModel.Intent.None)) &&
                (qnaResult.FirstOrDefault()?.Score *2 ?? 0) < thresholdScore)
            {
                var askAgain = "I can't seem to find my brain ... Could you please ask it again later?";

                // Responses when no answer available
                List <string> notUnderstoodResponses = new List <string>(new String[] { "I'll have to look that up. I'll let you know when I found something!",
                                                                                        "I will ask someone. I'll let you know when I got an answer.",
                                                                                        "Hmmm. Good question. Give me some time and I will try to figure it out. I will keep you updated!" });
                var notUnderstood = notUnderstoodResponses[random.Next(notUnderstoodResponses.Count)];

                // Responses on timeout
                List <string> answerLateResponse = new List <string>(new String[] { "It's taking longer than I'd expect to find an answer. " +
                                                                                    "I'm not that old though. I will notify you when I'm ready.", "I thought I was smart and quick, but right now I only seem to be smart. " +
                                                                                    "Anyway, you'll hear from me when I got something!", "I'm sorry. I'm having trouble finding an answer right now. It seems like " +
                                                                                    "I'm not perfect after all. However, I'll notify you when I found an answer." });
                var answerLate = answerLateResponse[random.Next(answerLateResponse.Count)];

                // Responses to nonsense input
                List <string> responsesToNonsense = new List <string>(new String[] { "That doesn't seem to make sense to me.",
                                                                                     "I'm sorry, I didn't understand you.", "You might have made a typo there. Could you try again?",
                                                                                     "I sometimes really don\'t get what you mean.", "You lost me there.", "I guess I\'m not supposed to understand that? Am I?" });
                var responseToNonsense = responsesToNonsense[random.Next(responsesToNonsense.Count)];

                // Responses to offensive input
                List <string> responsesToOffensive = new List <string>(new String[] {
                    "I find your language quite upsetting.",
                    "Please do watch your language, we want to be nice to other people don't we?",
                    "I'll pretend I didn't read that. Please watch your language.",
                    "I personally don\'t speak that kind of language.", "Maybe you could rephrase that?",
                    "I would not say it is proper to say that.", "As a gentle bot I would not dare to talk like that.",
                    "O my goodness. Gentle bots would not dare to talk like that."
                });
                var responseToOffensive = responsesToOffensive[random.Next(responsesToOffensive.Count)];


                //sending to server
                ServerAnswer answer = null;
                try
                {
                    answer = await Task.Run(() => conchatbot.SendQuestionAndWaitForAnswer(Globals.userID, message.Activity.Text, Globals.timeout));
                } catch (Exception e) {
                    Debug.WriteLine("Exception while requesting questions:\n" + e);
                    // If you want to send the exception to the user.
                    //await stepContext.Context.SendActivityAsync(MessageFactory.Text(e.ToString()), cancellationToken);
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(askAgain), cancellationToken);

                    return(await stepContext.NextAsync(null, cancellationToken));
                }


                if (answer == null)
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(answerLate), cancellationToken);
                }
                else if (answer.status_code == (int)ServerStatusCode.Nonsense)
                {
                    // nonsense
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(responseToNonsense), cancellationToken);
                }
                else if (answer.status_code == (int)ServerStatusCode.Offensive)
                {
                    // offensive
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(responseToOffensive), cancellationToken);
                }
                else if (answer.answer_id < 0 || answer.answer == "" || answer == null)
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(notUnderstood), cancellationToken);
                }
                else
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(answer.answer), cancellationToken);

                    this._answer_id   = answer.answer_id;
                    this._question_id = answer.question_id;
                    //to ask the user if the answer was or was not a good answer to his/her question

                    try
                    {
                        return(await stepContext.PromptAsync(nameof(ChoicePrompt), new PromptOptions
                        {
                            Prompt = MessageFactory.Text("Was this a good answer? I would be grateful if you could press the YES button!"),
                            RetryPrompt = MessageFactory.Text("Please press one of the following buttons."),
                            Choices = ChoiceFactory.ToChoices(feedbackChoices),
                            Style = ListStyle.HeroCard,
                        }, cancellationToken));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }

                return(await stepContext.NextAsync(null, cancellationToken));
            }

            // Check on scores between Luis and Qna.
            if (luisResult.TopIntent().intent != LuisContactModel.Intent.None && luisResult.TopIntent().score >= (qnaResult.FirstOrDefault()?.Score ?? 0))
            {
                // Block proactive messaging while in LUIS dialog.
                Globals.connector.BlockProactiveMessagingForUser(Globals.userID);
                // Start the Luis Weather dialog.
                return(await stepContext.BeginDialogAsync(nameof(LuisContactDialog), luisResult, cancellationToken));
            }


            else
            {
                // Show a Qna message.
                var qnaMessage = MessageFactory.Text(qnaResult.First().Answer, qnaResult.First().Answer,
                                                     InputHints.ExpectingInput);

                await stepContext.Context.SendActivityAsync(qnaMessage, cancellationToken);

                return(await stepContext.NextAsync(null, cancellationToken));
            }
        }