Наследование: MonoBehaviour
Пример #1
0
 public WebSocketConnection(Socket socket, WebSocketWrapper websocket)
 {
     Sender = new Sender(socket, websocket);
     Receiver = new Receiver(socket, websocket);
     Sender.Connection = this;
     Receiver.Connection = this;
 }
Пример #2
0
    //------------------------------------------------------------------
    public static void Test()
    {
        // Fake commit

        IReceiver receiver = new Receiver();
        receiver.Receive(new ResponceMessage());
    }
Пример #3
0
      private void button1_Click(object sender, EventArgs e) {
         if(textBox1.Text == String.Empty || textBox2.Text == String.Empty) {
            MessageBox.Show("Please, fill all fields");
            return;
         }
         try {
            using(var objProvider = new MailProvider()) {
               Group objReceiverGroup = objProvider.GetGroupById(iNodeId);
               if(objReceiverGroup == null) {
                  throw new ArgumentException("Cant find group with current ID: " + iNodeId);
               }

               var objReciever = new Receiver();
               objReciever.Name = textBox1.Text;
               objReciever.Email = textBox2.Text;
               objReciever.Group = objReceiverGroup;

               objProvider.AddReceiver(objReciever);
            }
            this.Close();
         }
         catch(Exception ex) {
            MessageBox.Show(ex.Message);
         }
      }
Пример #4
0
 public WebSocketConnection(Socket socket, WebSocketWrapper websocket, SubProtocolModelFactoryWrapper modelfactory)
 {
     Sender = new Sender(socket, websocket);
     Receiver = new Receiver(socket, websocket, modelfactory);
     Sender.Connection = this;
     Receiver.Connection = this;
 }
Пример #5
0
 static void Main()
 {
     Printer P = new Printer();
     Receiver R = new Receiver();
     R.OnComplete += P.Print;
     R.Receive();
 }
Пример #6
0
 public WebSocketConnection()
 {
     Sender = new Sender();
     Receiver = new Receiver();
     Sender.Connection = this;
     Receiver.Connection = this;
 }
Пример #7
0
 public void Setup()
 {
     _message = null;
     _wasClosed = false;
     _mockSocket = new Mock<ISocket>();
     _receiver = new Receiver(_mockSocket.Object,s => _message = s, () => _wasClosed = true);
 }
Пример #8
0
        static void Main(string[] args)
        {
            Console.Title = "Simple Server";
              String.Format("Simple Server Started listing on {0}", port).title('=');

              SimpleSender sndr = new SimpleSender();
              Receiver rcvr = new Receiver(port, address);
              rcvr.StartService();

              while(true)
              {
            Message msg = rcvr.getMessage();
            Console.Write("\n  Simple Server received:");
            Utilities.showMessage(msg);
            if (msg.content == "done")
            {
              Console.WriteLine();
              rcvr.shutDown();
              sndr.shutdown();
              break;
            }
            if (msg.content == "connection start message")
              continue;
            msg.content = "Simple Server received: " + msg.content;
            Utilities.swapUrls(ref msg);
            if(sndr.goodStatus == true)
            {
            #if (TEST_WPFCLIENT)
              /////////////////////////////////////////////////
              // The statements below support testing the
              // WpfClient as it receives a stream of messages
              // - for each message received the Server
              //   sends back 1000 messages
              //
              int count = 0;
              for (int i = 0; i < 1000; ++i)
              {
            Message testMsg = new Message();
            testMsg.toUrl = msg.toUrl;
            testMsg.fromUrl = msg.fromUrl;
            testMsg.content = String.Format("test message #{0}", ++count);
            Console.Write("\n  sending testMsg: {0}", testMsg.content);
            sndr.sendMessage(testMsg);
              }
            #else
              /////////////////////////////////////////////////
              // Use the statement below for normal operation
              sndr.sendMessage(msg);
            #endif
            }
            else
            {
              Console.Write("\n  closing\n");
              rcvr.shutDown();
              sndr.shutdown();
              break;
            }
            Console.WriteLine();
              }
        }
Пример #9
0
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);

			// Setup the window
			RequestWindowFeature (WindowFeatures.IndeterminateProgress);
			SetContentView (Resource.Layout.device_list);
			
			// Set result CANCELED incase the user backs out
			SetResult (Result.Canceled);

			// Initialize the button to perform device discovery			
			var scanButton = FindViewById<Button> (Resource.Id.button_scan);
			scanButton.Click += (sender, e) => {
				DoDiscovery ();
				(sender as View).Visibility = ViewStates.Gone;
			};
			
			// Initialize array adapters. One for already paired devices and
			// one for newly discovered devices
			pairedDevicesArrayAdapter = new ArrayAdapter<string> (this, Resource.Layout.device_name);
			newDevicesArrayAdapter = new ArrayAdapter<string> (this, Resource.Layout.device_name);
			
			// Find and set up the ListView for paired devices
			var pairedListView = FindViewById<ListView> (Resource.Id.paired_devices);
			pairedListView.Adapter = pairedDevicesArrayAdapter;
			pairedListView.ItemClick += DeviceListClick;
			
			// Find and set up the ListView for newly discovered devices
			var newDevicesListView = FindViewById<ListView> (Resource.Id.new_devices);
			newDevicesListView.Adapter = newDevicesArrayAdapter;
			newDevicesListView.ItemClick += DeviceListClick;
			
			// Register for broadcasts when a device is discovered
			receiver = new Receiver (this);
			var filter = new IntentFilter (BluetoothDevice.ActionFound);
			RegisterReceiver (receiver, filter);
			
			// Register for broadcasts when discovery has finished
			filter = new IntentFilter (BluetoothAdapter.ActionDiscoveryFinished);
			RegisterReceiver (receiver, filter);
			
			// Get the local Bluetooth adapter
			btAdapter = BluetoothAdapter.DefaultAdapter;
			
			// Get a set of currently paired devices
			var pairedDevices = btAdapter.BondedDevices;
			
			// If there are paired devices, add each one to the ArrayAdapter
			if (pairedDevices.Count > 0) {
				FindViewById<View> (Resource.Id.title_paired_devices).Visibility = ViewStates.Visible;
				foreach (var device in pairedDevices) {
					pairedDevicesArrayAdapter.Add (device.Name + "\n" + device.Address);
				}
			} else {
				String noDevices = Resources.GetText (Resource.String.none_paired);
				pairedDevicesArrayAdapter.Add (noDevices);	
			}
			
		}
Пример #10
0
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);
			SetContentView (Resource.Layout.activity_main);
			mReceiver = new Receiver (this);
			mHistoryView = FindViewById<TextView> (Resource.Id.history);
			StartResponderService (ResponderService.ACTION_INCOMING);
		}
        protected override void DoSetUp()
        {
            sender = new Sender();
            receiver = new Receiver();
            transport = new EncryptionAndCompressionTransportDecorator(sender, receiver);

            Console.WriteLine(RijndaelHelper.GenerateNewKey());
        }
Пример #12
0
 public void SendNotification(Receiver receiver,Notification notification)
 {
     agsXMPP.Jid to = new agsXMPP.Jid(receiver.Email);
     agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message(to);
     msg.Body = CreateBody(notification);
     msg.Type = agsXMPP.protocol.client.MessageType.chat;
     _jabberClient.Send(msg);
 }
