private void StubTierFormFolderSheetData(IExcelLoader loader, params string[] folderOids)
 {
     loader.Stub(x => x.Sheet<TierFormFolder>())
           .Return(this.GetFixture().Create<ISheetInfo<TierFormFolder>>());
     loader.Sheet<TierFormFolder>().Stub(x => x.Definition).Return(this.GetFixture().Create<ISheetDefinition>());
     var colDefs = folderOids.Select(x => new ColumnDefinition { PropertyName = x, ExtraProperty = true });
     loader.Sheet<TierFormFolder>().Definition.Stub(x => x.ColumnDefinitions).Return(colDefs);
 }
        protected override IExcelLoader DefineTsdvSheets(TsdvLoaderSupportedVersion version, IExcelLoader loader)
        {
            if (version != TsdvLoaderSupportedVersion.V1) return base.DefineTsdvSheets(version, loader);

            loader.Sheet<BlockPlanSetting>().Definition.HeaderRowCount = 1;
            loader.Sheet<CustomTier>().Definition.HeaderRowCount = 1;
            loader.Sheet<TierFormField>().Definition.HeaderRowCount = 1;
            loader.Sheet<TierFormFolder>().Definition.HeaderRowCount = 1;
            loader.Sheet<Rule>().Definition.HeaderRowCount = 1;
            return loader;
        }
 protected override IEnumerable<IValidationMessage> Validate(IExcelLoader excelLoader,
                                                             IDictionary<string, object> context,
                                                             out bool shouldContinue)
 {
     var namesInCustomTier = excelLoader.Sheet<CustomTier>().Data.Select(x => x.TierName);
     var namesInTierFormFolder = excelLoader.Sheet<TierFormFolder>().Data.Select(x => x.TierName);
     var orphanNames = namesInTierFormFolder.Except(namesInCustomTier).ToArray();
     shouldContinue = orphanNames.Length == 0;
     return
         orphanNames.Select(x => CreateErrorMessage("'{0}' tier in TierForms is not defined in CustomTier.", x));
 }
 private void StubTierFormFieldSheetData(IExcelLoader loader, params string[] tierNames)
 {
     loader.Stub(x => x.Sheet<TierFormField>())
           .Return(this.GetFixture().Create<ISheetInfo<TierFormField>>());
     var items = tierNames.Select(x => new TierFormField {TierName = x}).ToList();
     loader.Sheet<TierFormField>().Stub(x => x.Data).Return(items);
 }
 private void StubCustomTierSheetData(IExcelLoader loader, params string[] tierNames)
 {
     loader.Stub(x => x.Sheet<CustomTier>())
           .Return(this.GetFixture().Create<ISheetInfo<CustomTier>>());
     var items = tierNames.Select(x => new CustomTier {TierName = x}).ToList();
     loader.Sheet<CustomTier>().Stub(x => x.Data).Return(items);
 }
 private void StubTierFormFieldSheetData(IExcelLoader loader, string formOid, string fieldOid)
 {
     loader.Stub(x => x.Sheet<TierFormField>())
           .Return(this.GetFixture().Create<ISheetInfo<TierFormField>>());
     var items = new[] { new TierFormField { FormOid = formOid, FieldOid = fieldOid } }.ToList();
     loader.Sheet<TierFormField>().Stub(x => x.Data).Return(items);
 }
 protected override IEnumerable<IValidationMessage> Validate(IExcelLoader excelLoader,
                                                             IDictionary<string, object> context,
                                                             out bool shouldContinue)
 {
     var tierNamesInBlockPlanSettings = excelLoader.Sheet<BlockPlanSetting>()
                                                   .Definition
                                                   .ColumnDefinitions
                                                   .Where(x => x.ExtraProperty)
                                                   .Select(x => x.PropertyName);
     var tierNamesInCustomTiers = excelLoader.Sheet<CustomTier>()
                                             .Data
                                             .Select(x => x.TierName);
     var badTierNames = tierNamesInBlockPlanSettings.Except(DefaultTiers)
                                                    .Except(tierNamesInCustomTiers);
     var messages = badTierNames.Select(CreateErrorMessage).ToArray();
     shouldContinue = messages.Length == 0;
     return messages;
 }
        private void StubBlockPlanSettingsExtraColumns(IExcelLoader loader, string extraPropName)
        {
            loader.Stub(x => x.Sheet<BlockPlanSetting>())
                  .Return(this.GetFixture().Create<ISheetInfo<BlockPlanSetting>>());
            loader.Sheet<BlockPlanSetting>()
                  .Stub(x => x.Definition)
                  .Return(this.GetFixture().Create<ISheetDefinition>());

            var colDefs = new[]
                          {
                              new ColumnDefinition {ExtraProperty = false, PropertyName = "Col1"},
                              new ColumnDefinition {ExtraProperty = false, PropertyName = "Col2"},
                              new ColumnDefinition {ExtraProperty = true, PropertyName = extraPropName}
                          };
            loader.Sheet<BlockPlanSetting>()
                  .Definition
                  .Stub(x => x.ColumnDefinitions)
                  .Return(colDefs);
        }
 private IExcelLoader DefineTsdvSheets(IExcelLoader loader)
 {
     loader.Sheet<BlockPlan>();
     loader.Sheet<BlockPlanSetting>();
     loader.Sheet<CustomTier>();
     loader.Sheet<TierField>();
     loader.Sheet<TierForm>();
     loader.Sheet<TierFolder>();
     loader.Sheet<ExcludedStatus>();
     loader.Sheet<Rule>();
     return loader;
 }
 protected override IEnumerable<IValidationMessage> Validate(IExcelLoader excelLoader,
                                                             IDictionary<string, object> context,
                                                             out bool shouldContinue)
 {
     var messages = (from tierField in excelLoader.Sheet<TierFormField>().Data
                     let formOid = tierField.FormOid
                     let fieldOid = tierField.FieldOid
                     where !_helper.ExistsFormField(formOid, fieldOid, context)
                     select CreateErrorMessage("Cannot find field OID '{0}' in form '{1}'.", fieldOid, formOid))
         .ToArray();
     shouldContinue = messages.Length == 0;
     return messages;
 }
        protected virtual IExcelLoader DefineTsdvSheets(TsdvLoaderSupportedVersion version, IExcelLoader loader)
        {
            if(version != TsdvLoaderSupportedVersion.Presentation)
                throw new NotSupportedException(string.Format("'{0}' isn't a supported name", version));

            loader.Sheet<BlockPlan>().Definition.HeaderRowCount = 1;
            loader.Sheet<BlockPlanSetting>().Definition.HeaderRowCount = 1;
            loader.Sheet<CustomTier>().Definition.HeaderRowCount = 1;
            loader.Sheet<TierField>().Definition.HeaderRowCount = 1;
            loader.Sheet<TierForm>().Definition.HeaderRowCount = 1;
            loader.Sheet<TierFolder>().Definition.HeaderRowCount = 1;
            loader.Sheet<ExcludedStatus>().Definition.HeaderRowCount = 1;
            loader.Sheet<Rule>().Definition.HeaderRowCount = 1;
            return loader;
        }
        protected override IEnumerable<IValidationMessage> Validate(IExcelLoader excelLoader,
                                                                    IDictionary<string, object> context,
                                                                    out bool shouldContinue)
        {
            var messages = (from tierFolder in excelLoader.Sheet<TierFormFolder>().Definition.ColumnDefinitions
                            where tierFolder.ExtraProperty
                            let folderOid = tierFolder.PropertyName
                            where !_helper.ExistsFolderOid(folderOid, context)
                            select CreateErrorMessage("Cannot find folder OID '{0}'.", folderOid))
                .ToArray();

            shouldContinue = messages.Length == 0;
            return messages;
        }
        private void StubCustomTierSheetData(IExcelLoader loader)
        {
            loader.Stub(x => x.Sheet<CustomTier>())
                  .Return(this.GetFixture().Create<ISheetInfo<CustomTier>>());

            var customDatas = new[]
                              {
                                  new CustomTier
                                  {
                                      TierName = "CustomTier1",
                                      TierDescription = this.GetFixture().Create<string>()
                                  },
                                  new CustomTier
                                  {
                                      TierName = "CustomTier2",
                                      TierDescription = this.GetFixture().Create<string>()
                                  }
                              };
            loader.Sheet<CustomTier>().Stub(x => x.Data).Return(customDatas);
        }
        protected override IEnumerable<IValidationMessage> Validate(IExcelLoader excelLoader,
                                                                    IDictionary<string, object> context,
                                                                    out bool shouldContinue)
        {
            var messages = new List<IValidationMessage>();
            foreach (var blockPlanSetting in excelLoader.Sheet<BlockPlanSetting>().Data)
            {
                if (blockPlanSetting.BlockSubjectCount == 0)
                {
                    var message = CreateErrorMessage("tsdv_BlockSizeZeroError", blockPlanSetting.Block);
                    messages.Add(message);
                }
                else if (TotalTierCountMismatched(blockPlanSetting))
                {
                    var message = CreateErrorMessage("tsdv_BlockValidationError", blockPlanSetting.Block);
                    messages.Add(message);
                }
            }

            shouldContinue = messages.Count == 0;
            return messages;
        }