public async Task <int> Count(NotificaitonFilter filter)
        {
            IQueryable <NotificaitonDAO> Notificaitons = DataContext.Notificaiton;

            Notificaitons = DynamicFilter(Notificaitons, filter);
            return(await Notificaitons.CountAsync());
        }
示例#2
0
        public async Task <ActionResult <int> > Count([FromBody] Notificaiton_NotificaitonFilterDTO Notificaiton_NotificaitonFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            NotificaitonFilter NotificaitonFilter = ConvertFilterDTOToFilterEntity(Notificaiton_NotificaitonFilterDTO);
            int count = await NotificaitonService.Count(NotificaitonFilter);

            return(count);
        }
        public async Task <List <Notificaiton> > List(NotificaitonFilter filter)
        {
            if (filter == null)
            {
                return(new List <Notificaiton>());
            }
            IQueryable <NotificaitonDAO> NotificaitonDAOs = DataContext.Notificaiton;

            NotificaitonDAOs = DynamicFilter(NotificaitonDAOs, filter);
            NotificaitonDAOs = DynamicOrder(NotificaitonDAOs, filter);
            List <Notificaiton> Notificaitons = await DynamicSelect(NotificaitonDAOs, filter);

            return(Notificaitons);
        }
示例#4
0
        public async Task <ActionResult <List <Notificaiton_NotificaitonDTO> > > List([FromBody] Notificaiton_NotificaitonFilterDTO Notificaiton_NotificaitonFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            NotificaitonFilter  NotificaitonFilter = ConvertFilterDTOToFilterEntity(Notificaiton_NotificaitonFilterDTO);
            List <Notificaiton> Notificaitons      = await NotificaitonService.List(NotificaitonFilter);

            List <Notificaiton_NotificaitonDTO> Notificaiton_NotificaitonDTOs = Notificaitons
                                                                                .Select(c => new Notificaiton_NotificaitonDTO(c)).ToList();

            return(Notificaiton_NotificaitonDTOs);
        }
