Пример #1
0
        private async Task FindIntersectingGraphicsAsync(DrawShape drawMode)
        {
            var messageSubLayers = _messageLayer.ChildLayers.Cast <MessageSubLayer>();

            IEnumerable <Graphic> results = Enumerable.Empty <Graphic>();

            int maxHits = 1;

            if (drawMode == DrawShape.Point)
            {
                var mapPoint = await MyMapView.Editor.RequestPointAsync();

                var screenPoint = MyMapView.LocationToScreen(mapPoint);
                foreach (var l in messageSubLayers)
                {
                    results = results.Concat(await l.HitTestAsync(MyMapView, screenPoint, maxHits));
                }
            }
            else
            {
                maxHits = 100;
                var geometry = await MyMapView.Editor.RequestShapeAsync(drawMode);

                var mapEnvelope = (geometry as Envelope).Extent;
                var upperLeft   = MyMapView.LocationToScreen
                                      (new MapPoint(mapEnvelope.XMin, mapEnvelope.YMax, geometry.SpatialReference));
                var lowerRight = MyMapView.LocationToScreen
                                     (new MapPoint(mapEnvelope.XMax, mapEnvelope.YMin, geometry.SpatialReference));
                var rect = new Rect(upperLeft, lowerRight);

                foreach (var l in messageSubLayers)
                {
                    results = results.Concat(await l.HitTestAsync(MyMapView, rect, maxHits));
                }
            }

            if (results.Count() == 0)
            {
                return;
            }

            foreach (var graphic in results)
            {
                MilitaryMessage message = _messageLayer.GetMessage(graphic.Attributes["_id"].ToString()) as MilitaryMessage;
                message.MessageAction = MilitaryMessageAction.Select;
                if (_messageLayer.ProcessMessage(message))
                {
                    selectedMessages.Add(message);
                }
                else
                {
                    MessageBox.Show("Failed");
                }
            }
        }
Пример #2
0
        //send message to all room
        public ActionResult CheckAllRoom(MessageHTML m)
        {
            MessageLayer   memlayer = new MessageLayer();
            List <Message> mlist    = memlayer.GetMessage();

            DormLayer layer       = new DormLayer();
            Dorm      dorm        = layer.GetDorm(Session["UserName"].ToString());
            int       sender_dorm = dorm.Dorm_ID;

            int         mlistid  = mlist.Count;
            Message     mem      = new Message();
            RoomLayer   RoomDB   = new RoomLayer();
            List <Room> RoomList = RoomDB.GetStatusRoom(); //only room that have person live

            foreach (Room r in RoomList)
            {
                if (r.Dorm_ID == sender_dorm)
                {
                    PersonLayer   PL            = new PersonLayer();
                    List <Person> personoomList = PL.GetPerson();
                    foreach (Person person in personoomList)
                    {
                        if (person.Room_ID == r.Room_ID)
                        {
                            mem = new Message();
                            mem.Receiver_Username = person.Username;
                            mem.Sender_Username   = Session["UserName"].ToString();
                            mem.MessageID         = mlistid + 1;
                            mem.Title             = m.Subject;
                            mem.Text   = m.Message;
                            mem.Isread = 0;
                            mem.Date   = DateTime.Now.ToString("dd-MM-yyyy") + " " +
                                         DateTime.Today.ToString("HH:mm:ss tt"); //Date + Time

                            db.Message.Add(mem);
                            db.SaveChanges();
                            mlistid++;
                        }
                    }
                }
            }


            //return mem.Receiver_Username + " " + mem.Sender_Username + " " +
            //   " " + mem.Date ;
            return(RedirectToAction("index", new
            {
                action = 1
            }));
        }
Пример #3
0
        private void SelectMessageGraphic(Graphic graphic)
        {
            if (graphic == null)
            {
                return;
            }

            if (graphic.Attributes.ContainsKey(Message.IdPropertyName))
            {
                var selectMessage = _militaryMessageLayer.GetMessage(graphic.Attributes[Message.IdPropertyName].ToString());
                SelectMessage(selectMessage, true);

                UpdateCurrentTimeExtent(selectMessage);
            }
        }
Пример #4
0
        public ActionResult FeedbackSubmit(string detail_feedback)
        {
            JongHorDBEntities1  db          = new JongHorDBEntities1();
            DormLayer           layer       = new DormLayer();
            PersonBusinessLayer personLayer = new PersonBusinessLayer();
            MessageLayer        memlayer    = new MessageLayer();
            List <Message>      mlist       = memlayer.GetMessage();
            int    mlistid = mlist.Count;
            Person user    = personLayer.GetUser(Session["UserName"].ToString());

            Message message = new Message();

            message.Receiver_Username = layer.GetDorm(user.Dorm_ID.Value).Person.Username;
            message.Sender_Username   = user.Username;
            message.MessageID         = mlistid + 1;
            message.Title             = "Feedback";
            Room room = user.Room;

            message.Text   = (room.Floor + "" + room.Room_ID) + ": " + detail_feedback;
            message.Isread = 0;
            message.Date   = DateTime.Now.ToString("dd-MM-yyyy") + " " +
                             DateTime.Today.ToString("HH:mm:ss tt"); //Date + Time

            db.Message.Add(message);
            try
            {
                db.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);

                // Combine the original exception message with the new one.
                var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
            }

            Response.Write("<script>alert('Message has been sent')</script>");
            return(Index());
        }
