Exemplo n.º 1
0
Arquivo: Car.cs Projeto: Epoxie/Garage
 public override List <string> ToList()
 {
     return(new List <string>()
     {
         "Car", RegNr, Model, Color, Brand, ProdYear.ToString(), ParkTime.ToString()
     });
 }
Exemplo n.º 2
0
 public override List <string> ToList()
 {
     return(new List <string>()
     {
         "Motorcycle", RegNr, Model, Color, Brand, Class.ToString(), ParkTime.ToString()
     });
 }
Exemplo n.º 3
0
 public override List <string> ToList()
 {
     return(new List <string>()
     {
         "Truck", RegNr, Model, Color, Brand, Size.ToString(), ParkTime.ToString()
     });
 }
Exemplo n.º 4
0
        protected override async void OnAppearing()
        {
            using (IProgressDialog progress = UserDialogs.Instance.Loading("Loading park details", null, null, true, MaskType.Black))
            {
                var parkingSpot = Barrel.Current.Get <ParkingSpotPreview>("ParkingSpot_" + ParkingSpotPreview.Id);

                if (parkingSpot != null)
                {
                    ParkingSpotPreview = parkingSpot;

                    ParkTypesEnum parkTypesEnum = ParkTypesEnum.None;

                    foreach (ParkTypesEnum parkSpot in ParkingSpotPreview.Details.ParkSpots.Keys)
                    {
                        parkTypesEnum |= parkSpot;
                    }

                    ParkingSpotPreview.ParkTypes = (int)parkTypesEnum;

                    // Assign the correct values to the labels.
                    ParkImage.Source = ParkingSpotPreview.Details.Image;

                    ParkName.Text        = ParkingSpotPreview.Name;
                    ParkType.Text        = new ParkTypeToStringConverter().Convert(ParkingSpotPreview.ParkTypes, null, null, CultureInfo.CurrentCulture).ToString();
                    ParkUnderground.Text = new BoolToIsUndergroundString().Convert(ParkingSpotPreview.Underground, null, null, CultureInfo.CurrentCulture).ToString();
                    ParkFloor.Text       = "Floor: " + ParkingSpotPreview.Floor;
                    ParkPaid.Text        = new BoolToIsPaidStringConverter().Convert(ParkingSpotPreview.Paid, null, null, CultureInfo.CurrentCulture).ToString();

                    // Check what park spot type the park has.
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Handicap) == ParkTypesEnum.Handicap)
                    {
                        ParkSpotsHandicap.IsVisible = true;
                        ParkSpotsHandicap.Text      = "Handicap spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Handicap];
                    }
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Family) == ParkTypesEnum.Family)
                    {
                        ParkSpotsFamily.IsVisible = true;
                        ParkSpotsFamily.Text      = "Family spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Family];
                    }
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Eletric) == ParkTypesEnum.Eletric)
                    {
                        ParkSpotsEletric.IsVisible = true;
                        ParkSpotsEletric.Text      = "Eletric vehicle spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Eletric];
                    }
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Bike) == ParkTypesEnum.Bike)
                    {
                        ParkSpotsBike.IsVisible = true;
                        ParkSpotsBike.Text      = "Bike spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Bike];
                    }

                    // Check if the park is currently open.
                    WeekDay currentDay = (WeekDay)DateTime.Today.DayOfWeek - 1;
                    if ((int)currentDay == -1)
                    {
                        currentDay = WeekDay.Sunday;
                    }

                    ParkTime currentDayParkTime = ParkingSpotPreview.Details.ParkTimes.ParkingTimes.First(time => time.Value.WeekDay == currentDay).Value;

                    TimeSpan currentTime = DateTime.Now.TimeOfDay;

                    if (currentDayParkTime.AlwaysOpen)
                    {
                        OpenStatusLabel.Text = "Open all day";
                    }
                    // Check wether the park close hour is after todays open hour.
                    else if (currentDayParkTime.TimeClose > currentDayParkTime.TimeOpen)
                    {
                        // Check wether the park is currently open.
                        if (currentTime > currentDayParkTime.TimeOpen && currentTime < currentDayParkTime.TimeClose)
                        {
                            OpenStatusLabel.Text = string.Format("Open until {0:hh\\:mm}", currentDayParkTime.TimeClose);
                        }
                        // Check wether the park has already closed.
                        else if (currentTime > currentDayParkTime.TimeClose)
                        {
                            // Check if tomorrow will be open all day.
                            WeekDay tomorrow = currentDay + 1;
                            if ((int)tomorrow == 7)
                            {
                                tomorrow = WeekDay.Monday;
                            }

                            ParkTime tomorrowDayParkTime = ParkingSpotPreview.Details.ParkTimes.ParkingTimes.First(time => time.Value.WeekDay == tomorrow).Value;

                            if (tomorrowDayParkTime.AlwaysOpen)
                            {
                                OpenStatusLabel.Text = "Closed. Will be open tomorrow all day";
                            }
                            else
                            {
                                // Get tomorrow's opening time.
                                OpenStatusLabel.Text = string.Format("Closed. Will open tomorrow at {0:hh\\:mm}", tomorrowDayParkTime.TimeOpen);
                            }
                        }
                        // The park hasn't opened yet today.
                        else
                        {
                            OpenStatusLabel.Text = string.Format("Closed. Will open today at {0:hh\\:mm}", currentDayParkTime.TimeOpen);
                        }
                    }
                    // The close hour is before the open hour.
                    else
                    {
                        // Check wether the park is currently after it's open hour.
                        if (currentTime > currentDayParkTime.TimeOpen)
                        {
                            OpenStatusLabel.Text = "Open for the rest of the day.";
                        }
                        // Check wether the park is currently before it's close hour.
                        else if (currentTime < currentDayParkTime.TimeClose)
                        {
                            OpenStatusLabel.Text = string.Format("Open until {0:hh\\:mm}", currentDayParkTime.TimeClose);
                        }
                        // The park has already closed but will open later today.
                        else
                        {
                            OpenStatusLabel.Text = string.Format("Closed. Will open today at {0:hh\\:mm}", currentDayParkTime.TimeOpen);
                        }
                    }
                }
                else
                {
                    ParkSpot[] parkSpots = await GetParkingSpot(ParkingSpotPreview.Id);

                    ParkTypesEnum parkTypesEnum = ParkTypesEnum.None;

                    if (ParkingSpotPreview.Details.ParkSpots.Count > 0)
                    {
                        foreach (ParkSpot parkSpot in parkSpots)
                        {
                            parkTypesEnum |= (ParkTypesEnum)parkSpot.CategoryId;
                        }
                    }
                    else
                    {
                        foreach (ParkSpot parkSpot in parkSpots)
                        {
                            parkTypesEnum |= (ParkTypesEnum)parkSpot.CategoryId;
                            ParkingSpotPreview.Details.ParkSpots.Add((ParkTypesEnum)parkSpot.CategoryId, parkSpot.NumSpots);
                        }
                    }

                    ParkingSpotPreview.ParkTypes     = (int)parkTypesEnum;
                    ParkingSpotPreview.Details.Image = await GetParkingSpotImage(ParkingSpotPreview.Id);

                    ParkTime[] parkTimes = await GetParkingTimes(ParkingSpotPreview.Id);

                    foreach (ParkTime parkTime in parkTimes)
                    {
                        ParkingSpotPreview.Details.ParkTimes.ParkingTimes[parkTime.WeekDay].AlwaysOpen = parkTime.AlwaysOpen;
                        ParkingSpotPreview.Details.ParkTimes.ParkingTimes[parkTime.WeekDay].TimeOpen   = parkTime.TimeOpen;
                        ParkingSpotPreview.Details.ParkTimes.ParkingTimes[parkTime.WeekDay].TimeClose  = parkTime.TimeClose;
                    }

                    // Assign the correct values to the labels.
                    ParkImage.Source = ParkingSpotPreview.Details.Image;

                    ParkName.Text        = ParkingSpotPreview.Name;
                    ParkType.Text        = new ParkTypeToStringConverter().Convert(ParkingSpotPreview.ParkTypes, null, null, CultureInfo.CurrentCulture).ToString();
                    ParkUnderground.Text = new BoolToIsUndergroundString().Convert(ParkingSpotPreview.Underground, null, null, CultureInfo.CurrentCulture).ToString();
                    ParkFloor.Text       = "Floor: " + ParkingSpotPreview.Floor;
                    ParkPaid.Text        = new BoolToIsPaidStringConverter().Convert(ParkingSpotPreview.Paid, null, null, CultureInfo.CurrentCulture).ToString();

                    // Check what park spot type the park has.
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Handicap) == ParkTypesEnum.Handicap)
                    {
                        ParkSpotsHandicap.IsVisible = true;
                        ParkSpotsHandicap.Text      = "Handicap spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Handicap];
                    }
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Family) == ParkTypesEnum.Family)
                    {
                        ParkSpotsFamily.IsVisible = true;
                        ParkSpotsFamily.Text      = "Family spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Family];
                    }
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Eletric) == ParkTypesEnum.Eletric)
                    {
                        ParkSpotsEletric.IsVisible = true;
                        ParkSpotsEletric.Text      = "Eletric vehicle spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Eletric];
                    }
                    if (((ParkTypesEnum)ParkingSpotPreview.ParkTypes & ParkTypesEnum.Bike) == ParkTypesEnum.Bike)
                    {
                        ParkSpotsBike.IsVisible = true;
                        ParkSpotsBike.Text      = "Bike spots: " + ParkingSpotPreview.Details.ParkSpots[ParkTypesEnum.Bike];
                    }

                    // Check if the park is currently open.
                    WeekDay currentDay = (WeekDay)DateTime.Today.DayOfWeek - 1;
                    if ((int)currentDay == -1)
                    {
                        currentDay = WeekDay.Sunday;
                    }

                    ParkTime currentDayParkTime = ParkingSpotPreview.Details.ParkTimes.ParkingTimes.First(time => time.Value.WeekDay == currentDay).Value;

                    TimeSpan currentTime = DateTime.Now.TimeOfDay;

                    if (currentDayParkTime.AlwaysOpen)
                    {
                        OpenStatusLabel.Text = "Open all day";
                    }
                    // Check wether the park close hour is after todays open hour.
                    else if (currentDayParkTime.TimeClose > currentDayParkTime.TimeOpen)
                    {
                        // Check wether the park is currently open.
                        if (currentTime > currentDayParkTime.TimeOpen && currentTime < currentDayParkTime.TimeClose)
                        {
                            OpenStatusLabel.Text = string.Format("Open until {0:hh\\:mm}", currentDayParkTime.TimeClose);
                        }
                        // Check wether the park has already closed.
                        else if (currentTime > currentDayParkTime.TimeClose)
                        {
                            // Check if tomorrow will be open all day.
                            WeekDay tomorrow = currentDay + 1;
                            if ((int)tomorrow == 7)
                            {
                                tomorrow = WeekDay.Monday;
                            }

                            ParkTime tomorrowDayParkTime = ParkingSpotPreview.Details.ParkTimes.ParkingTimes.First(time => time.Value.WeekDay == tomorrow).Value;

                            if (tomorrowDayParkTime.AlwaysOpen)
                            {
                                OpenStatusLabel.Text = "Closed. Will be open tomorrow all day";
                            }
                            else
                            {
                                // Get tomorrow's opening time.
                                OpenStatusLabel.Text = string.Format("Closed. Will open tomorrow at {0:hh\\:mm}", tomorrowDayParkTime.TimeOpen);
                            }
                        }
                        // The park hasn't opened yet today.
                        else
                        {
                            OpenStatusLabel.Text = string.Format("Closed. Will open today at {0:hh\\:mm}", currentDayParkTime.TimeOpen);
                        }
                    }
                    // The close hour is before the open hour.
                    else
                    {
                        // Check wether the park is currently after it's open hour.
                        if (currentTime > currentDayParkTime.TimeOpen)
                        {
                            OpenStatusLabel.Text = "Open for the rest of the day.";
                        }
                        // Check wether the park is currently before it's close hour.
                        else if (currentTime < currentDayParkTime.TimeClose)
                        {
                            OpenStatusLabel.Text = string.Format("Open until {0:hh\\:mm}", currentDayParkTime.TimeClose);
                        }
                        // The park has already closed but will open later today.
                        else
                        {
                            OpenStatusLabel.Text = string.Format("Closed. Will open today at {0:hh\\:mm}", currentDayParkTime.TimeOpen);
                        }
                    }

                    Barrel.Current.Add("ParkingSpot_" + ParkingSpotPreview.Id, ParkingSpotPreview, TimeSpan.FromDays(7));
                }
            }
        }