示例#5
0
        private NotificaitonFilter ConvertFilterDTOToFilterEntity(Notificaiton_NotificaitonFilterDTO Notificaiton_NotificaitonFilterDTO)
        {
            NotificaitonFilter NotificaitonFilter = new NotificaitonFilter();

            NotificaitonFilter.Selects   = NotificaitonSelect.ALL;
            NotificaitonFilter.Skip      = Notificaiton_NotificaitonFilterDTO.Skip;
            NotificaitonFilter.Take      = Notificaiton_NotificaitonFilterDTO.Take;
            NotificaitonFilter.OrderBy   = Notificaiton_NotificaitonFilterDTO.OrderBy;
            NotificaitonFilter.OrderType = Notificaiton_NotificaitonFilterDTO.OrderType;

            NotificaitonFilter.Id        = Notificaiton_NotificaitonFilterDTO.Id;
            NotificaitonFilter.AccountId = Notificaiton_NotificaitonFilterDTO.AccountId;
            NotificaitonFilter.Content   = Notificaiton_NotificaitonFilterDTO.Content;
            NotificaitonFilter.Time      = Notificaiton_NotificaitonFilterDTO.Time;
            return(NotificaitonFilter);
        }
        public async Task <bool> ValidateId(Notificaiton Notificaiton)
        {
            NotificaitonFilter NotificaitonFilter = new NotificaitonFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = Notificaiton.Id
                },
                Selects = NotificaitonSelect.Id
            };

            int count = await UOW.NotificaitonRepository.Count(NotificaitonFilter);

            if (count == 0)
            {
                Notificaiton.AddError(nameof(NotificaitonValidator), nameof(Notificaiton.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
示例#7
0
        public async Task <List <Notificaiton> > List(NotificaitonFilter NotificaitonFilter)
        {
            try
            {
                List <Notificaiton> Notificaitons = await UOW.NotificaitonRepository.List(NotificaitonFilter);

                return(Notificaitons);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex.InnerException, nameof(NotificaitonService));

                if (ex.InnerException == null)
                {
                    throw new MessageException(ex);
                }
                else
                {
                    throw new MessageException(ex.InnerException);
                }
            }
        }
示例#8
0
        public async Task <int> Count(NotificaitonFilter NotificaitonFilter)
        {
            try
            {
                int result = await UOW.NotificaitonRepository.Count(NotificaitonFilter);

                return(result);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex.InnerException, nameof(NotificaitonService));

                if (ex.InnerException == null)
                {
                    throw new MessageException(ex);
                }
                else
                {
                    throw new MessageException(ex.InnerException);
                }
            }
        }
        private IQueryable <NotificaitonDAO> DynamicOrder(IQueryable <NotificaitonDAO> query, NotificaitonFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case NotificaitonOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case NotificaitonOrder.Account:
                    query = query.OrderBy(q => q.AccountId);
                    break;

                case NotificaitonOrder.Content:
                    query = query.OrderBy(q => q.Content);
                    break;

                case NotificaitonOrder.Time:
                    query = query.OrderBy(q => q.Time);
                    break;

                case NotificaitonOrder.Unread:
                    query = query.OrderBy(q => q.Unread);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case NotificaitonOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case NotificaitonOrder.Account:
                    query = query.OrderByDescending(q => q.AccountId);
                    break;

                case NotificaitonOrder.Content:
                    query = query.OrderByDescending(q => q.Content);
                    break;

                case NotificaitonOrder.Time:
                    query = query.OrderByDescending(q => q.Time);
                    break;

                case NotificaitonOrder.Unread:
                    query = query.OrderByDescending(q => q.Unread);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
        private IQueryable <NotificaitonDAO> OrFilter(IQueryable <NotificaitonDAO> query, NotificaitonFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <NotificaitonDAO> initQuery = query.Where(q => false);

            foreach (NotificaitonFilter NotificaitonFilter in filter.OrFilter)
            {
                IQueryable <NotificaitonDAO> queryable = query;
                if (filter.Id != null)
                {
                    queryable = queryable.Where(q => q.Id, filter.Id);
                }
                if (filter.AccountId != null)
                {
                    queryable = queryable.Where(q => q.AccountId, filter.AccountId);
                }
                if (filter.Content != null)
                {
                    queryable = queryable.Where(q => q.Content, filter.Content);
                }
                if (filter.Time != null)
                {
                    queryable = queryable.Where(q => q.Time, filter.Time);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
 private IQueryable <NotificaitonDAO> DynamicFilter(IQueryable <NotificaitonDAO> query, NotificaitonFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     if (filter.Id != null)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.AccountId != null)
     {
         query = query.Where(q => q.AccountId, filter.AccountId);
     }
     if (filter.Content != null)
     {
         query = query.Where(q => q.Content, filter.Content);
     }
     if (filter.Time != null)
     {
         query = query.Where(q => q.Time, filter.Time);
     }
     query = OrFilter(query, filter);
     return(query);
 }
        private async Task <List <Notificaiton> > DynamicSelect(IQueryable <NotificaitonDAO> query, NotificaitonFilter filter)
        {
            List <Notificaiton> Notificaitons = await query.Select(q => new Notificaiton()
            {
                Id        = filter.Selects.Contains(NotificaitonSelect.Id) ? q.Id : default(long),
                AccountId = filter.Selects.Contains(NotificaitonSelect.Account) ? q.AccountId : default(long),
                Content   = filter.Selects.Contains(NotificaitonSelect.Content) ? q.Content : default(string),
                Time      = filter.Selects.Contains(NotificaitonSelect.Time) ? q.Time : default(DateTime),
                Unread    = filter.Selects.Contains(NotificaitonSelect.Unread) ? q.Unread : default(bool),
                Account   = filter.Selects.Contains(NotificaitonSelect.Account) && q.Account != null ? new Account
                {
                    Id                   = q.Account.Id,
                    DisplayName          = q.Account.DisplayName,
                    Email                = q.Account.Email,
                    Phone                = q.Account.Phone,
                    Password             = q.Account.Password,
                    Salt                 = q.Account.Salt,
                    PasswordRecoveryCode = q.Account.PasswordRecoveryCode,
                    ExpiredTimeCode      = q.Account.ExpiredTimeCode,
                    Address              = q.Account.Address,
                    Dob                  = q.Account.Dob,
                    Avatar               = q.Account.Avatar,
                    RoleId               = q.Account.RoleId,
                } : null,
            }).AsNoTracking().ToListAsync();

            return(Notificaitons);
        }