Пример #13
0
 // Callback method to be called when message arrives
 public void SessionReceiver(Receiver receiver, Message message)
 {
     Console.WriteLine("RECEIVED MESSAGE:");
     Console.WriteLine("#################");
     Console.WriteLine("Message text: ", message.GetContent());
     Console.WriteLine("Correlation ID: ", message.CorrelationId);
     receiver.Session.Acknowledge();
 }
            public override void Handle(Receiver receiver)
            {
                if (receiver.BankTransfers)
                    Console.WriteLine("Transfering with Bank");

                else
                    Successor?.Handle(receiver);
            }
            public override void Handle(Receiver receiver)
            {
                if (receiver.MoneyTransfer)
                    Console.WriteLine("Transfering with WesternUnion");

                else
                    Successor?.Handle(receiver);
            }
            public override void Handle(Receiver receiver)
            {
                if (receiver.PayPalTransfer)
                    Console.WriteLine("Transfering with PayPal");

                else
                    Successor?.Handle(receiver);
            }
Пример #17
0
 /// <summary>
 /// Constructor when an Exception has been or will be thrown.
 /// </summary>
 /// <param name="re">The corresponding Exception</param>
 /// <param name="fatal">Set to true if the fault requires the serial port to be closed.</param>
 /// <param name="receiver">The Receiver object associated with the VEMCO hardware.</param>
 /// <param name="portName">The name of the serial port it is connected to (i.e. COM1)</param>
 /// <param name="serialNumber">The serial number of the receiver.</param>
 /// <param name="model">The model of the receiver.</param>
 /// <param name="config">The json object for the configration file.</param>
 public ExcepReceiver(Exception re, Boolean fatal, Receiver receiver, string portName, string serialNumber, string model, FridayThe13th.JsonObject config)
     : base("Receiver Exception: " + receiver + "entered exception condition. Fatal? " + fatal + 
      " Exception text: " + re.ToString(), receiver, portName, serialNumber, model, config)
 {
     this["exception"] = re;
     this["fatal"] = fatal;
     this["note"] = re.ToString();
 }
Пример #18
0
        public static void Main()
        {
            IReceiver receiver = new Receiver();
            Command command = new ConcreteCommand(receiver);
            Invoker invoker = new Invoker();

            invoker.SetCommand(command);
            invoker.ExecuteCommand();
        }
Пример #19
0
 public WebSocketConnection(WebSocketWrapper websocket)
 {
     Sender = new Sender();
     Receiver = new Receiver();
     Sender.WebSocket = websocket;
     Receiver.WebSocket = websocket;
     Sender.Connection = this;
     Receiver.Connection = this;
 }
Пример #20
0
        static void Main(string[] args)
        {
            var receiver = new Receiver ();
              var command = new ConcreteCommand (receiver);
              var invoker = new Invoker ();

              invoker.Command = command;
              invoker.ExecuteCommand ();
        }
Пример #21
0
        static void Main(string[] args)
        {
            Receiver receiver = new Receiver();
            Command command = new ConcreteCommand(receiver);
            Invoker invoker = new Invoker();
            invoker.SetCommand(command);
            invoker.ExecuteCommand();

            Console.Read();
        }
Пример #22
0
    public static void AddReceiver(Receiver act)
    {
        List<Receiver> acts;

        if (!mReceivers.TryGetValue(act.type, out acts))
        {
            acts = new List<Receiver>();
            mReceivers.Add(act.type, acts);
        }
        acts.Add(act);
    }
Пример #23
0
        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now);

            Receiver receiver = new Receiver();

            eksTRAKTOR engine = new eksTRAKTOR(receiver, receiver);
            engine.run(@"K:\dump\enwiki-20091103-pages-articles-PART-SMALL.xml", @"L:\articles-enwiki");

            forever.WaitOne();
        }
Пример #24
0
 //private string _assemblyPath;
 // Konstruktor
 public PersonModelSender()
     : base("B3.Budgie.PersonModelSender")
 {
     // _assemblyPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
     //Person Model request Receiver
     _requestReceiver = new Receiver("semaine.data.user.request");
     _receivers.AddLast(_requestReceiver);
     // Person Model Sender
     _personModelSender = new XMLSender("semaine.data.user", "XML", this.GetType().Name);
     _senders.AddLast(_personModelSender);
 }
Пример #25
0
        public SurroundingsModelSender()
            : base("B3.Budgie.SurroundingsModelSender")
        {
            _assemblyPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);

            _requestReceiver = new Receiver("semaine.data.surroundings.request");
            _receivers.AddLast(_requestReceiver);

            _surroundingsModelSender = new XMLSender("semaine.data.surroundings", "XML", this.GetType().Name);
            _senders.AddLast(_surroundingsModelSender);
        }
Пример #26
0
  public static void Main( string[] args )
  {	
    // Create receiver, command, and invoker
    Receiver r = new Receiver();
    Command c = new ConcreteCommand( r );
    Invoker i = new Invoker();

    // Set and execute command
    i.SetCommand(c);
    i.ExecuteCommand();

  }
Пример #27
0
        public static void Main(string[] args) {
            var receiver = new Receiver<TweetStatus>();
            receiver.Received += tweetStatus =>
                Console.WriteLine($"Id: {tweetStatus.CorrelationId} - {tweetStatus.Status}");

            receiver.Receive();

            Console.WriteLine("Press any key to stop...");
            Console.ReadKey();

            receiver.Stop();
        }
Пример #28
0
        static void Main(string[] args)
        {
            DataListener listener = new Listener();

            using (Receiver receiver = new Receiver(new StringMap()))
            {
                receiver.addDataListener(listener);

                System.Console.ReadLine();
            }
            System.Console.WriteLine(count);
            System.Console.ReadLine();
        }
Пример #29
0
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        static void Demo()
        {
            // Create receiver, command, and invoker
            Receiver receiver = new Receiver();
            Command command = new ConcreteCommand(receiver);
            Invoker invoker = new Invoker();

            // Set and execute command
            invoker.SetCommand(command);
            invoker.ExecuteCommand();

            // Wait for user
            Console.ReadKey();
        }
Пример #30
0
        protected override void OnStart(string[] args)
        {
            //Assembly.LoadFrom(@"InterceptKeys.exe");
            //var instance = AppDomain.CurrentDomain.CreateInstance("InterceptKeys", "InterceptKeys.InterceptKeys");
            //var instance = Activator.CreateInstance(Type.GetType("InterceptKeys.InterceptKeys,InterceptKeys"));
            Task.Factory.StartNew(() =>
            {
                var pipe = new Receiver();
                pipe.Data += (data) =>
                {
                    LogManager.Logger.Debug(string.Format("收到数据:{0}", string.Join(",", data)));
                };
                if (pipe.ServiceOn() == false)
                {
                    LogManager.Logger.Error(pipe.error);
                }

                //start socket server
                this.serverGuid = Guid.NewGuid();
                this.server = new BasicSocketServer();
                this.server.ReceiveMessageEvent += (handler, message) =>
                {
                    BasicMessage receivedMessage = (BasicMessage)message;
                    byte[] buffer = receivedMessage.GetBuffer();
                    if (buffer.Length > 1000)
                    {
                        LogManager.Logger.Debug(string.Format("Received a long message of {0} bytes", receivedMessage.MessageLength), "Socket Server");
                        return;
                    }
                    string s = System.Text.ASCIIEncoding.Unicode.GetString(buffer);
                    LogManager.Logger.Debug(string.Format("Received Message:{0} from {1}", s, receivedMessage.ClientUID));
                    var client = server.GetClientList().FirstOrDefault(c => c.ClientUID == handler.ToString());
                    client.TcpSocketClientHandler.SendAsync(new BasicMessage(this.serverGuid, System.Text.ASCIIEncoding.Unicode.GetBytes("收到")));
                };
                this.server.ConnectionEvent += (handler) =>
                {
                    LogManager.Logger.Debug(string.Format("A client is connected to the server"), "Socket Server");
                };
                this.server.CloseConnectionEvent += (handler) =>
                {
                    LogManager.Logger.Debug(string.Format("A client is disconnected from the server"), "Socket Server");
                };
                this.server.Init(new IPEndPoint(IPAddress.Loopback, 8100));
                this.server.StartUp();

                ClosePreProcess();
                Process.Start(@"InterceptKeys.exe");
            });
        }
