public static ResObject <List <CategoryItem> > GetCategoryItemsDoctors(string nvGuide)
        {
            ResObject <List <CategoryItem> > res = new ResObject <List <CategoryItem> >();

            try
            {
                List <CategoryItem> categoryItems = new List <CategoryItem>();
                DataSet             ds            = Utilities.SqlDataAccess.ExecuteDatasetSP("TCategoryItem_Doctors_SLCT"
                                                                                             , new SqlParameter("nvGuide", nvGuide));
                if (ds.Tables[0].Rows[0][0].ToString() != string.Empty && int.Parse(ds.Tables[0].Rows[0][0].ToString()) < 0)
                {
                    res.Error  = new ErrorObj(StatusCode.UserUnauthorized);
                    res.Result = null;
                    return(res);
                }
                foreach (DataRow dr in ds.Tables[1].Rows)
                {
                    categoryItems.Add(ObjectGenerator <CategoryItem> .GeneratFromDataRow(dr));
                }
                res.Error  = new ErrorObj(StatusCode.Success);
                res.Result = categoryItems;
                return(res);
            }
            catch (Exception ex)
            {
                Log.LogError("GetCategoryItemsDoctors / TCategoryItem_Doctors_SLCT",
                             "exception = " + ex);
                res.Error  = new ErrorObj(StatusCode.Error, ex.Message);
                res.Result = null;
                return(res);
            }
        }
Exemple #2
0
        public static ResObject <List <Contact> > GeContacts(string nvGuide)
        {
            ResObject <List <Contact> > res = new ResObject <List <Contact> >();

            try
            {
                List <Contact> contacts = new List <Contact>();
                DataSet        ds       = SqlDataAccess.ExecuteDatasetSP("TContact_SLCT",
                                                                         new SqlParameter("nvGuide", nvGuide));
                if (ds.Tables[0].Rows[0][0].ToString() != string.Empty && int.Parse(ds.Tables[0].Rows[0][0].ToString()) < 0)
                {
                    res.Error  = new ErrorObj(StatusCode.UserUnauthorized);
                    res.Result = null;
                    return(res);
                }
                if (ds != null && ds.Tables[1].Rows.Count > 0)
                {
                    contacts = ObjectGenerator <Contact> .GeneratListFromDataRowCollection(ds.Tables[1].Rows);
                }
                res.Error  = new ErrorObj(StatusCode.Success);
                res.Result = contacts;
                return(res);
            }
            catch (Exception x)
            {
                Log.LogError("GeContacts", x.Message);
                res.Error  = new ErrorObj(StatusCode.Error, x.Message);
                res.Result = null;
                return(res);
            }
        }
        public static ResObject <List <Dashboard> > RecommendationDashboard(int iUserId, string nvGuide)
        {
            ResObject <List <Dashboard> > res = new ResObject <List <Dashboard> >();

            try
            {
                List <Dashboard> dashboard = new List <Dashboard>();
                DataSet          ds        = SqlDataAccess.ExecuteDatasetSP("TRecommendation_Dashboad",
                                                                            new SqlParameter("iUserId", iUserId),
                                                                            new SqlParameter("nvGuide", nvGuide));
                if (ds.Tables[0].Rows[0][0].ToString() != string.Empty && int.Parse(ds.Tables[0].Rows[0][0].ToString()) < 0)
                {
                    res.Error  = new ErrorObj(StatusCode.UserUnauthorized);
                    res.Result = null;
                    return(res);
                }
                if (ds.Tables[1].Rows.Count > 0)
                {
                    foreach (DataRow item in ds.Tables[1].Rows)
                    {
                        Dashboard dash = ObjectGenerator <Dashboard> .GeneratFromDataRow(item);

                        dash.source = new intInt();
                        Dashboard d = dashboard.Where(h => h.name == dash.name).FirstOrDefault();
                        if (d != null)
                        {
                            d.data += dash.data;
                        }
                        else
                        {
                            dashboard.Add(dash);
                        }
                    }
                }
                res.Error  = new ErrorObj(StatusCode.Success);
                res.Result = new List <Dashboard>();
                res.Result = dashboard;
                return(res);
            }
            catch (Exception x)
            {
                Log.LogError("RecommendationDashboard", x.Message);
                res.Error  = new ErrorObj(StatusCode.Error, x.Message);
                res.Result = null;
                return(res);
            }
        }
