Exemple #1
0
        public void InsertRoom(Models.Rooms room)

        {
            DBcontext.Rooms.Add(room);

            DBcontext.SaveChanges();
        }
        public MainPage()
        {
            InitializeComponent();

            //Content = new HeaderView();
            menuList = new List <MasterPageItem>();


            //Fot Android / IOS icons
            var page1 = new MasterPageItem()
            {
                id = 1, Title = "Home", Icon = "Home.png"
            };
            var page2 = new MasterPageItem()
            {
                id = 2, Title = "Devices", Icon = "About.png"
            };
            var page3 = new MasterPageItem()
            {
                id = 3, Title = "Configuration", Icon = "Configuration.png"
            };
            var page4 = new MasterPageItem()
            {
                id = 4, Title = "Profile", Icon = "ProfileSetting.png"
            };
            var page5 = new MasterPageItem()
            {
                id = 5, Title = "Configuration", Icon = "Configuration.png"
            };
            var page6 = new MasterPageItem()
            {
                id = 6, Title = "Profile Settings", Icon = "ProfileSetting.png"
            };
            var page7 = new MasterPageItem()
            {
                id = 7, Title = "Rooms", Icon = "Home.png"
            };

            menuList.Add(page1);
            menuList.Add(page2);
            menuList.Add(page7);
            menuList.Add(page3);
            menuList.Add(page4);
            menuList.Add(page5);
            menuList.Add(page6);



            navigationDrawerList.ItemsSource = menuList;

            //  Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(HomePage)));



            // Remove page before Edit Page
            //     this.Navigation.RemovePage(this.Navigation.NavigationStack[this.Navigation.NavigationStack.Count ]);

            arduino        = new Arduino();
            mobileDevices  = new List <MobileDevice>();
            mqttConnection = new MQTTConnection("", "", "", this);
            // listDevices = new  List<SplashyApp.Models.Device>();
            Rooms = new Models.Rooms()
            {
            };
            NeedLoadedRoomsAndDevices = new Dictionary <string, string>();

            // MqttClient client = new MqttClient("35.158.109.193", MqttSettings.MQTT_BROKER_DEFAULT_PORT, false, null, null, MqttSslProtocols.None);
            //int  code = client.Connect("A", "server", "ri0Xohsuozahr2aB", true, 150);


            Detail = new HomeTabbedPage(this);
        }
        public ActionResult Reserve(RoomSystem.Models.ReserveModel reserveModel)
        {
            string        date     = string.Format("{0:yyyy-MM-dd}", reserveModel.Date);
            List <string> borrower = new List <string>();

            if (reserveModel.BorrowList != null && reserveModel.BorrowList != "")
            {
                borrower = reserveModel.BorrowList.Split(';').Distinct().ToList();
                foreach (var email in borrower)
                {
                    if (!IsValidEmail(email))
                    {
                        return(Reserve(reserveModel.RoomId, date));
                    }
                }
            }

            string ASPNetUserID = User.Identity.GetUserId();

            using (Models.RoomSystemEntities db = new Models.RoomSystemEntities())
            {
                //var loginInfo = await Net.AuthenticationManager.GetExternalLoginInfoAsync();
                //loginInfo.Email
                if (reserveModel.RoomId == null)
                {
                    return(Reserve(reserveModel.RoomId.Value, string.Format("{0:yyyy-MM-dd}", reserveModel.Date)));
                }

                Models.Rooms room = (from s in db.Rooms where reserveModel.RoomId.Value == s.Id select s).FirstOrDefault();
                if (room.Id != reserveModel.RoomId.Value || !(borrower.Count + 1 >= room.MinNumberOfUsers && borrower.Count < room.MaxNumberOfUsers))
                {
                    return(Reserve(reserveModel.RoomId, date));
                }
                int i            = 0;
                var Reservations = (from s in db.Reservations where s.RoomId == reserveModel.RoomId && s.Date == reserveModel.Date && !s.Disable select s.SessionNo).ToList();
                foreach (var wantToReserve in reserveModel.WantToReserve)
                {
                    if (wantToReserve && !Reservations.Contains(i))
                    {
                        Models.Reservations reservation = new Models.Reservations();
                        reservation.BorrowerList = "";
                        reservation.Disable      = false;
                        reservation.AspNetUserId = ASPNetUserID;
                        reservation.RoomId       = reserveModel.RoomId.Value;
                        reservation.SessionNo    = i;
                        reservation.Date         = reserveModel.Date;
                        reservation.BorrowerList = string.Join(";", borrower);
                        db.Reservations.Add(reservation);
                    }
                    i++;
                }
                db.SaveChanges();

                System.Models.AspNetUsers user = (from s in db.AspNetUsers where s.Id == ASPNetUserID select s).First();

                string subject = "已向軟工作業會議預約系統預約會議室";
                string body    = string.Format("{0}:\n您已預約 r {1} 會議室,於 {2:yyyy-MM-dd},但這是軟工作業,所以沒有會議室可以用喔", user.UserName, room.Id, reserveModel.Date);
                SendEmail(user.Email, user.UserName, subject, body);
            }
            return(Reserve(reserveModel.RoomId.Value, string.Format("{0:yyyy-MM-dd}", reserveModel.Date)));
        }