Пример #31
0
 public DoorDrawer(Receiver receiver, ref List <Point> doorAvailablePoints)
     : base(receiver)
 {
     this._doorAvailablePoints = doorAvailablePoints;
     this._doorPoints          = new Stack <Point>();
 }
Пример #32
0
        /// <summary>
        /// 根据XML信息填充实实体
        /// </summary>
        /// <typeparam name="T">MessageBase为基类的类型,Response和Request都可以</typeparam>
        /// <param name="entity">实体</param>
        /// <param name="doc">XML</param>
        public static void FillEntityWithXml <T>(this T entity, XDocument doc) where T : /*MessageBase*/ class, new()
        {
            entity = entity ?? new T();
            var root = doc.Root;

            var props = entity.GetType().GetProperties();

            foreach (var prop in props)
            {
                var propName = prop.Name;
                if (root.Element(propName) != null)
                {
                    switch (prop.PropertyType.Name)
                    {
                    //case "String":
                    //    goto default;
                    case "DateTime":
                    case "DateTimeOffset":
                    case "Int32":
                    case "Int32[]":     //增加int[]
                    case "Int64":
                    case "Int64[]":     //增加long[]
                    case "Double":
                    case "Nullable`1":  //可为空对象
                        EntityUtility.FillSystemType(entity, prop, root.Element(propName).Value);
                        break;

                    case "Boolean":
                        if (propName == "FuncFlag")
                        {
                            EntityUtility.FillSystemType(entity, prop, root.Element(propName).Value == "1");
                        }
                        else
                        {
                            goto default;
                        }
                        break;

                    //以下为枚举类型
                    case "ContactChangeType":
                        //已设为只读
                        //prop.SetValue(entity, MsgTypeHelper.GetRequestMsgType(root.Element(propName).Value), null);
                        break;

                    case "RequestMsgType":
                        //已设为只读
                        //prop.SetValue(entity, MsgTypeHelper.GetRequestMsgType(root.Element(propName).Value), null);
                        break;

                    case "ResponseMsgType":     //Response适用
                                                //已设为只读
                                                //prop.SetValue(entity, MsgTypeHelper.GetResponseMsgType(root.Element(propName).Value), null);
                        break;

                    case "ThirdPartyInfo":     //ThirdPartyInfo适用
                                               //已设为只读
                                               //prop.SetValue(entity, MsgTypeHelper.GetResponseMsgType(root.Element(propName).Value), null);
                        break;

                    case "Event":
                        //已设为只读
                        //prop.SetValue(entity, EventHelper.GetEventType(root.Element(propName).Value), null);
                        break;

                    //以下为实体类型
                    case "List`1":                                 //List<T>类型,ResponseMessageNews适用
                        var genericArguments = prop.PropertyType.GetGenericArguments();
                        if (genericArguments[0].Name == "Article") //ResponseMessageNews适用
                        {
                            //文章下属节点item
                            List <Article> articles = new List <Article>();
                            foreach (var item in root.Element(propName).Elements("item"))
                            {
                                var article = new Article();
                                FillEntityWithXml(article, new XDocument(item));
                                articles.Add(article);
                            }
                            prop.SetValue(entity, articles, null);
                        }
                        else if (genericArguments[0].Name == "MpNewsArticle")
                        {
                            List <MpNewsArticle> mpNewsArticles = new List <MpNewsArticle>();
                            foreach (var item in root.Elements(propName))
                            {
                                var mpNewsArticle = new MpNewsArticle();
                                FillEntityWithXml(mpNewsArticle, new XDocument(item));
                                mpNewsArticles.Add(mpNewsArticle);
                            }
                            prop.SetValue(entity, mpNewsArticles, null);
                        }
                        else if (genericArguments[0].Name == "PicItem")
                        {
                            List <PicItem> picItems = new List <PicItem>();
                            foreach (var item in root.Elements(propName).Elements("item"))
                            {
                                var    picItem   = new PicItem();
                                var    picMd5Sum = item.Element("PicMd5Sum").Value;
                                Md5Sum md5Sum    = new Md5Sum()
                                {
                                    PicMd5Sum = picMd5Sum
                                };
                                picItem.item = md5Sum;
                                picItems.Add(picItem);
                            }
                            prop.SetValue(entity, picItems, null);
                        }
                        break;

                    case "Image":     //ResponseMessageImage适用
                        Image image = new Image();
                        FillEntityWithXml(image, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, image, null);
                        break;

                    case "Voice":     //ResponseMessageVoice适用
                        Voice voice = new Voice();
                        FillEntityWithXml(voice, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, voice, null);
                        break;

                    case "Video":     //ResponseMessageVideo适用
                        Video video = new Video();
                        FillEntityWithXml(video, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, video, null);
                        break;

                    case "ScanCodeInfo":     //扫码事件中的ScanCodeInfo适用
                        ScanCodeInfo scanCodeInfo = new ScanCodeInfo();
                        FillEntityWithXml(scanCodeInfo, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, scanCodeInfo, null);
                        break;

                    case "SendLocationInfo":     //弹出地理位置选择器的事件推送中的SendLocationInfo适用
                        SendLocationInfo sendLocationInfo = new SendLocationInfo();
                        FillEntityWithXml(sendLocationInfo, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, sendLocationInfo, null);
                        break;

                    case "SendPicsInfo":     //系统拍照发图中的SendPicsInfo适用
                        SendPicsInfo sendPicsInfo = new SendPicsInfo();
                        FillEntityWithXml(sendPicsInfo, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, sendPicsInfo, null);
                        break;

                    case "BatchJobInfo":     //异步任务完成事件推送BatchJob
                        BatchJobInfo batchJobInfo = new BatchJobInfo();
                        FillEntityWithXml(batchJobInfo, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, batchJobInfo, null);
                        break;

                    case "AgentType":
                    {
                        AgentType tp;
                        if (Enum.TryParse(root.Element(propName).Value, out tp))
                        {
                            prop.SetValue(entity, tp, null);
                        }
                        break;
                    }

                    case "Receiver":
                    {
                        Receiver receiver = new Receiver();
                        FillEntityWithXml(receiver, new XDocument(root.Element(propName)));
                        prop.SetValue(entity, receiver, null);
                        break;
                    }

                    default:
                        prop.SetValue(entity, root.Element(propName).Value, null);
                        break;
                    }
                }
                else if (prop.PropertyType.Name == "List`1")//客服回调特殊处理
                {
                    var genericArguments = prop.PropertyType.GetGenericArguments();
                    if (genericArguments[0].Name == "RequestBase")
                    {
                        List <RequestBase> items = new List <RequestBase>();
                        foreach (var item in root.Elements("Item"))
                        {
                            RequestBase reqItem    = null;
                            var         msgTypeEle = item.Element("MsgType");
                            if (msgTypeEle != null)
                            {
                                RequestMsgType type         = RequestMsgType.Unknown;
                                var            parseSuccess = false;
                                parseSuccess = Enum.TryParse(msgTypeEle.Value, true, out type);
                                if (parseSuccess)
                                {
                                    switch (type)
                                    {
                                    case RequestMsgType.Event:
                                    {
                                        reqItem = new RequestEvent();
                                        break;
                                    }

                                    case RequestMsgType.File:
                                    {
                                        reqItem = new Entities.Request.KF.RequestMessageFile();
                                        break;
                                    }

                                    case RequestMsgType.Image:
                                    {
                                        reqItem = new Entities.Request.KF.RequestMessageImage();
                                        break;
                                    }

                                    case RequestMsgType.Link:
                                    {
                                        reqItem = new Entities.Request.KF.RequestMessageLink();
                                        break;
                                    }

                                    case RequestMsgType.Location:
                                    {
                                        reqItem = new Entities.Request.KF.RequestMessageLocation();
                                        break;
                                    }

                                    case RequestMsgType.Text:
                                    {
                                        reqItem = new Entities.Request.KF.RequestMessageText();

                                        break;
                                    }

                                    case RequestMsgType.Voice:
                                    {
                                        reqItem = new Entities.Request.KF.RequestMessageVoice();
                                        break;
                                    }
                                    }
                                }
                            }
                            if (reqItem != null)
                            {
                                FillEntityWithXml(reqItem, new XDocument(item));
                                items.Add(reqItem);
                            }
                        }
                        prop.SetValue(entity, items, null);
                    }
                }
            }
        }
