コード例 #1
0
        //[HandleErrorWithJson]
        //[HttpPost]
        //public async Task<ActionResult> Validate(TakeRateParameters parameters)
        //{
        //    var validationResults = Enumerable.Empty<ValidationResult>();

        //    TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

        //    var filter = TakeRateFilter.FromTakeRateParameters(parameters);
        //    filter.Action = TakeRateDataItemAction.Validate;
        //    var takeRateView = await TakeRateViewModel.GetModel(DataContext, filter);

        //    try
        //    {
        //        var interimResults = Validator.Validate(takeRateView.RawData);
        //        validationResults = await Validator.Persist(DataContext, filter, interimResults);
        //    }
        //    catch (ValidationException vex)
        //    {
        //        // Just in case someone has thrown an exception from the validation, which we don't actually want
        //        Log.Warning(vex);
        //    }
        //    catch (Exception ex)
        //    {
        //        Log.Error(ex);
        //    }

        //    return JsonGetSuccess(validationResults);
        //}

        public ActionResult IgnoreValidationError(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);
            DataContext.TakeRate.IgnoreValidationError(TakeRateFilter.FromTakeRateParameters(parameters));

            return(RedirectToRoute("TakeRateDataByMarket", new { takeRateId = parameters.TakeRateId, marketId = parameters.MarketId }));
        }
コード例 #2
0
        public async Task <ActionResult> ListTakeRates(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.NoValidation);

            var js     = new JavaScriptSerializer();
            var filter = new TakeRateFilter()
            {
                FilterMessage    = parameters.FilterMessage,
                TakeRateStatusId = parameters.TakeRateStatusId,
                Action           = TakeRateDataItemAction.TakeRates
            };

            filter.InitialiseFromJson(parameters);

            var results = await TakeRateViewModel.GetModel(DataContext, filter);

            var jQueryResult = new JQueryDataTableResultModel(results);

            foreach (var result in results.TakeRates.CurrentPage)
            {
                jQueryResult.aaData.Add(result.ToJQueryDataTableResult());
            }

            return(Json(jQueryResult));
        }
コード例 #3
0
        public async Task <JsonResult> TakeRateFeatureData(TakeRateParameters parameters)
        {
            Log.Debug(MethodBase.GetCurrentMethod().Name);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.TakeRateDataPage;
            var model = await TakeRateViewModel.GetModel(DataContext, filter);

            var rows = new List <Dictionary <string, object> >();

            foreach (DataRow dr in model.Document.TakeRateData.RawData.Rows)
            {
                var row = new Dictionary <string, object>();
                foreach (DataColumn col in model.Document.TakeRateData.RawData.Columns)
                {
                    row.Add(col.ColumnName, dr[col]);
                }
                rows.Add(row);
            }

            Response.AddHeader("Content-Encoding", "gzip");
            Response.Filter = new GZipStream(Response.Filter,
                                             CompressionMode.Compress);

            return(Json(new
            {
                FeatureData = rows,
                model.Document.Market
            }));
        }
コード例 #4
0
        public async Task <ActionResult> Clone(TakeRateParameters parameters)
        {
            var filter = TakeRateFilter.FromTakeRateParameters(parameters);
            var clone  = await DataContext.TakeRate.CloneTakeRateDocument(filter);

            // Revalidate the clone, as the new document may have different feature applicability
            filter = new TakeRateFilter()
            {
                TakeRateId = clone.TakeRateId
            };

            var markets = await DataContext.Market.ListMarkets(filter);

            foreach (var market in markets)
            {
                try
                {
                    filter.MarketId = market.Id;
                    var rawData = await DataContext.TakeRate.GetRawData(filter);

                    //var validationResults = Validator.Validate(rawData);
                    //Validator.Persist(DataContext, filter, validationResults);
                }
                catch (ValidationException vex)
                {
                    // Sink the exception, as we don't want any validation errors propagating up
                }
                catch (Exception ex)
                {
                }
            }

            return(JsonGetSuccess(clone));
        }
コード例 #5
0
        //[OutputCache(Duration = 600,
        //    VaryByParam = "TakeRateParameters.TakeRateId,TakeRateParameters.MarketId,TakeRateParameters.PageSize,TakeRateParameters.PageIndex")]
        //[SiteMapTitle("DocumentName")]
        public ActionResult TakeRateDataPage(TakeRateParameters parameters)
        {
            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.TakeRateDataPage;
            var model = TakeRateViewModel.GetModel(DataContext, filter).Result;

            var title = string.Format("{0} - {1} ({2}) - {3}",
                                      model.Document.Vehicle.Code,
                                      model.Document.Vehicle.ModelYear, model.Document.UnderlyingOxoDocument.Gateway,
                                      model.Document.TakeRateSummary.First().Version);

            ViewBag.Title = title;

            string displayName;

            if (model.Document.Market is EmptyMarket)
            {
                displayName = string.Format("{0} - ALL MARKETS", title);
            }
            else
            {
                displayName = string.Format("{0} - {1}",
                                            title,
                                            model.Document.Market.Name.ToUpper());
            }

            ViewData["DocumentName"] = displayName;

            return(View("TakeRateDataPage", model));
        }
