/// <summary> /// Checks the out of office. /// </summary> /// <param name="person">The person.</param> /// <param name="oldPerson">The old person.</param> public void CheckOutOfOffice(IPerson person, IPerson oldPerson) { if (person == null) throw new ArgumentNullException("person"); if (oldPerson == null) throw new ArgumentNullException("oldPerson"); try { if (person.ReadValueByPropertyName<bool?>(Constants.OutOfOfficePropertyName) == true) { if (oldPerson.ReadValueByPropertyName<bool?>(Constants.OutOfOfficePropertyName) != true) { var personInfo = PersonManager.GetPerson(person.Id); MoveApprovalMemberResultToDelegate(personInfo); MoveActionsToDelegate(personInfo); } else { if (person.ReadValueByPropertyName<int?>(Constants.DelegateApproverPropertyName) != oldPerson.ReadValueByPropertyName<int?>(Constants.DelegateApproverPropertyName)) { var personInfo = PersonManager.GetPerson(person.Id); GetApprovalMemberResultFromDelegate(personInfo); GetActionsFromDelegate(personInfo, false); MoveApprovalMemberResultToDelegate(personInfo); MoveActionsToDelegate(personInfo); } } } else { if (oldPerson.ReadValueByPropertyName<bool?>(Constants.OutOfOfficePropertyName) == true) { var personInfo = PersonManager.GetPerson(person.Id); GetApprovalMemberResultFromDelegate(personInfo); GetActionsFromDelegate(personInfo); } } } catch (Exception ex) { Logger.Log(LogSeverity.Error, GetType().ToString(), ex); throw; } }