using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using System.Data.Entity; namespace Tango.BL.Builders { public class UserBuilder : EntityBuilderBase { private bool deleted; public UserBuilder(ObservablesContext context) : base(context) { } protected override IQueryable OnSetQuery(IQueryable query) { if (!deleted) { return query.Where(x => !x.Deleted).Include(x => x.Address).Include(x => x.Contact); } else { return query.Include(x => x.Address).Include(x => x.Contact); } } public virtual UserBuilder WithDeleted() { deleted = true; return this; } public virtual UserBuilder WithOrganization() { return AddStep(1, () => { Context.Organizations.SingleOrDefault(x => x.Guid == Entity.OrganizationGuid); }); } public virtual UserBuilder WithRolesAndPermissions() { return AddStep(2, () => { Context.UsersRoles.Where(x => x.UserGuid == Entity.Guid) .Include(x => x.Role) .Include(x => x.Role.RolesPermissions) .Include(x => x.Role.RolesPermissions.Select(y => y.Permission)) .ToList(); }); } } }