Exemple #4
0
    // 由于异步加载,暂时只支持包含从ResObject来的sprite替换,以判断transform是否还有效
    public static void setSpriteForContainer(Image img, string spriteName, ResObject container)
    {
        if (img == null || container == null || container.isDisposed())
        {
            return;
        }
        var objs = spriteName.Split('/');

        MgrRes.loadPrefab(objs[0], objs[1], obj =>
        {
            if (container.isDisposed())
            {
                return;
            }

            img.sprite = obj as Sprite;
        }, true);
    }
        public static ResObject <List <Recommendation> > GetRecommendationsNewDoctors(int iYearId, string nvGuide)
        {
            ResObject <List <Recommendation> > res = new ResObject <List <Recommendation> >();

            try
            {
                DataSet ds = SqlDataAccess.ExecuteDatasetSP("TRecommendation_New_SLCT",
                                                            new SqlParameter("iYearId", iYearId),
                                                            new SqlParameter("nvGuide", nvGuide));

                List <Recommendation> recommendations = new List <Recommendation>();
                if (ds.Tables[0].Rows[0][0].ToString() != string.Empty && int.Parse(ds.Tables[0].Rows[0][0].ToString()) < 0)
                {
                    res.Error  = new ErrorObj(StatusCode.UserUnauthorized);
                    res.Result = null;
                    return(res);
                }
                if (ds.Tables[1].Rows.Count > 0)
                {
                    foreach (DataRow dr in ds.Tables[1].Rows)
                    {
                        recommendations.Add(ObjectGenerator <Recommendation> .GeneratFromDataRow(dr));
                        recommendations.Last().lObject.Add("nvCatItemName1", dr["nvCatItemName1"].ToString());
                        recommendations.Last().lObject.Add("nvCatItemName2", dr["nvCatItemName2"].ToString());
                        recommendations.Last().lObject.Add("nvCatItemName3", dr["nvCatItemName3"].ToString());
                        recommendations.Last().lObject.Add("nvCatItemName4", dr["nvCatItemName4"].ToString());
                    }
                }
                res.Error  = new ErrorObj(StatusCode.Success);
                res.Result = recommendations;
                return(res);
            }
            catch (Exception ex)
            {
                Log.LogError("GetRecommendationsNewDoctors / TRecommendation_New_SLCT", "iYearId = " + iYearId + ", exception = " + ex);
                res.Error  = new ErrorObj(StatusCode.Error, ex.Message);
                res.Result = null;
                return(res);
            }
        }
        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"];
            //format of date yyyy-MMM-dd
            string date = Request.QueryString["Date"];

            var sqlResList = new ResList();
            sqlResList.Reservations = new List<ResObject>();

            //if date is blank, return current system date
            if( date == "" )
            {
                DateTime dateToday = DateTime.Today;
                DateTime dateStart = new DateTime(dateToday.Year, dateToday.Month, dateToday.Day, 08, 00, 00);
                DateTime dateEnd = new DateTime(dateToday.Year, dateToday.Month, dateToday.Day, 18, 00, 00);

                    using (var db = new KioskContext())
                    {
                        var facilityRes = from fr in db.FacilityReservations
                                          where fr.Facility.Department.DepartmentID == departmentID
                                          && fr.Facility.Block.Contains(block) && fr.Facility.Level.Contains(level)
                                          && fr.Facility.Name.Contains(name)
                                          && fr.StartDateTime >= dateStart
                                          && fr.EndDateTime <= dateEnd

                                          orderby fr.FacilityID, fr.StartDateTime
                                          select new
                                          {
                                              fr.FacilityReservationID,
                                              fr.FacilityID,
                                              fr.StartDateTime,
                                              fr.EndDateTime,
                                              fr.UseShortDescription,
                                              fr.UseDescription
                                          };

                        foreach (var res in facilityRes)
                        {
                            ResObject resobject = new ResObject(res.FacilityReservationID, res.FacilityID, res.StartDateTime.Value, res.EndDateTime.Value,
                                res.UseShortDescription, res.UseDescription);

                            sqlResList.Reservations.Add(resobject);
                        }
                    }

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

                //codes to pass back the json string to the iPad
                Response.Write(json);
                Response.End();

            }

            //else return only specified date
            else
            {
                //convert string date to datetime
                DateTime datePass = DateTime.ParseExact(date, "yyyy-MMM-dd", CultureInfo.InvariantCulture);
                DateTime dateStart = new DateTime(datePass.Year, datePass.Month, datePass.Day, 08, 00, 00);
                DateTime dateEnd = new DateTime(datePass.Year, datePass.Month, datePass.Day, 18, 00, 00);

                    using (var db = new KioskContext())
                    {
                        var facilityRes = from fr in db.FacilityReservations
                                          where fr.Facility.Department.DepartmentID == departmentID
                                          && fr.Facility.Block.Contains(block) && fr.Facility.Level.Contains(level)
                                          && fr.Facility.Name.Contains(name)
                                          && fr.StartDateTime >= dateStart
                                          && fr.EndDateTime <= dateEnd

                                          orderby fr.FacilityID, fr.StartDateTime
                                          select new
                                          {
                                              fr.FacilityReservationID,
                                              fr.FacilityID,
                                              fr.StartDateTime,
                                              fr.EndDateTime,
                                              fr.UseShortDescription,
                                              fr.UseDescription
                                          };

                        foreach (var res in facilityRes)
                        {
                            ResObject resobject = new ResObject(res.FacilityReservationID, res.FacilityID, res.StartDateTime.Value, res.EndDateTime.Value,
                                res.UseShortDescription, res.UseDescription);

                            sqlResList.Reservations.Add(resobject);
                        }
                    }

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

                //logging
                string year = DateTime.Now.Year.ToString();
                string month = DateTime.Now.Month.ToString();
                string day = DateTime.Now.Day.ToString();

                string fulldateTime = DateTime.Now.ToString();
                string full = "[Executed on " + fulldateTime + " ]";

                string path = "c:\\LogTest\\GetFacilityReservations-" + year + "-" + month + "-" + day + ".txt";
                string line = "-----------------------------------------------------";

                using (StreamWriter file = (File.Exists(path)) ? File.AppendText(path) : File.CreateText(path))
                {
                    file.WriteLine(full);
                    file.WriteLine(line);

                    file.Close();
                }

                //codes to pass back the json string to the iPad
                Response.Write(json);
                Response.End();
            }
        }
		public FacilityCancelPage (string passFacilityID, string reservationid, string datePass)
		{
			InitializeComponent ();

			string[] splitToken = passFacilityID.Split (new[] { "." }, StringSplitOptions.None);
			char[] charArray = splitToken [1].ToCharArray ();
			string departmentID = ConfigurationSettings.departmentID;
			string block = splitToken [0];
			string level = charArray [0].ToString ();
			string name = passFacilityID;
			//yyyy-MMM-dd
			//check with webservice to confirm format again
			string date = datePass;

			//Facility Reservation Kiosk Name
			appName.Text = "Facility Reservation Kiosk";
			appName.FontAttributes = FontAttributes.Bold;
			var tapL = new TapGestureRecognizer ();
			tapL.Tapped += (object sender, EventArgs e) => 
				Navigation.PushModalAsync(new FacilityListingPage());
			appName.GestureRecognizers.Add (tapL);

			//set the label
			//set based on filter***
			title.Text = " \n" + "Facility Reservation";
			title.FontAttributes = FontAttributes.Bold;

			//filter button to filter the list of facility
			arrowButton.Image = "Left Arrow-50.png";
			arrowButton.BackgroundColor = Color.Transparent;

			//return to FacilityListingPage
			arrowButton.Clicked += (object sender, EventArgs e) => 
				Navigation.PopModalAsync (true);

			//facility name
			facName.Text = passFacilityID;
			facName.YAlign = TextAlignment.Center;
			facName.FontSize = 34;
			facName.FontAttributes = FontAttributes.Bold;

			//reservation status
			reservation.Text = "Cancellation";
			reservation.YAlign = TextAlignment.Center;
			reservation.FontSize = 34;
			reservation.FontAttributes = FontAttributes.Bold;

			//set background colour
			box.BackgroundColor = Color.Silver;

			//a list to store reservation objects
			List<ResObject> reservationList = new List<ResObject> ();

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

			urlRes = Security.SignHttpRequest (urlRes);

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

				var json2 = responseMsg2.Content.ReadAsStringAsync ();
				json2.Wait ();
				ReservationList list2 = JsonConvert.DeserializeObject<ReservationList> (json2.Result);

				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);
				}
			}

			//add in column definitions

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

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

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

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

			} 

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

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

			//rows for lineGrid
			lineGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Absolute) });
			lineGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			lineGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Absolute) });

			//drawing horizontal lines
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 2, 245, 0, 1);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 2, 245, 2, 3);

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

			resGrid.ColumnSpacing = 0;
			resGrid.RowSpacing = 0;

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

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

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

			} 

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

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

			//add row
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (19, GridUnitType.Absolute) });

			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (50, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (15, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (15, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (15, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (15, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (15, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (60, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
			resGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (60, GridUnitType.Absolute) });

			//boxview background
			resGrid.Children.Add (new BoxView { BackgroundColor = Color.Silver }, 2, 245, 1, 17);

			for (int j = 0; j < reservationList.Count; j++) {

				if (reservationList [j].facilityID == passFacilityID) {
					//booking reserved
					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 box = new BoxView { BackgroundColor = Color.Silver };
					//start, end , top, bottom
					//lineGrid.Children.Add (box, 3, 243, 1 , 2);
					lineGrid.Children.Add (box, start, end, 1, 2);
					//facGrid.Children.Add (facBut, start, end, (i*2) + 1, (i*2)+2);
					lineGrid.Children.Add (new Label {
						Text = text,
						TextColor = Color.Black,
						FontSize = 11,
						XAlign = TextAlignment.Center,
						YAlign = TextAlignment.Center
					}, start, end, 1, 2);

					//if else or switch to determine the start and end time
					//if 8-9 then...
					//from time
					if (reservationList[j].facilityReservationID == reservationid) {

						resGrid.Children.Add (new Label {
							Text = reservationList[j].startDateTime.ToString("dd-MMM-yyyy")
						}, 75, 123, 3, 4);
						
						Label timepick = new Label {
							Text = reservationList[j].startDateTime.ToString("H.mm tt"),
							YAlign = TextAlignment.Center
						};
						resGrid.Children.Add (timepick, 75, 112, 5, 6);

						//to time
						resGrid.Children.Add (new Label {
							Text = reservationList[j].endDateTime.ToString("H.mm tt"),
							YAlign = TextAlignment.Center
						}, 173, 210, 5, 6);

						facilityReservationID = reservationList [j].facilityReservationID;

						if ((reservationList [j].startDateTime.TimeOfDay >= eighttime
						   && reservationList [j].startDateTime.TimeOfDay < ninetime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 3, 27, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= ninetime
							&& reservationList [j].startDateTime.TimeOfDay < tentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 27, 51, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= tentime
							&& reservationList [j].startDateTime.TimeOfDay < eleventime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 51, 75, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= eleventime
							&& reservationList [j].startDateTime.TimeOfDay < twelvetime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 75, 99, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= twelvetime
							&& reservationList [j].startDateTime.TimeOfDay < thirteentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 99, 123, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= thirteentime
							&& reservationList [j].startDateTime.TimeOfDay < fourteentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 123, 147, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= fourteentime
							&& reservationList [j].startDateTime.TimeOfDay < fifteentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 147, 171, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= fifteentime
							&& reservationList [j].startDateTime.TimeOfDay < sixteentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 171, 195, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= sixteentime
							&& reservationList [j].startDateTime.TimeOfDay < seventeentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 195, 219, 0, 1);
						}

						if ((reservationList [j].startDateTime.TimeOfDay >= seventeentime
							&& reservationList [j].startDateTime.TimeOfDay < eighteentime)) {
							resGrid.Children.Add (new Image { Source = "arrowg.png" }, 219, 243, 0, 1);
						}
					}

				}	
			}

			//date now
			string dateNowLine = DateTime.Now.ToString ("dd-MM-yyyy HH:mm:ss");
			string 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]);

			int linestart, boxstart;

			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);
			}

			//draw vertical lines
			//8am,9am,10am
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 3, 4, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 27, 28, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 51, 52, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 75, 76, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 99, 100, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 123, 124, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 147, 148, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 171, 172, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 195, 196, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 219, 220, 0, 3);
			lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 243, 244, 0, 3);

			if (date == DateTime.Now.ToString ("yyyy-MMM-dd") || date == "") {
				//draw red line
				lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Red }, linestart, linestart + 1, 0, 3);
			}

			//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 (50, GridUnitType.Absolute) });
			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.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) });
			if (date == DateTime.Now.ToString ("yyyy-MMM-dd") || date == "") {
				boxGrid.Children.Add (new BoxView { BackgroundColor = Color.Red }, boxstart - 9, boxstart + 10, 0, 1);
				boxGrid.Children.Add (new Label {
					Text = dateTiming,
					TextColor = Color.Black,
					FontSize = 9.5,
					XAlign = TextAlignment.Center,
					YAlign = TextAlignment.Center
				}, boxstart - 9, boxstart + 10, 0, 1);
			}

			// add in label and textboxes to make new reservation
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "Cancel Reservation",
				XAlign = TextAlignment.Center,
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 75, 171, 1, 2);

			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "On",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 27, 75, 3, 4);

			//Date label in for loop

			//from time label
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "From",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 27, 75, 5, 6);
					

			//to time label
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "To",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 147, 171, 5, 6);
					
			//reason
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "Reason",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 27, 75, 7, 8);

			//entry input of reason
			Entry cellInput = new Entry ();
			resGrid.Children.Add (cellInput, 75, 205, 7, 8);

			//usertype
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "User Type",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 27, 75, 9, 10);

			Picker usertypeInput = new Picker {SelectedIndex = 1};
			resGrid.Children.Add (usertypeInput, 75, 115, 9, 10);
			usertypeInput.Items.Add ("Staff");
			usertypeInput.Items.Add ("Students");

			//userid
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "User ID",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 27, 75, 11, 12);

			//entry input of userid
			Entry inputID = new Entry ();
			resGrid.Children.Add (inputID, 75, 123, 11, 12);

			//password
			resGrid.Children.Add (new Label {
				TextColor = Color.Black,
				Text = "Password",
				YAlign = TextAlignment.Center,
				FontAttributes = FontAttributes.Bold,
				FontSize = 20
			}, 27, 75, 13, 14);

			//entry input of password
			Entry inputPass = new Entry ();
			resGrid.Children.Add (inputPass, 75, 135, 13, 14);
			inputPass.IsPassword =  true;

			//button
			Button bookBut = new Button { Text="Confirm", BackgroundColor = Color.White };
			resGrid.Children.Add (bookBut, 147, 192, 15, 16);

			bookBut.Clicked += (object sender, EventArgs e) => {

				userID = inputID.Text;
				password = inputPass.Text;
				reason = cellInput.Text;

				//check user
				if (userID == "133332D" && password == "12345") {
					string status;
					string message;
					//url
					//facilityReservationID
					string urlCancel = ConfigurationSettings.urliPad + "CancelReservation.aspx?UserID=" + userID
						+ "&FacilityReservationID=" + facilityReservationID + "&Reason=" + reason;

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

						var json3 = responseMsg3.Content.ReadAsStringAsync ();
						json3.Wait ();
						string jsonString = json3.Result.ToString ();
						//ReservationList list2 = JsonConvert.DeserializeObject<ReservationList> (json3.Result);
						var obj = JObject.Parse (jsonString);
						status = (string)obj.SelectToken ("Result");
						message = (string)obj.SelectToken ("Message");
					}

					if (status == "OK") {
						ShowAlert ("Reservation", "Cancellation was sucessful!", "OK");
					} else {
						DisplayAlert ("Error", message, "OK");
					}
				}
			};

			Button cancelBut = new Button { Text="Cancel", BackgroundColor = Color.White 	};
			resGrid.Children.Add (cancelBut, 195, 240, 15, 16);

			cancelBut.Clicked += CancelBut_Clicked;
		}
        public FacilityDetailsPage(string passFacilityID, string datePass)
        {
            InitializeComponent ();

            string[] splitToken = passFacilityID.Split (new[] { "." }, StringSplitOptions.None);
            char[] charArray = splitToken [1].ToCharArray ();
            string departmentID = ConfigurationSettings.departmentID;
            string block = splitToken [0];
            string level = charArray [0].ToString ();
            string name = passFacilityID;
            //yyyy-MMM-dd
            //check with webservice to confirm format again

            string date = datePass;

            //Facility Reservation Kiosk Name
            appName.Text = "Facility Reservation Kiosk";
            appName.FontAttributes = FontAttributes.Bold;

            //set the label
            //set based on filter***
            title.Text = " \n" + "Facility Details";
            title.FontAttributes = FontAttributes.Bold;

            //filter button to filter the list of facility
            arrowButton.Image = "Left Arrow-50.png";
            arrowButton.BackgroundColor = Color.Transparent;

            //return to FacilityListingPage
            arrowButton.Clicked += (object sender, EventArgs e) =>
                Navigation.PopModalAsync (true);

            //facility name
            facName.Text = passFacilityID;
            facName.YAlign = TextAlignment.Center;
            facName.FontSize = 34;
            facName.FontAttributes = FontAttributes.Bold;

            //reservation status
            reserve.Text = "Available";
            reserve.YAlign = TextAlignment.Center;
            reserve.FontSize = 34;
            reserve.FontAttributes = FontAttributes.Bold;

            //set box colour based on reserved or no
            //box.BackgroundColor = Color.Red;
            box.BackgroundColor = Color.Lime;

            //a list to store reservation objects
            List<ResObject> reservationList = new List<ResObject> ();

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

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

                var json2 = responseMsg2.Content.ReadAsStringAsync ();
                json2.Wait ();
                ReservationList list2 = JsonConvert.DeserializeObject<ReservationList> (json2.Result);

                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);
                }
            }

            UpdateCamera (passFacilityID);
            Xamarin.Forms.Device.StartTimer (TimeSpan.FromSeconds(20), () => {

                UpdateCamera(passFacilityID);

                return true;

            });

            timeline.RowDefinitions.Add (new RowDefinition { Height = new GridLength (10, GridUnitType.Absolute) });
            timeline.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });

            Label labelNow;
            labelNow = new Label { TextColor = Color.Black };
            timeline.Children.Add (labelNow, 1, 1);
            labelNow.FontAttributes = FontAttributes.Bold;
            //labelNow.Text = "";

            //check if display label as today or other date
            if (date == DateTime.Now.ToString ("yyyy-MMM-dd") || date == "") {
                labelNow.Text = "Today";
            }
            else {
                string [] arrayDate = date.Split (new[] { "-" }, StringSplitOptions.None);
                labelNow.Text = arrayDate [2] + "-" + arrayDate [1] + "-" + arrayDate [0];
            }

            TimeSpan dateNowHourStatus;
            TimeSpan dateStartStatus;
            TimeSpan dateEndStatus;

            //loop the reservations
            for (int i = 0; i < reservationList.Count; i++) {
                timeline.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });

                string startTime, endTime;
                string start = reservationList [i].startDateTime.ToString ("dd-MM-yyyy HH:mm:ss");
                string end = reservationList [i].endDateTime.ToString ("dd-MM-yyyy HH:mm:ss");
                string dateNow = DateTime.Now.ToString ("dd-MM-yyyy HH:mm:ss");

                if (start == dateNow) {
                    startTime = "Now";
                } else {
                    //time
                    string[] stoken = start.Split (new[] { " " }, StringSplitOptions.None);
                    //timing[0] = 08 (hour) //timing[1] = 30 (mins)
                    string[] stiming = stoken [1].Split (new[] { ":" }, StringSplitOptions.None);
                    startTime = stiming [0] + "." + stiming [1];
                }

                //time (end)
                string[] etoken = end.Split (new[] { " " }, StringSplitOptions.None);
                //timing[0] = 08 (hour) //timing[1] = 30 (mins)
                string[] etiming = etoken [1].Split (new[] { ":" }, StringSplitOptions.None);
                endTime = etiming [0] + "." + etiming [1];

                Label labelTime;
                labelTime = new Label { TextColor = Color.Black };
                timeline.Children.Add (labelTime, 1, i + 2);
                labelTime.Text = startTime + " to " + endTime;
                labelTime.FontAttributes = FontAttributes.Bold;

                Label desc;
                desc = new Label { TextColor = Color.Black };
                timeline.Children.Add (desc, 2, i + 2);
                desc.Text = reservationList[i].useShortDescription + " " + reservationList [i].useDescription;
                desc.FontAttributes = FontAttributes.Bold;
            }

            //add in column definitions

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

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

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

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

            }

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

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

            //rows for lineGrid
            lineGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Absolute) });
            lineGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (30, GridUnitType.Absolute) });
            lineGrid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Absolute) });

            //drawing horizontal lines
            lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 2, 245, 0, 1);
            lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 2, 245, 2, 3);

            //add image boxes
            //tap gesture for pop up
            Image eightnine = new Image { BackgroundColor = Color.Transparent };
            Image nineten = new Image { BackgroundColor = Color.Transparent };
            Image teneleven = new Image { BackgroundColor = Color.Transparent };
            Image eleventwelve = new Image { BackgroundColor = Color.Transparent };
            Image twelve13 = new Image { BackgroundColor = Color.Transparent };
            Image thirteen14 = new Image { BackgroundColor = Color.Transparent };
            Image fourteen15 = new Image { BackgroundColor = Color.Transparent };
            Image fifteen16 = new Image { BackgroundColor = Color.Transparent };
            Image sixteen17 = new Image { BackgroundColor = Color.Transparent };
            Image seventeen18 = new Image { BackgroundColor = Color.Transparent };

            lineGrid.Children.Add (eightnine, 3, 27, 0, 3);
            lineGrid.Children.Add (nineten, 27, 51, 0, 3);
            lineGrid.Children.Add (teneleven, 51, 75, 0, 3);
            lineGrid.Children.Add (eleventwelve, 75, 99, 0, 3);
            lineGrid.Children.Add (twelve13, 99, 123, 0, 3);
            lineGrid.Children.Add (thirteen14, 123, 147, 0, 3);
            lineGrid.Children.Add (fourteen15, 147, 171, 0, 3);
            lineGrid.Children.Add (fifteen16, 171, 195, 0, 3);
            lineGrid.Children.Add (sixteen17, 195, 219, 0, 3);
            lineGrid.Children.Add (seventeen18, 219, 243, 0, 3);

            var tap89 = new TapGestureRecognizer ();
            tap89.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "89", date));
            };
            eightnine.GestureRecognizers.Add (tap89);

            var tap910 = new TapGestureRecognizer ();
            tap910.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "910", date));
            };
            nineten.GestureRecognizers.Add (tap910);

            var tap1011 = new TapGestureRecognizer ();
            tap1011.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1011", date));
            };
            teneleven.GestureRecognizers.Add (tap1011);

            var tap1112 = new TapGestureRecognizer ();
            tap1112.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1112", date));
            };
            eleventwelve.GestureRecognizers.Add (tap1112);

            var tap1213 = new TapGestureRecognizer ();
            tap1213.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1213", date));
            };
            twelve13.GestureRecognizers.Add (tap1213);

            var tap1314 = new TapGestureRecognizer ();
            tap1314.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1314", date));
            };
            thirteen14.GestureRecognizers.Add (tap1314);

            var tap1415 = new TapGestureRecognizer ();
            tap1415.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1415", date));
            };
            fourteen15.GestureRecognizers.Add (tap1415);

            var tap1516 = new TapGestureRecognizer ();
            tap1516.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1516", date));
            };
            fifteen16.GestureRecognizers.Add (tap1516);

            var tap1617 = new TapGestureRecognizer ();
            tap1617.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1617", date));
            };
            sixteen17.GestureRecognizers.Add (tap1617);

            var tap1718 = new TapGestureRecognizer ();
            tap1718.Tapped += (object sender, EventArgs e) => {
                Navigation.PushModalAsync (new FacilityReservationPage (passFacilityID, "1718", date));
            };
            seventeen18.GestureRecognizers.Add (tap1718);

            for (int j = 0; j < reservationList.Count; j++) {

                if (reservationList [j].facilityID == passFacilityID) {
                //booking reserved
                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 box = new BoxView { BackgroundColor = Color.Silver };
                //start, end , top, bottom
                //lineGrid.Children.Add (box, 3, 243, 1 , 2);
                lineGrid.Children.Add (box, start, end, 1, 2);
                //facGrid.Children.Add (facBut, start, end, (i*2) + 1, (i*2)+2);
                    Label resLabelTap = new Label {
                        Text = text,
                        TextColor = Color.Black,
                        FontSize = 11,
                        XAlign = TextAlignment.Center,
                        YAlign = TextAlignment.Center
                    };
                    lineGrid.Children.Add (resLabelTap, start, end, 1, 2);

                    Label id = new Label ();
                    id.Text = reservationList [j].facilityReservationID;
                    id.IsVisible = false;

                    //add gesture to tap
                    var bosRes = new TapGestureRecognizer ();
                    bosRes.Tapped += (object sender, EventArgs e) => {
                        //pass in reservation ID to know which reservation is clicked
                        Navigation.PushModalAsync (new FacilityCancelPage (passFacilityID, id.Text, date));
                    };
                    resLabelTap.GestureRecognizers.Add (bosRes);
                }

                //comeback and do again
                //tell if available or reserved
                dateNowHourStatus = DateTime.Now.TimeOfDay;
                dateStartStatus = reservationList [j].startDateTime.TimeOfDay;
                dateEndStatus = reservationList [j].endDateTime.TimeOfDay;

                //come back and do again
                if (dateStartStatus <= dateNowHourStatus && dateEndStatus >= dateNowHourStatus) {
                    //reservation status
                    reserve.Text = "Reserved";
                    reserve.YAlign = TextAlignment.Center;
                    reserve.FontSize = 34;
                    reserve.FontAttributes = FontAttributes.Bold;

                    //set box colour based on reserved or no
                    box.BackgroundColor = Color.Red;
                    //box.BackgroundColor = Color.Lime;
                }
            }

            //date now
            string dateNowLine = DateTime.Now.ToString ("dd-MM-yyyy HH:mm:ss");
            string 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]);

            int linestart,boxstart;

            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);
            }

            //only show the line if the rdate is clicked today
            //if (date == DateTime.Now.ToString ("yyyy-MMM-dd")) {
                //draw vertical lines
                //8am,9am,10am
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 3, 4, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 27, 28, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 51, 52, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 75, 76, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 99, 100, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 123, 124, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 147, 148, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 171, 172, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 195, 196, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 219, 220, 0, 3);
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Black }, 243, 244, 0, 3);

            if (date == DateTime.Now.ToString ("yyyy-MMM-dd")) {
                //draw red line
                lineGrid.Children.Add (new BoxView { BackgroundColor = Color.Red }, linestart, linestart + 1, 0, 3);
            }
            //}
            //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 (50, GridUnitType.Absolute) });
            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.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) });
            if (date == DateTime.Now.ToString ("yyyy-MMM-dd")) {
                boxGrid.Children.Add (new BoxView { BackgroundColor = Color.Red }, boxstart - 9, boxstart + 10, 0, 1);
                boxGrid.Children.Add (new Label {
                    Text = dateTiming,
                    TextColor = Color.Black,
                    FontSize = 9.5,
                    XAlign = TextAlignment.Center,
                    YAlign = TextAlignment.Center
                }, boxstart - 9, boxstart + 10, 0, 1);
            }
        }
        //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();
        }