Пример #5
0
        public void SetMessages(string name)
        {
            MessageLayer layer = new MessageLayer();

            Messages = layer.GetMessage(name).ToList <Message>();
        }
Пример #6
0
        // Performs a HitTest on the rendered Messages and selects the results
        private async Task FindIntersectingGraphicsAsync(DrawShape drawMode)
        {
            // Get sub layers of the MessageLayer
            var messageSubLayers = _messageLayer.ChildLayers.Cast <MessageSubLayer>();

            // Create an empty result set
            IEnumerable <Graphic> results = Enumerable.Empty <Graphic>();

            // Set the max hits to 1
            int maxHits = 1;

            // Handle the individual Message selection mode
            if (drawMode == DrawShape.Point)
            {
                // Ask the user for the point of interest
                MapPoint mapPoint = null;
                try
                {
                    mapPoint = await MyMapView.Editor.RequestPointAsync();
                }
                catch (TaskCanceledException) { }

                // Check the geometry
                if (Geometry.IsNullOrEmpty(mapPoint))
                {
                    return;
                }

                // Get the location in screen coordinates
                var screenPoint = MyMapView.LocationToScreen(mapPoint);

                // Iterate the Message sub layers and await the HitTestAsync method on each layer
                foreach (var l in messageSubLayers)
                {
                    results = results.Concat(await l.HitTestAsync(MyMapView, screenPoint, maxHits));
                }
            }
            // Handle the multiple Message selection mode
            else
            {
                // Increase the max hits value
                maxHits = 100;

                // Ask the user for the area of interest
                Envelope envelope = null;
                try
                {
                    envelope = await MyMapView.Editor.RequestShapeAsync(drawMode) as Envelope;
                }
                catch (TaskCanceledException) { }

                // Check the geometry
                if (Geometry.IsNullOrEmpty(envelope))
                {
                    return;
                }

                // Get the screen location of the upper left
                var upperLeft = MyMapView.LocationToScreen
                                    (new MapPoint(envelope.XMin, envelope.YMax, envelope.SpatialReference));

                // Get the screen location of the lower right
                var lowerRight = MyMapView.LocationToScreen
                                     (new MapPoint(envelope.XMax, envelope.YMin, envelope.SpatialReference));

                // Create a Rect from the two corners
                var rect = new Rect(upperLeft, lowerRight);

                // Iterate the Message sub layers and await the HitTestAsync method on each layer
                foreach (var l in messageSubLayers)
                {
                    results = results.Concat(await l.HitTestAsync(MyMapView, rect, maxHits));
                }
            }

            if (results.Count() == 0)
            {
                return;
            }

            // Iterate the results and modify the Action value to Select then reprocess each Message
            foreach (var graphic in results)
            {
                // Retrieve the Message representation from the MessageLayer for each Graphic returned
                MilitaryMessage message = _messageLayer.GetMessage(graphic.Attributes["_id"].ToString()) as MilitaryMessage;

                // Modify the Action to Select
                message.MessageAction = MilitaryMessageAction.Select;

                // Reprocess the Message and add to the list
                if (_messageLayer.ProcessMessage(message))
                {
                    selectedMessages.Add(message);
                }
            }
        }
Пример #7
0
        //send message to specific room

        public ActionResult CheckSpecificRoom(MessageHTML m, string receiver)
        {
            Message        mem          = new Message();
            bool           CheckRoom    = false;
            string         NotFoundRoom = "This room is available";
            MessageLayer   memlayer     = new MessageLayer();
            List <Message> mlist        = memlayer.GetMessage();


            DormLayer layer       = new DormLayer();
            Dorm      dorm        = layer.GetDorm(Session["UserName"].ToString());
            int       sender_dorm = dorm.Dorm_ID;


            /// scan username of room
            RoomLayer   Rl       = new RoomLayer();
            List <Room> roomList = Rl.GetStatusRoom(); //get only unavailable room

            foreach (Room room in roomList)
            {
                if (room.Dorm_ID == sender_dorm)
                {
                    //int.Parse(receiver)
                    String roomnum = room.Floor + room.Room_number;
                    if (roomnum == receiver)
                    {
                        PersonLayer   PL            = new PersonLayer();
                        List <Person> personoomList = PL.GetPerson();
                        foreach (Person person in personoomList)
                        {
                            if (person.Room_ID == room.Room_ID)
                            {
                                mem.Receiver_Username = person.Username;
                                CheckRoom             = true;
                            }
                        }
                    }
                }
            }
            ///

            mem.Sender_Username = Session["UserName"].ToString();
            mem.MessageID       = mlist.Count + 1;
            mem.Title           = m.Subject;
            mem.Isread          = 0;
            mem.Text            = m.Message;
            mem.Date            = DateTime.Now.ToString("dd-MM-yyyy") + " " +
                                  DateTime.Today.ToString("HH:mm:ss tt"); //Date + Time
            if (CheckRoom == true)
            {
                db.Message.Add(mem);
                db.SaveChanges();

                return(RedirectToAction("Index", new
                {
                    action = 1
                }));
            }
            else
            {
                return(View("Messenger"));
                //return NotFoundRoom;
            }

            // return mem.Receiver_Username + " " + mem.Sender_Username + " " +
            //    " " + mem.Date;
        }