Пример #1
0
        public void TestOrderController_OrderInQuote_ShouldReturnQuoteItemsModel()
        {
            QuoteItemsModel model = new QuoteItemsModel();

            Response = quoteService.GetQuoteItemsModel(user, model);
            Assert.That(Response.Model, Is.Not.EqualTo(null));
        }
        public ActionResult QuoteItems(QuoteItemsModel model)
        {
            model.LoadQuoteItems = true;

            this.ServiceResponse = quoteService.GetQuoteItemsModel(this.CurrentUser, model);

            model = this.ServiceResponse.Model as QuoteItemsModel;

            bool showCommissionConvertPopup = false;

            if (ProcessServiceResponse(this.ServiceResponse))
            {
                this.Session["ImportProjectId"] = model.ProjectId;

                this.Session["ImportQuoteId"] = model.QuoteId;

                //if(model.ActiveQuoteSummary.TotalList > Convert.ToDecimal(WebConfigurationManager.AppSettings["dpo.sales.commission.default.totalList"]))
                //{
                //    if(!model.IsCommission && model.CommissionConvertNo == false)
                //    {
                //        showCommissionConvertPopup = true;
                //    }
                //}
            }

            this.RouteData.Values["action"] = "QuoteItems";

            model.ShowCommissionConvertPopup = showCommissionConvertPopup;

            return((this.IsPostRequest) ? (ViewResultBase)PartialView("QuoteItems", model) : View("QuoteItems", model));
        }
        public ActionResult QuotePackageDeleteAttachFile(QuoteItemsModel model)
        {
            this.ServiceResponse = new ServiceResponse();

            if (model.QuoteId.HasValue)
            {
                var quotePackageDirectory = Utilities.GetQuotePackageDirectory(model.QuoteId.Value);

                if (Request.Form["chkDeleteAllAttached"] != null)
                {
                    foreach (FileInfo file in new DirectoryInfo(quotePackageDirectory).GetFiles())
                    {
                        file.Delete();
                    }
                }
                else
                {
                    foreach (var key in Request.Form.Keys)
                    {
                        var filename = key.ToString();
                        if (filename.StartsWith("chkAttached-"))
                        {
                            var file = quotePackageDirectory + filename.Replace("chkAttached-", "");
                            if (System.IO.File.Exists(file))
                            {
                                System.IO.File.Delete(file);
                            }
                        }
                    }
                }
            }

            return(base.RedirectToAction("QuotePackage", new { ProjectId = model.ProjectId, QuoteId = model.QuoteId }));
        }
Пример #4
0
        public void TestQuoteServices_GetQuoteQuotePackage()
        {
            QuoteItemsModel model = new QuoteItemsModel();

            model.QuoteId = _quoteId;

            this.Response = quoteService.GetQuoteQuotePackage(user, model);
            Assert.That(this.Response.HasError, Is.EqualTo(false));

            model = this.Response.Model as QuoteItemsModel;
            QuoteItemListModel quoteItemListModel = model.Items.FirstOrDefault();

            Assert.That(quoteItemListModel, Is.Not.EqualTo(null));

            //make sure it has the QuotePackage
            Assert.That(model.QuotePackage, Is.Not.EqualTo(null));
            if (model.QuotePackage.Count > 0)
            {
                Assert.That(model.QuotePackage.First().DocumentTypeId, Is.Not.EqualTo(null));
            }

            if (model.QuotePackageAttachedFiles.Count > 0)
            {
                Assert.That(model.QuotePackageAttachedFiles, Is.Not.EqualTo(null));
                Assert.That(model.QuotePackageAttachedFiles.First().FileName,
                            Is.EqualTo(model.QuotePackage.First().FileName));
                Assert.That(model.QuotePackageAttachedFiles.First().Type.ToLower(),
                            Is.EqualTo("quotepackageattachedfile"));
                Assert.That(model.QuotePackageAttachedFiles.First().Description, Is.Not.EqualTo(string.Empty));
            }
        }
        public ServiceResponse GetQuoteItemsModel(long?quoteId)
        {
            QuoteItemsLoadOptions loadOptions = quoteService.getQuoteItemsLoadOptions(quoteId.Value);

            QuoteItemsModel model = new QuoteItemsModel()
            {
                QuoteId                = quoteId,
                LoadQuoteItems         = loadOptions.LoadQuoteItems,
                LoadDiscountRequests   = loadOptions.LoadDiscountRequests,
                LoadCommissionRequests = loadOptions.LoadCommissionRequests,
                LoadQuoteOrders        = loadOptions.LoadQuoteOrders
            };

            return(quoteService.GetQuoteItemsModel(this.CurrentUser, model));
        }
