public string Validate(DateTime firstRun, DateTime?lastRun)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(firstRun < Clock.Today() || lastRun < Clock.Today(), "Dates cannot be before today");
            rb.AppendOnCondition(lastRun != null && lastRun.Value < firstRun, "Last Run cannot be before First Run");
            return(rb.Reason);
        }
        public string ValidateClosePeriod(Period periodToClose, bool confirmThatYouWishToCloseThisPeriod)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(!confirmThatYouWishToCloseThisPeriod, "Check Confirm too proceed");
            rb.AppendOnCondition(periodToClose != ListOpenPeriods().First(), "Must  Close Periods in calendar order");
            rb.AppendOnCondition(Clock.Today() < periodToClose.FromDate, "Cannot close a Period not yet started");
            return(rb.Reason);
        }
예제 #3
0
 public void AppendOnCondition()
 {
     builder.AppendOnCondition(false, "Reason 1");
     Assert.IsNull(builder.Reason);
     builder.AppendOnCondition(true, "Reason 2");
     AssertMessageIs("Reason 2");
     builder.AppendOnCondition(false, "Reason 3");
     AssertMessageIs("Reason 2");
     builder.AppendOnCondition(true, "Reason 4");
     AssertMessageIs("Reason 2; Reason 4");
 }
예제 #4
0
        public string ValidateSuspend(int?days, DateTime?until, string comment)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition((days == null && until == null) || (days != null && until != null), "Specify EITHER 'days' OR 'until'");
            if (until != null)
            {
                var tomorrow  = Clock.Today().AddDays(1);
                var plus30    = Clock.Today().AddDays(30);
                var untilDate = until.Value;
                rb.AppendOnCondition(untilDate <tomorrow || untilDate> plus30, "Can only suspend for 1-30 days");
            }
            return(rb.Reason);
        }
예제 #5
0
        private string DisableIfPeriodClosed()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(Period.Closed, "Cannot edit a transaction for a closed Period ");
            return(rb.Reason);
        }
예제 #6
0
        public string ValidateAmount(decimal amount)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(amount <= 0, "Amount must be > 0");
            return(rb.Reason);
        }
예제 #7
0
        public string ValidateAddOrChangeForm(FileAttachment form)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(form.MimeType != pdfMimeType, "File is not a PDF");
            return(rb.Reason);
        }
예제 #8
0
        public string DisableCancel()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(Status == TaskStatusValues.Started && !IsAssignedToCurrentUser(), "Can't cancel a Started task unless it is assigned to you");
            return(rb.Reason);
        }
예제 #9
0
        protected string DisableIfFinished()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(IsFinished(), "No longer editable");
            return(rb.Reason);
        }
예제 #10
0
        public string ValidateAssignTo(IUser user)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(user == AssignedTo, "Task is already assigned to this User");
            return(rb.Reason);
        }
예제 #11
0
        public string DisableIfNoCustomerForUser()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(GetCustomerForUser() == null, "User is not a recognised Customer");
            return(rb.Reason);
        }
예제 #12
0
        public string ValidateAddNewDetails(short quantity)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(quantity <= 0, "Must be > 0");
            return(rb.Reason);
        }
예제 #13
0
        public string Validate5CreateMultipleSpecialOffers(DateTime startDate)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(startDate > new DateTime(2003, 12, 1), "Start Date must be before 1/12/2003");
            return(rb.Reason);
        }
예제 #14
0
        public string Validate(Customer customer, Film film)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(film.AgeRating > customer.Age, "Not old enough");
            return(rb.Reason);
        }
예제 #15
0
        public string Validate0ListProductsBySubCategories(IEnumerable <ProductSubcategory> subCategories)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(subCategories.Count() > 5, "Max 5 SubCategories may be selected");
            return(rb.Reason);
        }