コード例 #6
0
        public async Task <ActionResult> GetLatestChangeset(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var changeset = await DataContext.TakeRate.GetUnsavedChangesForUser(TakeRateFilter.FromTakeRateParameters(parameters));

            return(Json(changeset));
        }
コード例 #7
0
        public async Task <ActionResult> ModalContent(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var takeRateView = await GetModelFromParameters(parameters);

            return(PartialView(GetContentPartialViewName(parameters.Action), takeRateView));
        }
コード例 #8
0
        public async Task <ActionResult> ModalAction(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, Enum.GetName(parameters.Action.GetType(), parameters.Action));

            return(RedirectToRoute(Enum.GetName(parameters.Action.GetType(), parameters.Action), parameters.GetActionSpecificParameters()));
        }
コード例 #9
0
        public static TakeRateFilter FromTakeRateParameters(TakeRateParameters parameters)
        {
            var filter = new TakeRateFilter
            {
                TakeRateId         = parameters.TakeRateId,
                DocumentId         = parameters.DocumentId,
                TakeRateDataItemId = parameters.TakeRateDataItemId,
                TakeRateStatusId   = parameters.TakeRateStatusId,
                Mode               = parameters.Mode,
                Action             = parameters.Action,
                MarketGroupId      = parameters.MarketGroupId,
                MarketId           = parameters.MarketId,
                Comment            = parameters.Comment,
                MarketReviewStatus = parameters.MarketReviewStatus,
                Filter             = parameters.Filter,
                PageSize           = parameters.PageSize,
                PageIndex          = parameters.PageIndex,
                FdpValidationId    = parameters.FdpValidationId,
                ChangesetId        = parameters.ChangesetId,
                BMC                     = parameters.BMC,
                DPCK                    = parameters.DPCK,
                FeatureCode             = parameters.FeatureCode,
                ShowCombinedPackOptions = parameters.ShowCombinedPackOptions
            };

            if (!string.IsNullOrEmpty(parameters.ModelIdentifier))
            {
                if (parameters.ModelIdentifier.StartsWith("O"))
                {
                    filter.ModelId = int.Parse(parameters.ModelIdentifier.Substring(1));
                }
                else
                {
                    filter.FdpModelId = int.Parse(parameters.ModelIdentifier.Substring(1));
                }
            }

            if (string.IsNullOrEmpty(parameters.FeatureIdentifier))
            {
                return(filter);
            }

            if (parameters.FeatureIdentifier.StartsWith("O"))
            {
                filter.FeatureId = int.Parse(parameters.FeatureIdentifier.Substring(1));
            }
            else if (parameters.FeatureIdentifier.StartsWith("P"))
            {
                filter.FeaturePackId = int.Parse(parameters.FeatureIdentifier.Substring(1));
            }
            else
            {
                filter.FdpFeatureId = int.Parse(parameters.FeatureIdentifier.Substring(1));
            }

            return(filter);
        }
コード例 #10
0
        public async Task <ActionResult> Publish(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifierWithCommentAndMarket);

            var publish = await DataContext.TakeRate.SetPublish(
                TakeRateFilter.FromTakeRateParameters(parameters));

            return(Json(publish));
        }
コード例 #11
0
        public async Task <ActionResult> Powertrain(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.Powertrain;
            var takeRateView = await TakeRateViewModel.GetModel(DataContext, filter);

            return(PartialView("_Powertrain", takeRateView));
        }
コード例 #12
0
        private void CheckModelAllowsEdit(TakeRateParameters parameters)
        {
            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.Changeset;
            var takeRateView = TakeRateViewModel.GetModel(DataContext, filter).Result;

            if (!takeRateView.AllowEdit)
            {
                throw new InvalidOperationException(NO_EDITS);
            }
        }
コード例 #13
0
        public async Task <ActionResult> TakeRatePage(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.NoValidation);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.TakeRates;
            var takeRateView = await TakeRateViewModel.GetModel(DataContext, filter);

            return(View("TakeRatePage", takeRateView));
        }
