private void ExecuteDeleteResidence()
        {
            MessageBoxResult result = MessageBox.Show("Deleting Residence will delete all of the members also, \nAre you sure to delete", "Delete", MessageBoxButton.YesNo, MessageBoxImage.Warning);

            if (result == MessageBoxResult.Yes)
            {
                if (CurrentResidence != null)
                {
                    using (var unitofWork = new UnitOfWork(new MahalluDBContext())) {
                        List <ResidenceMember> members = new List <ResidenceMember>(unitofWork.ResidenceMembers.Find((x) => x.Residence_Id == CurrentResidence.Id));
                        unitofWork.ResidenceMembers.RemoveRange(members);
                        Residence residence = unitofWork.Residences.Get(CurrentResidence.Id);
                        unitofWork.Residences.Remove(residence);
                        unitofWork.Complete();

                        ResidenceType residenceType = new ResidenceType {
                            Residence = CurrentResidence,
                            Operation = MahalluManager.Model.Common.Operation.Delete
                        };
                        eventAggregator.GetEvent <PubSubEvent <ResidenceType> >().Publish(residenceType);

                        ResidenceList.Remove(CurrentResidence);
                        CurrentResidence = null;
                    }
                }
            }
        }
 private void ExecuteSaveResidence()
 {
     using (var unitOfWork = new UnitOfWork(new MahalluDBContext())) {
         if (ValidateResidence())
         {
             Residence residence = GetResidence();
             if (CurrentResidence != null)
             {
                 CurrentResidence.Name = residence.Name;
                 CurrentResidence.Area = residence.Area;
                 unitOfWork.Residences.Update(CurrentResidence);
                 MessageBox.Show(CurrentResidence.Name + " updated successfully !", "New Residence", MessageBoxButton.OK, MessageBoxImage.Information);
             }
             else
             {
                 if (CurrentResidence == null && IsHouserNumberExists(unitOfWork))
                 {
                     return;
                 }
                 unitOfWork.Residences.Add(residence);
                 ResidenceList.Add(residence);
                 CurrentResidence = residence;
                 MessageBox.Show(CurrentResidence.Name + " added successfully !", "New Residence", MessageBoxButton.OK, MessageBoxImage.Information);
             }
             unitOfWork.Complete();
             ResidenceType residenceType = new ResidenceType {
                 Residence = CurrentResidence, Operation = MahalluManager.Model.Common.Operation.Add
             };
             eventAggregator.GetEvent <PubSubEvent <ResidenceType> >().Publish(residenceType);
         }
     }
 }
 private void ExecuteClearSearch()
 {
     if (searchSource != null && searchSource.Count != ResidenceList.Count)
     {
         if (ResidenceList != null)
         {
             ResidenceList.Clear();
         }
         searchSource = null;
         RefreshResidence();
     }
     SearchText = String.Empty;
 }
 private void ExecuteSearch()
 {
     RefreshResidence();
     searchSource = ResidenceList.ToList();;
     if (SearchByHouseNumber)
     {
         ResidenceList = new ObservableCollection <Residence>(searchSource.FindAll((x) => x.Number == SearchText.Trim()));
         if (ResidenceList != null && ResidenceList.Count == 0)
         {
             MessageBox.Show("No Residence Found with House Number " + SearchText);
         }
     }
     else if (SearchByHouseName)
     {
         ResidenceList = new ObservableCollection <Residence>(searchSource.FindAll((x) => x.Name.ToLower().Contains(SearchText.Trim().ToLower())));
         if (ResidenceList != null && ResidenceList.Count == 0)
         {
             MessageBox.Show("No Residence Found with House Name " + SearchText);
         }
     }
     else if (SearchByMemberName)
     {
         using (var unitofWork = new UnitOfWork(new MahalluDBContext())) {
             List <ResidenceMember> tempResidenceMembers = unitofWork.ResidenceMembers.Find((x) => x.MemberName.ToLower().Contains(SearchText.Trim().ToLower())).ToList();
             if (tempResidenceMembers != null && tempResidenceMembers.Count == 0)
             {
                 MessageBox.Show("No Residence Found with Member Name " + SearchText);
             }
             else
             {
                 ResidenceList.Clear();
                 foreach (var item in tempResidenceMembers)
                 {
                     Residence residence = searchSource.Find((x) => x.Id == item.Residence_Id);
                     if (residence != null && !ResidenceList.Contains(residence))
                     {
                         ResidenceList.Add(residence);
                     }
                 }
             }
         }
     }
 }