Пример #1
0
        public async Task <ActionResult <List <Company_CompanyEmailDTO> > > ListCompanyEmail([FromBody] Company_CompanyEmailFilterDTO Company_CompanyEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            CompanyEmailFilter CompanyEmailFilter = new CompanyEmailFilter();

            CompanyEmailFilter.Skip          = Company_CompanyEmailFilterDTO.Skip;
            CompanyEmailFilter.Take          = Company_CompanyEmailFilterDTO.Take;
            CompanyEmailFilter.OrderBy       = CompanyEmailOrder.Id;
            CompanyEmailFilter.OrderType     = OrderType.ASC;
            CompanyEmailFilter.Selects       = CompanyEmailSelect.ALL;
            CompanyEmailFilter.Id            = Company_CompanyEmailFilterDTO.Id;
            CompanyEmailFilter.Title         = Company_CompanyEmailFilterDTO.Title;
            CompanyEmailFilter.Content       = Company_CompanyEmailFilterDTO.Content;
            CompanyEmailFilter.CreatorId     = Company_CompanyEmailFilterDTO.CreatorId;
            CompanyEmailFilter.CreatedAt     = Company_CompanyEmailFilterDTO.CreatedAt;
            CompanyEmailFilter.CompanyId     = Company_CompanyEmailFilterDTO.CompanyId;
            CompanyEmailFilter.EmailStatusId = Company_CompanyEmailFilterDTO.EmailStatusId;
            CompanyEmailFilter.Reciepient    = Company_CompanyEmailFilterDTO.Reciepient;

            List <CompanyEmail> CompanyEmails = await CompanyEmailService.List(CompanyEmailFilter);

            List <Company_CompanyEmailDTO> Company_CompanyEmailDTOs = CompanyEmails
                                                                      .Select(x => new Company_CompanyEmailDTO(x)).ToList();

            return(Company_CompanyEmailDTOs);
        }
Пример #2
0
        public async Task <int> Count(CompanyEmailFilter filter)
        {
            IQueryable <CompanyEmailDAO> CompanyEmails = DataContext.CompanyEmail.AsNoTracking();

            CompanyEmails = DynamicFilter(CompanyEmails, filter);
            return(await CompanyEmails.CountAsync());
        }
