public async Task <int> Count(CustomerLeadEmailFilter filter) { IQueryable <CustomerLeadEmailDAO> CustomerLeadEmails = DataContext.CustomerLeadEmail.AsNoTracking(); CustomerLeadEmails = DynamicFilter(CustomerLeadEmails, filter); return(await CustomerLeadEmails.CountAsync()); }
public async Task <ActionResult <List <CustomerLead_CustomerLeadEmailDTO> > > ListCustomerLeadEmail([FromBody] CustomerLead_CustomerLeadEmailFilterDTO CustomerLead_CustomerLeadEmailFilterDTO) { if (UnAuthorization) { return(Forbid()); } if (!ModelState.IsValid) { throw new BindException(ModelState); } CustomerLeadEmailFilter CustomerLeadEmailFilter = new CustomerLeadEmailFilter(); CustomerLeadEmailFilter.Skip = CustomerLead_CustomerLeadEmailFilterDTO.Skip; CustomerLeadEmailFilter.Take = CustomerLead_CustomerLeadEmailFilterDTO.Take; CustomerLeadEmailFilter.OrderBy = CustomerLeadEmailOrder.Id; CustomerLeadEmailFilter.OrderType = OrderType.ASC; CustomerLeadEmailFilter.Selects = CustomerLeadEmailSelect.ALL; CustomerLeadEmailFilter.Id = CustomerLead_CustomerLeadEmailFilterDTO.Id; CustomerLeadEmailFilter.Title = CustomerLead_CustomerLeadEmailFilterDTO.Title; CustomerLeadEmailFilter.Content = CustomerLead_CustomerLeadEmailFilterDTO.Content; CustomerLeadEmailFilter.CreatorId = CustomerLead_CustomerLeadEmailFilterDTO.CreatorId; CustomerLeadEmailFilter.CreatedAt = CustomerLead_CustomerLeadEmailFilterDTO.CreatedAt; CustomerLeadEmailFilter.CustomerLeadId = CustomerLead_CustomerLeadEmailFilterDTO.CustomerLeadId; CustomerLeadEmailFilter.EmailStatusId = CustomerLead_CustomerLeadEmailFilterDTO.EmailStatusId; CustomerLeadEmailFilter.Reciepient = CustomerLead_CustomerLeadEmailFilterDTO.Reciepient; List <CustomerLeadEmail> CustomerLeadEmails = await CustomerLeadEmailService.List(CustomerLeadEmailFilter); List <CustomerLead_CustomerLeadEmailDTO> CustomerLead_CustomerLeadEmailDTOs = CustomerLeadEmails .Select(x => new CustomerLead_CustomerLeadEmailDTO(x)).ToList(); return(CustomerLead_CustomerLeadEmailDTOs); }
public async Task <CustomerLeadEmailFilter> ToFilter(CustomerLeadEmailFilter filter) { if (filter.OrFilter == null) { filter.OrFilter = new List <CustomerLeadEmailFilter>(); } if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0) { return(filter); } foreach (var currentFilter in CurrentContext.Filters) { CustomerLeadEmailFilter subFilter = new CustomerLeadEmailFilter(); filter.OrFilter.Add(subFilter); List <FilterPermissionDefinition> FilterPermissionDefinitions = currentFilter.Value; foreach (FilterPermissionDefinition FilterPermissionDefinition in FilterPermissionDefinitions) { if (FilterPermissionDefinition.Name == nameof(subFilter.Id)) { subFilter.Id = FilterBuilder.Merge(subFilter.Id, FilterPermissionDefinition.IdFilter); } if (FilterPermissionDefinition.Name == nameof(subFilter.Title)) { subFilter.Title = FilterBuilder.Merge(subFilter.Title, FilterPermissionDefinition.StringFilter); } if (FilterPermissionDefinition.Name == nameof(subFilter.Content)) { subFilter.Content = FilterBuilder.Merge(subFilter.Content, FilterPermissionDefinition.StringFilter); } if (FilterPermissionDefinition.Name == nameof(subFilter.Reciepient)) { subFilter.Reciepient = FilterBuilder.Merge(subFilter.Reciepient, FilterPermissionDefinition.StringFilter); } if (FilterPermissionDefinition.Name == nameof(subFilter.CustomerLeadId)) { subFilter.CustomerLeadId = FilterBuilder.Merge(subFilter.CustomerLeadId, FilterPermissionDefinition.IdFilter); } if (FilterPermissionDefinition.Name == nameof(subFilter.CreatorId)) { subFilter.CreatorId = FilterBuilder.Merge(subFilter.CreatorId, FilterPermissionDefinition.IdFilter); } if (FilterPermissionDefinition.Name == nameof(subFilter.EmailStatusId)) { subFilter.EmailStatusId = FilterBuilder.Merge(subFilter.EmailStatusId, FilterPermissionDefinition.IdFilter); } if (FilterPermissionDefinition.Name == nameof(CurrentContext.UserId) && FilterPermissionDefinition.IdFilter != null) { if (FilterPermissionDefinition.IdFilter.Equal.HasValue && FilterPermissionDefinition.IdFilter.Equal.Value == CurrentUserEnum.IS.Id) { } if (FilterPermissionDefinition.IdFilter.Equal.HasValue && FilterPermissionDefinition.IdFilter.Equal.Value == CurrentUserEnum.ISNT.Id) { } } } } return(filter); }
public async Task <List <CustomerLeadEmail> > List(CustomerLeadEmailFilter filter) { if (filter == null) { return(new List <CustomerLeadEmail>()); } IQueryable <CustomerLeadEmailDAO> CustomerLeadEmailDAOs = DataContext.CustomerLeadEmail.AsNoTracking(); CustomerLeadEmailDAOs = DynamicFilter(CustomerLeadEmailDAOs, filter); CustomerLeadEmailDAOs = DynamicOrder(CustomerLeadEmailDAOs, filter); List <CustomerLeadEmail> CustomerLeadEmails = await DynamicSelect(CustomerLeadEmailDAOs, filter); return(CustomerLeadEmails); }
public async Task <List <CustomerLeadEmail> > List(CustomerLeadEmailFilter CustomerLeadEmailFilter) { try { List <CustomerLeadEmail> CustomerLeadEmails = await UOW.CustomerLeadEmailRepository.List(CustomerLeadEmailFilter); return(CustomerLeadEmails); } catch (Exception ex) { await Logging.CreateSystemLog(ex, nameof(CustomerLeadEmailService)); } return(null); }
public async Task <int> Count(CustomerLeadEmailFilter CustomerLeadEmailFilter) { try { int result = await UOW.CustomerLeadEmailRepository.Count(CustomerLeadEmailFilter); return(result); } catch (Exception ex) { await Logging.CreateSystemLog(ex, nameof(CustomerLeadEmailService)); } return(0); }
public async Task <bool> ValidateId(CustomerLeadEmail CustomerLeadEmail) { CustomerLeadEmailFilter CustomerLeadEmailFilter = new CustomerLeadEmailFilter { Skip = 0, Take = 10, Id = new IdFilter { Equal = CustomerLeadEmail.Id }, Selects = CustomerLeadEmailSelect.Id }; int count = await UOW.CustomerLeadEmailRepository.Count(CustomerLeadEmailFilter); if (count == 0) { CustomerLeadEmail.AddError(nameof(CustomerLeadEmailValidator), nameof(CustomerLeadEmail.Id), ErrorCode.IdNotExisted); } return(count == 1); }
public async Task <ActionResult <long> > CountCustomerLeadEmail([FromBody] CustomerLead_CustomerLeadEmailFilterDTO CustomerLead_CustomerLeadEmailFilterDTO) { if (UnAuthorization) { return(Forbid()); } if (!ModelState.IsValid) { throw new BindException(ModelState); } CustomerLeadEmailFilter CustomerLeadEmailFilter = new CustomerLeadEmailFilter(); CustomerLeadEmailFilter.Id = CustomerLead_CustomerLeadEmailFilterDTO.Id; CustomerLeadEmailFilter.Title = CustomerLead_CustomerLeadEmailFilterDTO.Title; CustomerLeadEmailFilter.Content = CustomerLead_CustomerLeadEmailFilterDTO.Content; CustomerLeadEmailFilter.CreatorId = CustomerLead_CustomerLeadEmailFilterDTO.CreatorId; CustomerLeadEmailFilter.CreatedAt = CustomerLead_CustomerLeadEmailFilterDTO.CreatedAt; CustomerLeadEmailFilter.CustomerLeadId = CustomerLead_CustomerLeadEmailFilterDTO.CustomerLeadId; CustomerLeadEmailFilter.EmailStatusId = CustomerLead_CustomerLeadEmailFilterDTO.EmailStatusId; CustomerLeadEmailFilter.Reciepient = CustomerLead_CustomerLeadEmailFilterDTO.Reciepient; return(await CustomerLeadEmailService.Count(CustomerLeadEmailFilter)); }
private IQueryable <CustomerLeadEmailDAO> OrFilter(IQueryable <CustomerLeadEmailDAO> query, CustomerLeadEmailFilter filter) { if (filter.OrFilter == null || filter.OrFilter.Count == 0) { return(query); } IQueryable <CustomerLeadEmailDAO> initQuery = query.Where(q => false); foreach (CustomerLeadEmailFilter CustomerLeadEmailFilter in filter.OrFilter) { IQueryable <CustomerLeadEmailDAO> queryable = query; if (CustomerLeadEmailFilter.Id != null && CustomerLeadEmailFilter.Id.HasValue) { queryable = queryable.Where(q => q.Id, CustomerLeadEmailFilter.Id); } if (CustomerLeadEmailFilter.Title != null && CustomerLeadEmailFilter.Title.HasValue) { queryable = queryable.Where(q => q.Title, CustomerLeadEmailFilter.Title); } if (CustomerLeadEmailFilter.Content != null && CustomerLeadEmailFilter.Content.HasValue) { queryable = queryable.Where(q => q.Content, CustomerLeadEmailFilter.Content); } if (CustomerLeadEmailFilter.Reciepient != null && CustomerLeadEmailFilter.Reciepient.HasValue) { queryable = queryable.Where(q => q.Reciepient, CustomerLeadEmailFilter.Reciepient); } if (CustomerLeadEmailFilter.CustomerLeadId != null && CustomerLeadEmailFilter.CustomerLeadId.HasValue) { queryable = queryable.Where(q => q.CustomerLeadId, CustomerLeadEmailFilter.CustomerLeadId); } if (CustomerLeadEmailFilter.CreatorId != null && CustomerLeadEmailFilter.CreatorId.HasValue) { queryable = queryable.Where(q => q.CreatorId, CustomerLeadEmailFilter.CreatorId); } if (CustomerLeadEmailFilter.EmailStatusId != null && CustomerLeadEmailFilter.EmailStatusId.HasValue) { queryable = queryable.Where(q => q.EmailStatusId, CustomerLeadEmailFilter.EmailStatusId); } initQuery = initQuery.Union(queryable); } return(initQuery); }
private IQueryable <CustomerLeadEmailDAO> DynamicFilter(IQueryable <CustomerLeadEmailDAO> query, CustomerLeadEmailFilter filter) { if (filter == null) { return(query.Where(q => false)); } query = query.Where(q => !q.DeletedAt.HasValue); if (filter.CreatedAt != null && filter.CreatedAt.HasValue) { query = query.Where(q => q.CreatedAt, filter.CreatedAt); } if (filter.UpdatedAt != null && filter.UpdatedAt.HasValue) { query = query.Where(q => q.UpdatedAt, filter.UpdatedAt); } if (filter.Id != null && filter.Id.HasValue) { query = query.Where(q => q.Id, filter.Id); } if (filter.Title != null && filter.Title.HasValue) { query = query.Where(q => q.Title, filter.Title); } if (filter.Content != null && filter.Content.HasValue) { query = query.Where(q => q.Content, filter.Content); } if (filter.Reciepient != null && filter.Reciepient.HasValue) { query = query.Where(q => q.Reciepient, filter.Reciepient); } if (filter.CustomerLeadId != null && filter.CustomerLeadId.HasValue) { query = query.Where(q => q.CustomerLeadId, filter.CustomerLeadId); } if (filter.CreatorId != null && filter.CreatorId.HasValue) { query = query.Where(q => q.CreatorId, filter.CreatorId); } if (filter.EmailStatusId != null && filter.EmailStatusId.HasValue) { query = query.Where(q => q.EmailStatusId, filter.EmailStatusId); } query = OrFilter(query, filter); return(query); }
private async Task <List <CustomerLeadEmail> > DynamicSelect(IQueryable <CustomerLeadEmailDAO> query, CustomerLeadEmailFilter filter) { List <CustomerLeadEmail> CustomerLeadEmails = await query.Select(q => new CustomerLeadEmail() { Id = filter.Selects.Contains(CustomerLeadEmailSelect.Id) ? q.Id : default(long), Title = filter.Selects.Contains(CustomerLeadEmailSelect.Title) ? q.Title : default(string), Content = filter.Selects.Contains(CustomerLeadEmailSelect.Content) ? q.Content : default(string), Reciepient = filter.Selects.Contains(CustomerLeadEmailSelect.Reciepient) ? q.Reciepient : default(string), CustomerLeadId = filter.Selects.Contains(CustomerLeadEmailSelect.CustomerLead) ? q.CustomerLeadId : default(long), CreatorId = filter.Selects.Contains(CustomerLeadEmailSelect.Creator) ? q.CreatorId : default(long), EmailStatusId = filter.Selects.Contains(CustomerLeadEmailSelect.EmailStatus) ? q.EmailStatusId : default(long), CustomerLead = filter.Selects.Contains(CustomerLeadEmailSelect.CustomerLead) && q.CustomerLead != null ? new CustomerLead { Id = q.CustomerLead.Id, CompanyName = q.CustomerLead.CompanyName, Name = q.CustomerLead.Name, Phone = q.CustomerLead.Phone, Email = q.CustomerLead.Email, Website = q.CustomerLead.Website, NationId = q.CustomerLead.NationId, ProvinceId = q.CustomerLead.ProvinceId, DistrictId = q.CustomerLead.DistrictId, Address = q.CustomerLead.Address, RefuseReciveEmail = q.CustomerLead.RefuseReciveEmail, RefuseReciveSMS = q.CustomerLead.RefuseReciveSMS, ProfessionId = q.CustomerLead.ProfessionId, CurrencyId = q.CustomerLead.CurrencyId, CreatorId = q.CustomerLead.CreatorId, Description = q.CustomerLead.Description, CompanyId = q.CustomerLead.CompanyId, } : null, Creator = filter.Selects.Contains(CustomerLeadEmailSelect.Creator) && q.Creator != null ? new AppUser { Id = q.Creator.Id, Username = q.Creator.Username, DisplayName = q.Creator.DisplayName, Address = q.Creator.Address, Email = q.Creator.Email, Phone = q.Creator.Phone, SexId = q.Creator.SexId, Birthday = q.Creator.Birthday, Avatar = q.Creator.Avatar, Department = q.Creator.Department, OrganizationId = q.Creator.OrganizationId, Longitude = q.Creator.Longitude, Latitude = q.Creator.Latitude, StatusId = q.Creator.StatusId, RowId = q.Creator.RowId, Used = q.Creator.Used, } : null, EmailStatus = filter.Selects.Contains(CustomerLeadEmailSelect.EmailStatus) && q.EmailStatus != null ? new EmailStatus { Id = q.EmailStatus.Id, Code = q.EmailStatus.Code, Name = q.EmailStatus.Name, } : null, CreatedAt = q.CreatedAt, UpdatedAt = q.UpdatedAt, }).ToListAsync(); var Ids = CustomerLeadEmails.Select(x => x.Id).ToList(); var CustomerLeadEmailCCMappings = await DataContext.CustomerLeadEmailCCMapping.Where(x => Ids.Contains(x.CustomerLeadEmailId)).Select(x => new CustomerLeadEmailCCMapping { AppUserId = x.AppUserId, CustomerLeadEmailId = x.CustomerLeadEmailId, AppUser = x.AppUser == null ? null : new AppUser { Id = x.AppUser.Id, Username = x.AppUser.Username, DisplayName = x.AppUser.DisplayName, Email = x.AppUser.Email, } }).ToListAsync(); foreach (var CustomerLeadEmail in CustomerLeadEmails) { CustomerLeadEmail.CustomerLeadEmailCCMappings = CustomerLeadEmailCCMappings.Where(x => x.CustomerLeadEmailId == CustomerLeadEmail.Id).ToList(); } return(CustomerLeadEmails); }
private IQueryable <CustomerLeadEmailDAO> DynamicOrder(IQueryable <CustomerLeadEmailDAO> query, CustomerLeadEmailFilter filter) { switch (filter.OrderType) { case OrderType.ASC: switch (filter.OrderBy) { case CustomerLeadEmailOrder.Id: query = query.OrderBy(q => q.Id); break; case CustomerLeadEmailOrder.Title: query = query.OrderBy(q => q.Title); break; case CustomerLeadEmailOrder.Content: query = query.OrderBy(q => q.Content); break; case CustomerLeadEmailOrder.Reciepient: query = query.OrderBy(q => q.Reciepient); break; case CustomerLeadEmailOrder.CustomerLead: query = query.OrderBy(q => q.CustomerLeadId); break; case CustomerLeadEmailOrder.Creator: query = query.OrderBy(q => q.CreatorId); break; case CustomerLeadEmailOrder.EmailStatus: query = query.OrderBy(q => q.EmailStatusId); break; } break; case OrderType.DESC: switch (filter.OrderBy) { case CustomerLeadEmailOrder.Id: query = query.OrderByDescending(q => q.Id); break; case CustomerLeadEmailOrder.Title: query = query.OrderByDescending(q => q.Title); break; case CustomerLeadEmailOrder.Content: query = query.OrderByDescending(q => q.Content); break; case CustomerLeadEmailOrder.Reciepient: query = query.OrderByDescending(q => q.Reciepient); break; case CustomerLeadEmailOrder.CustomerLead: query = query.OrderByDescending(q => q.CustomerLeadId); break; case CustomerLeadEmailOrder.Creator: query = query.OrderByDescending(q => q.CreatorId); break; case CustomerLeadEmailOrder.EmailStatus: query = query.OrderByDescending(q => q.EmailStatusId); break; } break; } query = query.Skip(filter.Skip).Take(filter.Take); return(query); }