private RequestActiveFlags ConcatenateFlags(RequestActiveFlags[] flags) { RequestActiveFlags reqFlags = RequestActiveFlags.None; if (flags == null) { reqFlags = RequestActiveFlags.Pending; } else { foreach (var flag in flags) { reqFlags = (reqFlags | flag); } } return(reqFlags); }
public static RequestModel GetRequestModel(int?userId, RequestActiveFlags flags) { RequestModel model = new RequestModel() { Flags = flags }; bool allUsers = !userId.HasValue; bool pending = flags.HasFlag(RequestActiveFlags.Pending); bool approved = flags.HasFlag(RequestActiveFlags.Approved); bool Denied = flags.HasFlag(RequestActiveFlags.Denied); // var includePredicate = new Func<IRequestEntity, t_user>(e => e.createdby); var wherePredicate = new Func <IRequestEntity, bool>(e => (allUsers || e.createdby_userid == userId) //&& ((approved && e.updated_date > DateTime.Now.AddDays(-30)) || (!approved)) //&& ((Denied && e.updated_date > DateTime.Now.AddDays(-30)) || (!Denied)) && ((pending && e.active == null) || (approved && (e.active ?? false) && e.updated_date > DateTime.Now.AddDays(-30)) || (Denied && !(e.active ?? true) && e.updated_date > DateTime.Now.AddDays(-30))) ); using (Entity db = new Entity()) { var projects = db.t_project.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_project)e)); var activities = db.t_activity.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_activity)e)); var aims = db.t_aim.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_aim)e)); var indicators = db.t_indicator.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_indicator)e)); var countries = db.t_country.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_country)e)); var sites = db.t_site.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_site)e)); var users = db.t_user.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_user)e)); var attachments = db.t_observation_attachment.Include(e => e.createdby).Where(wherePredicate).Select(e => new Request((t_observation_attachment)e)); model.Requests = projects.Concat(activities).Concat(aims).Concat(attachments).Concat(countries).Concat(indicators) .Concat(sites).Concat(users).ToArray(); } return(model); }