コード例 #1
0
        private async void OnCurrentSessionChanged(object sender, EventArgs e)
        {
            if (this.Ratings == null)
            {
                return;
            }

            // Änderungen des zuletzt selektierten Ratings speichern
            if (this.CurrentRating != null)
            {
                if (_currentRatingHasChanges)
                {
                    this.IsBusy = true;
                    if (this.CurrentRating.Id == 0)
                    {
                        var rating    = this.CurrentRating;
                        var newRating = await _sessionService.AddRatingAsync(rating);

                        rating.Id = newRating.Id;
                    }
                    else
                    {
                        await _sessionService.UpdateRatingAsync(this.CurrentRating);
                    }
                    _currentRatingHasChanges = false;
                    this.IsBusy = false;
                }
                this.CurrentRating.PropertyChanged -= this.OnCurrentRatingPropertyChanged;
            }

            var session = this.SessionsView.CurrentItem as SessionDto;

            if (session != null)
            {
                this.CurrentRating = null;
                var rating = (from r in this.Ratings where r.SessionId.Equals(session.SessionBaseId) select r).FirstOrDefault();
                this.CurrentRating = rating;
                if (this.CurrentRating == null && session.Speaker1Id > 0)
                {
                    var newRating = new Rating()
                    {
                        SessionId = session.SessionBaseId, SpeakerId = session.Speaker1Id
                    };
                    this.Ratings.Add(newRating);
                    this.CurrentRating = newRating;
                }
                if (this.CurrentRating != null)
                {
                    this.CurrentRating.PropertyChanged += this.OnCurrentRatingPropertyChanged;
                }
            }
        }