/// <summary> /// Returns the warning status of the project based on it's current status and expiration details. /// </summary> public static ProjectWarningInfo GetProjectWarningStatus(int projectStatusCodeId, bool hasUserOptIn, DateTime?expirationDate) { string statusCode = Utils.GetCodeByCodeId(projectStatusCodeId).Value; double remainingDays = (statusCode == "ACTIVE" || expirationDate == null) ? -1 : (expirationDate.Value.Date - Utils.Today).TotalDays; ProjectWarningStatus warningStatus = ProjectWarningStatus.NoWarning; switch (statusCode) { case "FREETRIAL": if (remainingDays <= 7 && !hasUserOptIn) { warningStatus = ProjectWarningStatus.FreeTrialGrace; } break; case "GRACEPERIOD": warningStatus = ProjectWarningStatus.GracePeriod; break; case "PAYMENTFAILED": warningStatus = ProjectWarningStatus.PaymentFailed; break; case "SUSPENDED": warningStatus = ProjectWarningStatus.Suspended; break; case "CLOSED": warningStatus = ProjectWarningStatus.Closed; break; default: break; } return(new ProjectWarningInfo(warningStatus, (int)Math.Round(remainingDays, 0))); }
public ProjectWarningInfo(ProjectWarningStatus warningStatus, int daysToExpiration) { WarningStatus = warningStatus; DaysToExpiration = daysToExpiration; }