public RestaurantDetails(string idRest) { // Constructor. IModel model = (DataBaseModel)Application.Current.Properties["model"]; DataContext = new ViewModelRestaurantDetails(model); var VMRestID = "VM_RestID"; var bindingRestID = new Binding(VMRestID) { Mode = BindingMode.TwoWay }; this.SetBinding(RestIDProperty, bindingRestID); // Send model the rest id. RestID = idRest; var VMRestDetails = "VM_RestDetails"; var bindingRestDetails = new Binding(VMRestDetails) { Mode = BindingMode.OneWay }; this.SetBinding(RestDetailsProperty, bindingRestDetails); var VMIsClient = "VM_IsClient"; var bindingIsClient = new Binding(VMIsClient) { Mode = BindingMode.OneWay }; this.SetBinding(WhoIsItProperty, bindingIsClient); InitializeComponent(); // Hides these objects until the visibility changes. noStyle.Visibility = Visibility.Collapsed; noReviews.Visibility = Visibility.Collapsed; noURL.Visibility = Visibility.Collapsed; bool isClient = WhoIsIt; // Checks who is it (clien/owner) for the correct view options. if (isClient) { // It's client. edit.Visibility = Visibility.Collapsed; } else { // It's rest owner. addNewReview.Visibility = Visibility.Collapsed; } if (idRest == null) { // Error handling Console.WriteLine("Error - No rest id exists"); } else { // Fill view from the binding rest details. // Fill name view. if (RestDetails.Name == null || RestDetails.Name.Equals("")) { restName.Content = "None"; } else { restName.Content = RestDetails.Name; } // Fill location view. if (RestDetails.City != null && !RestDetails.City.Equals("") && RestDetails.Country != null && !RestDetails.Country.Equals("")) { location.Content = RestDetails.City + ", " + RestDetails.Country; } else if ((RestDetails.City == null || RestDetails.City.Equals("")) && RestDetails.Country != null && !RestDetails.Country.Equals("")) { location.Content = "None, " + RestDetails.Country; } else if (RestDetails.City != null && !RestDetails.City.Equals("") && (RestDetails.Country == null || !RestDetails.Country.Equals(""))) { location.Content = RestDetails.City + ", None"; } else { location.Content = "None, None"; } // Fill rating view. raitingNum.Content = RestDetails.Rate; // Fill stars view according to rating number. stp = (StackPanel)FindName("stars"); StarsRaitingView str = new StarsRaitingView(); stp.Children.Add(str); // Fill price view. priceValue.Content = RestDetails.PriceRange; // Fill list of styles. int styleNum = RestDetails.Types.Count; if (styleNum == 0) { style.Visibility = Visibility.Collapsed; noStyle.Visibility = Visibility.Visible; } else { // There is styles. stp = (StackPanel)FindName("styleList"); for (int i = 0; i < styleNum; i++) { Style s = new Style(RestDetails.Types[i]); stp.Children.Add(s); } } // Fill list of reviews. List <UserReview> reviews = RestDetails.Reviews; if (reviews == null || reviews.Count == 0) { review.Visibility = Visibility.Collapsed; noReviews.Visibility = Visibility.Visible; if (isClient) { addNewReview.Background = Brushes.Yellow; } } else { // There is reviews. stp = (StackPanel)FindName("reviewsList"); for (int i = 0; i < reviews.Count; i++) { Review r = new Review(i + 1, reviews[i]); stp.Children.Add(r); } } // Fill URL view. if (RestDetails.URL == null || RestDetails.URL.Equals("")) { // No URL address. } else { // Show URL address. Uri hyperlink; if (RestDetails.URL.Contains("http")) { hyperlink = new Uri(RestDetails.URL); } else { hyperlink = new Uri("https://www.tripadvisor.co.il" + RestDetails.URL); } urlAdd.NavigateUri = hyperlink; } } }
public StarsRaitingView() { // Constructor. IModel model = (DataBaseModel)Application.Current.Properties["model"]; DataContext = new ViewModelRestaurantDetails(model); var VMRestRating = "VM_RestRating"; var bindingRestRating = new Binding(VMRestRating) { Mode = BindingMode.OneWay }; this.SetBinding(RestRatingProperty, bindingRestRating); InitializeComponent(); // Hides these objects until the visibility changes. stat1E.Visibility = Visibility.Collapsed; stat2E.Visibility = Visibility.Collapsed; stat3E.Visibility = Visibility.Collapsed; stat4E.Visibility = Visibility.Collapsed; stat5E.Visibility = Visibility.Collapsed; stat1H.Visibility = Visibility.Collapsed; stat2H.Visibility = Visibility.Collapsed; stat3H.Visibility = Visibility.Collapsed; stat4H.Visibility = Visibility.Collapsed; stat5H.Visibility = Visibility.Collapsed; stat1F.Visibility = Visibility.Collapsed; stat2F.Visibility = Visibility.Collapsed; stat3F.Visibility = Visibility.Collapsed; stat4F.Visibility = Visibility.Collapsed; stat5F.Visibility = Visibility.Collapsed; // Get current rest raiting. double raiting = RestRating; int rate = (int)raiting; // Fill the view with full stars according to rate number. switch (rate) { case 1: stat1F.Visibility = Visibility.Visible; break; case 2: stat1F.Visibility = Visibility.Visible; stat2F.Visibility = Visibility.Visible; break; case 3: stat1F.Visibility = Visibility.Visible; stat2F.Visibility = Visibility.Visible; stat3F.Visibility = Visibility.Visible; break; case 4: stat1F.Visibility = Visibility.Visible; stat2F.Visibility = Visibility.Visible; stat3F.Visibility = Visibility.Visible; stat4F.Visibility = Visibility.Visible; break; case 5: stat1F.Visibility = Visibility.Visible; stat2F.Visibility = Visibility.Visible; stat3F.Visibility = Visibility.Visible; stat4F.Visibility = Visibility.Visible; stat5F.Visibility = Visibility.Visible; break; } // Fill the view with empty stars according to rate number. switch (rate) { case 4: stat5E.Visibility = Visibility.Visible; break; case 3: stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; case 2: stat3E.Visibility = Visibility.Visible; stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; case 1: stat2E.Visibility = Visibility.Visible; stat3E.Visibility = Visibility.Visible; stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; case 0: stat1E.Visibility = Visibility.Visible; stat2E.Visibility = Visibility.Visible; stat3E.Visibility = Visibility.Visible; stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; } // Checks if the raiting number is fraction. if (raiting % 1 != 0) { // Fill the view with half stars according to rate number. switch (rate) { case 4: stat5H.Visibility = Visibility.Visible; break; case 3: stat4H.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; case 2: stat3H.Visibility = Visibility.Visible; stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; case 1: stat2H.Visibility = Visibility.Visible; stat3E.Visibility = Visibility.Visible; stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; case 0: stat1H.Visibility = Visibility.Visible; stat2E.Visibility = Visibility.Visible; stat3E.Visibility = Visibility.Visible; stat4E.Visibility = Visibility.Visible; stat5E.Visibility = Visibility.Visible; break; } } }