private static async Task <TakeRateViewModel> GetFullAndPartialViewModelForTakeRateDataPageExcludingData(IDataContext context, TakeRateFilter filter)
        {
            var modelBase     = GetBaseModel(context);
            var takeRateModel = new TakeRateViewModel(modelBase)
            {
                Document           = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration      = context.ConfigurationSettings,
                MarketReviewStatus = filter.MarketReviewStatus,
                Filter             = filter.Filter
            };

            await HydrateOxoDocument(context, takeRateModel);
            await HydrateFdpVolumeHeader(context, takeRateModel);

            //await HydrateFdpVolumeHeadersFromOxoDocument(context, takeRateModel);
            await HydrateVehicle(context, takeRateModel);
            await HydrateMarket(context, takeRateModel);
            await HydrateMarketGroup(context, takeRateModel);
            await HydrateMarketGroups(context, takeRateModel);
            await HydrateModelsByMarket(context, takeRateModel);
            await HydrateMarketReview(context, takeRateModel);
            await HydratePublish(context, takeRateModel);

            return(takeRateModel);
        }
        private static async Task <MarketGroup> GetMarketGroup(IDataContext context, TakeRateDocument forTakeRateDocument)
        {
            MarketGroup marketGroup;
            var         cacheKey = string.Format("MarketGroup_{0}_{1}",
                                                 forTakeRateDocument.TakeRateId,
                                                 forTakeRateDocument.MarketGroup.Id);

            var cachedLookup = GetCache(cacheKey);

            if (cachedLookup != null)
            {
                marketGroup = (MarketGroup)cachedLookup;
            }
            else
            {
                marketGroup = await Task.FromResult(context.Market.GetMarketGroup(new TakeRateFilter()
                {
                    TakeRateId    = forTakeRateDocument.TakeRateId,
                    MarketGroupId = forTakeRateDocument.MarketGroup.Id
                }));

                if (!(marketGroup is EmptyMarketGroup) && marketGroup.Id != 0)
                {
                    AddCache(cacheKey, marketGroup);
                }
            }
            return(marketGroup);
        }
        private static async Task <TakeRateViewModel> GetPartialViewModelForTakeRateDataPage(IDataContext context, TakeRateFilter filter)
        {
            var watch = Stopwatch.StartNew();

            var modelBase     = GetBaseModel(context);
            var takeRateModel = new TakeRateViewModel(modelBase)
            {
                Document = (TakeRateDocument)TakeRateDocument.FromFilter(filter), Configuration = context.ConfigurationSettings
            };

            takeRateModel.Document.PageIndex = filter.PageIndex;
            takeRateModel.Document.PageSize  = filter.PageSize;
            if (takeRateModel.Document.PageSize == -1)
            {
                takeRateModel.Document.PageSize = int.MaxValue;
            }

            if (!takeRateModel.Document.PageIndex.HasValue)
            {
                takeRateModel.Document.PageIndex = 1;
            }
            if (!takeRateModel.Document.PageSize.HasValue)
            {
                var configuredPageSize = context.ConfigurationSettings.GetInteger("TakeRateDataPageSize");
                if (configuredPageSize == -1)
                {
                    configuredPageSize = int.MaxValue;
                }
                takeRateModel.Document.PageSize = configuredPageSize;
            }
            takeRateModel.Document.ShowCombinedPackOptions  = filter.ShowCombinedPackOptions;
            takeRateModel.Document.ExcludeOptionalPackItems = filter.ExcludeOptionalPackItems;

            await HydrateOxoDocument(context, takeRateModel);
            await HydrateFdpVolumeHeader(context, takeRateModel);

            //await HydrateFdpVolumeHeadersFromOxoDocument(context, takeRateModel);
            await HydrateVehicle(context, takeRateModel);
            await HydrateMarket(context, takeRateModel);
            await HydrateMarketGroup(context, takeRateModel);
            await HydrateMarketGroups(context, takeRateModel);
            await HydrateModelsByMarket(context, takeRateModel);
            await HydrateData(context, takeRateModel);

            //await HydrateDataFeatures(context, takeRateModel);
            await HydrateMarketReview(context, takeRateModel);
            await HydratePublish(context, takeRateModel);

            watch.Stop();
            Log.Debug("GetFullAndPartialViewModelForTakeRateDataPage : " + watch.ElapsedMilliseconds);

            return(takeRateModel);
        }
        private static async Task <Publish> GetPublishState(IDataContext context, TakeRateDocument takeRateDocument)
        {
            var publish = await context.TakeRate.GetPublish(new TakeRateFilter
            {
                TakeRateId = takeRateDocument.TakeRateId,
                MarketId   = takeRateDocument.Market.Id
            });

            publish.Document  = takeRateDocument.UnderlyingOxoDocument;
            publish.Programme = takeRateDocument.Vehicle.GetProgramme();

            return(publish);
        }
        private static async Task <TakeRateViewModel> GetFullAndPartialViewModelForPowertrain(IDataContext context, TakeRateFilter filter)
        {
            var modelBase     = GetBaseModel(context);
            var takeRateModel = new TakeRateViewModel(modelBase)
            {
                Document      = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration = context.ConfigurationSettings
            };

            await HydrateFdpVolumeHeader(context, takeRateModel);
            await HydratePowertrain(context, takeRateModel);
            await HydratePublish(context, takeRateModel);

            return(takeRateModel);
        }
        private static async Task <TakeRateViewModel> GetFullAndPartialViewModelForFilter(IDataContext context,
                                                                                          TakeRateFilter filter)
        {
            var modelBase     = GetBaseModel(context);
            var takeRateModel = new TakeRateViewModel(modelBase)
            {
                Document           = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration      = context.ConfigurationSettings,
                MarketReviewStatus = filter.MarketReviewStatus,
                Filter             = filter.Filter
            };

            await HydrateOxoDocument(context, takeRateModel);
            await HydrateFdpVolumeHeader(context, takeRateModel);

            return(takeRateModel);
        }
        private static async Task <TakeRateViewModel> GetViewModelForTakeRateDataPage(IDataContext context,
                                                                                      TakeRateFilter filter)
        {
            var modelBase     = GetBaseModel(context);
            var takeRateModel = new TakeRateViewModel(modelBase)
            {
                Document      = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration = context.ConfigurationSettings
            };

            takeRateModel.Document.PageIndex = filter.PageIndex;
            takeRateModel.Document.PageSize  = filter.PageSize;
            if (takeRateModel.Document.PageSize == -1)
            {
                takeRateModel.Document.PageSize = int.MaxValue;
            }

            if (!takeRateModel.Document.PageIndex.HasValue)
            {
                takeRateModel.Document.PageIndex = 1;
            }
            if (!takeRateModel.Document.PageSize.HasValue)
            {
                var configuredPageSize = context.ConfigurationSettings.GetInteger("TakeRateDataPageSize");
                if (configuredPageSize == -1)
                {
                    configuredPageSize = int.MaxValue;
                }
                takeRateModel.Document.PageSize = configuredPageSize;
            }

            await HydrateOxoDocument(context, takeRateModel);
            await HydrateFdpVolumeHeader(context, takeRateModel);

            await HydrateVehicle(context, takeRateModel);
            await HydrateMarket(context, takeRateModel);
            await HydrateMarketGroups(context, takeRateModel);

            await HydrateModels(context, takeRateModel);
            await HydrateFeatures(context, takeRateModel);

            await HydrateMarketReview(context, takeRateModel);
            await HydratePublish(context, takeRateModel);

            return(takeRateModel);
        }
        private static async Task <TakeRateViewModel> GetFullAndPartialViewModelForValidation(IDataContext context, TakeRateFilter filter)
        {
            var watch = Stopwatch.StartNew();

            var modelBase     = GetBaseModel(context);
            var takeRateModel = new TakeRateViewModel(modelBase)
            {
                Document      = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration = context.ConfigurationSettings
            };

            await HydrateFdpVolumeHeader(context, takeRateModel);
            await HydrateRawData(context, takeRateModel);

            watch.Stop();
            Log.Debug("GetFullAndPartialViewModelForTakeRateDataPage : " + watch.ElapsedMilliseconds);

            return(takeRateModel);
        }
        private static async Task <TakeRateViewModel> GetFullAndPartialViewModelForClone(IDataContext context,
                                                                                         TakeRateFilter filter)
        {
            var takeRateModel = new TakeRateViewModel(GetBaseModel(context))
            {
                Document      = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration = context.ConfigurationSettings,
            };

            await HydrateOxoDocument(context, takeRateModel);
            await HydrateFdpVolumeHeader(context, takeRateModel);
            await HydrateVehicle(context, takeRateModel);

            takeRateModel.AvailableProgrammes = await
                                                Task.FromResult(context.Vehicle.ListProgrammes(new ProgrammeFilter()));

            takeRateModel.AvailableDocuments = await
                                               Task.FromResult(context.Vehicle.ListPublishedDocuments(new ProgrammeFilter()));

            return(takeRateModel);
        }
        private static async Task <TakeRateViewModel> GetFullAndPartialViewModelForTakeRateDataItem(IDataContext context, TakeRateFilter filter)
        {
            var takeRateModel = new TakeRateViewModel(GetBaseModel(context))
            {
                Document                = (TakeRateDocument)TakeRateDocument.FromFilter(filter),
                Configuration           = context.ConfigurationSettings,
                CurrentTakeRateDataItem = await context.TakeRate.GetDataItem(filter)
            };

            await HydrateOxoDocument(context, takeRateModel);
            await HydrateVehicle(context, takeRateModel);
            await HydrateMarket(context, takeRateModel);
            await HydrateMarketGroup(context, takeRateModel);
            await HydrateModelsByMarket(context, takeRateModel);
            await HydrateFeatures(context, takeRateModel);
            await HydrateCurrentModel(context, takeRateModel);
            await HydrateCurrentFeature(context, takeRateModel);
            await HydratePublish(context, takeRateModel);

            return(takeRateModel);
        }
 private static async Task <MarketReview> GetMarketReview(IDataContext context, TakeRateDocument forTakeRateDocument)
 {
     return(await context.TakeRate.GetMarketReview(new TakeRateFilter
     {
         TakeRateId = forTakeRateDocument.TakeRateId,
         MarketId = forTakeRateDocument.Market.Id
     }));
 }
        private static async Task<Publish> GetPublishState(IDataContext context, TakeRateDocument takeRateDocument)
        {
            var publish = await context.TakeRate.GetPublish(new TakeRateFilter
            {
                TakeRateId = takeRateDocument.TakeRateId,
                MarketId = takeRateDocument.Market.Id
            });
            publish.Document = takeRateDocument.UnderlyingOxoDocument;
            publish.Programme = takeRateDocument.Vehicle.GetProgramme();

            return publish;
        }
 private static async Task<MarketReview> GetMarketReview(IDataContext context,TakeRateDocument forTakeRateDocument)
 {
     return await context.TakeRate.GetMarketReview(new TakeRateFilter
     {
         TakeRateId = forTakeRateDocument.TakeRateId,
         MarketId = forTakeRateDocument.Market.Id
     });
 }
        private static async Task <OXODoc> GetOxoDocumentFromTakeRateFile(IDataContext context, TakeRateDocument takeRateFile)
        {
            OXODoc oxoDocument;
            var    cacheKey     = string.Format("TakeRateFile_{0}", takeRateFile.TakeRateId.GetValueOrDefault());
            var    cachedLookup = GetCache(cacheKey);

            if (cachedLookup != null)
            {
                oxoDocument = (OXODoc)cachedLookup;
            }
            else
            {
                oxoDocument = await context.TakeRate.GetUnderlyingOxoDocument(new TakeRateFilter()
                {
                    TakeRateId = takeRateFile.TakeRateId
                });

                AddCache(cacheKey, oxoDocument);
            }
            return(oxoDocument);
        }
        private static async Task <IEnumerable <FdpFeature> > ListFeatures(IDataContext context, TakeRateDocument forDocument)
        {
            if (forDocument.UnderlyingOxoDocument is EmptyOxoDocument)
            {
                return(Enumerable.Empty <FdpFeature>());
            }

            return(await context.Vehicle.ListFeatures(FeatureFilter.FromOxoDocumentId(forDocument.UnderlyingOxoDocument.Id)));
        }
        private static async Task <IEnumerable <FdpModel> > ListAvailableModels(IDataContext context, TakeRateDocument forVolume)
        {
            var filteredModels = Enumerable.Empty <FdpModel>();

            if (forVolume.UnderlyingOxoDocument is EmptyOxoDocument || forVolume.Vehicle is EmptyVehicle)
            {
                return(filteredModels);
            }

            var filter = new TakeRateFilter()
            {
                TakeRateId  = forVolume.TakeRateId,
                ProgrammeId = forVolume.UnderlyingOxoDocument.ProgrammeId,
                Gateway     = forVolume.UnderlyingOxoDocument.Gateway,
                DocumentId  = forVolume.UnderlyingOxoDocument.Id,
                PageSize    = forVolume.PageSize,
                PageIndex   = forVolume.PageIndex,
                BMC         = forVolume.BMC,
                DPCK        = forVolume.DPCK,
                FeatureCode = forVolume.FeatureCode
            };

            filteredModels = (await context.Market.ListAvailableModelsByMarket(filter));

            // Bit of a hack here. We have introduced model level paging and the easiest way to return the page values is in the original filter object

            forVolume.TotalRecords        = filter.TotalRecords;
            forVolume.TotalDisplayRecords = filter.TotalDisplayRecords;
            forVolume.TotalPages          = filter.TotalPages;

            return(filteredModels);
        }
        private static async Task<IEnumerable<FdpModel>> ListAvailableModelsFilteredByMarket(IDataContext context, TakeRateDocument forVolume)
        {
            var filteredModels = Enumerable.Empty<FdpModel>();

            if (forVolume.UnderlyingOxoDocument is EmptyOxoDocument || forVolume.Vehicle is EmptyVehicle)
                return filteredModels;

            var filter = new TakeRateFilter()
            {
                TakeRateId = forVolume.TakeRateId, 
                ProgrammeId = forVolume.UnderlyingOxoDocument.ProgrammeId,
                Gateway = forVolume.UnderlyingOxoDocument.Gateway, 
                DocumentId = forVolume.UnderlyingOxoDocument.Id,
                PageSize = forVolume.PageSize,
                PageIndex = forVolume.PageIndex,
                BMC = forVolume.BMC,
                DPCK= forVolume.DPCK,
                FeatureCode = forVolume.FeatureCode
            };

            if (!(forVolume.Market is EmptyMarket))
            {
                filter.MarketId = forVolume.Market.Id;
            }
            filteredModels = (await context.Market.ListAvailableModelsByMarket(filter));

            // Bit of a hack here. We have introduced model level paging and the easiest way to return the page values is in the original filter object

            forVolume.TotalRecords = filter.TotalRecords;
            forVolume.TotalDisplayRecords = filter.TotalDisplayRecords;
            forVolume.TotalPages = filter.TotalPages;

            return filteredModels;
        }
 private static async Task<OXODoc> GetOxoDocumentFromTakeRateFile(IDataContext context, TakeRateDocument takeRateFile)
 {
     OXODoc oxoDocument;
     var cacheKey = string.Format("TakeRateFile_{0}", takeRateFile.TakeRateId.GetValueOrDefault());
     var cachedLookup = GetCache(cacheKey);
     if (cachedLookup != null)
     {
         oxoDocument = (OXODoc)cachedLookup;
     }
     else
     {
         oxoDocument = await context.TakeRate.GetUnderlyingOxoDocument(new TakeRateFilter() { TakeRateId = takeRateFile.TakeRateId });
         AddCache(cacheKey, oxoDocument);
     }
     return oxoDocument;
 }
        private static async Task<MarketGroup> GetMarketGroup(IDataContext context, TakeRateDocument forTakeRateDocument)
        {
            MarketGroup marketGroup;
            var cacheKey = string.Format("MarketGroup_{0}_{1}", 
                forTakeRateDocument.TakeRateId, 
                forTakeRateDocument.MarketGroup.Id);

            var cachedLookup = GetCache(cacheKey);
            if (cachedLookup != null)
            {
                marketGroup = (MarketGroup) cachedLookup;
            }
            else
            {
                marketGroup = await Task.FromResult(context.Market.GetMarketGroup(new TakeRateFilter() 
                { 
                    TakeRateId = forTakeRateDocument.TakeRateId, 
                    MarketGroupId = forTakeRateDocument.MarketGroup.Id
                }));

                if (!(marketGroup is EmptyMarketGroup) && marketGroup.Id != 0)
                    AddCache(cacheKey, marketGroup);
            }
            return marketGroup;
        }
Example #20
0
 public async Task <ITakeRateDocument> GetTakeRateDocument(TakeRateFilter filter)
 {
     return(await Task.FromResult(TakeRateDocument.FromFilter(filter)));
 }
        private static async Task<IEnumerable<FdpFeature>> ListFeatures(IDataContext context, TakeRateDocument forDocument)
        {
            if (forDocument.UnderlyingOxoDocument is EmptyOxoDocument)
                return Enumerable.Empty<FdpFeature>();

            return await context.Vehicle.ListFeatures(FeatureFilter.FromOxoDocumentId(forDocument.UnderlyingOxoDocument.Id));
        }