コード例 #14
0
        public async Task <ActionResult> PersistChangeset(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters,
                                                                   TakeRateParametersValidator.TakeRateIdentifierWithChangesetAndComment);

            CheckModelAllowsEdit(parameters);

            var persistedChangeset =
                await DataContext.TakeRate.PersistChangeset(TakeRateFilter.FromTakeRateParameters(parameters));

            return(Json(persistedChangeset));
        }
        protected override bool IsValid(PropertyValidatorContext context)
        {
            Parameters = context.ParentContext.InstanceToValidate as TakeRateParameters;
            var changes = context.PropertyValue as IEnumerable <DataChange>;

            if (changes != null)
            {
                return(!changes.Any(IsVolumeGreaterThanVolumeForMarket));
            }

            return(true);
        }
コード例 #16
0
        public async Task <ActionResult> PersistChangesetConfirm(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifierWithChangeset);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.TakeRateDataItemDetails;
            var takeRateView = await TakeRateViewModel.GetModel(DataContext, filter);

            takeRateView.Changes = await DataContext.TakeRate.GetUnsavedChangesForUser(filter);

            return(PartialView("_PersistChangesetConfirm", takeRateView));
        }
コード例 #17
0
        public async Task <ActionResult> ChangesetHistory(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.Changeset;
            var takeRateView = await TakeRateViewModel.GetModel(DataContext, filter);

            takeRateView.History = await DataContext.TakeRate.GetChangesetHistory(filter);

            return(PartialView("_ChangesetHistory", takeRateView));
        }
コード例 #18
0
        public async Task <ActionResult> ProcessTakeRateData(ImportExceptionParameters parameters)
        {
            var filter     = new ImportQueueFilter(parameters.ImportQueueId.GetValueOrDefault());
            var queuedItem = DataContext.Import.GetImportQueue(filter).Result;
            var results    = DataContext.Import.ProcessTakeRateData(queuedItem).Result;

            if (queuedItem.HasErrors)
            {
                return(Json(JsonActionResult.GetFailure("Import file still contains errors, unable to process take rate data")));
            }

            if (results == null || !results.TakeRateId.HasValue)
            {
                return(Json(JsonActionResult.GetFailure("Take Rate file not created"), JsonRequestBehavior.AllowGet));
            }

            // Validate the data for each market

            var takeRateParameters = new TakeRateParameters()
            {
                TakeRateId = results.TakeRateId
            };
            var takeRateFilter = TakeRateFilter.FromTakeRateParameters(takeRateParameters);

            // Get the markets and iterate through them, validating in turn

            //var availableMarkets = DataContext.Market.ListMarkets(takeRateFilter).Result;
            //foreach (var market in availableMarkets)
            //{
            //    takeRateFilter.Action = TakeRateDataItemAction.Validate;
            //    takeRateFilter.MarketId = market.Id;
            //    var takeRateView = await TakeRateViewModel.GetModel(DataContext, takeRateFilter);

            //    try
            //    {
            //        var interimResults = Validator.Validate(takeRateView.RawData);
            //        await Validator.Persist(DataContext, takeRateFilter, interimResults, true);
            //    }
            //    catch (ValidationException vex)
            //    {
            //        // Just in case someone has thrown an exception from the validation, which we don't actually want
            //        Log.Warning(vex);
            //    }
            //    catch (Exception ex)
            //    {
            //        Log.Error(ex);
            //    }
            //}

            return(Json(JsonActionResult.GetSuccess(), JsonRequestBehavior.AllowGet));
        }
コード例 #19
0
        private async Task CheckModelAllowsEdit(TakeRateParameters parameters)
        {
            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.Publish;
            var takeRateView = await TakeRateViewModel.GetModel(
                DataContext,
                filter);

            if (!takeRateView.AllowEdit)
            {
                throw new InvalidOperationException(NoEdits);
            }
        }
コード例 #20
0
        public async Task <ActionResult> GetValidationSummary(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.ValidationSummary;
            var takeRateView = await TakeRateViewModel.GetModel(DataContext, filter);

            var validation = await DataContext.TakeRate.GetValidation(TakeRateFilter.FromTakeRateParameters(parameters));

            takeRateView.Validation = validation;

            return(PartialView("_ValidationSummary", takeRateView));
        }
コード例 #21
0
        public ActionResult SaveChangeset(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters,
                                        TakeRateParametersValidator.TakeRateIdentifierWithChangeset);

            CheckModelAllowsEdit(parameters);

            var business = new TakeRateBusiness(DataContext, parameters);

            business.CalculateChanges();
            business.SaveChangeset();

            return(Json(business.CurrentChangeSet));
        }
コード例 #22
0
        public async Task <ActionResult> GetValidation(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var validation = new FdpValidation();

            if (parameters.MarketId.HasValue)
            {
                var business = new TakeRateBusiness(DataContext, parameters);
                business.ValidateChangeset();

                validation = await DataContext.TakeRate.GetValidation(TakeRateFilter.FromTakeRateParameters(parameters));
            }

            return(Json(validation));
        }
