public override async Task LoadAsync(int friendId)
        {
            var friendServiceCall = await this._friendService
                                    .GetAsync(friendId);

            Friend = new FriendModelWrapper(friendServiceCall);

            Id = Friend.Id;

            CheckChangeHandler(Friend);

            InitializePhoneNumbers(Friend.PhoneNumbers);

            LoadProgrammyngLanguages();
        }
        public override async Task LoadAddableAsync()
        {
            var friendServiceCall = await this._friendService
                                    .AddNewAsync();

            Friend = new FriendModelWrapper(friendServiceCall);

            LoadProgrammyngLanguages();

            CheckChangeHandler(Friend);

            if (Friend.Id == 0)
            {
                TriggerValidation(Friend);
            }
        }
 private void CheckChangeHandler(FriendModelWrapper friend)
 {
     Friend.PropertyChanged += (s, e) =>
     {
         if (!HasChange)
         {
             HasChange = this._friendService.HasChanges();
         }
         if (e.PropertyName == nameof(Friend.HasErrors))
         {
             ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
         }
         if (e.PropertyName == nameof(Friend.FirstName) || e.PropertyName == nameof(Friend.LastName))
         {
             SetTitle();
         }
     };
     ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
     if (Friend.Id == 0)
     {
         Friend.FirstName = "";
     }
     SetTitle();
 }
 private void TriggerValidation(FriendModelWrapper friend)
 {
     Friend.FirstName = "";
     Friend.LastName  = "";
     Friend.Email     = "";
 }