Пример #33
0
 public NATServer()
 {
     _server                 = new Receiver();
     _server.OnAccepted     += _server_OnAccepted;
     _server.OnDisconnected += _server_OnDisconnected;
 }
Пример #34
0
 public override void  Execute()
 {
     Receiver.Operation(Command.Delete, Entity);
 }
Пример #35
0
 public void SetReceiver(Receiver receiver)
 {
     this.receiver = receiver;
 }
Пример #36
0
 public bool Equals(PerformerReceiverPair <TPerformer, TReceiver> other) => Performer.Equals(other.Performer) && Receiver.Equals(other.Receiver);
Пример #37
0
 public PlayCommand(Receiver receiver)
 {
     this.Receiver = receiver;
 }
Пример #38
0
 public ComplexCommand(Receiver receiver, type2 firstContextData, type3 secondContextData)
 {
     this.receiver          = receiver;
     this.firstContextData  = firstContextData;
     this.secondContextData = secondContextData;
 }
 public void setReceiver(Receiver target)
 {
     receiver = target;
 }
 public Finish(Receiver receiver)
 {
     this.receiver = receiver;
 }
Пример #41
0
 // Constructor
 public ConcreteCommand(Receiver receiver)
 {
     this.receiver = receiver;
 }
Пример #42
0
 public OpenSmileVisualizer(Pipeline pipeline)
 {
     In = pipeline.CreateReceiver <Vector <float> >(this, Receive, nameof(In));
     pipeline.PipelineCompleted += (sender, e) => Vector = null;
 }
Пример #43
0
        public async Task MultiUserMatchFlow()
        {
            await Hub.JoinRoom(ROOM_ID);

            SetUserContext(ContextUser2);
            await Hub.JoinRoom(ROOM_ID);

            using (var room = await Rooms.GetForUse(ROOM_ID))
                Assert.All(room.Item?.Users, u => Assert.Equal(MultiplayerUserState.Idle, u.State));

            // both users become ready.
            SetUserContext(ContextUser);
            await Hub.ChangeState(MultiplayerUserState.Ready);

            SetUserContext(ContextUser2);
            await Hub.ChangeState(MultiplayerUserState.Ready);

            using (var room = await Rooms.GetForUse(ROOM_ID))
                Assert.All(room.Item?.Users, u => Assert.Equal(MultiplayerUserState.Ready, u.State));

            // host requests the start of the match.
            SetUserContext(ContextUser);
            await Hub.StartMatch();

            // server requests the all users start loading.
            GameplayReceiver.Verify(r => r.LoadRequested(), Times.Once);
            using (var room = await Rooms.GetForUse(ROOM_ID))
                Assert.All(room.Item?.Users, u => Assert.Equal(MultiplayerUserState.WaitingForLoad, u.State));
            Receiver.Verify(r => r.UserStateChanged(USER_ID, MultiplayerUserState.WaitingForLoad), Times.Once);
            Receiver.Verify(r => r.UserStateChanged(USER_ID_2, MultiplayerUserState.WaitingForLoad), Times.Once);

            // first user finishes loading.
            SetUserContext(ContextUser);
            await Hub.ChangeState(MultiplayerUserState.Loaded);

            // room is still waiting for second user to load.
            using (var room = await Rooms.GetForUse(ROOM_ID))
                Assert.Equal(MultiplayerRoomState.WaitingForLoad, room.Item?.State);
            Receiver.Verify(r => r.MatchStarted(), Times.Never);

            // second user finishes loading, which triggers gameplay to start.
            SetUserContext(ContextUser2);
            await Hub.ChangeState(MultiplayerUserState.Loaded);

            using (var room = await Rooms.GetForUse(ROOM_ID))
            {
                Assert.Equal(MultiplayerRoomState.Playing, room.Item?.State);
                Receiver.Verify(r => r.MatchStarted(), Times.Once);
                Assert.All(room.Item?.Users, u => Assert.Equal(MultiplayerUserState.Playing, u.State));
                Receiver.Verify(r => r.UserStateChanged(USER_ID, MultiplayerUserState.Playing), Times.Once);
                Receiver.Verify(r => r.UserStateChanged(USER_ID_2, MultiplayerUserState.Playing), Times.Once);
            }

            // first user finishes playing.
            SetUserContext(ContextUser);
            await Hub.ChangeState(MultiplayerUserState.FinishedPlay);

            using (var room = await Rooms.GetForUse(ROOM_ID))
            {
                // room is still waiting for second user to finish playing.
                Assert.Equal(MultiplayerRoomState.Playing, room.Item?.State);
                Receiver.Verify(r => r.UserStateChanged(USER_ID, MultiplayerUserState.FinishedPlay), Times.Once);
                Receiver.Verify(r => r.UserStateChanged(USER_ID_2, MultiplayerUserState.Playing), Times.Once);
                Receiver.Verify(r => r.ResultsReady(), Times.Never);
            }

            // second user finishes playing.
            SetUserContext(ContextUser2);
            await Hub.ChangeState(MultiplayerUserState.FinishedPlay);

            using (var room = await Rooms.GetForUse(ROOM_ID))
            {
                // server lets players know that results are ready for consumption (all players have finished).
                Receiver.Verify(r => r.ResultsReady(), Times.Once);
                Assert.All(room.Item?.Users, u => Assert.Equal(MultiplayerUserState.Results, u.State));
                Receiver.Verify(r => r.UserStateChanged(USER_ID, MultiplayerUserState.Results), Times.Once);
                Receiver.Verify(r => r.UserStateChanged(USER_ID_2, MultiplayerUserState.Results), Times.Once);

                Assert.Equal(MultiplayerRoomState.Open, room.Item?.State);
            }
        }