コード例 #23
0
        public async Task <JsonResult> Markets(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);
            var marketsGroups =
                await DataContext.TakeRate.ListAvailableMarketGroups(TakeRateFilter.FromTakeRateParameters(parameters));

            var markets = marketsGroups.SelectMany(mg => mg.Markets).Select(m => new
            {
                m.Name,
                m.GroupName,
                m.VariantCount,
                m.LastUpdated,
                m.UpdatedBy
            });

            return(Json(markets, JsonRequestBehavior.AllowGet));
        }
コード例 #24
0
        public async Task <ActionResult> AddNote(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.ModelPlusFeatureAndComment);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.AddNote;
            var takeRateView = TakeRateViewModel.GetModel(DataContext, filter).Result;

            if (!takeRateView.AllowEdit)
            {
                throw new InvalidOperationException(NO_EDITS);
            }
            var note = await DataContext.TakeRate.AddDataItemNote(TakeRateFilter.FromTakeRateParameters(parameters));

            return(Json(note, JsonRequestBehavior.AllowGet));
        }
コード例 #25
0
        public async Task <ActionResult> MarketReview(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifierWithCommentAndMarketAndReviewStatus);

            await CheckModelAllowsEdit(parameters);

            var marketReview = await DataContext.TakeRate.SetMarketReview(
                TakeRateFilter.FromTakeRateParameters(parameters));

            if (parameters.MarketReviewStatus == MarketReviewStatus.Approved)
            {
                // Automatically save the changes from the market
                parameters.Comment = "Changes from market review";
                await DataContext.TakeRate.PersistChangeset(TakeRateFilter.FromTakeRateParameters(parameters));
            }

            return(Json(marketReview));
        }
コード例 #26
0
        public async Task <JsonResult> TakeRateModelData(TakeRateParameters parameters)
        {
            Log.Debug(MethodBase.GetCurrentMethod().Name);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.TakeRateDataPage;
            var model = await TakeRateViewModel.GetModel(DataContext, filter);

            Response.AddHeader("Content-Encoding", "gzip");
            Response.Filter = new GZipStream(Response.Filter,
                                             CompressionMode.Compress);

            return(Json(new
            {
                ModelData = model.Document.TakeRateData.TakeRateSummaryByModel,
                model.Document.Market
            }));
        }
コード例 #27
0
        public void ExportChangeDetails(TakeRateParameters parameters)
        {
            TakeRateParametersValidator.ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifierWithChangeset);

            var business   = new TakeRateBusiness(DataContext, parameters);
            var exportData = business.ExportChangeset();

            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment; filename=ChangeHistory.xlsx");
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            using (var stream = new MemoryStream())
            {
                exportData.SaveAs(stream);
                stream.WriteTo(Response.OutputStream);
                Response.Flush();
                Response.End();
            }
        }
コード例 #28
0
        public async Task <ActionResult> ContextMenu(TakeRateParameters parameters)
        {
            try
            {
                TakeRateParametersValidator
                .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

                var filter = TakeRateFilter.FromTakeRateParameters(parameters);
                filter.Action = TakeRateDataItemAction.TakeRates;

                var takeRateView = await TakeRateViewModel.GetModel(
                    DataContext,
                    filter);

                return(PartialView("_ContextMenu", takeRateView));
            }
            catch (Exception ex)
            {
                return(PartialView("_ModalError"));
            }
        }
コード例 #29
0
        //[OutputCacheComplex(typeof(TakeRateParameters))]
        public async Task <ActionResult> MarketReviewConfirm(TakeRateParameters parameters)
        {
            TakeRateParametersValidator
            .ValidateTakeRateParameters(DataContext, parameters, TakeRateParametersValidator.TakeRateIdentifier);

            var filter = TakeRateFilter.FromTakeRateParameters(parameters);

            filter.Action = TakeRateDataItemAction.MarketReview;
            var takeRateView = await TakeRateViewModel.GetModel(
                DataContext,
                filter);

            if (parameters.MarketReviewStatus == MarketReviewStatus.Recalled)
            {
                takeRateView.MarketReviewStatus = MarketReviewStatus.Recalled;
            }

            takeRateView.Changes = await DataContext.TakeRate.GetUnsavedChangesForUser(filter);

            return(PartialView("_MarketReviewConfirm", takeRateView));
        }
コード例 #30
0
        public void ExportCpat(TakeRateParameters parameters)
        {
            var business   = new TakeRateBusiness(DataContext, parameters, false);
            var exportData = business.ExportCpat();
            var fileName   = string.Format("TakeRateCpatExport_{0:yyyyMMdd}_{1}.xlsx",
                                           DateTime.Now,
                                           parameters.TakeRateId);

            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            using (var stream = new MemoryStream())
            {
                exportData.SaveAs(stream);
                stream.WriteTo(Response.OutputStream);
                Response.Flush();
                Response.End();
            }
        }