public CustomJulietteQuoteModel(StandardPage page, Juliette jul)
     : this(page, jul.JulietteType)
 {
     ColorId = jul.Color.ID;
     GlassId = jul.GlassSystem.ID;
     Width   = jul.OpenWidth;
 }
        public StandardJulietteModel(Juliette juliette, double?vatPercent) :
            this()
        {
            TypeId     = juliette.JulietteType.ID;
            TypeCode   = juliette.JulietteType.NamePrefix + "BAL";
            ColorId    = juliette.Color.ID;
            GlassId    = juliette.GlassSystem.ID;
            StandardId = juliette.JulietteStandard.ID;
            OpenWidth  = juliette.OpenWidth;

            Title       = juliette.Title;
            Description = juliette.Description;
            Keywords    = juliette.Keywords;
            H1          = juliette.H1;

            Price    = juliette.SellingPrice ?? 0D;
            OldPrice = juliette.OnlineOldPrice;
            VATSum   = vatPercent.HasValue ? Price * (vatPercent.Value / 100) : (double?)null;
        }
        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 StandardModel(StandardJulietteModel model)
        {
            var standard = DbSession.Get <JulietteStandard>(model.StandardId);
            var type     = DbSession.Get <JulietteType>(model.TypeId);
            var color    = DbSession.Get <ColorLocal>(model.ColorId);
            var glass    = DbSession.Get <GlassSystemLocal>(model.GlassId);

            var juliette = new Juliette();

            juliette.Color            = color;
            juliette.GlassSystem      = glass;
            juliette.JulietteType     = type;
            juliette.JulietteStandard = standard;
            DbSession.SaveOrUpdate(juliette);

            AddToCart(juliette, model.Quantity);

            DbSession.Flush();

            return(RedirectToAction("cart", "customer"));
        }
        private StandardJulietteModel GetStandardModel(int id, int type, int?color, int?glass, bool vat)
        {
            var t         = DbSession.Get <JulietteType>(type);
            var standards = DbSession.QueryOver <JulietteStandard>().OrderBy(s => s.ID).Asc.List();
            var standard  = standards.FirstOrDefault(s => s.ID == id && t.MinWidth <= s.ID && s.ID <= t.MaxWidth) ?? standards.FirstOrDefault(s => t.MinWidth <= s.ID && s.ID <= t.MaxWidth);
            var c         = t.Colors.FirstOrDefault(cl => cl.ID == color && cl.WebsiteVisible) ?? t.Colors.FirstOrDefault(cl => cl.WebsiteVisible);
            var g         = t.GlassSystems.FirstOrDefault(gl => gl.ID == glass && gl.WebsiteVisible) ?? t.GlassSystems.FirstOrDefault(gl => gl.WebsiteVisible);

            if (standard == null || c == null)
            {
                return(null);
            }

            var jul = new Juliette {
                JulietteType     = t,
                JulietteStandard = standard,
                Color            = c,
                GlassSystem      = g
            };

            var vatPercent = vat ? DbSession.CurrentCompany().VatPercent : (double?)null;

            return(new StandardJulietteModel(jul, vatPercent));
        }