Example #1
0
        internal IFacadeUpdateResult <QuoteData> SaveQuoteLine(object parentId, QuoteLineDto childDto)
        {
            ArgumentValidator.IsNotNull("parentId", parentId);
            ArgumentValidator.IsNotNull("childDto", childDto);

            FacadeUpdateResult <QuoteData> result = new FacadeUpdateResult <QuoteData>();
            IQuoteService service     = UnitOfWork.GetService <IQuoteService>();
            var           parentQuery = service.Retrieve(parentId);

            if (parentQuery.HasResult)
            {
                Quote     parent = parentQuery.ToBo <Quote>();
                QuoteLine child  = RetrieveOrNewQuoteLine(parent, childDto.Id);
                if (child != null)
                {
                    child.ProductId   = childDto.ProductId;
                    child.Quantity    = childDto.Quantity;
                    child.TargetPrice = childDto.TargetPrice;

                    var saveQuery = service.Save(parent);
                    result.Merge(saveQuery);
                    result.AttachResult(parent.RetrieveData <QuoteData>());
                }
                else
                {
                    AddError(result.ValidationResult, "QuoteLineCannotBeFound");
                }
            }

            return(result);
        }
Example #2
0
        internal IFacadeUpdateResult <QuoteData> DeleteQuoteLine(object parentId, object childId)
        {
            ArgumentValidator.IsNotNull("parentId", parentId);
            ArgumentValidator.IsNotNull("childId", childId);

            FacadeUpdateResult <QuoteData> result = new FacadeUpdateResult <QuoteData>();
            IQuoteService service = UnitOfWork.GetService <IQuoteService>();
            var           query   = service.Retrieve(parentId);

            if (query.HasResult)
            {
                Quote     parent = query.ToBo <Quote>();
                QuoteLine child  = parent.QuoteLines.SingleOrDefault(o => object.Equals(o.Id, childId));
                if (child != null)
                {
                    parent.QuoteLines.Remove(child);
                    var saveQuery = parent.Save();
                    result.Merge(saveQuery);
                    result.AttachResult(parent.RetrieveData <QuoteData>());
                }
                else
                {
                    AddError(result.ValidationResult, "QuoteLineCannotBeFound");
                }
            }
            else
            {
                AddError(result.ValidationResult, "QuoteCannotBeFound");
            }

            return(result);
        }
Example #3
0
        public ActionResult Quote(CurvedDoorQuoteModel model)
        {
            var curvedDoor = new CurvedDoor();

            curvedDoor.Color           = DbSession.Get <ColorLocal>(model.ColorId);
            curvedDoor.GlassSystem     = DbSession.Get <GlassSystemLocal>(model.GlassId);
            curvedDoor.CurvedDoorModel = DbSession.Get <CurvedDoorModelLocal>(model.TypeId);

            if (curvedDoor.Color == null || curvedDoor.GlassSystem == null || curvedDoor.CurvedDoorModel == null)
            {
                return(RedirectToAction("quote"));
            }

            curvedDoor.Length = model.Length ?? 0;
            curvedDoor.Height = model.Height ?? 0;
            curvedDoor.Width  = model.Width ?? 0;
            curvedDoor.Depth  = model.Depth ?? 0;

            Session[SessionKeys.LAST_QUOTE] = new CurvedDoorQuoteModel(curvedDoor);

            var line = new QuoteLine();

            line.Name        = curvedDoor.Name;
            line.Price       = curvedDoor.SilverSellingPrice;
            line.BronzePrice = curvedDoor.BronzeSellingPrice;
            line.GoldPrice   = curvedDoor.GoldSellingPrice;

            line.ProductDetails = curvedDoor;
            Session[SessionKeys.PENDING_QUOTE_LINE] = line;
            return(RedirectToAction("create-quote", "customer", new { areas = AreaKind }));
        }
