public static bool CanChangeStatusTo(PartyRole partyRole, CustomerStatusType statusTo)
        {
            CustomerStatu status = GetActive(partyRole);

            if (status == null)
                return true;

            if (status.CustomerStatusTypeId == statusTo.Id)
                return false;

            if (status.CustomerStatusTypeId == CustomerStatusType.NewType.Id)
                return statusTo.Id == CustomerStatusType.ActiveType.Id;
            else if (status.CustomerStatusTypeId == CustomerStatusType.ActiveType.Id)
                return statusTo.Id != CustomerStatusType.NewType.Id;
            else if (status.CustomerStatusTypeId == CustomerStatusType.InactiveType.Id)
                return statusTo.Id == CustomerStatusType.ActiveType.Id;
            else if (status.CustomerStatusTypeId == CustomerStatusType.DelinquentType.Id)
                return statusTo.Id == CustomerStatusType.ActiveType.Id;
            else if (status.CustomerStatusTypeId == CustomerStatusType.SubprimeType.Id)
                return statusTo.Id == CustomerStatusType.ActiveType.Id;
            else
                return false;

            //if (status.CustomerStatusType.Id == CustomerStatusType.ActiveType.Id)
            //{
            //    return statusTo.Id != CustomerStatusType.ActiveType.Id;
            //}
            //else
            //{
            //    return false;
            //}
        }
 public static CustomerStatu ChangeStatus(PartyRole partyRole, CustomerStatusType statusTo, DateTime today)
 {
     CustomerStatu status = GetActive(partyRole);
     if (CanChangeStatusTo(partyRole, statusTo))
     {
         return CreateOrUpdateCurrent(partyRole, statusTo, today);
     }
     return status;
 }
        public static CustomerStatu CreateOrUpdateCurrent(PartyRole partyRole, CustomerStatusType statusTo, DateTime today)
        {
            CustomerStatu customerAppStatus = GetActive(partyRole);
            if (customerAppStatus != null && customerAppStatus.CustomerStatusType.Id != statusTo.Id)
                customerAppStatus.IsActive = false;

            if (customerAppStatus == null || customerAppStatus.CustomerStatusType.Id != statusTo.Id)
            {
                CustomerStatu status = new CustomerStatu();
                status.CustomerStatusType = statusTo;
                status.PartyRoleId = partyRole.Id;
                status.TransitionDateTime = today;
                status.IsActive = true;
                return status;
            }
            return customerAppStatus;
        }