Пример #3
0
 public async Task <CompanyEmailFilter> ToFilter(CompanyEmailFilter filter)
 {
     if (filter.OrFilter == null)
     {
         filter.OrFilter = new List <CompanyEmailFilter>();
     }
     if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0)
     {
         return(filter);
     }
     foreach (var currentFilter in CurrentContext.Filters)
     {
         CompanyEmailFilter subFilter = new CompanyEmailFilter();
         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.CompanyId))
             {
                 subFilter.CompanyId = FilterBuilder.Merge(subFilter.CompanyId, 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 <CompanyEmail> > List(CompanyEmailFilter filter)
        {
            if (filter == null)
            {
                return(new List <CompanyEmail>());
            }
            IQueryable <CompanyEmailDAO> CompanyEmailDAOs = DataContext.CompanyEmail.AsNoTracking();

            CompanyEmailDAOs = DynamicFilter(CompanyEmailDAOs, filter);
            CompanyEmailDAOs = DynamicOrder(CompanyEmailDAOs, filter);
            List <CompanyEmail> CompanyEmails = await DynamicSelect(CompanyEmailDAOs, filter);

            return(CompanyEmails);
        }
Пример #5
0
        public async Task <List <CompanyEmail> > List(CompanyEmailFilter CompanyEmailFilter)
        {
            try
            {
                List <CompanyEmail> CompanyEmails = await UOW.CompanyEmailRepository.List(CompanyEmailFilter);

                return(CompanyEmails);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(CompanyEmailService));
            }
            return(null);
        }
Пример #6
0
        public async Task <int> Count(CompanyEmailFilter CompanyEmailFilter)
        {
            try
            {
                int result = await UOW.CompanyEmailRepository.Count(CompanyEmailFilter);

                return(result);
            }
            catch (Exception ex)
            {
                await Logging.CreateSystemLog(ex, nameof(CompanyEmailService));
            }
            return(0);
        }
Пример #7
0
        public async Task <bool> ValidateId(CompanyEmail CompanyEmail)
        {
            CompanyEmailFilter CompanyEmailFilter = new CompanyEmailFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = CompanyEmail.Id
                },
                Selects = CompanyEmailSelect.Id
            };

            int count = await UOW.CompanyEmailRepository.Count(CompanyEmailFilter);

            if (count == 0)
            {
                CompanyEmail.AddError(nameof(CompanyEmailValidator), nameof(CompanyEmail.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
Пример #8
0
        public async Task <ActionResult <long> > CountCompanyEmail([FromBody] Company_CompanyEmailFilterDTO Company_CompanyEmailFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            CompanyEmailFilter CompanyEmailFilter = new CompanyEmailFilter();

            CompanyEmailFilter.Id            = Company_CompanyEmailFilterDTO.Id;
            CompanyEmailFilter.Title         = Company_CompanyEmailFilterDTO.Title;
            CompanyEmailFilter.Content       = Company_CompanyEmailFilterDTO.Content;
            CompanyEmailFilter.CreatorId     = Company_CompanyEmailFilterDTO.CreatorId;
            CompanyEmailFilter.CreatedAt     = Company_CompanyEmailFilterDTO.CreatedAt;
            CompanyEmailFilter.CompanyId     = Company_CompanyEmailFilterDTO.CompanyId;
            CompanyEmailFilter.EmailStatusId = Company_CompanyEmailFilterDTO.EmailStatusId;
            CompanyEmailFilter.Reciepient    = Company_CompanyEmailFilterDTO.Reciepient;

            return(await CompanyEmailService.Count(CompanyEmailFilter));
        }
Пример #9
0
        private IQueryable <CompanyEmailDAO> OrFilter(IQueryable <CompanyEmailDAO> query, CompanyEmailFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <CompanyEmailDAO> initQuery = query.Where(q => false);

            foreach (CompanyEmailFilter CompanyEmailFilter in filter.OrFilter)
            {
                IQueryable <CompanyEmailDAO> queryable = query;
                if (CompanyEmailFilter.Id != null && CompanyEmailFilter.Id.HasValue)
                {
                    queryable = queryable.Where(q => q.Id, CompanyEmailFilter.Id);
                }
                if (CompanyEmailFilter.Title != null && CompanyEmailFilter.Title.HasValue)
                {
                    queryable = queryable.Where(q => q.Title, CompanyEmailFilter.Title);
                }
                if (CompanyEmailFilter.Content != null && CompanyEmailFilter.Content.HasValue)
                {
                    queryable = queryable.Where(q => q.Content, CompanyEmailFilter.Content);
                }
                if (CompanyEmailFilter.Reciepient != null && CompanyEmailFilter.Reciepient.HasValue)
                {
                    queryable = queryable.Where(q => q.Reciepient, CompanyEmailFilter.Reciepient);
                }
                if (CompanyEmailFilter.CompanyId != null && CompanyEmailFilter.CompanyId.HasValue)
                {
                    queryable = queryable.Where(q => q.CompanyId, CompanyEmailFilter.CompanyId);
                }
                if (CompanyEmailFilter.CreatorId != null && CompanyEmailFilter.CreatorId.HasValue)
                {
                    queryable = queryable.Where(q => q.CreatorId, CompanyEmailFilter.CreatorId);
                }
                if (CompanyEmailFilter.EmailStatusId != null && CompanyEmailFilter.EmailStatusId.HasValue)
                {
                    queryable = queryable.Where(q => q.EmailStatusId, CompanyEmailFilter.EmailStatusId);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
Пример #10
0
 private IQueryable <CompanyEmailDAO> DynamicFilter(IQueryable <CompanyEmailDAO> query, CompanyEmailFilter 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.CompanyId != null && filter.CompanyId.HasValue)
     {
         query = query.Where(q => q.CompanyId, filter.CompanyId);
     }
     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 <CompanyEmail> > DynamicSelect(IQueryable <CompanyEmailDAO> query, CompanyEmailFilter filter)
        {
            List <CompanyEmail> CompanyEmails = await query.Select(q => new CompanyEmail()
            {
                Id            = filter.Selects.Contains(CompanyEmailSelect.Id) ? q.Id : default(long),
                Title         = filter.Selects.Contains(CompanyEmailSelect.Title) ? q.Title : default(string),
                Content       = filter.Selects.Contains(CompanyEmailSelect.Content) ? q.Content : default(string),
                Reciepient    = filter.Selects.Contains(CompanyEmailSelect.Reciepient) ? q.Reciepient : default(string),
                CompanyId     = filter.Selects.Contains(CompanyEmailSelect.Company) ? q.CompanyId : default(long),
                CreatorId     = filter.Selects.Contains(CompanyEmailSelect.Creator) ? q.CreatorId : default(long),
                EmailStatusId = filter.Selects.Contains(CompanyEmailSelect.EmailStatus) ? q.EmailStatusId : default(long),
                Company       = filter.Selects.Contains(CompanyEmailSelect.Company) && q.Company != null ? new Company
                {
                    Id         = q.Company.Id,
                    Name       = q.Company.Name,
                    Phone      = q.Company.Phone,
                    FAX        = q.Company.FAX,
                    PhoneOther = q.Company.PhoneOther,
                    Email      = q.Company.Email,
                    EmailOther = q.Company.EmailOther,
                } : null,
                Creator = filter.Selects.Contains(CompanyEmailSelect.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(CompanyEmailSelect.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 = CompanyEmails.Select(x => x.Id).ToList();
            var CompanyEmailCCMappings = await DataContext.CompanyEmailCCMapping.Where(x => Ids.Contains(x.CompanyEmailId)).Select(x => new CompanyEmailCCMapping
            {
                AppUserId      = x.AppUserId,
                CompanyEmailId = x.CompanyEmailId,
                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 CompanyEmail in CompanyEmails)
            {
                CompanyEmail.CompanyEmailCCMappings = CompanyEmailCCMappings.Where(x => x.CompanyEmailId == CompanyEmail.Id).ToList();
            }
            return(CompanyEmails);
        }
Пример #12
0
        private IQueryable <CompanyEmailDAO> DynamicOrder(IQueryable <CompanyEmailDAO> query, CompanyEmailFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case CompanyEmailOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

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

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

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

                case CompanyEmailOrder.Company:
                    query = query.OrderBy(q => q.CompanyId);
                    break;

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

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

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

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

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

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

                case CompanyEmailOrder.Company:
                    query = query.OrderByDescending(q => q.CompanyId);
                    break;

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

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