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")); }
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); }
/// <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(); } }