示例#1
0
        public async Task <int> Count(ContactEmailFilter filter)
        {
            IQueryable <ContactEmailDAO> ContactEmails = DataContext.ContactEmail.AsNoTracking();

            ContactEmails = DynamicFilter(ContactEmails, filter);
            return(await ContactEmails.CountAsync());
        }
示例#2
0
        public async Task <ActionResult <List <Contact_ContactEmailDTO> > > ListContactEmail([FromBody] Contact_ContactEmailFilterDTO Contact_ContactEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            ContactEmailFilter ContactEmailFilter = new ContactEmailFilter();

            ContactEmailFilter.Skip          = Contact_ContactEmailFilterDTO.Skip;
            ContactEmailFilter.Take          = Contact_ContactEmailFilterDTO.Take;
            ContactEmailFilter.OrderBy       = ContactEmailOrder.Id;
            ContactEmailFilter.OrderType     = OrderType.ASC;
            ContactEmailFilter.Selects       = ContactEmailSelect.ALL;
            ContactEmailFilter.Id            = Contact_ContactEmailFilterDTO.Id;
            ContactEmailFilter.Title         = Contact_ContactEmailFilterDTO.Title;
            ContactEmailFilter.Content       = Contact_ContactEmailFilterDTO.Content;
            ContactEmailFilter.CreatorId     = Contact_ContactEmailFilterDTO.CreatorId;
            ContactEmailFilter.CreatedAt     = Contact_ContactEmailFilterDTO.CreatedAt;
            ContactEmailFilter.ContactId     = Contact_ContactEmailFilterDTO.ContactId;
            ContactEmailFilter.EmailStatusId = Contact_ContactEmailFilterDTO.EmailStatusId;
            ContactEmailFilter.Reciepient    = Contact_ContactEmailFilterDTO.Reciepient;

            List <ContactEmail> ContactEmails = await ContactEmailService.List(ContactEmailFilter);

            List <Contact_ContactEmailDTO> Contact_ContactEmailDTOs = ContactEmails
                                                                      .Select(x => new Contact_ContactEmailDTO(x)).ToList();

            return(Contact_ContactEmailDTOs);
        }
示例#3
0
 public async Task <ContactEmailFilter> ToFilter(ContactEmailFilter filter)
 {
     if (filter.OrFilter == null)
     {
         filter.OrFilter = new List <ContactEmailFilter>();
     }
     if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0)
     {
         return(filter);
     }
     foreach (var currentFilter in CurrentContext.Filters)
     {
         ContactEmailFilter subFilter = new ContactEmailFilter();
         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.ContactId))
             {
                 subFilter.ContactId = FilterBuilder.Merge(subFilter.ContactId, 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);
 }
示例#4
0
        public async Task <List <ContactEmail> > List(ContactEmailFilter filter)
        {
            if (filter == null)
            {
                return(new List <ContactEmail>());
            }
            IQueryable <ContactEmailDAO> ContactEmailDAOs = DataContext.ContactEmail.AsNoTracking();

            ContactEmailDAOs = DynamicFilter(ContactEmailDAOs, filter);
            ContactEmailDAOs = DynamicOrder(ContactEmailDAOs, filter);
            List <ContactEmail> ContactEmails = await DynamicSelect(ContactEmailDAOs, filter);

            return(ContactEmails);
        }
示例#5
0
        public async Task <List <ContactEmail> > List(ContactEmailFilter ContactEmailFilter)
        {
            try
            {
                List <ContactEmail> ContactEmails = await UOW.ContactEmailRepository.List(ContactEmailFilter);

                return(ContactEmails);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(ContactEmailService));
            }
            return(null);
        }
示例#6
0
        public async Task <int> Count(ContactEmailFilter ContactEmailFilter)
        {
            try
            {
                int result = await UOW.ContactEmailRepository.Count(ContactEmailFilter);

                return(result);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(ContactEmailService));
            }
            return(0);
        }
