示例#1
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     CustomerDivisionAuthorizationRule = new ResourceAuthorizationRule <Olma.CustomerDivision, CanCreateOrderRequirement, DivisionPermissionResource>(context.OrderGroupsCreateRequest.DivisionId, rule);
     LoadCarrierIdValidationRule       = new LoadCarrierIdValidationRule(context.OrderGroupsCreateRequest.LoadCarrierId, rule);
     NumberOfLoadsValidationRule       = new NumberOfLoadsValidationRule(context, rule);
     LoadingLocationIdValidationRule   = new LoadingLocationIdValidationRule(context.OrderGroupsCreateRequest.LoadingLocationId, rule);
     BaseLoadCarrierValidationRule     = new BaseLoadCarrierValidationRule(context.OrderGroupsCreateRequest, rule);
 }
示例#2
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     CustomerDivisionAuthorizationRule =
         new ResourceAuthorizationRule <
             Olma.CustomerDivision,
             CanReadOrderRequirement,
             DivisionPermissionResource>(context.OrderSearchRequest.DivisionId, rule);
     OrderSearchQueryRule  = new OrderSearchQueryRule(context.OrderSearchRequest, rule);
     OrderSummaryValidRule = new OrderSummaryValidRule(context, rule);
 }
示例#3
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     ResourceAuthorizationRule =
         new ResourceAuthorizationRule <Olma.LoadCarrierReceipt, CanCancelLoadCarrierReceiptRequirement,
                                        DivisionPermissionResource>(context.Parent.Id, rule)
         .Include(l => l.Positions)
         .Include(l => l.Document)
         .Include(l => l.PostingRequests)
         .Include(l => l.OrderLoadDetail);
 }
示例#4
0
            public RulesBundle(ContextModel context, MainRule rule)
            {
                CustomerDivisionAuthorization =
                    new ResourceAuthorizationRule <
                        Olma.CustomerDivision,
                        CanCreateVoucherRequirement,
                        DivisionPermissionResource>(context.CustomerDivisionId, parentRule: rule)
                    .Include(i => i.PostingAccount);

                IssuerDivisionHasPostingAccount = new ValidOperatorRule <ContextModel>(
                    (ctx) => ctx.Type == VoucherType.Direct,
                    context,
                    ctx => ctx.CustomerDivision.PostingAccount != null,
                    new PostingAccountRequired(),
                    parentRule: rule,
                    nameof(IssuerDivisionHasPostingAccount));

                RecipientHasDefaultPostingAccount = new ValidOperatorRule <ContextModel>(
                    (ctx) => ctx.Type == VoucherType.Direct,
                    context,
                    ctx =>
                {
                    var repository = rule.ServiceProvider.GetService <IRepository <Olma.CustomerPartner> >();

                    var customerPartner = repository.FindByCondition(cp =>
                                                                     cp.RowGuid == ctx.Parent.RecipientGuid &&
                                                                     !cp.IsDeleted)
                                          .IgnoreQueryFilters()
                                          .Include(cp => cp.Partner).ThenInclude(p => p.DefaultPostingAccount)
                                          .FirstOrDefault();

                    return(customerPartner?.Partner?.DefaultPostingAccount != null);
                },
                    new RecipientHasDefaultPostingAccount(),
                    parentRule: rule,
                    nameof(RecipientHasDefaultPostingAccount));

                PrintCountValid = new ValidOperatorRule <ContextModel>(
                    context,
                    ctx => ctx.PrintCount > 0,
                    new NotAllowedByRule(),
                    parentRule: rule,
                    nameof(PrintCountValid));

                DocumentType = new DocumentTypeRule(context, parentRule: rule);

                Voucher = new VoucherRule(context, parentRule: rule);

                LocalizationLanguageValid = new LocalizationLanguageValidRule(context.PrintLanguageId, parentRule: rule);

                BlacklistTerms = new BlacklistTermsRule(context, parentRule: rule);
            }
示例#5
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     ResourceAuthorizationRule = new ResourceAuthorizationRule <Olma.Voucher, CanCancelVoucherRequirement, DivisionPermissionResource>(context.Parent.Id, rule)
                                 .Include(v => v.Positions).Include(v => v.Document);
     IsIssuedState = new ValidOperatorRule <ContextModel>(context, model => model.Voucher.Status == VoucherStatus.Issued, new NotIssuedState());
 }
示例#6
0
            public RulesBundle(ContextModel context, MainRule rule)
            {
                CustomerDivisionAuthorizationRule = new ResourceAuthorizationRule <
                    Olma.CustomerDivision,
                    CanCreateLoadCarrierReceiptRequirement,
                    DivisionPermissionResource>(context.Request.CustomerDivisionId, rule)
                                                    .Include(customerDivision => customerDivision.PostingAccount);

                LicensePlateCountryIdRequired = new ValidOperatorRule <ContextModel>(context,
                                                                                     model => model.Request.LicensePlateCountryId > 0,
                                                                                     new NotAllowedByRule(),
                                                                                     parentRule: rule,
                                                                                     ruleName: nameof(LicensePlateCountryIdRequired));

                TruckDriverNameRequired = new ValidOperatorRule <ContextModel>(context,
                                                                               model => !string.IsNullOrEmpty(model.Request.TruckDriverName),
                                                                               new NotAllowedByRule(),
                                                                               parentRule: rule,
                                                                               ruleName: nameof(TruckDriverNameRequired));

                LicensePlateRequired = new ValidOperatorRule <ContextModel>(context,
                                                                            model => !string.IsNullOrEmpty(model.Request.LicensePlate),
                                                                            new NotAllowedByRule(),
                                                                            parentRule: rule,
                                                                            ruleName: nameof(LicensePlateRequired));

                PositionsValid = new ValidOperatorRule <ContextModel>(context,
                                                                      model =>
                                                                      model.Request.Positions.Any() &&
                                                                      model.Request.Positions.All(p => p.Quantity > 0),
                                                                      new NotAllowedByRule(),
                                                                      parentRule: rule,
                                                                      ruleName: nameof(PositionsValid));

                MoreInformationValid = new ValidOperatorRule <ContextModel>(context,
                                                                            model =>
                {
                    if (context.Request.DigitalCode != null)
                    {
                        return(true);
                    }

                    switch (context.Request.Type)
                    {
                    case LoadCarrierReceiptType.Delivery:
                        return(!string.IsNullOrEmpty(model.Request.DeliveryNoteNumber));

                    case LoadCarrierReceiptType.Pickup:
                        return(!string.IsNullOrEmpty(model.Request.PickUpNoteNumber));

                    case LoadCarrierReceiptType.Exchange:
                    default:
                        return(true);
                    }
                },
                                                                            new NotAllowedByRule(),
                                                                            parentRule: rule,
                                                                            ruleName: nameof(MoreInformationValid));

                DigitalCodePristine = new ValidOperatorRule <ContextModel>(
                    condition: ctx => !string.IsNullOrWhiteSpace(ctx.Request.DigitalCode),
                    context,
                    model =>
                {
                    var expressCodeRepository = rule.ServiceProvider.GetService <IRepository <Olma.ExpressCode> >();
                    var expressCodeExists     = expressCodeRepository.FindAll()
                                                .Any(code => code.DigitalCode == context.Request.DigitalCode);

                    if (expressCodeExists)
                    {
                        return(true);
                    }

                    var repository = rule.ServiceProvider.GetService <IRepository <Olma.LoadCarrierReceipt> >();
                    var exists     = repository
                                     .Exists(loadCarrierReceipt => loadCarrierReceipt.DigitalCode == context.Request.DigitalCode &&
                                             loadCarrierReceipt.Type == context.Request.Type &&
                                             !loadCarrierReceipt.Document.State.IsCanceled);

                    return(!exists);
                },
                    new DigitalCodeAlreadyUsed(),
                    parentRule: rule,
                    ruleName: nameof(DigitalCodePristine));

                BlacklistTerms = new BlacklistTermsRule(context, rule);
            }
示例#7
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     ResourceAuthorizationRule = new ResourceAuthorizationRule <Olma.Voucher, CanReadVoucherRequirement, DivisionPermissionResource>(context.Parent, rule);
 }
示例#8
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     LoadCarrierReceiptAuthorizationRule = new ResourceAuthorizationRule <Olma.CustomerDivision, CanReadLoadCarrierReceiptRequirement, DivisionPermissionResource>(context.Request.CustomerDivisionId, rule);
 }
示例#9
0
 public RulesBundle(ContextModel context, IRule rule)
 {
     ExpressCodeAuthorizationRule = new ResourceAuthorizationRule <Olma.ExpressCode, CanCancelExpressCodeRequirement, DivisionPermissionResource>(context.Parent, rule);
 }