Пример #6
0
        public ActionResult OrderInQuote(QuoteItemsModel model)
        {
            model.LoadQuoteItems = true;
            this.ServiceResponse = quoteService.GetQuoteItemsModel(this.CurrentUser, model);
            model = this.ServiceResponse.Model as QuoteItemsModel;

            if (ProcessServiceResponse(this.ServiceResponse))
            {
                this.Session["ImportProjectId"] = model.ProjectId;
                this.Session["ImportQuoteId"]   = model.QuoteId;
            }

            this.RouteData.Values["action"] = "OrderInQuote";

            return((this.IsPostRequest) ? (ViewResultBase)PartialView("OrderInQuote", model) : View("OrderInQuote", model));
        }
Пример #7
0
        public void TestOrderController_OrderInQuote_ShouldRenderPartialViewOrderInQuote(string httpMethod)
        {
            QuoteItemsModel model = new QuoteItemsModel();

            var httpContextMock = FakeHttpContext(httpMethod);
            var controllerMock  = new Mock <ControllerBase>(MockBehavior.Loose);

            var routeData = new RouteData();

            routeData.Values.Add("key1", "/ProjectDashboard/Orders");

            var controllerContext = new ControllerContext(httpContextMock, routeData, controllerMock.Object);

            orderController.ControllerContext = controllerContext;

            var result = orderController.OrderInQuote(model) as ViewResult;

            Assert.That(result.ViewName, Is.EqualTo("OrderInQuote"));
        }
        public ActionResult QuotePackageAttachFile(FormCollection formCollection, QuoteItemsModel model)
        {
            this.ServiceResponse = new ServiceResponse();

            if (Request != null && Request.Files.Count == 1 && model.QuoteId.HasValue)
            {
                var filebase = Request.Files[0];

                var message = Utilities.SavePostedFile(filebase, Utilities.GetQuotePackageDirectory(model.QuoteId.Value), 25000);

                if (message != null)
                {
                    this.ServiceResponse.AddError(message);
                }
                else
                {
                    this.ServiceResponse.AddSuccess(string.Format("File {0} attached", filebase));
                }
            }

            return(base.RedirectToAction("QuotePackage", new { ProjectId = model.ProjectId, QuoteId = model.QuoteId }));
        }
        public ActionResult QuoteItemsWithProductsHasNoClassCode(QuoteItemsModel model)
        {
            model.LoadQuoteItems = true;

            this.ServiceResponse = quoteService.GetQuoteItemsModel(this.CurrentUser, model);

            model = this.ServiceResponse.Model as QuoteItemsModel;

            var listOfProductsWithNoClassCode = new List <string>();

            foreach (var item in model.Items)
            {
                if (item.ProductClassCode == string.Empty)
                {
                    listOfProductsWithNoClassCode.Add(item.ProductNumber);
                }
            }

            foreach (string productNumber in listOfProductsWithNoClassCode)
            {
                this.ServiceResponse.AddError(productNumber, string.Format(Resources.ResourceModelProject.MP142, productNumber));
            }

            QuoteModel quoteModel = quoteService.GetQuoteModel(this.CurrentUser, model.ProjectId, model.QuoteId).Model as QuoteModel;

            ViewData["PageMessages"] = this.ServiceResponse.Messages as Messages;

            if (this.IsPostRequest)
            {
                return((ViewResultBase)PartialView("QuoteItems", model));
            }

            if (this.ServiceResponse.IsOK == false)
            {
                return(View("QuoteItems", model));
            }

            return(RedirectToAction("OrderForm", new { quoteModel.ProjectId, quoteModel.QuoteId }));
        }