Пример #44
0
 /// <summary>
 /// Gets a hash code for the current PerformerReceiverPair&lt;TPerformer, TReceiver&gt; instance.
 /// </summary>
 /// <returns>A hash code for the current PerformerReceiverPair&lt;TPerformer, TReceiver&gt; instance.</returns>
 public override int GetHashCode() => Performer.GetHashCode() ^ Receiver.GetHashCode();
 public override long GetPreviousTransactionId(Transaction transaction)
 {
     Receiver.GetPreviousTransactionId(transaction, AccountId, out var transactionId);
     return(transactionId);
 }
Пример #46
0
 protected virtual void OnTriggerExit(Collider other)
 {
     Receiver.OnTriggerExitReceived(other, this);
 }
Пример #47
0
 public void Start(CancellationToken token)
 {
     OnStarted(new ConnectionStartedEventArgs(token));
     Receiver?.Start(token);
 }
Пример #48
0
        static void Main(string[] args)
        {
            try
            {
                if (args.Length <= 1)
                {
                    ShowUsage();
                    System.Environment.Exit(1);
                }

                Receiver           receiver      = new Receiver();
                CancelObject       cancel_object = new CancelObject();
                NicoNetwork        network       = new NicoNetwork();
                NicoNetworkManager network_mgr   = new NicoNetworkManager(network, receiver, cancel_object);
                NicoMylist         nico_mylist   = new NicoMylist(network, receiver, cancel_object);

                for (int i = 2; i < args.Length; ++i)
                {
                    switch (args[i])
                    {
                    case "-i":
                        if (i < args.Length - 1)
                        {
                            input_rank_file_ = Dequote(args[i + 1]);
                            if (!File.Exists(input_rank_file_))
                            {
                                System.Console.WriteLine("入力ランクファイルが存在しません。");
                                System.Environment.Exit(1);
                            }
                            ++i;
                        }
                        else
                        {
                            System.Console.WriteLine("入力ランクファイルを指定してください。");
                            System.Environment.Exit(1);
                        }
                        break;

                    case "-o":
                        if (i < args.Length - 1)
                        {
                            output_rank_file_ = Dequote(args[i + 1]);
                            ++i;
                        }
                        break;

                    case "-c":
                        if (i < args.Length - 1)
                        {
                            config_file_ = Dequote(args[i + 1]);
                            ++i;
                        }
                        break;
                    }
                }

                if (string.IsNullOrEmpty(config_file_)) // config ファイル指定なしの場合
                {
                    config_file_ = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "config.txt");
                    if (!File.Exists(config_file_))
                    {
                        System.Console.WriteLine("最初に nicorank.exe を起動してオプションを指定してください。");
                        System.Environment.Exit(1);
                    }
                }
                else
                {
                    if (!File.Exists(config_file_))
                    {
                        System.Console.WriteLine("config ファイルが見つかりません。");
                        System.Environment.Exit(1);
                    }
                }
                ParseConfig(IJFile.Read(config_file_));

                InputOutputOption iooption = new InputOutputOption(!string.IsNullOrEmpty(input_rank_file_), !string.IsNullOrEmpty(output_rank_file_));
                if (string.IsNullOrEmpty(input_rank_file_)) // 標準入力から
                {
                    iooption.SetInputFromStdin();
                }
                else
                {
                    iooption.SetInputPath(input_rank_file_);
                }
                if (string.IsNullOrEmpty(output_rank_file_)) // 標準出力へ
                {
                    iooption.SetOutputRankFileDelegate(delegate(string s)
                    {
                        System.Console.Write(s);
                    });
                }
                else
                {
                    iooption.SetOutputPath(output_rank_file_);
                }

                switch (args[0])
                {
                case "download":
                    switch (args[1])
                    {
                    case "ranking":
                        CategoryManager category_manager = new CategoryManager();
                        category_manager.SetString(option_["dlrank_category"]);
                        category_manager.ParseCategoryFile();
                        network_mgr.DownloadRanking(GetDownloadKind(category_manager), option_["textBoxRankDlDir"]);
                        break;

                    case "video":
                        LoadCookie(network);
                        network_mgr.DownloadFlv(iooption, option_["textBoxDlInterval"], MakeDirectoryPath(option_["textBoxFlvDlDir"]),
                                                bool.Parse(option_["checkBoxIsFixFlvDlExtension"]));
                        break;

                    default:
                        ShowInvalidAndUsage(args[1]);
                        System.Environment.Exit(1);
                        break;
                    }
                    break;

                case "list":
                    switch (args[1])
                    {
                    case "searchtag":
                        network_mgr.MakeListAndWriteBySearchTag(iooption, MakeSearchingTagOption(), MakeRankingMethod());
                        break;

                    default:
                        ShowInvalidAndUsage(args[1]);
                        System.Environment.Exit(1);
                        break;
                    }
                    break;

                case "mylist":
                    switch (args[1])
                    {
                    case "add":
                        LoadCookie(network);
                        nico_mylist.AddMylist(iooption, option_["textBoxMylistId"]);
                        break;

                    default:
                        ShowInvalidAndUsage(args[1]);
                        System.Environment.Exit(1);
                        break;
                    }
                    break;

                default:
                    ShowInvalidAndUsage(args[0]);
                    System.Environment.Exit(1);
                    break;
                }
            }
            catch (KeyNotFoundException e)
            {
                System.Console.WriteLine("エラーが発生しました。");
                System.Console.WriteLine("キーが存在しません: " + e.Data.ToString());
            }
            catch (Exception e)
            {
                System.Console.WriteLine("エラーが発生しました。");
                System.Console.WriteLine("エラー\r\n---メッセージ\r\n" +
                                         e.Message + "\r\n---ソース\r\n" + e.Source + "\r\n---スタックトレース\r\n" +
                                         e.StackTrace + "\r\n---ターゲット\r\n" + e.TargetSite + "\r\n---文字列\r\n" +
                                         e.ToString());
            }
        }
Пример #49
0
    public void ExitBehaviour()
    {
        m_Particles.lifetimeColor = GetGradientExit(colorToEmit);

        if (otherPipeHead.onActivated)
        {
            theSprite.color = Color.Lerp(theSprite.color, Color.white, 0.5f);

            m_LineRenderer.SetColors(colorToEmit, colorToEmit);
            m_Particles.emit = true;
        }
        else
        {
            Color nothing = new Color(0, 0, 0, 0);
//			theSprite.color = Color.Lerp(theSprite.color, nothing, 0.5f);

            m_LineRenderer.SetColors(nothing, nothing);
            m_Particles.emit = false;
        }

        // target - origin
        Vector2      dir = m_Raycast.position - transform.position;
        RaycastHit2D hit = Physics2D.Raycast(m_Raycast.position, dir, laserDistance, WhatIsReceiver);

        if (hit)
        {
//			if (amount)
//				m_Particles.particleCount = Mathf.FloorToInt(Vector3.Distance(transform.position, hit.point) * m_Multiplier);
//			else
            // Set overflow offset y to hit distance (divide by particle count which by default is 1000)
            m_Particles.overflowOffset.y = Vector3.Distance(transform.position, hit.point) / m_Particles.particleCount;
            m_LineRenderer.SetPosition(1, new Vector3(0, hit.distance, 0));

            if (otherPipeHead.onActivated /* && emit*/)
            {
                if (hit.collider.tag == "Receiver")
                {
                    Receiver cacheReceiver = hit.collider.GetComponent <Receiver>();
                    cacheReceiver.AddColor(colorToEmit);

                    UpdateManipulator(cacheReceiver.transform.position, cacheReceiver.currentColor);
                    EnableManipulator(true);
                }
                else if (hit.collider.tag == "Obstacle")
                {
                    Transform cacheObstacle = hit.collider.transform;
                    UpdateManipulator(cacheObstacle.position, colorToEmit);
                    EnableManipulator(true);
                }
                else if (hit.collider.tag == "Pipeline")
                {
                    PipeHead cachePipeHead = hit.collider.GetComponent <PipeHead>();
                    cachePipeHead.colorToEmit = colorToEmit;
                    cachePipeHead.Entry       = true;

                    UpdateManipulator(cachePipeHead.transform.position, colorToEmit);
                    EnableManipulator(true);
                }
            }
        }
        else
        {
//			if (amount)
//				m_Particles.particleCount = Mathf.FloorToInt(laserDistance * m_Multiplier);
//			else
            // Render laser to laserMaxDistance on clear sight
            m_Particles.overflowOffset.y = laserDistance / m_Particles.particleCount;
            m_LineRenderer.SetPosition(1, new Vector3(0, laserDistance, 0));
            EnableManipulator(false);
        }
        Debug.DrawRay(m_Raycast.position, dir, Color.magenta);

        otherPipeHead.Entry = false;
    }
