public ActionResult GetObjectByHash(string hash)
        {
            JsonMessage jm = new JsonMessage();

            try
            {
                if (hash == "" || hash == null)
                {
                    jm.Object = ConstructorToJson(constructor);
                }
                else
                {
                    ConstructorModel _constructor = new ConstructorModel();
                    PaletteModel _palette = new PaletteModel();
                    ParseQueryString(hash, _constructor, _palette);
                    jm.Object = ConstructorToJson(_constructor, _palette);
                }
                jm.Result = true;
                jm.Message = "Операция выполнена успешно";
            }
            catch (Exception ex)
            {
                jm.Result = false;
                jm.Message = ex.Message;
            }

            return Json(jm);
        }
        public static ConstructorModel Get()
        {
            ConstructorModel result = null;

            SessionManager sm = new SessionManager();

            object CachedConstructorModel = sm.Get("ConstructorModel");
            if (CachedConstructorModel != null)
            {
                result = CachedConstructorModel as ConstructorModel;
            }
            else
            {
                result = new ConstructorModel();

                sm.Set("ConstructorModel", result);
            }

            return result;
        }
        public void ParseQueryString(string QueryString, ConstructorModel _constructor, PaletteModel _palette)
        {
            NameValueCollection qscoll = HttpUtility.ParseQueryString(QueryString);
            if (qscoll.Count > 0)
            {
                string t = qscoll["t"];
                if (t != null)
                {
                    try
                    {
                        _constructor.SetCurrentModel(t);
                    }
                    catch { }
                }

                string cl = qscoll["cl"];
                if (cl != null) {
                    try
                    {
                        _palette.SetClothById(Convert.ToInt32(cl));
                        _constructor.Model.SetHeight(constructor.Model.Height);
                    }
                    catch { }
                }

                string sh = qscoll["sh"];
                if (sh != null)
                {
                    try
                    {
                        _constructor.Model.SetShapeById(Convert.ToInt32(sh));
                    }
                    catch { }
                }

                string ds = qscoll["ds"];
                if (ds != null)
                {
                    try
                    {
                        _constructor.Model.DriverSide = (DriverSide)Enum.Parse(typeof(DriverSide), ds, true);
                    }
                    catch { }
                }

                string w = qscoll["w"];
                if (w != null)
                {
                    try
                    {
                        _constructor.Model.SetWidth(Convert.ToDouble(w));
                    }
                    catch { }
                }

                string h = qscoll["h"];
                if (h != null)
                {
                    try
                    {
                        _constructor.Model.SetHeight(Convert.ToDouble(h));
                    }
                    catch { }
                }

                string mag = qscoll["mag"];
                if (mag != null)
                {
                    try
                    {
                        _constructor.Model.UseMagnet = Convert.ToBoolean(mag);
                    }
                    catch { }
                }
            }
        }
        private string ConstructorToJson(ConstructorModel _constructor, PaletteModel _palette)
        {
            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("width", _constructor.Model.Width.ToString());
            dictionary.Add("height", _constructor.Model.Height.ToString());
            dictionary.Add("price_dimention", _constructor.Model.PriceDimention.ToString());
            dictionary.Add("amount", _constructor.Model.Amount.ToString());
            dictionary.Add("cloth_name", _palette.SelectedCloth.Name);
            dictionary.Add("cloth_subname", _palette.SelectedCloth.SubName);
            dictionary.Add("cloth_img", _palette.SelectedCloth.Img);
            dictionary.Add("min_payment", _constructor.Model.MinPayment.ToString());
            dictionary.Add("hash", _constructor.Model.Hash.ToString());

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            return serializer.Serialize(dictionary);
        }
 private string ConstructorToJson(ConstructorModel _constructor)
 {
     return ConstructorToJson(_constructor, _constructor.Model.palette);
 }