Пример #10
0
        public void TestQuoteServices_GetQuoteItemsModel()
        {
            QuoteItemsModel model = new QuoteItemsModel();

            model.QuoteId = _quoteId;
            this.Response = quoteService.GetQuoteItemsModel(user, model);
            Assert.That(this.Response.HasError, Is.EqualTo(false));
            model = this.Response.Model as QuoteItemsModel;
            Assert.That(model.QuoteId, Is.EqualTo(_quoteId));
            Assert.That(model.ProjectId, Is.EqualTo(_projectId));

            QuoteListModel activeQuote = model.ActiveQuoteSummary;

            Assert.That(activeQuote, Is.Not.EqualTo(null));
            Assert.That(activeQuote.ProjectId, Is.EqualTo(_projectId));
            Assert.That(activeQuote.QuoteId, Is.EqualTo(_quoteId));

            //make sure has the <QuoteItemListModel
            Assert.That(model.Items, Is.Not.EqualTo(null));
            //make sure it load discount request Model
            Assert.That(model.DiscountRequests, Is.Not.EqualTo(null));
            //maker sure it load commission reuqets
            Assert.That(model.CommissionRequests, Is.Not.EqualTo(null));
        }
        public ActionResult QuoteImport(FormCollection formCollection, QuoteModel model)
        {
            log.InfoFormat("Enter QuoteImport Action: {0}", System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            this.ServiceResponse = new ServiceResponse();

            if (Request != null && Request.Files.Count == 1)
            {
                log.Debug("File import count is greater than 1.get the First file from file list");

                var file = Request.Files[0];

                if (file != null && file.ContentLength > 0)
                {
                    log.Debug("File length is greater than 0");
                    log.Debug("get file path extension");

                    if (Path.GetExtension(file.FileName).ToLower() == ".xls" || Path.GetExtension(file.FileName).ToLower() == ".xlsx" || Path.GetExtension(file.FileName).ToLower() == ".csv")
                    {
                        log.Debug("excel file");

                        var csvReader = new StreamReader(file.InputStream);
                        var csv       = new CsvHelper.CsvReader(csvReader);

                        log.Info("ImportsProductsFromCSV() executing..");
                        this.ServiceResponse = quoteService.ImportProductsFromCSV(this.CurrentUser, csv, model);
                        log.Info("ImportsProductsFromCSV() finished");
                    }
                    //uncommment these line when go to VRV-Express branch
                    else if (Path.GetExtension(file.FileName).ToLower() == ".xml")
                    {
                        log.Debug("xml file");
                        log.Debug("ImportProductsFromXml() executing...");
                        this.ServiceResponse = quoteService.ImportProductsFromXml(this.CurrentUser, file, model);
                        log.Debug("ImportProductsFromXml finished");
                    }
                    else
                    {
                        this.ServiceResponse.Messages.AddError(Resources.ResourceUI.InvalidFile);
                        log.Error(this.ServiceResponse.Messages.Items.Last()); // get the latest error message
                    }
                }
            }

            var qim = new QuoteItemsModel {
                ProjectId = model.ProjectId.Value, QuoteId = model.QuoteId.Value, LoadQuoteItems = true
            };

            log.Debug("execute GetQuoteItemsModel");
            this.ServiceResponse.Model = quoteService.GetQuoteItemsModel(this.CurrentUser, qim).Model as QuoteItemsModel;
            log.Debug("GetQuoteItemsModel finished");

            this.ShowKeyMessagesOnPage = true;

            ProcessServiceResponse(this.ServiceResponse);

            if (this.ServiceResponse.HasError)
            {
                foreach (var message in this.ServiceResponse.Messages.Items)
                {
                    log.Error(message.Text);
                }
            }
            else
            {
                foreach (var message in this.ServiceResponse.Messages.Items)
                {
                    log.Debug(message.Text);
                }
            }

            this.RouteData.Values["action"] = "QuoteItems";
            this.RouteData.Values["id"]     = model.ProjectId + "/" + model.QuoteId; // this line use to fixed the paging issues after imports

            //return View("QuoteItems", this.ServiceResponse.Model);

            log.Info("Finished QuoteImport Action");
            log.Info("Return to QuoteItems View");

            return(base.RedirectToAction("QuoteItems", new { ProjectId = model.ProjectId, QuoteId = model.QuoteId }));
        }
 public ServiceResponse AdjustQuoteItems(QuoteItemsModel quoteItemsModel)
 {
     return(new QuoteServices().AdjustQuoteItems(this.CurrentUser, quoteItemsModel));
 }