Пример #50
0
 public RedoCommand(Receiver _receiver)
 {
   this.receiver = _receiver;
 }
Пример #51
0
 public override void Execute()
 {
     Receiver.Select();
 }
 public static List <ItemDisc> Category(string s) //return a struct list of products in a certain category
 {
     return(new List <ItemDisc>(Receiver.ReadFromProduct("SELECT * FROM Product WHERE type = '" + s + "';")));
 }
Пример #53
0
 public LightOnCommand(Receiver receiver)
 {
     _receiver = receiver;
 }
Пример #54
0
        /// <summary>
        /// ユーザーリストを取得:メイン部分
        /// </summary>
        /// <param name="userId">ユーザーID</param>
        /// <returns>ユーザーリスト</returns>
        /// <remarks>メイン処理</remarks>
        private List <UserAndReceiver> Find(UserId userId)
        {
            var result = new List <UserAndReceiver>();

            // パラメータ初期化
            db.ClearParam();

            var sql = new StringBuilder();

            sql.AppendLine("SELECT");
            sql.AppendLine(" m_user.unique_name");
            sql.AppendLine(" ,m_user.password");
            sql.AppendLine(" ,m_user.salt");
            sql.AppendLine(" ,m_user.disabled");
            sql.AppendLine(" ,m_user.version u_version");
            sql.AppendLine(" ,m_receiver.fullname");
            sql.AppendLine(" ,m_receiver.display_list");
            sql.AppendLine(" ,m_receiver.is_admin_role");
            sql.AppendLine(" ,m_receiver.is_viewlist_role");
            sql.AppendLine(" ,m_receiver.version r_version");
            sql.AppendLine("FROM");
            sql.AppendLine("  m_user");
            sql.AppendLine("LEFT OUTER JOIN  m_receiver ");
            sql.AppendLine("  ON m_receiver.unique_name = m_user.unique_name");

            // ユーザ指定
            if (userId != null)
            {
                sql.AppendLine("WHERE");
                sql.AppendLine("  m_user.unique_name = @unique_name");

                // Param設定
                db.AddParam("@unique_name", userId.Value);
            }
            else
            {
                sql.AppendLine("ORDER BY m_user.unique_name");
            }

            var sqlResult = db.Fill(sql.ToString());

            foreach (DataRow row in sqlResult.Rows)
            {
                // ユーザー
                var id       = row["unique_name"].ToString();
                var password = row["password"].ToString();
                var salt     = row["salt"].ToString();
                var version  = int.Parse(row["u_version"].ToString());

                var disabled = false;
                if (!bool.TryParse(row["disabled"].ToString(), out disabled))
                {
                    if (int.TryParse(row["disabled"].ToString(), out var disabledValue))
                    {
                        disabled = disabledValue == 1;
                    }
                }

                var user = User.Create(id, password, salt, version, disabled);

                // 受信者
                Receiver receiver = null;
                if (row["r_version"] != DBNull.Value)
                {
                    var name           = row["fullname"].ToString();
                    var displayList    = false;
                    var isAdminRole    = false;
                    var isViewlistRole = false;
                    var r_version      = int.Parse(row["r_version"].ToString());

                    if (!bool.TryParse(row["display_list"].ToString(), out displayList))
                    {
                        if (int.TryParse(row["display_list"].ToString(), out var displayListValue))
                        {
                            displayList = displayListValue == 1;
                        }
                    }

                    if (!bool.TryParse(row["is_admin_role"].ToString(), out isAdminRole))
                    {
                        if (int.TryParse(row["is_admin_role"].ToString(), out var isAdminRoleValue))
                        {
                            isAdminRole = isAdminRoleValue == 1;
                        }
                    }

                    if (!bool.TryParse(row["is_viewlist_role"].ToString(), out isViewlistRole))
                    {
                        if (int.TryParse(row["is_viewlist_role"].ToString(), out var isViewlistRoleValue))
                        {
                            isViewlistRole = isViewlistRoleValue == 1;
                        }
                    }

                    receiver = Receiver.Create(name, id, displayList, isAdminRole, isViewlistRole, r_version);
                }

                // 集約エンティティ作成
                result.Add(UserAndReceiver.Create(user, receiver));
            }
            return(result);
        }
 public static ItemDisc GetItemInfo(string s)    //returns ItemDisc struct with product's information
 {
     return(Receiver.ReadFromProduct("SELECT * from Product WHERE name = '" + s + "';")[0]);
 }
        private async Task <IActionResult> MessengerProductListResult(Type childType, int minPrice, int maxPrice)
        {
            MessCard[] messages;
            if (childType == typeof(Toy))
            {
                messages = (await new ToyDAO().ReadAllChild(false))
                           .Include(x => x.Product)
                           .Include(x => x.Product.ProductForPetType)
                           .Where(x => x.Product.Price >= minPrice &&
                                  x.Product.Price <= maxPrice &&
                                  x.Product.ProductForPetType.Any(y => y.PetType.Name == Storage[MsgId, 1, ""]))
                           .Select(x => new MessCard
                {
                    type     = 1,
                    platform = "facebook",
                    title    = x.Product.Name,
                    subtitle = x.Product.Price.ToString(),
                    imageUrl = x.Product.ImgUrl,
                    buttons  = new[]
                    {
                        new Button
                        {
                            text     = "Đặt liền",
                            postback = x.ProductId
                        }
                    }
                }).ToArray();
            }
            else if (childType == typeof(Food))
            {
                messages = (await new FoodDAO().ReadAllChild(false))
                           .Include(x => x.Product)
                           .Include(x => x.Product.ProductForPetType)
                           .Where(x => x.Product.Price >= minPrice &&
                                  x.Product.Price <= maxPrice &&
                                  x.Product.ProductForPetType.Any(y => y.PetType.Name == Storage[MsgId, 1, ""]))
                           .Select(x => new MessCard
                {
                    type     = 1,
                    platform = "facebook",
                    title    = x.Product.Name,
                    subtitle = x.Product.Price.ToString(),
                    imageUrl = x.Product.ImgUrl,
                    buttons  = new[]
                    {
                        new Button
                        {
                            text     = "Đặt liền",
                            postback = x.ProductId
                        }
                    }
                }).ToArray();
            }
            else if (childType == typeof(Cage))
            {
                messages = (await new CageDAO().ReadAllChild(false))
                           .Include(x => x.Product)
                           .Include(x => x.Product.ProductForPetType)
                           .Where(x => x.Product.Price >= minPrice &&
                                  x.Product.Price <= maxPrice &&
                                  x.Product.ProductForPetType.Any(y => y.PetType.Name == Storage[MsgId, 1, ""]))
                           .Select(x => new MessCard
                {
                    type     = 1,
                    platform = "facebook",
                    title    = x.Product.Name,
                    subtitle = x.Product.Price.ToString(),
                    imageUrl = x.Product.ImgUrl,
                    buttons  = new[]
                    {
                        new Button
                        {
                            text     = "Đặt liền",
                            postback = x.ProductId
                        }
                    }
                }).ToArray();
            }
            else
            {
                messages = (await new AccessoryDAO().ReadAllChild(false))
                           .Include(x => x.Product)
                           .Include(x => x.Product.ProductForPetType)
                           .Where(x => x.Product.Price >= minPrice &&
                                  x.Product.Price <= maxPrice &&
                                  x.Product.ProductForPetType.Any(y => y.PetType.Name == Storage[MsgId, 1, ""]))
                           .Select(x => new MessCard
                {
                    type     = 1,
                    platform = "facebook",
                    title    = x.Product.Name,
                    subtitle = x.Product.Price.ToString(),
                    imageUrl = x.Product.ImgUrl,
                    buttons  = new[]
                    {
                        new Button
                        {
                            text     = "Đặt liền",
                            postback = x.ProductId
                        }
                    }
                }).ToArray();
            }

            //Return message
            if (messages.Any())
            {
                return(Receiver.Json(new
                {
                    speech = "",
                    messages
                }));
            }

            //Delete data when no products found
            Storage.RemoveId(MsgId);
            return(Receiver.Json(new
            {
                speech = "Xin lỗi bạn. Chúng mình tạm thời không còn bán loại hàng này."
            }));
        }
        public override async Task <IActionResult> Result()
        {
            var currentStep = Storage.GetCurrentStep(MsgId);

            //Switch to next step = currentStep + 1
            switch (currentStep + 1)
            {
                #region step 1
            case 1:
            {
                Storage.AddOrUpdateToStorage(MsgId, 1, null);
                using (var petTypeDAO = new PetTypeDAO())
                {
                    return(Receiver.Json(new
                        {
                            speech = "",
                            messages = new[]
                            {
                                new
                                {
                                    type = 2,
                                    platform = "facebook",
                                    title = "Bạn muốn sản phẩm cho thú cưng nào ạ?",
                                    replies = (await petTypeDAO.ReadAll(false))
                                              .Select(x => x.Name)
                                              .ToArray()
                                }
                            }
                        }));
                }
            }

                #endregion
                #region Step 2
            case 2:
            {
                //Check if answer is valid
                if (!_isSkipValidation)
                {
                    using (var petTypeDAO = new PetTypeDAO())
                    {
                        if (await(await petTypeDAO.ReadAll(false))
                            .Select(x => x.Name)
                            .AllAsync(x => x != MsgReply))
                        {
                            _isSkipValidation = true;
                            goto case 1;
                        }
                    }
                }

                Storage.AddOrUpdateToStorage(MsgId, 2, null);
                Storage.AddOrUpdateToStorage(MsgId, 1, MsgReply);
                return(Receiver.Json(new
                    {
                        speech = "",
                        messages = new[]
                        {
                            new
                            {
                                type = 2,
                                platform = "facebook",
                                title = "Bạn muốn mua gì cho bé ạ?",
                                replies = new[] { "Đồ chơi", "Thức ăn", "Lồng", "phụ kiện" }
                            }
                        }
                    }));
            }

                #endregion
                #region Step 3
            case 3:
            {
                //Check if answer is valid
                if (!_isSkipValidation)
                {
                    if (new[] { "Đồ chơi", "Thức ăn", "Lồng", "phụ kiện" }.All(x => x != MsgReply))
                    {
                        _isSkipValidation = true;
                        goto case 2;
                    }
                }

                Storage.AddOrUpdateToStorage(MsgId, 3, null);
                Storage.AddOrUpdateToStorage(MsgId, 2, MsgReply);
                return(Receiver.Json(new
                    {
                        speech = "",
                        messages = new[]
                        {
                            new
                            {
                                type = 2,
                                platform = "facebook",
                                title = "Bạn có thể cho mình biết mức giá bạn muốn tìm kiếm?",
                                replies = new[] { "<100000", "100000 - 300000", ">300000 - 500000", ">500000" }
                            }
                        }
                    }));
            }
                #endregion
                #region Step 4

            case 4:
            {
                //Check if answer is valid
                if (!_isSkipValidation)
                {
                    if (new[] { "<100000", "100000 - 300000", ">300000 - 500000", ">500000" }.All(x =>
                                                                                                  x != MsgReply))
                    {
                        _isSkipValidation = true;
                        goto case 3;
                    }
                }

                Storage.AddOrUpdateToStorage(MsgId, 4, null);
                Storage.AddOrUpdateToStorage(MsgId, 3, MsgReply);

                //Find minimum and maximum price from step 3
                int minimumPrice, maximumPrice;

                switch (Storage[MsgId, 3])
                {
                case "<100000":
                    minimumPrice = 0;
                    maximumPrice = 99999;
                    break;

                case "100000 - 300000":
                    minimumPrice = 100000;
                    maximumPrice = 300000;
                    break;

                case ">300000 - 500000":
                    minimumPrice = 300001;
                    maximumPrice = 500000;
                    break;

                default:
                    minimumPrice = 500001;
                    maximumPrice = int.MaxValue;
                    break;
                }

                //Find product in step 2, for pet in step 1
                return(await MessengerProductListResult(GetProductType(), minimumPrice, maximumPrice));
            }

                #endregion
                #region Step 5
            case 5:
            {
                //Check if answer is valid
                if (!_isSkipValidation)
                {
                    using (var productDAO = new ProductDAO())
                    {
                        if (await productDAO.Read(MsgQuery, false) == null)
                        {
                            _isSkipValidation = true;
                            goto case 4;
                        }
                    }
                }

                Storage.AddOrUpdateToStorage(MsgId, 5, null);
                Storage.AddOrUpdateToStorage(MsgId, 4, MsgQuery);
                return(Receiver.Json(new
                    {
                        speech = "Bạn có thể cho mình biết tên đăng nhập trên hệ thống Cutieshop được không ạ?\nNếu chưa có, bạn có thể gõ tên đăng nhập mới để chúng mình tạo tài khoản cho bạn"
                    }));
            }
                #endregion
                #region Step 6

            case 6:
            {
                //This step receive username first, then the email and address. So we need to keep the username to the storage for further uses, email will be used once in this step and can be queried by DAO easily in the future.
                //Checking null will prevent email from being overwritten to username in Storage
                if (Storage[MsgId, 5] == null)
                {
                    Storage.AddOrUpdateToStorage(MsgId, 5, MsgReply);
                }

                using (var userDAO = new UserDAO())
                {
                    var user = await userDAO.ReadChild(Storage[MsgId, 5], true);

                    //If user is null, create a user, then ask customer their email
                    if (user == null)
                    {
                        Storage.AddOrUpdateToStorage(MsgId, 6, "userPassword", new GuidHelper().CreateGuid());
                        await userDAO.Create(new Auth
                            {
                                Username = Storage[MsgId, 5],
                                Password = Storage[MsgId, 6, "userPassword"]
                            });

                        await userDAO.CreateChild(new User
                            {
                                Username = Storage[MsgId, 5],
                                Email    = string.Empty,
                                Address  = string.Empty
                            });

                        await userDAO.Context.SaveChangesAsync();
                    }

                    user = await userDAO.ReadChild(Storage[MsgId, 5], true);

                    //If email is empty, as for email
                    if (user.Email == string.Empty)
                    {
                        if (Storage[MsgId, 6, "isAskForEmail"] == null)
                        {
                            Storage.AddOrUpdateToStorage(MsgId, 6, "isAskForEmail", "1");
                            return(Receiver.Json(new
                                {
                                    speech = "Bạn hãy cho mình biết email nhé"
                                }));
                        }

                        user.Email = MsgReply;
                        await userDAO.Context.SaveChangesAsync();
                    }

                    //If address is empty but email is not, MsgReply must be address
                    if (user.Address == string.Empty)
                    {
                        if (Storage[MsgId, 6, "isAskForAddress"] == null)
                        {
                            Storage.AddOrUpdateToStorage(MsgId, 6, "isAskForAddress", "1");
                            return(Receiver.Json(new
                                {
                                    speech = "Bạn cho mình xin địa chỉ"
                                }));
                        }

                        user.Address = MsgReply;
                        await userDAO.Context.SaveChangesAsync();
                    }

                    //Ready to jump into step 7 after this
                    Storage.AddOrUpdateToStorage(MsgId, 6, null);

                    using (var onlineOrderProductDAO = new OnlineOrderProductDAO(userDAO.Context))
                    {
                        var orderId = new GuidHelper().CreateGuid();
                        await onlineOrderProductDAO.Create(new OnlineOrder
                            {
                                OnlineOrderId = orderId,
                                FirstName     = user.FirstName,
                                LastName      = user.LastName,
                                Address       = user.Address,
                                PostCode      = "10000",
                                City          = user.City,
                                PhoneNo       = "12345678",
                                Email         = user.Email,
                                Date          = DateTime.Now,
                                Username      = user.Username,
                                StatusId      = 0
                            });

                        await onlineOrderProductDAO.CreateChild(new OnlineOrderProduct
                            {
                                ProductId     = Storage[MsgId, 4],
                                OnlineOrderId = orderId,
                                Quantity      = 1
                            });

                        Product buyProduct;
                        using (var productDAO = new ProductDAO())
                        {
                            buyProduct = await productDAO.Read(Storage[MsgId, 4], false);
                        }
                        var mailProductTable = _mailContent.BuyReq.TableRow.
                                               Replace("{0}", buyProduct.Name)
                                               .Replace("{1}", buyProduct.Description)
                                               .Replace("{2}", "1");

                        var mailBody = _mailContent.BuyReq.Body
                                       .Replace("{0}", user.Username)
                                       .Replace("{1}", mailProductTable)
                                       .Replace("{2}", "http://cutieshopapi.azurewebsites.net/verify?id=" + orderId);

                        MailUtils.Send(user.Email, _mailContent.BuyReq.Subject, mailBody);

                        var reply =
                            $"Mail xác nhận đã được gửi đến {user.Email}. Hãy xác nhận qua mail để hoàn tất đặt hàng nhé!";

                        //Send temporary password if customer create new account
                        if (Storage[MsgId, 6, "userPassword"] != null)
                        {
                            reply = $"Password tạm thời của bạn là {Storage[MsgId, 6, "userPassword"]}. Bạn nên vào trang chủ để thay đổi mật khẩu mặc định\n" + reply;
                        }

                        //Remove data in storage
                        Storage.RemoveId(MsgId);

                        return(Receiver.Json(new
                            {
                                speech = reply
                            }));
                    }
                }
            }

                #endregion
            }

            Storage.RemoveId(MsgId);
            throw new UnhandledChatException();
        }
