public ActionResult Details(string dn)
        {
            if (String.IsNullOrEmpty(dn))
            {
                return(RedirectToAction("Index", "Home"));
            }

            ViewBag.PageClass = "details";
            ViewModelContactDetail view = new ViewModelContactDetail();

            LDAPSearchObject search = new LDAPSearchObject();

            search.AND.Add("DistinguishedName", dn);

            view.me = findContact(search);
            List <Contact> managers = new List <Contact>();

            if (view.me.Manager != null)
            {
                if (view.me.Manager.Title == "President")
                {
                    search.Clear();
                    search.AND.Add("company", "Vision Integrated Graphics");
                    search.AND.Add("title", "President");
                    search.AND.Add("objectClass", "user");
                    managers = findContacts(search);
                }
                else
                {
                    managers.Add(view.me.Manager);
                }
            }

            view.Managers = managers;

            search.Clear();
            search.AND.Add("company", "Vision Integrated Graphics");
            search.AND.Add("objectClass", "user");

            if (view.me.Title == "President" && view.me.DisplayName != "Doug Powell")
            {
                LDAPSearchObject searchDP = new LDAPSearchObject();
                searchDP.AND.Add("displayname", "Doug Powell");
                searchDP.AND.Add("company", "Vision Integrated Graphics");
                searchDP.AND.Add("objectClass", "user");
                Contact doug = findContact(searchDP);
                search.AND.Add("manager", doug.DistinguishedName);
            }
            else
            {
                search.AND.Add("manager", view.me.DistinguishedName);
            }
            view.DirectReports = findContacts(search).OrderBy(c => c.Department).ThenBy(c => c.Office).ThenBy(c => c.DisplayName);

            return(View(view));
        }
        /// <summary> Конструктор </summary>
        public ViewContactDetail(ModelContact modelContact)
        {
            InitializeComponent();

            CurrentModelContact = modelContact;

            _viewModelContactDetail = new ViewModelContactDetail(modelContact);

            if (modelContact.Id != 0)
            {
                if (modelContact.ModelContactSubscriptionObj?.ModelEnumSubscriptionStateObj.Code == 0)
                {
                    _viewModelContactDetail.InviteRead();
                }
            }
            else
            {
                //Если пользователь отправил нам приглашение у него id = 0 и ModelEnumSubscriptionStateObj.Code = 2 (To)
                if (modelContact.ModelContactSubscriptionObj?.ModelEnumSubscriptionStateObj.Code == 2)
                {
                    _viewModelContactDetail.InviteRead();
                }
            }

            _viewModelContactDetail.BlockedChanged += OnBlockedChanged;

            _viewModelContactDetail.WhiteChanged += _viewModelContactDetail_WhiteChanged;

            _viewModelContactDetail.DeleteModelContactSuccessful += OnDeleteModelContactSuccessful;

            _viewModelContactDetail.SendRequestSuccessful += OnSendRequestSuccessful;

            _viewModelContactDetail.ApplyDenyInviteSuccessful += OnApplyDenyInviteSuccessful;

            DataContext = _viewModelContactDetail;

            if (modelContact.IsDodicall && modelContact.ListModelUserContact != null && modelContact.ListModelUserContact.Count > 0)
            {
                foreach (var modelUserContact in modelContact.ListModelUserContact)
                {
                    StackPanelContact.Children.Add(CreateContactControl(modelUserContact));
                }
            }

            if (CurrentModelContact.Id != 0)
            {
                var modelContactFromViewContact = ViewContact.CurrentViewContact.ListModelContact.FirstOrDefault(obj => obj.Id == CurrentModelContact.Id);

                if (modelContactFromViewContact != null)
                {
                    _viewModelContactDetail.ShowContactDetailCard = true;
                }
            }
            else
            {
                if (_viewModelContactDetail.IsInvite)
                {
                    _viewModelContactDetail.ShowContactInviteCard = true;
                }
                else
                {
                    _viewModelContactDetail.ShowContactRequestCard = true;
                }
            }

            if (modelContact.ListModelUserContactExtra.Count != 0)
            {
                foreach (var modelUserContact in modelContact.ListModelUserContactExtra)
                {
                    StackPanelExtraContact.Children.Add(CreateContactExtraControl(modelUserContact));
                }
            }

            ChengeContactStatus(CurrentModelContact);

            CurrentModelContact.PropertyChanged += CurrentModelContactOnPropertyChanged;
        }