Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //To get the string to search in facility table
            string departmentID = Request.QueryString["DepartmentID"];
            string block = Request.QueryString["Block"];
            string level = Request.QueryString["Level"];
            string name = Request.QueryString["Name"];

            //test if correct
            //Only select from a certain department
            //select the database for the list of facility that contains
            //block, level, name (%)
            var sqlFacList = new FacList();
            sqlFacList.Facilities = new List<FacObject>();

            using (var db = new KioskContext())
            {
                var facilitys = from f in db.Facilitys
                                where f.Department.DepartmentID == departmentID
                                && (f.Block.Contains(block) && f.Level.Contains(level)
                                && f.Name.Contains(name))

                                orderby f.FacilityID
                                select new { f.FacilityID, f.DepartmentID, f.Description, f.Block,
                                f.Level, f.Name, f.OpenHours, f.CloseHours, f.MaxBkTime, f.MaxBkUnits, f.MinBkTime, f.MinBkUnits};

                foreach (var fac in facilitys)
                {
                    FacObject facobject = new FacObject(fac.FacilityID, fac.DepartmentID, fac.Description, fac.Block, fac.Level,
                        fac.Name, fac.OpenHours, fac.CloseHours, fac.MaxBkTime, fac.MaxBkUnits, fac.MinBkTime, fac.MinBkUnits);

                    sqlFacList.Facilities.Add(facobject);
                }
            }

            //Serialize into json format output (string)
            string json = JsonConvert.SerializeObject(sqlFacList, Formatting.Indented);

            //codes to pass back the json string to the iPad
            Response.Write(json);
            Response.End();
        }
        //method to call** to run the grid loop
        public void GetFacilityTable()
        {
            //get datetime of today
            string dateToday = DateTime.Today.ToString ("dd-MMM-yyyy");
            string[] sDateSeperate = date.Split (new[] { "-" }, StringSplitOptions.None);

            //set the label eg. School Of IT, level 4
            //set based on filter***
            if (date == "") {
                title.Text = "School Of IT, Level " + level + "\n" + "Today" + "\n" + dateToday;
            } else {
                title.Text = "School Of IT, Level " + level + "\n" + sDateSeperate[2] + "-" + sDateSeperate[1] + "-" + sDateSeperate[0];
            }
            title.FontAttributes = FontAttributes.Bold;

            //activity indicator
            //			activityIndicator.IsRunning = true;
            //			activityIndicator.IsVisible = true;
            //			activityIndicator.BindingContext = this;
            //			activityIndicator.SetBinding (ActivityIndicator.IsVisibleProperty, "IsBusy");
            //			this.IsBusy = true;

            facilityList = new List<FacObject> ();
            reservationList = new List<ResObject> ();

            facGrid.IsVisible = false;
            facGrid.Children.Clear ();
            boxGrid.Children.Clear ();
            facGrid.RowDefinitions.Clear ();
            //facGrid.ColumnDefinitions.Clear ();
            facGrid.IsVisible = true;

            //string urlFac = @"http://crowd.sit.nyp.edu.sg/FRSIPad/GetFacilities.aspx?DepartmentID=" + departmentID
            //+ "&Block=" + block + "&Level=" + level + "&Name=" + name + "&DeviceID=&Hash=";

            //call webservice to get facility and reservation*
            string urlFac = ConfigurationSettings.urliPad + "GetFacilities.aspx?DepartmentID=" + departmentID
                            + "&Block=" + block + "&Level=" + level + "&Name=" + name;

            string urlRes = ConfigurationSettings.urliPad + "GetFacilityReservations.aspx?DepartmentID=" + departmentID
                            + "&Block=" + block + "&Level=" + level + "&Name=" + name + "&Date=" + date;

            //to get all the facility and icnsert to an c# object
            using (var client = new HttpClient ()) {
                HttpResponseMessage responseMsg = client.GetAsync (urlFac).Result;

                var json = responseMsg.Content.ReadAsStringAsync ();
                json.Wait ();
                FacilityList list = JsonConvert.DeserializeObject<FacilityList> (json.Result);

                foreach (Facility fac in list.Facilities) {
                    FacObject facObject = new FacObject (fac.facilityID, fac.departmentID, fac.description, fac.block,
                                              fac.level, fac.name, fac.openHours, fac.closeHours, fac.maxBkTime,
                                                fac.maxBkUnits, fac.minBkTime, fac.maxBkUnits);
                    facilityList.Add (facObject);
                }
            }

            //to get all the reservations and insert to an c# object
            using (var client2 = new HttpClient ()) {
                HttpResponseMessage responseMsg2 = client2.GetAsync (urlRes).Result;

                //var json = client.GetStringAsync(string.Format(url));
                var json2 = responseMsg2.Content.ReadAsStringAsync ();
                json2.Wait ();
                ReservationList list2 = JsonConvert.DeserializeObject<ReservationList> (json2.Result);
                //List<Facility> list = JsonConvert.DeserializeObject<List<Facility>>(json.ToString());

                foreach (Reservation res in list2.Reservations) {
                    ResObject resObject = new ResObject (res.facilityReservationID, res.facilityID, res.startDateTime, res.endDateTime,
                                              res.useShortDescription, res.useDescription);
                    reservationList.Add (resObject);
                }
            }

            if (date == "") {
                date = DateTime.Now.ToString ("yyyy-MMM-dd");
                dateConvert = Convert.ToDateTime (date);
            } else {
                dateConvert = Convert.ToDateTime (date);
            }

            if (availability == "89") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 08, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 09, 00, 00);
                filterAvailability ();

            }
            if (availability == "910") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 09, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 10, 00, 00);
                filterAvailability ();
            }
            if (availability == "1011") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 10, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 11, 00, 00);
                filterAvailability ();
            }
            if (availability == "1112") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 11, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 12, 00, 00);
                filterAvailability ();
            }
            if (availability == "1213") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 12, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 13, 00, 00);
                filterAvailability ();
            }
            if (availability == "1314") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 13, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 14, 00, 00);
                filterAvailability ();
            }
            if (availability == "1415") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 14, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 15, 00, 00);
                filterAvailability ();
            }
            if (availability == "1516") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 15, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 16, 00, 00);
                filterAvailability ();
            }
            if (availability == "1617") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 16, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 17, 00, 00);
                filterAvailability ();
            }
            if (availability == "1718") {
                dateStartAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 17, 00, 00);
                dateEndAvail = new DateTime (dateConvert.Year, dateConvert.Month, dateConvert.Day, 18, 00, 00);
                filterAvailability ();
            }

            //create new rows and column for the grid
            facGrid.RowDefinitions = new RowDefinitionCollection ();

            if (facGrid.ColumnDefinitions.Count == 0) {
                facGrid.ColumnDefinitions = new ColumnDefinitionCollection ();

                //create the columns
                //0,1,2
                facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (10, GridUnitType.Absolute) });
                facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (20, GridUnitType.Absolute) });
                facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Star) });

                //column with interval of 5 minutes
                facGrid.ColumnSpacing = 0;

                for (int k = 0; k < 10; k++) {
                    //00
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    //15
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    //30
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    //45
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                    facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                }

                //6pm (243)
                facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });

                //spacing of 10 (244,245)
                facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (30, GridUnitType.Absolute) });
                facGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (10, GridUnitType.Absolute) });
            }

            for (int i = 0; i < facilityList.Count; i++) {
                //for (int i = 0; i < facSample.Count; i++) {
                facGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Absolute) });
                facGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
            }

            //for loop to change according to database**
            //number of facility from database
            //edit to change label to database value
            for (int i = 0; i < facilityList.Count; i++) {
                //for (int i = 0; i < facSample.Count; i++) {
                //facGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Absolute) });
                //facGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });

                //number = (left,right,top,bottom)
                //black horizonal line
                //facility label
                //facGrid.Children.Add (facBut,2,((i*2)+1));
                Label labelFac = new Label {
                    Text = facilityList [i].facilityID,
                    TextColor = Color.Black,
                    FontAttributes = FontAttributes.Bold,
                    YAlign = TextAlignment.Center
                };
                var tapFac = new TapGestureRecognizer ();
                tapFac.Tapped += (object sender, EventArgs e) =>{
                    Navigation.PushModalAsync (new FacilityDetailsPage (labelFac.Text, date));
                };
                labelFac.GestureRecognizers.Add (tapFac);

                facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 1, 245, (i * 2), ((i * 2) + 1));
                facGrid.Children.Add (labelFac, 2, ((i * 2) + 1));
                //facGrid.Children.Add (new Label { Text = facSample[i], TextColor = Color.Black }, 2,((i*2)+1));

                for (int j = 0; j < reservationList.Count; j++) {
                    //booking reserved
                    //break if facilityID dont match
                    if (reservationList [j].facilityID == facilityList [i].facilityID) {
                        string text = "";

                        if (reservationList [j].useShortDescription == null) {

                            string temptext = reservationList [j].useDescription;
                            string str = temptext;
                            if (temptext.Length > 6)
                                temptext.Substring (0, 6);
                            text = str;

                        } else {
                            text = reservationList [j].useShortDescription;
                        }

                        // add in reservations
                        //startdatetime 2015-08-13 08:30:00.000
                        //DateTime startdate = DateTime.ParseExact(reservationList[j].startDateTime, "dd-mm-yyyy HH:MM:SS");
                        string sdateRes = reservationList [j].startDateTime.ToString ("dd-MM-yyyy HH:mm:ss");
                        string[] stoken = sdateRes.Split (new[] { " " }, StringSplitOptions.None);
                        //time
                        string[] stiming = stoken [1].Split (new[] { ":" }, StringSplitOptions.None);
                        //timing[0] = 08 (hour) //timing[1] = 30 (mins)
                        //string[] sonehour = stiming [0].Split (new[] { "" }, StringSplitOptions.None);
                        //onehour[1] = 8

                        int shour = Convert.ToInt16 (stiming [0]);
                        int smin = Convert.ToInt16 (stiming [1]);

                        //enddatetime
                        //DateTime enddate = DateTime.ParseExact(reservationList[j].endDateTime, "dd-mm-yyyy HH:MM:SS");
                        string edateRes = reservationList [j].endDateTime.ToString ("dd-MM-yyyy HH:mm:ss");
                        string[] etoken = edateRes.Split (new[] { " " }, StringSplitOptions.None);
                        //time
                        string[] etiming = etoken [1].Split (new[] { ":" }, StringSplitOptions.None);
                        //timing[0] = 08 (hour) //timing[1] = 30 (mins)
                        //string[] eonehour = etiming [0].Split (new[] { "" }, StringSplitOptions.None);
                        //onehour[1] = 8

                        int ehour = Convert.ToInt16 (etiming [0]);
                        int emin = Convert.ToInt16 (etiming [1]);

                        int start, end;

                        if (smin == 0) {
                            start = (((shour - 8) * 24) + 3);
                        } else {
                            start = (((shour - 8) * 24) + 3) + ((smin / 5) * 2);
                        }

                        if (emin == 0) {
                            end = (((ehour - 8) * 24) + 3);
                        } else {
                            end = (((ehour - 8) * 24) + 3) + ((emin / 5) * 2);
                        }

                        //BoxView boxReservation = new BoxView { BackgroundColor = Color.Silver };
                        //start, end , top, bottom
                        //facGrid.Children.Add (box, 3, 243, (i*2) + 1 , (i*2)+2);
                        //facGrid.Children.Add (boxReservation, start, end, (i * 2) + 1, (i * 2) + 2);

                        //facGrid.Children.Add (facBut, start, end, (i*2) + 1, (i*2)+2);

                        Label labelRes =  new Label {
                            Text = text,
                            TextColor = Color.Black,
                            FontSize = 13,
                            XAlign = TextAlignment.Center,
                            YAlign = TextAlignment.Center,
                            BackgroundColor = Color.Silver
                        };
                        facGrid.Children.Add (labelRes, start, end, (i * 2) + 1, (i * 2) + 2);
                        /*
                        Image imageArrow;
                        imageArrow = new Image { Source = ImageSource.FromFile("arrowg.png") };
                        facGrid.Children.Add (imageArrow, start, start + 20, (i * 2) + 2 , (i * 2) + 4);
                        imageArrow.Opacity = 0;

                        Image imageBox;
                        imageBox = new Image { BackgroundColor = Color.Silver };
                        facGrid.Children.Add (imageBox, start, start + 50, 6 , 11);
                        imageBox.Opacity = 0;
            */
                        //click button gesture
                        //pop out box
                        //pass in Facility id

                        //display details when boxview is tapped
                        //
                        var tapDes = new TapGestureRecognizer ();
                        tapDes.Tapped += (object sender, EventArgs e) => {
                            //Navigation.PushModalAsync (new FacilityDetailsPage (labelFac.Text));
                            //imageArrow.Opacity = 0;

                            //imageBox.Opacity = 1;
                            //imageArrow.Opacity = 1;
                        };
                        labelRes.GestureRecognizers.Add (tapDes);

                    }

                //Xamarin.Forms.Device.StartTimer (TimeSpan.FromSeconds(1), () => {

                    //refresh red box
                    //boxLine.BackgroundColor = Color.Transparent;

                    //return true;

                    //});
                }

            }

            //draw vertical lines
            //8am,9am,10am

            int endCol = ((facilityList.Count - 1) * 2) + 3;
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 3, 4, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 27, 28, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 51, 52, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 75, 76, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 99, 100, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 123, 124, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 147, 148, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 171, 172, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 195, 196, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 219, 220, 0, endCol);
            facGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 243, 244, 0, endCol);

            //date now
            string dateNowLine = DateTime.Now.ToString ("dd-MM-yyyy HH:mm:ss");
            dateTiming = DateTime.Now.ToString ("hh.mm tt");
            string[] linetoken = dateNowLine.Split (new[] { " " }, StringSplitOptions.None);
            //time
            string[] linetiming = linetoken [1].Split (new[] { ":" }, StringSplitOptions.None);
            //timing[0] = 08 (hour) //timing[1] = 30 (mins)
            int linehour = Convert.ToInt16 (linetiming [0]);
            int linemin = Convert.ToInt16 (linetiming [1]);

            int boxhour = Convert.ToInt16 (linetiming [0]);
            int boxmin = Convert.ToInt16 (linetiming [1]);

            if (linemin == 0) {
                linestart = (((linehour - 8) * 24) + 3);
            } else {
                linestart = (((linehour - 8) * 24) + 3) + ((linemin / 5) * 2);
            }

            if (boxmin == 0) {
                boxstart = (((boxhour - 8) * 24) + 15);
            } else {
                boxstart = (((boxhour - 8) * 24) + 15) + ((boxmin / 5) * 2);
            }

            if (date == "" || date == DateTime.Now.ToString ("yyyy-MMM-dd")) {
                BoxView bl = new BoxView { BackgroundColor = Color.Red };

                boxLine = bl;

                if (linestart >= 0)
                    facGrid.Children.Add (bl, linestart, linestart + 1, 0, ((facilityList.Count - 1) * 2) + 3);
            }

            //			activityIndicator.IsRunning = false;
            //			activityIndicator.IsVisible = false;
            //			this.IsBusy = false;
            //box view grid
            //create new rows and column for the grid
            boxGrid.RowDefinitions = new RowDefinitionCollection ();
            boxGrid.ColumnDefinitions = new ColumnDefinitionCollection ();

            //create the columns
            //0,1,2
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Star) });

            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (3, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (3, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });

            //column with interval of 5 minutes
            boxGrid.ColumnSpacing = 0;
            boxGrid.RowSpacing = 0;

            for (int k = 0; k < 10; k++) {
                //00
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                //15
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                //30
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                //45
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
                boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });

            }

            //6pm (243)
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (4, GridUnitType.Absolute) });
            //spacing of 10 (244,245)
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Absolute) });
            boxGrid.ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (10, GridUnitType.Absolute) });

            boxGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (15, GridUnitType.Absolute) });

            //Xamarin.Forms.Device.StartTimer (TimeSpan.FromSeconds(1), () => {

            //refresh red box
            if (date == "" || date == DateTime.Now.ToString ("yyyy-MMM-dd")) {
                //boxRed.BackgroundColor = Color.Transparent;
                Label b = new Label { BackgroundColor = Color.Red };

                dateTiming = DateTime.Now.ToString ("hh.mm tt");
                Label l = new Label {
                    Text = dateTiming,
                    TextColor = Color.Black,
                    FontSize = 9.5,
                    XAlign = TextAlignment.Center,
                    YAlign = TextAlignment.Center
                };
                //boxRed = b;

                boxGrid.Children.Add (b, boxstart - 9, boxstart + 10, 0, 1);

                //refresh label
                //timeLabel.Text = "";

                //timeLabel = l;

                boxGrid.Children.Add (l, boxstart - 9, boxstart + 10, 0, 1);
            }

            //return true;
            //});
            facGrid.ForceLayout();
        }