示例#1
0
 public AdvancedQuery(IMonDatabase db, string accountId)
 {
     this.DB    = db;
     this.Query = db.GetCollection <TModel>().MongoCollection
                  .Find(x => x.Account.Id.Equals(accountId))
                  .ToEnumerable()
                  .AsQueryable();
 }
示例#2
0
        public TModel Concrete(IMonDatabase database)
        {
            if (database == null)
            {
                throw new ArgumentNullException(nameof(database));
            }

            return(Concrete(database.GetNodeRepository <TModel, TKey>()));
        }
示例#3
0
        public TModel Concrete(IMonDatabase database)
        {
            if (database == null)
            {
                throw new ArgumentNullException(nameof(database));
            }

            return(Concrete(database.GetCollection <TModel>()));
        }
示例#4
0
        public IActionResult Item(string id)
        {
            IMonDatabase db = this.ViewBag.DB = this.GetMonDatabase();

            this.ViewBag.Logs = this.Logs <Talent, string>(x => x.Model.Id.Equals(id))
                                .OrderByDescending(x => x.Id)
                                .Take(5)
                                .Select(x => $"<div>{x.Action} By <strong>{x.User.Concrete(db)}</strong></div><div class=\"text-muted text-right\">{x.CreateAt}</div>");
            var model = this.GetMonCollection <Talent>().FindOne(x => x.Id.Equals(id));

            return(View(model));
        }
示例#5
0
        public IActionResult Index(string search,
                                   string[] name,
                                   string[] client,
                                   string[] function,
                                   string[] manager,
                                   string[] consultant,
                                   string orderBy,
                                   string orderDirection,
                                   int page = 1)
        {
            var          begin = DateTime.Now;
            IMonDatabase db    = this.ViewBag.DB = this.GetMonDatabase();
            var          query = new ProjectAdvancedQuery(db, this.CurrentAccount().Id)
                                 .Search(search)
                                 .Name(name)
                                 .Client(client)
                                 .Function(function)
                                 .Manager(manager)
                                 .Consultant(consultant)
                                 .Query;

            if (!string.IsNullOrEmpty(orderBy))
            {
                if (orderBy.Equals("Client", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.Client, x => x.Name, db, orderDirection);
                }
                else if (orderBy.Equals("Function", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.Functions.FirstOrDefault(), x => x.Name, db, orderDirection);
                }
                else if (orderBy.Equals("Manager", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.Manager, x => x.Name, db, orderDirection);
                }
                else
                {
                    query = query.Order(orderBy, orderDirection);
                }
            }
            else
            {
                query = query.OrderByDescending(x => x.Id);
            }

            var models = query.Page(page, 15, (data) => this.ViewBag.PageData = data);

            this.ViewBag.Elapsed = (DateTime.Now - begin).TotalSeconds;
            return(View(models));
        }
示例#6
0
        public static IQueryable <TModel1> Order <TModel1, TModel2, TProperty2>(this IQueryable <TModel1> query,
                                                                                Func <TModel1, IMonNodeModelRef <TModel2, string> > selector1,
                                                                                Func <TModel2, TProperty2> selector2,
                                                                                IMonDatabase db,
                                                                                string direction)
            where TModel1 : class, IMonModel <string>
            where TModel2 : class, IMonNodeModel <TModel2, string>
            where TProperty2 : class, IComparable
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            return(query.Order <TModel1, string, TModel2, string, TProperty2>(selector1, selector2, db, direction));
        }
示例#7
0
        public IActionResult Index(string search,
                                   string[] name,
                                   string[] industry,
                                   string[] type,
                                   string[] status,
                                   string orderBy,
                                   string orderDirection,
                                   int page = 1)
        {
            var          begin = DateTime.Now;
            IMonDatabase db    = this.ViewBag.DB = this.GetMonDatabase();
            var          query = new CompanyAdvancedQuery(db, this.CurrentAccount().Id)
                                 .Search(search)
                                 .Name(name)
                                 .Industry(industry)
                                 .Type(type)
                                 .Status(status)
                                 .Query;

            if (!string.IsNullOrEmpty(orderBy))
            {
                if (orderBy.Equals("Industry", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.Industries.FirstOrDefault(), x => x.Name, db, orderDirection);
                }
                else
                {
                    query = query.Order(orderBy, orderDirection);
                }
            }
            else
            {
                query = query.OrderByDescending(x => x.Id);
            }

            var models = query.Page(page, 15, (data) => this.ViewBag.PageData = data);

            this.ViewBag.Elapsed = (DateTime.Now - begin).TotalSeconds;
            return(View(models));
        }
示例#8
0
        public static IQueryable <TModel1> Order <TModel1, TKey1, TModel2, TKey2, TProperty2>(this IQueryable <TModel1> query,
                                                                                              Func <TModel1, IMonNodeModelRef <TModel2, TKey2> > selector1,
                                                                                              Func <TModel2, TProperty2> selector2,
                                                                                              IMonDatabase db,
                                                                                              string direction)
            where TModel1 : class, IMonModel <TKey1>
            where TModel2 : class, IMonNodeModel <TModel2, TKey2>
            where TProperty2 : class, IComparable
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            var comparer = new NodeRefComparer <TModel2, TKey2, TProperty2>().SetDB(db).SetKeySelector(selector2);

            return(query.Order <TModel1, TKey1, IMonNodeModelRef <TModel2, TKey2> >(selector1, comparer, direction));
        }
 public MvcJsonModelRefConfiguration(IMonDatabase database)
 {
     this.Database = database;
 }
