void DataLoading()
        {
            LeadProjsLogic.Login    = Credentials.Login;
            LeadProjsLogic.Password = Credentials.Password;

            Title = LeaderView.Surname + " " +
                    LeaderView.Name + " " +
                    LeaderView.MiddleName + ": Руководимые проекты";
            errCaption = LeaderView.Surname + " " +
                         LeaderView.Name + " " +
                         LeaderView.MiddleName + ": Руководимые проекты - Ошибка";
            List <Project>             projects = new List <Project>();
            IEnumerable <EmplProjView> leadProjViews;

            try
            {
                projects = LeadProjsLogic.GetProjects();
            }
            catch (Exception ex)
            {
                MessageBoxVM = new MessageBoxModel()
                {
                    Message = ErrorMessage.MakingMessageForMessageBox(ex),
                    Caption = errCaption
                };
                Log.WriteLogAsync(ex);
                leadProjViews = new List <EmplProjView>();
            }

            leadProjViews = Mapper.Map <IEnumerable <EmplProjView> >(projects);
            foreach (var leadProjView in leadProjViews)
            {
                if (LeaderView.LeadProjViews.FirstOrDefault(lPV => lPV.Id == leadProjView.Id) == null)
                {
                    leadProjView.IsChecked = false;
                }
            }

            foreach (var leadProjView in leadProjViews)
            {
                leadProjView.PropertyChanged += (s, e) => OnLeadProjViewChanged(leadProjView, e.PropertyName);
                LeadProjViews.Add(leadProjView);
            }
        }
 void CancelChanges()
 {
     if (LeadProjViews.Where(v => v.IsChanged == true).Count() > 0)
     {
         MessageBoxVM = new MessageBoxModel()
         {
             Message = "Все внесённые изменения будут удалены. Продолжить?",
             Caption = LeaderView.Surname + " " + LeaderView.Name + " " + LeaderView.MiddleName + ":Руководимые проекты",
             Buttons = MessageBoxButton.YesNo
         };
         if (MessageBoxVM.Result == MessageBoxResult.Yes)
         {
             foreach (var lPV in LeadProjViews)
             {
                 if (lPV.IsChanged)
                 {
                     lPV.IsChecked = lPV.Backup.IsChecked;
                 }
             }
         }
     }
 }
        void SaveChanges()
        {
            MessageBoxVM = new MessageBoxModel()
            {
                Message = "Выполнить сохранение всех внесённых изменений?",
                Caption = LeaderView.Surname + " " + LeaderView.Name + " " + LeaderView.MiddleName + ": Руководимые проекты",
                Buttons = MessageBoxButton.YesNo
            };
            if (MessageBoxVM.Result == MessageBoxResult.Yes)
            {
                Employee leader = Mapper.Map <EmployeeView, Employee>(LeaderView);
                IEnumerable <EmplProjView> leadProjViewsToAdd = LeadProjViews.Where(lPV => lPV.IsChanged &&
                                                                                    lPV.IsChecked);
                IEnumerable <EmplProjView> leadProjViewsToDelete = LeadProjViews.Where(lPV => lPV.IsChanged &&
                                                                                       lPV.IsChecked == false);
                List <Project> projsToAdd    = Mapper.Map <IEnumerable <EmplProjView>, List <Project> >(leadProjViewsToAdd);
                List <Project> projsToDelete = Mapper.Map <IEnumerable <EmplProjView>, List <Project> >(leadProjViewsToDelete);

                bool IsChangesSaved = false;
                try
                {
                    List <Project> projsHasLeaders       = LeadProjsLogic.OtherLeadOnProjExistance(projsToAdd);
                    string         projsHasLeadersString = "";
                    if (projsHasLeaders.Count > 0)
                    {
                        foreach (var projHasLeader in projsHasLeaders)
                        {
                            projsHasLeadersString += "- " + projHasLeader.ProjName + "\n";
                        }
                        MessageBoxVM = new MessageBoxModel()
                        {
                            Message = "У проектов:\n\n" + projsHasLeadersString + " уже есть руководитель. Переназначить им руководителя?",
                            Caption = LeaderView.Surname + " " + LeaderView.Name + " " + LeaderView.MiddleName + ":Руководимые проекты",
                            Buttons = MessageBoxButton.YesNo
                        };
                        if (MessageBoxVM.Result == MessageBoxResult.Yes)
                        {
                            IsChangesSaved = LeadProjsLogic.SetLeadProjectsToEmployee(leader, projsToAdd, projsToDelete);
                        }
                        else
                        {
                            IsChangesSaved = false;
                        }
                    }
                    else
                    {
                        IsChangesSaved = LeadProjsLogic.SetLeadProjectsToEmployee(leader, projsToAdd, projsToDelete);
                    }
                }
                catch (Exception ex)
                {
                    MessageBoxVM = new MessageBoxModel()
                    {
                        Message = ErrorMessage.MakingMessageForMessageBox(ex),
                        Caption = errCaption
                    };
                    Log.WriteLogAsync(ex);
                }
                if (IsChangesSaved)
                {
                    foreach (var leadProjView in leadProjViewsToAdd)
                    {
                        foreach (var eV in EmployeesViewModel.EmployeeViews)
                        {
                            eV.LeadProjViews.Remove(eV.LeadProjViews.FirstOrDefault(lPV => lPV.Id == leadProjView.Id));
                        }
                        EmployeesViewModel.CurrentEmplView
                        .LeadProjViews
                        .Add(leadProjView);
                    }
                    foreach (var leadProjView in leadProjViewsToDelete)
                    {
                        EmployeesViewModel.CurrentEmplView
                        .LeadProjViews
                        .Remove(leadProjView);
                    }

                    foreach (var leadProjView in LeadProjViews)
                    {
                        leadProjView.IsChanged = false;
                        leadProjView.BackupClear();
                    }
                    IsLeadProjViewsChanged = false;
                }
            }
        }