Example #4
0
        internal QuoteLine RetrieveOrNewQuoteLine(Quote parent, object childId)
        {
            QuoteLine child = null;

            if (childId != null)
            {
                child = parent.QuoteLines.SingleOrDefault(o => object.Equals(o.Id, childId));
            }
            else
            {
                child = parent.QuoteLines.AddNewBo();
            }

            return(child);
        }
        public ActionResult CreateQuoteFromDrawing(BalustradeDrawingModel model)
        {
            var balustrade = CreateBalustradeFromDrawingModel(model);

            var line = new QuoteLine();

            line.Name        = balustrade.Name;
            line.Price       = balustrade.SilverSellingPrice;
            line.BronzePrice = balustrade.BronzeSellingPrice;
            line.GoldPrice   = balustrade.GoldSellingPrice;

            line.ProductDetails = balustrade;
            Session[SessionKeys.PENDING_QUOTE_LINE] = line;

            return(Json(new { }));
        }
        public ActionResult QuoteCustom(CustomJulietteQuoteModel model)
        {
            var juliette = new Juliette();

            juliette.Color         = DbSession.Get <ColorLocal>(model.ColorId);
            juliette.GlassSystem   = DbSession.Get <GlassSystemLocal>(model.GlassId);
            juliette.JulietteType  = DbSession.Get <JulietteType>(model.TypeId);
            juliette.OpenWidth     = model.Width.Value;
            juliette.GlassQuantity = juliette.CalcGlassQuantity();

            var line = new QuoteLine();

            line.Name        = juliette.Name;
            line.Price       = juliette.SilverSellingPrice;
            line.BronzePrice = juliette.BronzeSellingPrice;
            line.GoldPrice   = juliette.GoldSellingPrice;

            line.ProductDetails = juliette;
            Session[SessionKeys.PENDING_QUOTE_LINE] = line;
            return(RedirectToAction("create-quote", "customer", new { areas = AreaKind }));
        }
        public ActionResult Quote(BalustradeQuoteModel model)
        {
            if (!model.ModelId.HasValue)
            {
                return(RedirectToAction("quote"));
            }

            var balustrade = new Balustrade();

            balustrade.Color            = DbSession.Get <ColorLocal>(model.ColorId);
            balustrade.GlassSystem      = DbSession.Get <GlassSystemLocal>(model.GlassId);
            balustrade.BalustradeSystem = DbSession.Get <BalustradeSystemLocal>(model.TypeId);
            balustrade.UpdateSystemDefaults();
            balustrade.StartType = BalustradeSection.SectionFinishType.Wall;
            balustrade.EndType   = BalustradeSection.SectionFinishType.Wall;
            balustrade.ModelId   = model.ModelId;

            var angle = model.Dims.Count > 1 ? 90D : 0D;

            foreach (var dimension in model.Dims)
            {
                var section = new BalustradeSection
                {
                    Balustrade              = balustrade,
                    Angle                   = angle,
                    Length                  = dimension.Length ?? 0,
                    Depth                   = dimension.Curved ? 10 : 0,
                    CalculatePostsQuantity  = true,
                    CalculateHandrailJoints = true,
                    PreferStockGlass        = balustrade.BalustradeSystem.PreferStockGlass
                };
                balustrade.RawBalustradeSections.Add(section);
                angle -= 90;
            }

            var modelFromDb = DbSession.Get <BalustradeModel>(model.ModelId.Value);

            Session[SessionKeys.LAST_QUOTE] = new BalustradeQuoteModel(modelFromDb, balustrade, model.P);

            if (model.Action == BalustradeQuoteModel.AddToCartText)
            {
                DbSession.SaveOrUpdate(balustrade);

                AddToCart(balustrade, 1);
                DbSession.Flush();

                return(RedirectToAction("cart", "customer", new { areas = AreaKind }));
            }

            var line = new QuoteLine();

            line.Name        = balustrade.Name;
            line.Price       = balustrade.SilverSellingPrice;
            line.BronzePrice = balustrade.BronzeSellingPrice;
            line.GoldPrice   = balustrade.GoldSellingPrice;

            line.ProductDetails = balustrade;
            Session[SessionKeys.PENDING_QUOTE_LINE] = line;


            return(RedirectToAction("create-quote", "customer", new { areas = AreaKind }));
        }