示例#10
0
 public MonCollection(IMonDatabase database, IMongoCollection <TModel> mongoCollection)
 {
     this.Database        = database;
     this.MongoCollection = mongoCollection;
 }
示例#11
0
 public MongoUserStore(IMonDatabase database)
 {
     this.Database = database;
 }
示例#12
0
 public AdvancedQuery2(IMonDatabase db, string accountId)
 {
     this.DB = db;
     this.AddFilter(this.Filter.Eq("Account._id", accountId));
 }
示例#13
0
 public MongoRoleStore(IMonDatabase database)
 {
     this.Database = database;
 }
示例#14
0
        public IActionResult Index(string search,
                                   string[] company,
                                   string[] previousCompany,
                                   string[] title,
                                   string[] inChargeOf,
                                   string[] grade,
                                   string[] industry,
                                   string[] crossIndustry,
                                   string[] function,
                                   string[] crossFunction,
                                   string[] crossCategory,
                                   string[] crossChannel,
                                   string[] brandsHadManaged,
                                   string[] KAHadManaged,
                                   string[] currentLocation,
                                   string[] mobilityLocation,
                                   int[] gender,
                                   int[] education,
                                   int[] language,
                                   int[] nationality,
                                   int[] jobIntension,
                                   string[] cv,
                                   string[] notes,
                                   string orderBy,
                                   string orderDirection,
                                   int page = 1)
        {
            var          begin = DateTime.Now;
            IMonDatabase db    = this.ViewBag.DB = this.GetMonDatabase();
            var          query = new TalentAdvancedQuery2(db, this.CurrentAccount().Id)
                                 .Search(search)
                                 .Company(company)
                                 .PreviousCompany(previousCompany)
                                 .Title(title)
                                 .InChargeOf(inChargeOf)
                                 .Grade(grade)
                                 .Industry(industry)
                                 .CrossIndustry(crossIndustry)
                                 .Function(function)
                                 .CrossFunction(crossFunction)
                                 .CrossCategory(crossCategory)
                                 .CrossChannel(crossChannel)
                                 .BrandsHadManaged(brandsHadManaged)
                                 .KAHadManaged(KAHadManaged)
                                 .CurrentLocation(currentLocation)
                                 .MobilityLocation(mobilityLocation)
                                 .Gender(gender)
                                 .Education(education)
                                 .Language(language)
                                 .Nationality(nationality)
                                 .JobIntension(jobIntension)
                                 .CV(cv)
                                 .Notes(notes)
                                 .QueryModels().AsQueryable();

            if (!string.IsNullOrEmpty(orderBy))
            {
                if (orderBy.Equals("Company", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.Experiences.Find(y => y.CurrentJob == true)?.Company, x => x.Name, db, orderDirection);
                }
                else if (orderBy.Equals("Title", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.Experiences.Find(y => y.CurrentJob == true)?.Title, orderDirection);
                }
                else if (orderBy.Equals("CurrentLocation", StringComparison.CurrentCultureIgnoreCase))
                {
                    query = query.Order(x => x.CurrentLocations.FirstOrDefault(), x => x.Name, db, orderDirection);
                }
                else
                {
                    query = query.Order(orderBy, orderDirection);
                }
            }
            else
            {
                query = query.OrderByDescending(x => x.Id);
            }

            var models = query.Page(page, 15, (data) => this.ViewBag.PageData = data);

            this.ViewBag.Elapsed = (DateTime.Now - begin).TotalSeconds;
            return(View(models));
        }
示例#15
0
 public CompanyAdvancedQuery(IMonDatabase db, string accountId)
     : base(db, accountId)
 {
 }
示例#16
0
 public MongoAccountStore(IMonDatabase database)
 {
     this.Database = database;
 }
示例#17
0
 public ProjectAdvancedQuery(IMonDatabase db, string accountId)
     : base(db, accountId)
 {
 }
示例#18
0
 public NodeRefComparer <TModel, TKey, TProperty> SetDB(IMonDatabase db)
 {
     this.DB = db;
     return(this);
 }
示例#19
0
 public Logger(IMonDatabase db)
 {
     this.DB = db;
 }
示例#20
0
 public TalentAdvancedQuery(IMonDatabase db, string accountId)
     : base(db, accountId)
 {
 }
 public JsonNodeModelRefConverter(IMonDatabase database)
 {
     this.Database = database;
 }
示例#22
0
 public MonNodeRepository(IMonDatabase database, IMongoCollection <TModel> mongoCollection)
     : base(database, mongoCollection)
 {
 }
示例#23
0
 public MonGridFSBucket(IMonDatabase database, IGridFSBucket bucket)
 {
     this.Database = database;
     this.Bucket   = bucket;
 }