public async Task <int> Count(NotificaitonFilter filter) { IQueryable <NotificaitonDAO> Notificaitons = DataContext.Notificaiton; Notificaitons = DynamicFilter(Notificaitons, filter); return(await Notificaitons.CountAsync()); }
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); }
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); }
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); }
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); } } }
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); }