Пример #58
0
        public override IDeepCopyable CopyTo(IDeepCopyable other)
        {
            var dest = other as MedicationDispense;

            if (dest != null)
            {
                base.CopyTo(dest);
                if (Identifier != null)
                {
                    dest.Identifier = (Hl7.Fhir.Model.Identifier)Identifier.DeepCopy();
                }
                if (StatusElement != null)
                {
                    dest.StatusElement = (Code <Hl7.Fhir.Model.MedicationDispense.MedicationDispenseStatus>)StatusElement.DeepCopy();
                }
                if (Patient != null)
                {
                    dest.Patient = (Hl7.Fhir.Model.ResourceReference)Patient.DeepCopy();
                }
                if (Dispenser != null)
                {
                    dest.Dispenser = (Hl7.Fhir.Model.ResourceReference)Dispenser.DeepCopy();
                }
                if (AuthorizingPrescription != null)
                {
                    dest.AuthorizingPrescription = new List <Hl7.Fhir.Model.ResourceReference>(AuthorizingPrescription.DeepCopy());
                }
                if (Type != null)
                {
                    dest.Type = (Hl7.Fhir.Model.CodeableConcept)Type.DeepCopy();
                }
                if (Quantity != null)
                {
                    dest.Quantity = (Hl7.Fhir.Model.SimpleQuantity)Quantity.DeepCopy();
                }
                if (DaysSupply != null)
                {
                    dest.DaysSupply = (Hl7.Fhir.Model.SimpleQuantity)DaysSupply.DeepCopy();
                }
                if (Medication != null)
                {
                    dest.Medication = (Hl7.Fhir.Model.Element)Medication.DeepCopy();
                }
                if (WhenPreparedElement != null)
                {
                    dest.WhenPreparedElement = (Hl7.Fhir.Model.FhirDateTime)WhenPreparedElement.DeepCopy();
                }
                if (WhenHandedOverElement != null)
                {
                    dest.WhenHandedOverElement = (Hl7.Fhir.Model.FhirDateTime)WhenHandedOverElement.DeepCopy();
                }
                if (Destination != null)
                {
                    dest.Destination = (Hl7.Fhir.Model.ResourceReference)Destination.DeepCopy();
                }
                if (Receiver != null)
                {
                    dest.Receiver = new List <Hl7.Fhir.Model.ResourceReference>(Receiver.DeepCopy());
                }
                if (NoteElement != null)
                {
                    dest.NoteElement = (Hl7.Fhir.Model.FhirString)NoteElement.DeepCopy();
                }
                if (DosageInstruction != null)
                {
                    dest.DosageInstruction = new List <Hl7.Fhir.Model.MedicationDispense.MedicationDispenseDosageInstructionComponent>(DosageInstruction.DeepCopy());
                }
                if (Substitution != null)
                {
                    dest.Substitution = (Hl7.Fhir.Model.MedicationDispense.MedicationDispenseSubstitutionComponent)Substitution.DeepCopy();
                }
                return(dest);
            }
            else
            {
                throw new ArgumentException("Can only copy to an object of the same type", "other");
            }
        }
Пример #59
0
 // Use this for initialization
 void Start()
 {
     avator       = gameObject.GetComponent <Receiver> ();
     commandStack = new Stack <Command> ();
     invoker      = new Invoker();
 }
Пример #60
0
 public abstract void Handle(Receiver receiver);