Esempio n. 1
0
        public ActionResult CreateWish()
        {
            int?personid = HttpContext.Session.GetInt32("PersonID");

            if (personid == null)
            {
                return(new UnauthorizedResult());
            }
            ClientWish wish = new ClientWish
            {
                ClientID    = (int)personid,
                isOpen      = true,
                PostDate    = DateTime.UtcNow,
                LocationID  = int.Parse(Request.Form["location"]),
                Variant     = (byte)(((string)Request.Form["variant"])[0]),
                Price       = int.Parse(Request.Form["price"]),
                NeededState = byte.Parse(Request.Form["state"])
            };
            string t = Request.Form["tags"];

            wish.Tags = t.Split(new[] { ' ' }, 10);
            var v = wish.Validate;

            if (v.isValid)
            {
                try
                {
                    DbClient.PutClientWish(wish);
                    return(RedirectToAction("Wishes"));
                }
                catch (ReferentialException e)
                {
                    ViewData["ErrorMessage"] = e.ReadableMessage;
                    return(View("CreateWish"));
                }
            }
            ViewData["ErrorMessage"] = v.Message;
            return(View("CreateWish"));
        }
Esempio n. 2
0
        public static Dictionary <int, EstateObject> FindMatches(ClientWish wish, int limit)
        {
            Dictionary <int, EstateObject> result = new Dictionary <int, EstateObject>();
            string objectvariant;

            switch ((char)(wish.Variant))
            {
            case 'h': objectvariant = "Houses"; break;

            case 'f': objectvariant = "Flats"; break;

            case 'l': objectvariant = "Landplots"; break;

            default: objectvariant = "EstateObjects"; break;
            }
            string query = $"select _key, _val, LocationID, Price, State from \"estateobject\".{objectvariant} where LocationID={wish.LocationID} and Price<={wish.Price} and State>={wish.NeededState} limit {limit};";

            foreach (var row in ObjectCache.Query(new SqlFieldsQuery(query)))
            {
                result [(int)row[0]] = (EstateObject)(row[1]);
            }
            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Put ClientWish entity into the cache. <br/>
        /// Referential integrity check is done on: <br/>
        /// ClientWish.ClientID - Person.key <br/>
        /// ClientWish.LocationID - Location.key 
        /// </summary>
        /// <param name="value">ClientWish to put into the cache.</param>
        public static void PutClientWish (ClientWish value)
        {
            using (var tx = Client.GetTransactions().TxStart())
            {
                // Error if Person with key = value.ClientID is not found.
                if (!(PersonCache.ContainsKey(value.ClientID)))
                {
                    tx.Commit();
                    throw new ReferentialException ("Can not put new entry into ClientWish cache.")
                    {
                        Operation = "put",
                        TableName = "ClientWish",
                        FieldName = "ClientID",
                        ReadableMessage = $"Can not put new entry into ClientWish cache because Person with key {value.ClientID} does not exist."
                    };
                }

                // Error if Location not found.
                if (!(LocationCache.ContainsKey(value.LocationID)))
                {
                    tx.Commit();
                    throw new ReferentialException ("Can not put new entry into ClientWish cache.")
                    {
                        Operation = "put",
                        TableName = "ClientWish",
                        FieldName = "LocationID",
                        ReadableMessage = $"Can not put new entry into ClientWish cache because Location with key {value.LocationID} does not exist."
                    };
                }

                // Normal operation.
                int key = LastUsedKeys.Get ("clientwish");
                ClientWishCache.Put (key, value);
                LastUsedKeys.Put ("clientwish", key+1);
                tx.Commit();
            }
        }