예제 #16
0
        public string DisableAddToNote()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(Status == NoteStatus.Finished, "Cannot add to a Finished note. Start a new one instead");
            return(rb.Reason);
        }
        public string ValidateFindCustomerByAccountNumber(string accountNumber)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(!accountNumber.StartsWith("AW"), "Account number must start with AW");
            return(rb.Reason);
        }
예제 #18
0
        public string Validate(Film film, Customer customer)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(film.Rating >= customer.Age, "Not Old Enough");
            return(rb.Reason);
        }
예제 #19
0
        public string DisableCheckCredit()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(true, "Not yet implemented");
            return(rb.Reason);
        }
        public string DisablePropertyDefault()
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(Status == Status.Archived, "Archived Processes may not be edited");
            return(rb.Reason);
        }
        public string ValidateAddUser(string userName)
        {
            var    rb      = new ReasonBuilder();
            string message = null;

            rb.AppendOnCondition(!UserService.CanAddUser(userName, this, out message), message);
            return(rb.Reason);
        }
예제 #22
0
        public string ValidateCreateNewFormDefinition(string formCode)
        {
            var rb    = new ReasonBuilder();
            var count = Container.Instances <FormDefinition>().Count(x => x.FormCode.ToUpper() == formCode.ToUpper().Trim());

            rb.AppendOnCondition(count > 0, "A Form Definition for this code already exists");
            return(rb.Reason);
        }
        public string Validate5CreateNewAccount(DateTime asOf)
        {
            bool beforeToday = asOf.Date < Clock.Today();
            var  rb          = new ReasonBuilder();

            rb.AppendOnCondition(!beforeToday, "As Of date must be before today");
            return(rb.Reason);
        }
예제 #24
0
        public string ValidateAdjustQuantities(IEnumerable <SalesOrderDetail> details, short newQuantity)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(details.Count(d => d.OrderQty == newQuantity) == details.Count(),
                                 "All selected details already have specified quantity");
            return(rb.Reason);
        }
        public string Validate1CreateNewAccount(string name)
        {
            var rb      = new ReasonBuilder();
            int matches = Container.Instances <Account>().Where(x => x.Name.ToUpper() == name.ToUpper()).Count();

            rb.AppendOnCondition(matches > 0, "Account name already exists");
            return(rb.Reason);
        }
        public string Validate0CreateNewAccount(string code)
        {
            var rb      = new ReasonBuilder();
            int matches = Container.Instances <Account>().Where(x => x.Code == code).Count();

            rb.AppendOnCondition(matches > 0, "Account code already exists");
            return(rb.Reason);
        }
예제 #27
0
        public string DisableComplete()
        {
            var rb = new ReasonBuilder();

            DisableIfNotAssignedToCurrentUser(rb);
            rb.AppendOnCondition(Status != TaskStatusValues.Started, "Task must be Started before it can be Completed");
            return(rb.Reason);
        }
        public string ValidatePostTransaction(
            DateTime date,
            string description,
            string currency,
            decimal amount,
            Account debitAccount,
            Account creditAccount)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(debitAccount == creditAccount, "Accounts must be different");
            DateMustBeInOpenPeriod(rb, date);
            rb.AppendOnCondition(amount <= 0, "Amount must be > 0");
            rb.AppendOnCondition(debitAccount.Currency != currency ||
                                 creditAccount.Currency != currency, "Currency must be the same as for both accounts");
            return(rb.Reason);
        }
        public string ValidateCreateNewAccount(
            ICustomerAccountHolder forHolder,
            string currencyCode,
            decimal openingBalance,
            DateTime asOf,
            string newAccountName)
        {
            var rb = new ReasonBuilder();

            rb.AppendOnCondition(FindAccounts(forHolder, newAccountName).Count() > 0, "Holder already has Account matching this name");
            return(rb.Reason);
        }
        public void DateMustBeInOpenPeriod(ReasonBuilder rb, DateTime d)
        {
            Period p = GetPeriodForDate(d);

            rb.AppendOnCondition(p == null || p.Closed, "Date must be within an open Period");
        }