public static LocationModel GetLocation(DSModel db, uint locationID)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }

            return(LocationRepository.GetLocations(db, locationID).FirstOrDefault());
        }
        public static LocationModel GetLocation(DSModel db, string locationCode)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }

            uint locID = db.Locations.Where(l => l.LocationCode == locationCode).Select(l => l.LocationID).FirstOrDefault();

            if (locID == 0)
            {
                return(null);
            }

            return(LocationRepository.GetLocations(db, locID).FirstOrDefault());
        }
        public static List <LocationModel> GetLocationsByCompanies(DSModel db, uint[] companies = null)
        {
            if (db == null)
            {
                throw new ArgumentNullException("db");
            }

            var query = PredicateBuilder.True <Location>();

            if (companies != null && companies.Length > 0)
            {
                query = query.And(q => companies.Contains(q.CompanyID));
            }

            uint[] ids = db.Locations
                         .Where(query)
                         .Select(i => i.LocationID)
                         .ToArray();

            return(LocationRepository.GetLocations(db, ids));
        }