示例#7
0
        public async Task <bool> ValidateId(ContactEmail ContactEmail)
        {
            ContactEmailFilter ContactEmailFilter = new ContactEmailFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = ContactEmail.Id
                },
                Selects = ContactEmailSelect.Id
            };

            int count = await UOW.ContactEmailRepository.Count(ContactEmailFilter);

            if (count == 0)
            {
                ContactEmail.AddError(nameof(ContactEmailValidator), nameof(ContactEmail.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
示例#8
0
        public async Task <ActionResult <long> > CountContactEmail([FromBody] Contact_ContactEmailFilterDTO Contact_ContactEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            ContactEmailFilter ContactEmailFilter = new ContactEmailFilter();

            ContactEmailFilter.Id            = Contact_ContactEmailFilterDTO.Id;
            ContactEmailFilter.Title         = Contact_ContactEmailFilterDTO.Title;
            ContactEmailFilter.Content       = Contact_ContactEmailFilterDTO.Content;
            ContactEmailFilter.CreatorId     = Contact_ContactEmailFilterDTO.CreatorId;
            ContactEmailFilter.CreatedAt     = Contact_ContactEmailFilterDTO.CreatedAt;
            ContactEmailFilter.ContactId     = Contact_ContactEmailFilterDTO.ContactId;
            ContactEmailFilter.EmailStatusId = Contact_ContactEmailFilterDTO.EmailStatusId;
            ContactEmailFilter.Reciepient    = Contact_ContactEmailFilterDTO.Reciepient;

            return(await ContactEmailService.Count(ContactEmailFilter));
        }
示例#9
0
        private IQueryable <ContactEmailDAO> OrFilter(IQueryable <ContactEmailDAO> query, ContactEmailFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <ContactEmailDAO> initQuery = query.Where(q => false);

            foreach (ContactEmailFilter ContactEmailFilter in filter.OrFilter)
            {
                IQueryable <ContactEmailDAO> queryable = query;
                if (ContactEmailFilter.Id != null && ContactEmailFilter.Id.HasValue)
                {
                    queryable = queryable.Where(q => q.Id, ContactEmailFilter.Id);
                }
                if (ContactEmailFilter.Title != null && ContactEmailFilter.Title.HasValue)
                {
                    queryable = queryable.Where(q => q.Title, ContactEmailFilter.Title);
                }
                if (ContactEmailFilter.Content != null && ContactEmailFilter.Content.HasValue)
                {
                    queryable = queryable.Where(q => q.Content, ContactEmailFilter.Content);
                }
                if (ContactEmailFilter.Reciepient != null && ContactEmailFilter.Reciepient.HasValue)
                {
                    queryable = queryable.Where(q => q.Reciepient, ContactEmailFilter.Reciepient);
                }
                if (ContactEmailFilter.ContactId != null && ContactEmailFilter.ContactId.HasValue)
                {
                    queryable = queryable.Where(q => q.ContactId, ContactEmailFilter.ContactId);
                }
                if (ContactEmailFilter.CreatorId != null && ContactEmailFilter.CreatorId.HasValue)
                {
                    queryable = queryable.Where(q => q.CreatorId, ContactEmailFilter.CreatorId);
                }
                if (ContactEmailFilter.EmailStatusId != null && ContactEmailFilter.EmailStatusId.HasValue)
                {
                    queryable = queryable.Where(q => q.EmailStatusId, ContactEmailFilter.EmailStatusId);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
示例#10
0
 private IQueryable <ContactEmailDAO> DynamicFilter(IQueryable <ContactEmailDAO> query, ContactEmailFilter 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.ContactId != null && filter.ContactId.HasValue)
     {
         query = query.Where(q => q.ContactId, filter.ContactId);
     }
     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);
 }
示例#11
0
        private async Task <List <ContactEmail> > DynamicSelect(IQueryable <ContactEmailDAO> query, ContactEmailFilter filter)
        {
            List <ContactEmail> ContactEmails = await query.Select(q => new ContactEmail()
            {
                Id            = filter.Selects.Contains(ContactEmailSelect.Id) ? q.Id : default(long),
                Title         = filter.Selects.Contains(ContactEmailSelect.Title) ? q.Title : default(string),
                Content       = filter.Selects.Contains(ContactEmailSelect.Content) ? q.Content : default(string),
                Reciepient    = filter.Selects.Contains(ContactEmailSelect.Reciepient) ? q.Reciepient : default(string),
                ContactId     = filter.Selects.Contains(ContactEmailSelect.Contact) ? q.ContactId : default(long),
                CreatorId     = filter.Selects.Contains(ContactEmailSelect.Creator) ? q.CreatorId : default(long),
                EmailStatusId = filter.Selects.Contains(ContactEmailSelect.EmailStatus) ? q.EmailStatusId : default(long),
                Contact       = filter.Selects.Contains(ContactEmailSelect.Contact) && q.Contact != null ? new Contact
                {
                    Id           = q.Contact.Id,
                    Name         = q.Contact.Name,
                    ProfessionId = q.Contact.ProfessionId,
                    CompanyId    = q.Contact.CompanyId,
                } : null,
                Creator = filter.Selects.Contains(ContactEmailSelect.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(ContactEmailSelect.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 = ContactEmails.Select(x => x.Id).ToList();
            var ContactEmailCCMappings = await DataContext.ContactEmailCCMapping.Where(x => Ids.Contains(x.ContactEmailId)).Select(x => new ContactEmailCCMapping
            {
                AppUserId      = x.AppUserId,
                ContactEmailId = x.ContactEmailId,
                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 ContactEmail in ContactEmails)
            {
                ContactEmail.ContactEmailCCMappings = ContactEmailCCMappings.Where(x => x.ContactEmailId == ContactEmail.Id).ToList();
            }
            return(ContactEmails);
        }
示例#12
0
        private IQueryable <ContactEmailDAO> DynamicOrder(IQueryable <ContactEmailDAO> query, ContactEmailFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case ContactEmailOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case ContactEmailOrder.Title:
                    query = query.OrderBy(q => q.Title);
                    break;

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

                case ContactEmailOrder.Reciepient:
                    query = query.OrderBy(q => q.Reciepient);
                    break;

                case ContactEmailOrder.Contact:
                    query = query.OrderBy(q => q.ContactId);
                    break;

                case ContactEmailOrder.Creator:
                    query = query.OrderBy(q => q.CreatorId);
                    break;

                case ContactEmailOrder.EmailStatus:
                    query = query.OrderBy(q => q.EmailStatusId);
                    break;
                }
                break;

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

                case ContactEmailOrder.Title:
                    query = query.OrderByDescending(q => q.Title);
                    break;

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

                case ContactEmailOrder.Reciepient:
                    query = query.OrderByDescending(q => q.Reciepient);
                    break;

                case ContactEmailOrder.Contact:
                    query = query.OrderByDescending(q => q.ContactId);
                    break;

                case ContactEmailOrder.Creator:
                    query = query.OrderByDescending(q => q.CreatorId);
                    break;

                case ContactEmailOrder.EmailStatus:
                    query = query.OrderByDescending(q => q.EmailStatusId);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }