public static City Find(ISession session, string name, string state, string country) { if (string.IsNullOrEmpty(country)) { throw new ManagedCountry.InvalidCountryException(); } ICriteria cr = session.CreateCriteria(typeof(City)) .Add(Expression.Or(Expression.Eq("Name", name), Expression.Eq("Tag", name))); Country c = ManagedCountry.Find(session, country); cr.Add(Expression.Eq("Country.Id", c.Id)); if (c.States != null && c.States.Count > 0 && string.IsNullOrEmpty(state)) { throw new ManagedState.InvalidStateException(); } if (!string.IsNullOrEmpty(state)) { State s = ManagedState.Find(session, state, country); cr.Add(Expression.Eq("State.Id", s.Id)); } City city = (City)cr.UniqueResult(); if (city == null) { throw new InvalidCityException(); } return(city); }
public override City GetInstance(ISession session, ManagedSecurityContext sec) { City instance = base.GetInstance(session, sec); instance.Name = this.Name; instance.Tag = this.Tag; instance.State = string.IsNullOrEmpty(State) ? null : ManagedState.Find(session, State, Country); instance.Country = string.IsNullOrEmpty(Country) ? null : ManagedCountry.Find(session, Country); return(instance); }
public static City FindOrCreate(ISession session, string name, string state, string country) { try { return(Find(session, name, state, country)); } catch (InvalidCityException) { City city = new City(); city.Country = ManagedCountry.Find(session, country); if (!string.IsNullOrEmpty(state)) { city.State = ManagedState.Find(session, state, country); } city.Name = name; session.Save(city); return(city); } }