MVC一对多用户公司和通知

时间:2018-07-14 11:47:21

标签: asp.net model-view-controller controller

我有三个桌子。用户通知和公司。我必须建立一对多关系,一个用户可以从公司获得许多通知。通知仅对于该公司的用户可见。示例用户A公司B只能看到来自公司B的通知,而不能看到其他公司的通知。如何创建查询并检查实际登录的用户?你能帮助我吗?我显示代码。

 [Table("Core.Powiadomienias")]
    public class Powiadomienia : Entity
    {
    public string Tytul { get; set; }
    public string Tresc { get; set; }
    public long? Firma { get; set; }
    public ICollection<User> Users { get; set; }

    }

     public class User : Entity, IUserIdentity, IAuditable, ILoggable, 
    IConfidential
    {
    #region User()
    public User()
    {
        LockoutEnabled = true;
        Roles = new List<Role>();
    }
    #endregion

    public Guid PublicId { get; set; }

    public DateTime DateCreatedUtc { get; set; }
    public DateTime? DateModifiedUtc { get; set; }
    public long CreatedBy { get; set; }
    public long? ModifiedBy { get; set; }

    public string UserName { get; set; }
    public string Email { get; set; }
    public bool EmailConfirmed { get; set; }
    public string PasswordHash { get; set; }
    public string SecurityStamp { get; set; }
    public string PhoneNumber { get; set; }
    public bool PhoneNumberConfirmed { get; set; }
    public bool TwoFactorEnabled { get; set; }
    public DateTime? LockoutEndDateUtc { get; set; }
    public bool LockoutEnabled { get; set; }
    public int AccessFailedCount { get; set; }

    public bool IsAdmin { get; set; }
    public string RolesGroupsXml { get; set; }

    public string GivenName { get; set; }
    public string Surname { get; set; }
    public string JobPosition { get; set; }
    public string HomeCity { get; set; }
    public string HomeStreet { get; set; }
    public string HomeHouseNo { get; set; }
    public string HomeFlatNo { get; set; }
    public string HomePostCode { get; set; }
    public string HomeCountry { get; set; }

    public long? FacePictureId { get; set; }
    public virtual File FacePicture { get; set; }
    public long? FirmaId { get; set; }
    public Powiadomienia Powiadomienia { get; set; }

    #region GetList()
    public static IEnumerable<TResult> GetList<TResult>(IPager pager, string 
    tytul , string tresc = null, long? firma = null)
    { 

        using (var context = Context.Read())
        {

            Slave db = new Slave();

            var query = context.Query<Powiadomienia>().AsQueryable();

            if (!String.IsNullOrEmpty(tytul))
            {
                query = query.Where(p => p.Tytul.Contains(tytul));
            }

            if (!String.IsNullOrEmpty(tresc))
            {
                query = query.Where(p => p.Tresc.Contains(tytul) && 
    db.Firmy.Select(x => x.Nazwa).Equals(p.Firma));
            }

            if (firma.HasValue)
            {
                var value = String.Format("<item>{0}</item>", firma);
                query = query.Where(p => p.Firma.HasValue);

            }
                return query
                .Pager(pager)
                .GetResult<TResult>();
        }
    }

    public class UserService
{
     #region GetList()
     public static IEnumerable<TResult> GetList<TResult>(IPager pager, string 
     userName = null, string givenName = null, string surname = null, long? role 
     null, bool? isAdmin = null, long? firmaid = null)
    {
        using (var context = Context.Read())
        {
            var query = context.Query<User>().AsQueryable();

            if (!String.IsNullOrEmpty(userName))
            {
                query = query.Where(p => p.UserName.Contains(userName));
            }

            if (!String.IsNullOrEmpty(givenName))
            {
                query = query.Where(p => p.GivenName.Contains(givenName));
            }

            if (!String.IsNullOrEmpty(surname))
            {
                query = query.Where(p => p.Surname.Contains(surname));
            }

            if (firmaid.HasValue)
            {
                var value = String.Format("<item>{0}</item>", firmaid.Value);
                query = query.Where(p => p.FirmaId.HasValue);
            }

            if (isAdmin.HasValue && isAdmin.Value == true)
            {
                query = query.Where(p => p.IsAdmin == true);
            }


            return query
                .Pager(pager)
                .GetResult<TResult>();
        }
    }
    #endregion

0 个答案:

没有答案